diff -Nru navit-0.5.0~svn5900+dfsg.1/ci/build_android.sh navit-0.5.0+dfsg.1/ci/build_android.sh --- navit-0.5.0~svn5900+dfsg.1/ci/build_android.sh 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/ci/build_android.sh 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,64 @@ +#!/bin/bash +red='\e[0;31m' +grn='\e[0;32m' +yel='\e[1;33m' +off='\e[0m' + +# setup var's to perform environment setup and cmake +export START_PATH=~/ +export SOURCE_PATH=$START_PATH"/"${CIRCLE_PROJECT_REPONAME}"/" +export CMAKE_FILE=$SOURCE_PATH"/Toolchain/arm-eabi.cmake" + +export ANDROID_NDK="/usr/local/android-ndk/" +export ANDROID_NDK_BIN=$ANDROID_NDK"/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin" + +export ANDROID_SDK="/usr/local/android-sdk-linux/" +export ANDROID_SDK_PLATFORM_TOOLS=$ANDROID_SDK"/platform-tools" + +export ANDROID_TOOLS_CHECK=$ANDROID_SDK"/tools" + +export ANDROID_PLATFORM_TOOLS_CHECK=$ANDROID_SDK"/platform-tools" + +export ANDROID_BUILD_TOOLS="23.0.1" +export ANDROID_BUILD_CHECK=$ANDROID_SDK"/build-tools/"$BUILD_TOOLS + +export ANDROID_PLATFORM_LATEST="android-21" +export ANDROID_PLATFORM_MIN="android-7" +export BUILD_PATH=$START_PATH"/android-build" +export ANDROID_ENV=$ANDROID_NDK_BIN:$ANDROID_SDK_TOOLS:$ANDROID_SDK_PLATFORM_TOOLS + +# $ANDROID_HOME is /usr/local/android-sdk-linux for the android env. provided by CircleCI + +# If path already has our environment no need to set it +if echo "$ANDROID_ENV" | grep -q "$PATH"; then + echo -e "${grn}" " Android PATH configuration... ALREADY SET" "${off}" + echo +else + echo -e "${grn}" " Android PATH configuration... EXPORTED" "${off}" + export PATH=$ANDROID_ENV:$PATH + echo +fi + +mkdir -p $BUILD_PATH +cd $BUILD_PATH +export PATH=$ANDROID_NDK_BIN:$ANDROID_SDK_TOOLS:$ANDROID_SDK_PLATFORM_TOOLS:$PATH +android list targets +# The value comes from ( last_svn_rev - max_build_id ) at the time of the git migration +svn_rev=$(( 5658 + $CIRCLE_BUILD_NUM )) +sed -i -e "s/ANDROID_VERSION_INT=\"0\"/ANDROID_VERSION_INT=\"${svn_rev}\"/g" ~/navit/navit/android/CMakeLists.txt +mkdir $CIRCLE_ARTIFACTS/android/ +cp ~/navit/navit/android/CMakeLists.txt $CIRCLE_ARTIFACTS/android/ + +cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_FILE -DCACHE_SIZE='(20*1024*1024)' -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=19 $SOURCE_PATH +make || exit 1 +if [[ "${CIRCLE_BRANCH}" == "master" ]]; then + make apkg-release && mv navit/android/bin/Navit-release-unsigned.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-release-unsigned.apk || exit 1 +else + make apkg && mv navit/android/bin/Navit-debug.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-debug.apk || exit 1 +fi + +cp ~/android-build/navit/*.xml $CIRCLE_ARTIFACTS/android/ + +echo +echo "Build leftovers :" +ls navit/android/bin/ diff -Nru navit-0.5.0~svn5900+dfsg.1/ci/build_linux.sh navit-0.5.0+dfsg.1/ci/build_linux.sh --- navit-0.5.0~svn5900+dfsg.1/ci/build_linux.sh 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/ci/build_linux.sh 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,20 @@ +if [[ "${CIRCLE_PROJECT_USERNAME}" == "navit-gps" && "${CIRCLE_BRANCH}" == "trunk" ]]; then + tar xfz ~/assets/cov-analysis-linux64-7.6.0.tar.gz + export PATH=~/navit/cov-analysis-linux64-7.6.0/bin:$PATH + + mkdir bin && cd bin + cov-build --dir cov-int cmake ../ -Dgraphics/qt_qpainter:BOOL=FALSE -Dgui/qml:BOOL=FALSE -DSVG2PNG:BOOL=FALSE -DSAMPLE_MAP=n + cov-build --dir cov-int make || exit -1 + tar czvf navit.tgz cov-int + + curl --form token=$COVERITY_TOKEN \ + --form email=$COVERITY_EMAIL \ + --form file=@navit.tgz \ + --form version="${CIRCLE_BRANCH}-$CIRCLE_SHA1" \ + --form description="${CIRCLE_BRANCH}-$CIRCLE_SHA1" \ + https://scan.coverity.com/builds?project=$CIRCLE_PROJECT_USERNAME +else + mkdir bin && cd bin + cmake ../ -Dgraphics/qt_qpainter:BOOL=FALSE -Dgui/qml:BOOL=FALSE -DSVG2PNG:BOOL=FALSE -DSAMPLE_MAP=n|| exit -1 + make || exit -1 +fi diff -Nru navit-0.5.0~svn5900+dfsg.1/ci/dbus_tests.py navit-0.5.0+dfsg.1/ci/dbus_tests.py --- navit-0.5.0~svn5900+dfsg.1/ci/dbus_tests.py 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/ci/dbus_tests.py 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,52 @@ +import glob +import dbus +from dbus import glib +import gobject +import sys +import os +import time +from subprocess import call +from junit_xml import TestSuite, TestCase + + +gobject.threads_init() + +glib.init_threads() + +bus = dbus.SessionBus() + +navit_object = bus.get_object("org.navit_project.navit", # Connection name + "/org/navit_project/navit/default_navit" ) # Object's path + +iface = dbus.Interface(navit_object, dbus_interface="org.navit_project.navit.navit") +junit_directory=sys.argv[1] +if not os.path.exists(junit_directory): + os.makedirs(junit_directory) + +tests=[] +start_time = time.time() +test_cases = TestCase("zoom (factor) expected 512", '', time.time() - start_time, '', '') +iface.zoom(-2) +zoom=iface.get_attr("zoom")[1] +if zoom !=512 : + test_cases.add_failure_info('zoom level mismatch. Got '+str(zoom)+', expected 512') +tests.append(test_cases) + +test_cases = TestCase("zoom (factor) expected 1024", '', time.time() - start_time, '', '') +iface.zoom(-2) +zoom=iface.get_attr("zoom")[1] +if zoom !=1024 : + test_cases.add_failure_info('zoom level mismatch. Got '+str(zoom)+', expected 1024') +tests.append(test_cases) + +test_cases = TestCase("zoom via set_attr expected 512", '', time.time() - start_time, '', '') +iface.set_attr("zoom", 512) +zoom=iface.get_attr("zoom")[1] +if zoom !=512 : + test_cases.add_failure_info('zoom level mismatch. Got '+str(zoom)+', expected 512') +tests.append(test_cases) + +ts = [TestSuite("Navit dbus tests", tests)] + +with open(junit_directory+'dbus.xml', 'w+') as f: + TestSuite.to_file(f, ts, prettyprint=False) diff -Nru navit-0.5.0~svn5900+dfsg.1/ci/import_translations.sh navit-0.5.0+dfsg.1/ci/import_translations.sh --- navit-0.5.0~svn5900+dfsg.1/ci/import_translations.sh 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/ci/import_translations.sh 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,44 @@ +# Let's check if there is files in the import queue +[ -d po/import_queue/ ] || exit 0 + +# Let's fix the headers of the .po files in the import queue +for i in po/import_queue/*.po; do + b=`basename $i`; + po=${b#*-}; + code=${po%.*} + git checkout -b i18n/$code + lname=`head -n1 ${i} | sed 's/# \(.*\) translation.\{0,1\} for navit/\1/'` + if [[ $lname == "" ]]; then + echo "Cannot find the language name in the header of $i" + exit 1 + fi + d=`date +"%Y"` + echo "# ${lname} translations for navit" > po/${po}.header + echo "# Copyright (C) 2006-${d} The Navit Team" >> po/${po}.header + echo "# This file is distributed under the same license as the navit package." >> po/${po}.header + echo "# Many thanks to the contributors of this translation:" >> po/${po}.header + # Build a clean list of the contributors + IFS=$'\n' + echo "Downloading https://translations.launchpad.net/navit/trunk/+pots/navit/${code}/+details" + contributors=`wget -q https://translations.launchpad.net/navit/trunk/+pots/navit/${code}/+details -O - | egrep '^ '` + for user in $contributors; do + url=`echo $user|cut -d'"' -f2` + name=`echo $user|cut -d'>' -f2|cut -d'<' -f1` + echo "# $name $url" >> po/${po}.header + done + echo '' >> po/${po}.header + echo 'msgid ""' >> po/${po}.header + + # We remove two tags that just generate noise + sed -i '/X-Launchpad-Export-Date/d' ${i} + sed -i '/X-Generator/d' ${i} + sed -i '/POT-Creation-Date/d' ${i} + + # Let's put the translation from launchpad without the header + mv po/${po}.header po/${po}.in + sed '1,/msgid ""/ d' ${i} >> po/${po}.in + + git add po/${po}.in && rm $i + git commit -m "Updated ${lname} translation from launchpad" po/${po}.in + git push --set-upstream origin i18n/${code} +done diff -Nru navit-0.5.0~svn5900+dfsg.1/ci/submit_i18n_pr.sh navit-0.5.0+dfsg.1/ci/submit_i18n_pr.sh --- navit-0.5.0~svn5900+dfsg.1/ci/submit_i18n_pr.sh 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/ci/submit_i18n_pr.sh 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,14 @@ +wget https://github.com/github/hub/releases/download/v2.2.1/hub-linux-amd64-2.2.1.tar.gz +tar xvfz hub-linux-amd64-2.2.1.tar.gz +sudo mv hub-linux-amd64-2.2.1/hub /usr/local/bin/ +sudo chmod +x /usr/local/bin/hub + + +cat > ~/.config/hub << EOF +github.com: +- user: ${HUB_USER} + oauth_token: ${HUB_TOKEN} + protocol: https +EOF + +hub pull-request -b trunk -m "Automatic translation import" diff -Nru navit-0.5.0~svn5900+dfsg.1/ci/update_version.sh navit-0.5.0+dfsg.1/ci/update_version.sh --- navit-0.5.0~svn5900+dfsg.1/ci/update_version.sh 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/ci/update_version.sh 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,32 @@ +if [ -z "$CIRCLE_BUILD_NUM" -o "$CIRCLE_PROJECT_USERNAME" != "navit-gps" ] ; then + exit +fi + +if ! git log -n 1 --oneline ; then + echo "This script should be run from the versioned directory" + exit 1 +fi + +if [ "$CIRCLE_BRANCH" != "trunk" ] ; then + exit +fi + +TAG=R$(( 5658 + $CIRCLE_BUILD_NUM )) + +if [ "$1" == "prepare" ] ; then + git log -1 --format="%H %d" | grep 'tag: R' + if [ $? -eq 0 ] ; then + echo "This commit is already tagged." + exit + fi + git tag $TAG + exit +fi + +if [ "$1" == "push" ] ; then + git log -1 --format="%H %d" | grep "tag: $TAG" + if [ $? -eq 0 ] ; then + echo Pushing tag $TAG to origin... + git push origin $TAG + fi +fi diff -Nru navit-0.5.0~svn5900+dfsg.1/circle.yml navit-0.5.0+dfsg.1/circle.yml --- navit-0.5.0~svn5900+dfsg.1/circle.yml 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/circle.yml 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,75 @@ +machine: + environment: + CMAKE_FILE: ../Toolchain/arm-eabi.cmake +dependencies: + cache_directories: + - ~/.android + - ~/android + - "~/assets/" + pre: + - "[ -d ~/assets ] || mkdir ~/assets" + - "[ -d ~/android ] || mkdir ~/android" + - wget -c -O ~/assets/cov-analysis-linux64-7.6.0.tar.gz http://sd-55475.dedibox.fr/cov-analysis-linux64-7.6.0.tar.gz + - sudo apt-get update + - sudo apt-get install cmake + - sudo apt-get install libpng12-dev + - sudo apt-get install librsvg2-bin + - sudo apt-get install libfreetype6-dev + - sudo apt-get install libdbus-glib-1-dev + - sudo apt-get install g++ + - bash ci/update_version.sh prepare + - bash ci/import_translations.sh + - bash ci/build_linux.sh + - sed -i '/INTEGER/d' bin/po/navit.pot + - cp bin/po/navit.pot $CIRCLE_ARTIFACTS/ + - "[ $CIRCLE_PROJECT_USERNAME != navit-gps ] || curl \"https://translations.launchpad.net/navit/${CIRCLE_BRANCH}/+translations-upload\" -H \"$lp_cookie\" -H \"Referer: https://translations.launchpad.net/navit/${CIRCLE_BRANCH}/+translations-upload\" -F file=@bin/po/navit.pot | grep title" +# Android build + - sudo apt-get install gettext + - sudo apt-get install libsaxonb-java +# for aapt + - sudo apt-get install lib32stdc++6 + - sudo apt-get install lib32z1 + - bash ci/build_android.sh +# Windows build + - sudo apt-get install mingw32 mingw32-binutils mingw32-runtime + - sudo apt-get install default-jdk nsis +# for sys/select.h +# - sudo apt-get install -y libc6-dev + - mkdir win32 + - cmake -Dbinding/python:BOOL=FALSE -DSAMPLE_MAP=n -DCMAKE_TOOLCHAIN_FILE=../Toolchain/mingw32.cmake ../ && make && make package: + pwd: win32/ + - cp win32/*.exe $CIRCLE_ARTIFACTS/ +# For python testing with junit reporting + - sudo pip install junit-xml +test: + post: + - sed -i -e 's@name="Local GPS" profilename="car" enabled="yes" active="1"@name="Local GPS" profilename="car" enabled="no" active="0"@' navit.xml: + pwd: bin/navit/ + - sed -i -e 's@name="Demo" profilename="car" enabled="no" active="yes"@name="Demo" profilename="car" enabled="yes" active="yes" follow="1" refresh="1"@' navit.xml: + pwd: bin/navit/ + - sed -i -e 's@type="internal" enabled@type="internal" fullscreen="1" font_size="350" enabled@' navit.xml: + pwd: bin/navit/ + - sed -i -e 's@libbinding_dbus.so" active="no"@libbinding_dbus.so" active="yes"@' navit.xml: + pwd: bin/navit/ + - ./navit: + pwd: bin/navit/ + background: true + - sleep 5 + - import -window root $CIRCLE_ARTIFACTS/default.png + - python ci/dbus_tests.py $CIRCLE_TEST_REPORTS/ + - dbus-send --print-reply --session --dest=org.navit_project.navit /org/navit_project/navit/default_navit org.navit_project.navit.navit.quit +deployment: + merge_into_master: + branch: trunk + owner: navit-gps + commands: + - bash ci/update_version.sh push + - git push origin $CIRCLE_SHA1:refs/heads/master + merge_translations: + branch: /i18n.*/ + owner: navit-gps + commands: + - bash ci/submit_i18n_pr.sh +notify: + webhooks: + - url: http://62.210.125.30:8000/ diff -Nru navit-0.5.0~svn5900+dfsg.1/cmake/FindGTK2.cmake navit-0.5.0+dfsg.1/cmake/FindGTK2.cmake --- navit-0.5.0~svn5900+dfsg.1/cmake/FindGTK2.cmake 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/cmake/FindGTK2.cmake 2016-01-02 22:29:50.000000000 +0000 @@ -14,8 +14,7 @@ # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # -set(GTK2_DEBUG ON) - +# Set GTK2_DEBUG to enable debug output. macro(GTK2_DEBUG_MESSAGE _message) if (GTK2_DEBUG) message(STATUS "(DEBUG) ${_message}") diff -Nru navit-0.5.0~svn5900+dfsg.1/cmake/navit_macros.cmake navit-0.5.0+dfsg.1/cmake/navit_macros.cmake --- navit-0.5.0~svn5900+dfsg.1/cmake/navit_macros.cmake 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/cmake/navit_macros.cmake 2016-01-02 22:29:50.000000000 +0000 @@ -95,7 +95,7 @@ if (${${VAR_FLAG_AVAILABLE_C}}) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG} ") endif() - if(CMAKE_CXX_COMPILER) # C++ compiler is optional + if(CMAKE_CXX_COMPILER_LOADED) # C++ compiler is optional set(VAR_FLAG_AVAILABLE_CXX "FLAG_AVAILABLE_CXX_${FLAG}") check_cxx_compiler_flag(${FLAG} ${VAR_FLAG_AVAILABLE_CXX}) if (${${VAR_FLAG_AVAILABLE_CXX}}) diff -Nru navit-0.5.0~svn5900+dfsg.1/cmake/version.cmake navit-0.5.0+dfsg.1/cmake/version.cmake --- navit-0.5.0~svn5900+dfsg.1/cmake/version.cmake 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/cmake/version.cmake 2016-01-02 22:29:50.000000000 +0000 @@ -2,42 +2,44 @@ get_filename_component(SOURCE_DIR ${SRC} PATH) -EXECUTE_PROCESS( - COMMAND ${GIT_EXECUTABLE} svn info - COMMAND grep "Revision" - WORKING_DIRECTORY "${SOURCE_DIR}" - OUTPUT_VARIABLE VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE -) - -if (NOT DEFINED ${NAME}) - set( ${NAME} "unknown" ) -endif() - -if (NOT VERSION) - FIND_PACKAGE(Subversion) - - if (Subversion_FOUND) - +if (GIT_EXECUTABLE) EXECUTE_PROCESS( - COMMAND svnversion + COMMAND ${GIT_EXECUTABLE} log "--format=%h %d" WORKING_DIRECTORY "${SOURCE_DIR}" OUTPUT_VARIABLE VERSION + ERROR_VARIABLE GIT_ERROR OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE ) - endif(Subversion_FOUND) - - if (VERSION AND (NOT ${VERSION} MATCHES "^exported")) - if (STRIP_M) - string(REGEX REPLACE "M$" "" VERSION ${VERSION}) - endif() - set( ${NAME} ${VERSION} ) + if(NOT VERSION) + message(STATUS "Cannot determine current git commit - git error: '${GIT_ERROR}'") + set(VERSION "0000") endif() else() - string(REGEX REPLACE "Revision: " "" ${NAME} ${VERSION}) -endif(NOT VERSION) + message(STATUS "git not found, cannot record git commit") + set(VERSION "0000") +endif(GIT_EXECUTABLE) + +string(REGEX MATCH "R[0-9]+" VERSION_NUM ${VERSION} ) +if(NOT VERSION_NUM) + message(STATUS "I can't find a release tag. This is probably not Navit's official tree") + message(STATUS "It's OK, I will default to 0000") + set(VERSION_NUM "0000") +endif() +string(REPLACE "R" "" VERSION_NUM ${VERSION_NUM} ) +if(NOT VERSION_NUM) + set(VERSION_NUM "0000") +endif() + +string(REGEX MATCH "^[a-z0-9]+" VERSION ${VERSION} ) + +if (STRIP_M) + set(VERSION ${VERSION_NUM}) +endif() set(NAVIT_VARIANT "-") -message (STATUS "SVN-version ${${NAME}}") +set(${NAME} ${VERSION}) + +message (STATUS "Git commit: ${${NAME}}") CONFIGURE_FILE(${SRC} ${DST} @ONLY) diff -Nru navit-0.5.0~svn5900+dfsg.1/CMakeLists.txt navit-0.5.0+dfsg.1/CMakeLists.txt --- navit-0.5.0~svn5900+dfsg.1/CMakeLists.txt 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/CMakeLists.txt 2016-01-02 22:29:50.000000000 +0000 @@ -11,11 +11,13 @@ enable_language(CXX OPTIONAL) endif(NOT DISABLE_CXX) -cmake_minimum_required(VERSION 2.6) -cmake_policy(VERSION 2.6) +cmake_minimum_required(VERSION 2.6 FATAL_ERROR) +set(NAVIT_VERSION_MAJOR "0") +set(NAVIT_VERSION_MINOR "5") +set(NAVIT_VERSION_PATCH "0") +set(PACKAGE_VERSION "${NAVIT_VERSION_MAJOR}.${NAVIT_VERSION_MINOR}.${NAVIT_VERSION_PATCH}") -set(PACKAGE_VERSION "0.5.0") -set(PACKAGE_NAME "navit-svn") +set(PACKAGE_NAME "navit-git") set(PACKAGE "navit") set(PACKAGE_STRING "${PACKAGE} ${PACKAGE_VERSION}") @@ -99,8 +101,33 @@ add_module(autoload/osso "Default" FALSE) add_module(map/garmin "Garmin library not found" FALSE) add_feature(USE_NATIVE_LANGUAGE_SUPPORT "Gettext not found and not on Windows" FALSE) - +set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_SOURCE_DIR}/cpack.cmake") +set(CPACK_PACKAGE_VENDOR "Navit team") +set(CPACK_PACKAGE_VERSION_MAJOR ${NAVIT_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${NAVIT_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH "${NAVIT_VERSION_PATCH}") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/GPL-2") +set(CPACK_NSIS_PACKAGE_NAME "Navit ${PACKAGE_VERSION}") +set(CPACK_PACKAGE_FILE_NAME ${PACKAGE}) +set(CPACK_PACKAGE_EXECUTABLES "navit;Navit") +set(CPACK_NSIS_HELP_LINK "http://www.navit-project.org/?page=contact") +set(CPACK_NSIS_URL_INFO_ABOUT "http://www.navit-project.org") +if(WIN32) + add_feature(USE_NSIS "makensis not found" FALSE) + FIND_PROGRAM(NSIS_EXECUTABLE NAMES makensis makensis.exe) + if(NSIS_EXECUTABLE) + set_with_reason(USE_NSIS "makensis found" TRUE) + endif(NSIS_EXECUTABLE) + + set(CPACK_GENERATOR ZIP) + if(USE_NSIS) + list(APPEND CPACK_GENERATOR NSIS) + endif(USE_NSIS) + set(CPACK_PACKAGE_INSTALL_DIRECTORY Navit) +endif(WIN32) INCLUDE (CPack) + INCLUDE (CheckIncludeFiles) INCLUDE (CheckLibraryExists) INCLUDE (CheckFunctionExists) @@ -132,7 +159,6 @@ #pkg-config based detection find_package(PkgConfig) if(PKG_CONFIG_FOUND) - pkg_check_modules(QUESOGLC quesoglc) pkg_check_modules(LIBLOCATION liblocation) pkg_check_modules(LIBOSSO libosso) # Accept even old versions of libgps, because N810 uses an old version (see #1179). @@ -395,6 +421,7 @@ #Modules without test yet add_module(plugin/pedestrian "Default" FALSE) +add_module(plugin/j1850 "Default" FALSE) add_module(speech/android "Default" FALSE) add_module(speech/espeak "Default" FALSE) add_module(speech/iphone "Default" FALSE) @@ -412,13 +439,25 @@ add_feature(SAMPLE_MAP "default" TRUE) IF(NOT svg2png_scaling) - set(svg2png_scaling 0 16 32 48 64 96) + IF(NOT ANDROID) + set(svg2png_scaling 0 16 32 48 64 96) + ELSE() + set(svg2png_scaling -1 24 32 48 64 96 128) + ENDIF() ENDIF() IF(NOT svg2png_scaling_flag) - set(svg2png_scaling_flag 32) + IF(NOT ANDROID) + set(svg2png_scaling_flag 32) + ELSE() + set(svg2png_scaling_flag -1 24 32 64 96) + ENDIF() ENDIF() IF(NOT svg2png_scaling_nav) - set(svg2png_scaling_nav 64) + IF(NOT ANDROID) + set(svg2png_scaling_nav 64) + ELSE() + set(svg2png_scaling_nav -1 24 32 48 64 96 128) + ENDIF() ENDIF() add_feature(DBUS_USE_SYSTEM_BUS "default" FALSE) @@ -430,7 +469,7 @@ if(XSLT_PROCESSOR) message(STATUS "Found XSLT processor: ${XSLT_PROCESSOR}") execute_process(COMMAND ${XSLT_PROCESSOR} -snone ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test.xml ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test.xslt - RESULT_VARIABLE SAXON_ERROR ERROR_QUIET) + RESULT_VARIABLE SAXON_ERROR OUTPUT_QUIET ERROR_QUIET) if (NOT SAXON_ERROR) set (XSLT_PROCESSOR_OPTIONS -snone) endif() @@ -520,7 +559,6 @@ if (WIN32 AND NOT WINCE) set(HAVE_API_WIN32 1) set(HAVE_STDINT_H 1) - set(SAMPLE_MAP FALSE) list(APPEND NAVIT_LIBS winmm) endif() if(WINCE) diff -Nru navit-0.5.0~svn5900+dfsg.1/configure.in navit-0.5.0+dfsg.1/configure.in --- navit-0.5.0~svn5900+dfsg.1/configure.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/configure.in 2016-01-02 22:29:50.000000000 +0000 @@ -1223,10 +1223,6 @@ then sdl_failures=$sdl_failures"glut " fi -if test x"$glc" != xyes - then - sdl_failures=$sdl_failures"quesoglc " -fi if test -z "$sdl_failures" then echo "OpenGL gui : ENABLED, with $CEGUI_LIBS" diff -Nru navit-0.5.0~svn5900+dfsg.1/cpack.cmake navit-0.5.0+dfsg.1/cpack.cmake --- navit-0.5.0~svn5900+dfsg.1/cpack.cmake 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/cpack.cmake 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,4 @@ +if(CPACK_GENERATOR=="ZIP") + set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1) +endif(CPACK_GENERATOR=="ZIP") + diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/changelog navit-0.5.0+dfsg.1/debian/changelog --- navit-0.5.0~svn5900+dfsg.1/debian/changelog 2014-09-29 13:33:25.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/changelog 2016-02-09 10:33:38.000000000 +0000 @@ -1,3 +1,51 @@ +navit (0.5.0+dfsg.1-1build1) xenial; urgency=medium + + * No-change rebuild for libgps transition. + + -- Matthias Klose Tue, 09 Feb 2016 10:33:38 +0000 + +navit (0.5.0+dfsg.1-1) unstable; urgency=medium + + * New upstream release. + * Drop patch maptool-uninitialised-values.patch (fixed upstream). + * Refresh patches. + + * Drop Qt support (unmaintained and barely usable; closes: #784500). + + * Set upstream home page to the main wiki page. + http://www.navit-project.org is unmaintained (see upstream trac + ticket #1326). + + -- Gilles Filippini Sun, 03 Jan 2016 15:34:05 +0100 + +navit (0.5.0~+rc2+dfsg.1-1) unstable; urgency=medium + + * New upstream release (closes: #795051). + * Upstream VCS moved from Sourceforge SVN to Github (see + debian/README.source). + * Set upstream homepage to http://www.navit-project.org. + + -- Gilles Filippini Sun, 01 Nov 2015 17:06:49 +0100 + +navit (0.5.0~svn6128+dfsg.1-1) unstable; urgency=medium + + * New upstream snapshot: + + New j1850 plugin: allows Navit to read CAN-BUS datas in some cars + using this protocol. + + Major improvements of maneuver announcements (what and when). + + New maneuvers (U turn, keep left/right, highway merge/exit). + + Announce names and numbers of highway exits and interchanges. + + New translations and massive translation update from launchpad. + + bug fixes. + * Drop patch support-speech-dispatcher-0.8.patch not needed anymore. + * Update d/copyright. + * Update d/README.*. + + * d/rules: enable parallel build. + * d/control: bump Standards-Version to 3.9.6 (no change). + + -- Gilles Filippini Mon, 20 Jul 2015 23:43:29 +0200 + navit (0.5.0~svn5900+dfsg.1-1) unstable; urgency=medium * New upstream snapshot: diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/control navit-0.5.0+dfsg.1/debian/control --- navit-0.5.0~svn5900+dfsg.1/debian/control 2014-09-29 09:54:06.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/control 2016-01-03 14:13:29.000000000 +0000 @@ -7,10 +7,10 @@ libglc-dev (>= 0.7.1), libspeechd-dev, libgps-dev (>= 3.1), freeglut3-dev, libimlib2-dev, libdbus-1-dev, libxml2-dev, libfribidi-dev, libpq-dev, libfreetype6-dev, libfontconfig1-dev, fonts-liberation, - libsdl-image1.2-dev, libdbus-glib-1-dev, libqt4-dev, libqtwebkit-dev, + libsdl-image1.2-dev, libdbus-glib-1-dev, librsvg2-bin, libgarmin-dev, imagemagick, cmake -Standards-Version: 3.9.5 -Homepage: http://navit.sourceforge.net/ +Standards-Version: 3.9.6 +Homepage: http://wiki.navit-project.org Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/navit.git;a=summary Vcs-Git: git://anonscm.debian.org/collab-maint/navit.git @@ -66,8 +66,7 @@ Package: navit-gui-internal Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, - navit-graphics-gtk-drawing-area (= ${binary:Version}) | - navit-graphics-qt-qpainter (= ${binary:Version}) + navit-graphics-gtk-drawing-area (= ${binary:Version}) Recommends: navit (= ${binary:Version}) Description: Car navigation system with routing engine - internal GUI Navit is a car navigation system with routing engine. @@ -87,17 +86,6 @@ . This package contains the internal GUI plugin. -#Package: navit-gui-qml -#Architecture: any -#Depends: ${shlibs:Depends}, ${misc:Depends}, -#Recommends: navit (= ${binary:Version}) -#Description: Car navigation system with routing engine - QML GUI -# Navit is a car navigation system with routing engine. -# . -# It has a modular design and supports several GUIs and graphic backends. -# . -# This package contains the QML GUI plugin. - Package: navit-graphics-gtk-drawing-area Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, librsvg2-common @@ -121,29 +109,6 @@ This package contains the graphic gtk-drawing-area plugin to use with GTK+ aware GUIs plugins. -Package: navit-graphics-qt-qpainter -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Recommends: navit (= ${binary:Version}) -Description: Car navigation system with routing engine - Qt graphic plugin - Navit is a car navigation system with routing engine. - . - Its modular design is capable of using vector maps of various formats for - routing and rendering of the displayed map. It's even possible to use multiple - maps at a time. - . - The GTK+ or SDL user interfaces are designed to work well with touch screen - displays. Points of Interest of various formats are displayed on the map. - . - The current vehicle position is either read from gpsd or directly from NMEA - GPS sensors. - . - The routing engine not only calculates an optimal route to your destination, - but also generates directions and even speaks to you using speech-dispatcher. - . - This package contains the graphic qt-qpainter plugin to use with Qt aware GUIs - plugins. - Package: navit-data Architecture: all Depends: ${misc:Depends} diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/copyright navit-0.5.0+dfsg.1/debian/copyright --- navit-0.5.0~svn5900+dfsg.1/debian/copyright 2014-09-29 09:54:06.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/copyright 2016-01-03 12:58:04.000000000 +0000 @@ -14,28 +14,31 @@ See debian/README.source for details. Files: * -Copyright: © 2005-2011 Navit Team +Copyright: © 2005-2015 Navit Team License: GPL-2 Files: navit/*.h -Copyright: © 2005-2011 Navit Team +Copyright: © 2005-2015 Navit Team License: LGPL-2 Files: navit/atom.h navit/cache.h navit/command.h navit/event_glib.h navit/keys.h navit/navit_nls.h navit/window.h -Copyright: © 2005-2011 Navit Team +Copyright: © 2005-2015 Navit Team License: GPL-2 -Files: navit/graphics/sdl/* -Copyright: © 2005-2008 Bryan Rittmeyer -License: LGPL-2 - Files: navit/graphics/sdl/graphics_sdl.c Copyright: © 2005-2008 Bryan Rittmeyer + © 2008-2015 Navit Team License: GPL-2 +Files: navit/graphics/sdl/raster.* +Copyright: © 2005-2008 Bryan Rittmeyer + © 2008-2015 Navit Team +License: LGPL-2 + Files: navit/map/garmin/* Copyright: © 2007 Alexander Atanasov + © 2008-2011 Navit Team License: GPL-2 Files: navit/vehicle/webos/cJSON.* @@ -48,11 +51,14 @@ Files: navit/xpm/bahai.svg + navit/xpm/bicycle_rental.svg + navit/xpm/bicycle_shop.svg navit/xpm/biergarten.svg navit/xpm/buddhist.svg navit/xpm/bus_stop.svg navit/xpm/car_dealer.svg navit/xpm/car_rent.svg + navit/xpm/car_sharing.svg navit/xpm/casino.svg navit/xpm/castle.svg navit/xpm/dam.svg @@ -66,6 +72,7 @@ navit/xpm/library.svg navit/xpm/memorial.svg navit/xpm/picnic.svg + navit/xpm/rail_station.svg navit/xpm/shelter.svg navit/xpm/shinto.svg navit/xpm/shop_computer.svg @@ -93,6 +100,7 @@ Files: navit/fib-1.1/* Copyright: © 1997-2003 John-Mark Gurney + © 2008-2011 Navit Team License: FreeBSD Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -117,6 +125,7 @@ Files: navit/sunriset.c Copyright: © 1989, 1992, Paul Schlyter + © 2009-2013 Navit Team License: PD Released to the public domain by Paul Schlyter, December 1992. @@ -157,12 +166,13 @@ Files: navit/maptool/google/protobuf-c/protobuf-c* Copyright: © 2008 Dave Benson + © 2012-2014 Navit Team License: Apache-2.0 Files: debian/* Copyright: © 2008 Carsten Wolff © 2008-2009 Bernd Zeimetz - © 2008-2011 Gilles Filippini + © 2008-2015 Gilles Filippini License: GPL-2+ License: GPL-2 diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/navit-graphics-qt-qpainter.install navit-0.5.0+dfsg.1/debian/navit-graphics-qt-qpainter.install --- navit-0.5.0~svn5900+dfsg.1/debian/navit-graphics-qt-qpainter.install 2014-09-29 09:54:06.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/navit-graphics-qt-qpainter.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/tmp/usr/lib/navit/graphics/libgraphics_qt_qpainter* diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/navit-gui-qml.install navit-0.5.0+dfsg.1/debian/navit-gui-qml.install --- navit-0.5.0~svn5900+dfsg.1/debian/navit-gui-qml.install 2014-09-29 09:54:06.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/navit-gui-qml.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -debian/tmp/usr/lib/navit/gui/libgui_qml* -debian/tmp/usr/share/navit/gui/qml diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/patches/icons-dir navit-0.5.0+dfsg.1/debian/patches/icons-dir --- navit-0.5.0~svn5900+dfsg.1/debian/patches/icons-dir 2014-09-29 11:12:25.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/patches/icons-dir 2016-01-03 13:28:33.000000000 +0000 @@ -8,7 +8,7 @@ =================================================================== --- navit.orig/CMakeLists.txt +++ navit/CMakeLists.txt -@@ -30,7 +30,7 @@ ENDIF(NOT CMAKE_BUILD_TYPE) +@@ -32,7 +32,7 @@ ENDIF(NOT CMAKE_BUILD_TYPE) set(BIN_DIR bin) set(SHARE_DIR share/navit) set(LOCALE_DIR share/locale) @@ -17,7 +17,7 @@ set(MAN_DIR share/man/man1) # LIB_DIR IF(UNIX AND NOT ANDROID AND NOT APPLE) -@@ -487,7 +487,7 @@ if(WIN32 OR WINCE) +@@ -526,7 +526,7 @@ if(WIN32 OR WINCE) set(BIN_DIR bin) set(SHARE_DIR ./) set(LOCALE_DIR locale) @@ -30,7 +30,7 @@ =================================================================== --- navit.orig/navit/graphics.c +++ navit/navit/graphics.c -@@ -1960,7 +1960,7 @@ graphics_icon_path(const char *icon) +@@ -2074,7 +2074,7 @@ graphics_icon_path(const char *icon) #else if (! navit_sharedir) navit_sharedir = getenv("NAVIT_SHAREDIR"); diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/patches/maptool-uninitialised-values.patch navit-0.5.0+dfsg.1/debian/patches/maptool-uninitialised-values.patch --- navit-0.5.0~svn5900+dfsg.1/debian/patches/maptool-uninitialised-values.patch 2014-09-29 11:17:29.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/patches/maptool-uninitialised-values.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -Description: Fix maptool segfault due to uninitialised values -Author: Gilles Filippini -Bug-Debian: http://bugs.debian.org/682553 -Index: navit/navit/maptool/osm.c -=================================================================== ---- navit.orig/navit/maptool/osm.c -+++ navit/navit/maptool/osm.c -@@ -2592,7 +2592,7 @@ process_turn_restrictions_finish(GList * - GList *l=tr; - while (l) { - struct turn_restriction *t=l->data; -- struct coord *c[4]; -+ struct coord *c[4]={ NULL }; - struct item_bin *ib=tmp_item_bin; - - if (!t->c_count[0]) { diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/patches/osd_get_attr-undefined.patch navit-0.5.0+dfsg.1/debian/patches/osd_get_attr-undefined.patch --- navit-0.5.0~svn5900+dfsg.1/debian/patches/osd_get_attr-undefined.patch 2014-09-29 11:12:15.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/patches/osd_get_attr-undefined.patch 2016-01-03 12:58:04.000000000 +0000 @@ -6,7 +6,7 @@ =================================================================== --- navit.orig/navit/binding/dbus/binding_dbus.c +++ navit/navit/binding/dbus/binding_dbus.c -@@ -1009,13 +1009,13 @@ request_navigation_get_attr(DBusConnecti +@@ -1045,13 +1045,13 @@ request_navigation_get_attr(DBusConnecti return request_get_attr(connection, message, "navigation", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))navigation_get_attr); } @@ -22,7 +22,7 @@ static DBusHandlerResult -@@ -1755,7 +1755,7 @@ struct dbus_method { +@@ -1995,7 +1995,7 @@ struct dbus_method { {".mapset", "get_attr", "s", "attribute", "sv", "attrname,value", request_mapset_get_attr}, {".mapset", "get_attr_wi", "so", "attribute,attr_iter", "sv", "attrname,value", request_mapset_get_attr}, {".navigation","get_attr", "s", "attribute", "", "", request_navigation_get_attr}, diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/patches/series navit-0.5.0+dfsg.1/debian/patches/series --- navit-0.5.0~svn5900+dfsg.1/debian/patches/series 2014-09-29 09:54:06.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/patches/series 2016-01-03 13:32:01.000000000 +0000 @@ -3,5 +3,3 @@ fix-cmake.patch icons-dir dpkg-cross.patch -maptool-uninitialised-values.patch -support-speech-dispatcher-0.8.patch diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/patches/support-speech-dispatcher-0.8.patch navit-0.5.0+dfsg.1/debian/patches/support-speech-dispatcher-0.8.patch --- navit-0.5.0~svn5900+dfsg.1/debian/patches/support-speech-dispatcher-0.8.patch 2014-09-29 11:18:31.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/patches/support-speech-dispatcher-0.8.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -Description: Support speech-dispatcher >= 0.8 - Upstream decided to move the header files in libspeechd-dev - from /usr/include/ to /usr/include/speech-dispatcher/. -Author: Gilles Filippini -Bug-Debian: http://bugs.debian.org/739210 -Index: navit/CMakeLists.txt -=================================================================== ---- navit.orig/CMakeLists.txt -+++ navit/CMakeLists.txt -@@ -153,6 +153,13 @@ CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT - CHECK_INCLUDE_FILES(byteswap.h HAVE_BYTESWAP_H) - CHECK_LIBRARY_EXISTS(gypsy gypsy_control_get_default "" GYPSY_FOUND) - CHECK_INCLUDE_FILES(libspeechd.h HAVE_LIBSPEECHD) -+if (NOT HAVE_LIBSPEECHD) -+ CHECK_INCLUDE_FILES(speech-dispatcher/libspeechd.h HAVE_LIBSPEECHD08) -+ if (HAVE_LIBSPEECHD08) -+ add_definitions("-DHAVE_LIBSPEECHD08") -+ set(HAVE_LIBSPEECHD 1) -+ endif(HAVE_LIBSPEECHD08) -+endif(NOT HAVE_LIBSPEECHD) - CHECK_INCLUDE_FILES(sys/socket.h HAVE_SOCKET) - CHECK_INCLUDE_FILES(sys/shm.h HAVE_SHMEM) - CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF) -Index: navit/navit/speech/speech_dispatcher/speech_speech_dispatcher.c -=================================================================== ---- navit.orig/navit/speech/speech_dispatcher/speech_speech_dispatcher.c -+++ navit/navit/speech/speech_dispatcher/speech_speech_dispatcher.c -@@ -27,7 +27,11 @@ - #include - #include - #include "config.h" -+#ifdef HAVE_LIBSPEECHD08 -+#include -+#else - #include -+#endif - #include "plugin.h" - #include "speech.h" - diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/README.Debian navit-0.5.0+dfsg.1/debian/README.Debian --- navit-0.5.0~svn5900+dfsg.1/debian/README.Debian 2014-09-29 09:54:06.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/README.Debian 2016-01-03 12:58:04.000000000 +0000 @@ -3,12 +3,12 @@ Navit is a young and volatile software. Often after an update you will have to redo your configuration starting with copying /etc/navit/navit.xml -to ~/.navit/ and then editing it. Pease have a look at the Configuring Navit +to ~/.navit/ and then editing it. Pease have a look at the Configuration wiki page at: -http://wiki.navit-project.org/index.php/Configuring_Navit +http://wiki.navit-project.org/index.php/Configuration Before you can make use of this software, you need to get maps. To see, where you can get maps for navit, see: -http://wiki.navit-project.org/index.php/Main_Page#Maps +http://wiki.navit-project.org/index.php/Maps - -- Carsten Wolff Fri, 18 Apr 2008 23:28:24 +0200 + -- Gilles Filippini Mon, 20 Jul 2015 23:25:09 +0200 diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/README.source navit-0.5.0+dfsg.1/debian/README.source --- navit-0.5.0~svn5900+dfsg.1/debian/README.source 2014-09-29 09:54:06.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/README.source 2016-01-03 14:17:24.000000000 +0000 @@ -11,28 +11,25 @@ $ git clone @alioth.debian.org:/git/collab-maint/navit.git -The repository has 3 remote branches: -* origin/upstream-svn +The repository has 2 remote branches: * origin/upstream * origin/master +plus old deprecated upstream SVN branch: +* origin/upstream-svn HEAD is binded to master. -master fetched localy by the clone: - - $ git branch - * master - -A daily cronjob managed by bzed syncs origin/upstream-svn with upstream's SVN -repository (). -A packaging cycle starts by merging origin/upstream-svn with upstream. It -requires having checked out origin/upstream localy (need to be done once): +Upstream's repository is on Github: +https://github.com/navit-gps/navit.git - $ git checkout -b upstream origin/upstream - -Then we can do the merge: - - $ git merge origin/upstream-svn +To merge upstream changes: +1- Create upstream-github remote: + $ git remote add upstream-github https://github.com/navit-gps/navit.git +2- Fetch upstream-github/master + $ git fetch upstream-github master +3- Merge into branch upstream: + $ git checkout upstream + $ git merge upstream-github/master It can leads to conflicts since some parts of pristine upstream tree have been removed in our upstream branch. These removed parts are listed below: @@ -42,6 +39,17 @@ contrib/android* navit/speech/android + Note: the following files are kept in the source tree because they are + requested by the gettext step: + navit/android/res/values/strings.xml + navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java + navit/android/src/org/navitproject/navit/NavitAndroidOverlay.java + navit/android/src/org/navitproject/navit/NavitDialogs.java + navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java + navit/android/src/org/navitproject/navit/NavitGraphics.java + navit/android/src/org/navitproject/navit/Navit.java + navit/android/src/org/navitproject/navit/NavitMapDownloader.java + * iphone stuff: navit/iphone navit/vehicle/iphone @@ -56,8 +64,7 @@ * useless embedded stuff navit/fonts - navit/intl_cmake - navit/map/poi_geodownload/libmdb + navit/support/gettext_intl navit/support/espeak navit/support/ezxml navit/support/glib @@ -109,6 +116,7 @@ * -Dgraphics/sdl=FALSE: seems functional since release 0.2.0, but keeping disabled for now until I'm sure it's mature enough * -Dgraphics/opengl=FALSE: idem sdl -* -Dgui/qml=FALSE: idem sdl +* -Dgraphics/qt_qpainter=FALSE: unmaintained and barely usable +* -Dgui/qml=FALSE: idem qt * Tons of gcc warnings diff -Nru navit-0.5.0~svn5900+dfsg.1/debian/rules navit-0.5.0+dfsg.1/debian/rules --- navit-0.5.0~svn5900+dfsg.1/debian/rules 2014-09-29 09:54:06.000000000 +0000 +++ navit-0.5.0+dfsg.1/debian/rules 2016-01-03 14:12:54.000000000 +0000 @@ -10,9 +10,7 @@ export CMAKE_TOOLCHAIN_FILE=/etc/dpkg-cross/cmake/CMakeCross.txt CMAKEFLAGS += -DCMAKE_LIBRARY_PATH="/usr/$(DEB_HOST_MULTIARCH)/lib" -DCMAKE_REQUIRED_INCLUDES="/usr/$(DEB_HOST_MULTIARCH)/include;/usr/$(DEB_HOST_MULTIARCH)/include/$(DEB_HOST_MULTIARCH)" \ -DCMAKE_C_FLAGS_DEBIAN="$(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) -I/usr/$(DEB_HOST_MULTIARCH)/include -I/usr/$(DEB_HOST_MULTIARCH)/include/$(DEB_HOST_MULTIARCH)" \ - -DCMAKE_CXX_FLAGS_DEBIAN="$(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) -I/usr/$(DEB_HOST_MULTIARCH)/include -I/usr/$(DEB_HOST_MULTIARCH)/include/$(DEB_HOST_MULTIARCH) -I/usr/$(DEB_HOST_MULTIARCH)/include/qt4" -CMAKEFLAGS += -DQT_QTCORE_LIBRARY="/usr/$(DEB_HOST_MULTIARCH)/lib/libQtCore.so" -CMAKEFLAGS += -DQT_QTCORE_LIBRARY_RELEASE="/usr/$(DEB_HOST_MULTIARCH)/lib/libQtCore.so" + -DCMAKE_CXX_FLAGS_DEBIAN="$(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) -I/usr/$(DEB_HOST_MULTIARCH)/include -I/usr/$(DEB_HOST_MULTIARCH)/include/$(DEB_HOST_MULTIARCH)" else export CC=gcc export CXX=g++ @@ -45,7 +43,7 @@ #CMAKEFLAGS += -Dbinding/python=FALSE # Wanted graphic backends -CMAKEFLAGS += -Dgraphics/gtk_drawing_area=TRUE -Dgraphics/qt_qpainter=TRUE -Dgraphics/null=TRUE +CMAKEFLAGS += -Dgraphics/gtk_drawing_area=TRUE -Dgraphics/qt_qpainter=FALSE -Dgraphics/null=TRUE # Unwanted graphic backends (yet) # opengl and sdl backends aren't mature enough @@ -82,7 +80,7 @@ CMAKEFLAGS += -DLIBDIR=lib %: - dh $@ + dh $@ --parallel override_dh_auto_configure: dh_auto_configure -- $(CMAKEFLAGS) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/android/res/values/strings.xml navit-0.5.0+dfsg.1/navit/android/res/values/strings.xml --- navit-0.5.0~svn5900+dfsg.1/navit/android/res/values/strings.xml 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/android/res/values/strings.xml 2016-01-02 22:29:50.000000000 +0000 @@ -23,6 +23,7 @@ Toggle POIs Exit Navit Backup / Restore + Set map location Position @@ -71,5 +72,9 @@ Select backup Backup Restore + + + System text to speech engine data is missing + Navit can use any text to speech engine installed on your device. The currently selected engine reports it is unable to speak in your language. Should we ask the system to show voice download dialog? diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java --- navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java 2016-01-02 22:29:50.000000000 +0000 @@ -101,6 +101,23 @@ } return drawableId; } + + private void setCountryButtonImage() { + // We have all images stored as drawable_nodpi resources which allows native code to manipulate them + // without interference with android builtin choosing and scaling system. But that makes us to + // reinvent the wheel here to show an image in android native interface. + int flag_icon_sizes[]={24,32,48,64,96}; + int exact_size, nearest_size; + exact_size=(int)(Navit.metrics.density*24.0 -.5); + nearest_size=flag_icon_sizes[0]; + for(int size: flag_icon_sizes) { + nearest_size=size; + if(exact_size<=size) + break; + } + mCountryButton.setImageResource(getDrawableID("country_" + mCountry+"_"+nearest_size+"_"+nearest_size)); + } + @Override protected void onCreate(Bundle savedInstanceState) { @@ -139,8 +156,8 @@ } mCountryButton = new ImageButton(this); - - mCountryButton.setImageResource(getDrawableID("country_" + mCountry)); + + setCountryButtonImage(); mCountryButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { @@ -254,11 +271,13 @@ edit_settings.putString("DefaultCountry", mCountry); edit_settings.commit(); - mCountryButton.setImageResource(getDrawableID("country_" + mCountry)); + setCountryButtonImage(); } }); - mapModeChooser.show(); + AlertDialog d=mapModeChooser.create(); + d.getListView().setFastScrollEnabled(true); + d.show(); } /** @@ -295,6 +314,7 @@ finish(); } ListView addressesFound = new ListView(this); + addressesFound.setFastScrollEnabled(true); ArrayAdapter addressList = new ArrayAdapter(this, android.R.layout.simple_list_item_1); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitDialogs.java navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitDialogs.java --- navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitDialogs.java 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitDialogs.java 2016-01-02 22:29:50.000000000 +0000 @@ -68,11 +68,21 @@ mActivity.dismissDialog(DIALOG_MAPDOWNLOAD); mActivity.removeDialog(DIALOG_MAPDOWNLOAD); if (msg.getData().getInt("value1") == 1) { - Message activate_map_msg = + Message msg_out = Message.obtain(Navit.N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_LOAD_MAP.ordinal()); - activate_map_msg.setData(msg.getData()); - activate_map_msg.sendToTarget(); + msg_out.setData(msg.getData()); + msg_out.sendToTarget(); + + msg_out = Message.obtain(Navit.N_NavitGraphics.callback_handler, + NavitGraphics.msg_type.CLB_CALL_CMD.ordinal()); + Bundle b = new Bundle(); + int mi=msg.getData().getInt("value2"); + double lon=(Double.parseDouble(NavitMapDownloader.osm_maps[mi].lon1)+Double.parseDouble(NavitMapDownloader.osm_maps[mi].lon2))/2.0; + double lat=(Double.parseDouble(NavitMapDownloader.osm_maps[mi].lat1)+Double.parseDouble(NavitMapDownloader.osm_maps[mi].lat2))/2.0; + b.putString("cmd", "set_center(\""+ lon +" "+ lat + "\",1); zoom=256"); + msg_out.setData(b); + msg_out.sendToTarget(); } break; } @@ -131,7 +141,8 @@ public void onDismiss(DialogInterface dialog) { Log.e("Navit", "onDismiss: mapdownloader_dialog"); - mapdownloader.stop_thread(); + if(mapdownloader!=null) + mapdownloader.stop_thread(); } }; mapdownloader_dialog.setOnDismissListener(onDismissListener); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java --- navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java 2016-01-02 22:29:50.000000000 +0000 @@ -59,12 +59,20 @@ updateDownloadedMaps(); updateMapsForLocation(NavitMapDownloader.osm_maps); setListAdapter(adapter); - setTitle(String.valueOf(getFreeSpace() / 1024 / 1024) + "MB available"); + try { + setTitle(String.valueOf(getFreeSpace() / 1024 / 1024) + "MB available"); + } catch (Exception e) { + Log.e("Navit","Exception "+e.getClass().getName()+" during getFreeSpace, reporting 'no sdcard present'"); + NavitDialogs.sendDialogMessage(NavitDialogs.MSG_TOAST_LONG, null, + String.format(Navit._("Current map location %s is not available\nPlease restart Navit after you attach an SD card or select a different map location."),Navit.map_filename_path), + -1, 0, 0); + finish(); + } } protected long getFreeSpace() { - StatFs fsInfo = new StatFs(NavitMapDownloader.MAP_FILENAME_PATH); + StatFs fsInfo = new StatFs(Navit.map_filename_path); return (long)fsInfo.getAvailableBlocks() * fsInfo.getBlockSize(); } @@ -177,8 +185,15 @@ String map_index = child.get("map_index"); if (map_index != null) { + int mi=Integer.parseInt(map_index); + if(NavitMapDownloader.osm_maps[mi].est_size_bytes/1024/1024/950>=4) { + NavitDialogs.sendDialogMessage(NavitDialogs.MSG_TOAST_LONG, null, + Navit._("Sorry, we currently do not support maps above 3.8G on Android, please select a smaller one."), + -1, 0, 0); + return true; + } Intent resultIntent = new Intent(); - resultIntent.putExtra("map_index", Integer.parseInt(map_index)); + resultIntent.putExtra("map_index", mi); setResult(Activity.RESULT_OK, resultIntent); finish(); } else { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitGraphics.java navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitGraphics.java --- navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitGraphics.java 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitGraphics.java 2016-01-02 22:29:50.000000000 +0000 @@ -27,6 +27,7 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PointF; @@ -160,24 +161,16 @@ canvas.drawBitmap(draw_bitmap, pos_x, pos_y, null); if (overlay_disabled == 0) { - //Log.e("NavitGraphics", "view -> onDraw 1"); // assume we ARE in map view mode! in_map = true; - - Object overlays_array[]; - overlays_array = overlays.toArray(); - for (Object overlay : overlays_array) - { - //Log.e("NavitGraphics","view -> onDraw 2"); - - NavitGraphics overlay_graphics = (NavitGraphics) overlay; - if (overlay_graphics.overlay_disabled == 0) - { - //Log.e("NavitGraphics","view -> onDraw 3"); - Rect r=overlay_graphics.get_rect(); - canvas.drawBitmap(overlay_graphics.draw_bitmap, r.left, r.top, null); + for (NavitGraphics overlay : overlays) + { + if (overlay.overlay_disabled == 0) + { + Rect r=overlay.get_rect(); + canvas.drawBitmap(overlay.draw_bitmap, r.left, r.top, null); } - } + } } else { @@ -195,7 +188,7 @@ } } } - + @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { @@ -496,7 +489,7 @@ } else if (keyCode == android.view.KeyEvent.KEYCODE_DPAD_DOWN) { - s = java.lang.String.valueOf((char) 16); + s = java.lang.String.valueOf((char) 14); } else if (keyCode == android.view.KeyEvent.KEYCODE_DPAD_LEFT) { @@ -508,7 +501,7 @@ } else if (keyCode == android.view.KeyEvent.KEYCODE_DPAD_UP) { - s = java.lang.String.valueOf((char) 14); + s = java.lang.String.valueOf((char) 16); } } else if (i == 10) @@ -693,7 +686,7 @@ } public NavitGraphics(final Activity activity, NavitGraphics parent, int x, int y, int w, int h, - int alpha, int wraparound, int use_camera) + int wraparound, int use_camera) { if (parent == null) { @@ -930,19 +923,68 @@ // float fy = y; draw_canvas.drawBitmap(bitmap, x, y, paint); } + + /* takes an image and draws it on the screen as a prerendered maptile + * + * + * + * @param paint Paint object used to draw the image + * @param count the number of points specified + * @param p0x and p0y specifying the top left point + * @param p1x and p1y specifying the top right point + * @param p2x and p2y specifying the bottom left point, not yet used but kept + * for compatibility with the linux port + * @param bitmap Bitmap object holding the image to draw + * + * TODO make it work with 4 points specified to make it work for 3D mapview, so it can be used + * for small but very detailed maps as well as for large maps with very little detail but large + * coverage. + * TODO make it work with rectangular tiles as well ? + */ + protected void draw_image_warp(Paint paint, int count, int p0x, int p0y, int p1x, int p1y, int p2x, int p2y, Bitmap bitmap) + { + + float width; + float scale; + float deltaY; + float deltaX; + float angle; + Matrix matrix; + + if (count == 3) + { + matrix = new Matrix(); + deltaX = p1x - p0x; + deltaY = p1y - p0y; + width = (float) (Math.sqrt((deltaX * deltaX) + (deltaY * deltaY))); + angle = (float) (Math.atan2(deltaY, deltaX) * 180d / Math.PI); + scale = width / bitmap.getWidth(); + matrix.preScale(scale, scale); + matrix.postTranslate(p0x, p0y); + matrix.postRotate(angle, p0x, p0y); + draw_canvas.drawBitmap(bitmap, matrix, paint); + } + } + + /* These constants must be synchronized with enum draw_mode_num in graphics.h. */ + public static final int draw_mode_begin = 0; + public static final int draw_mode_end = 1; + protected void draw_mode(int mode) { //Log.e("NavitGraphics", "draw_mode mode=" + mode + " parent_graphics=" // + String.valueOf(parent_graphics)); - if (mode == 2) { + if (mode == draw_mode_end) { if (parent_graphics == null) { view.invalidate(); } else { parent_graphics.view.invalidate(get_rect()); } } - if (mode == 1 || (mode == 0 && parent_graphics != null)) draw_bitmap.eraseColor(0); + if (mode == draw_mode_begin && parent_graphics != null) { + draw_bitmap.eraseColor(0); + } } protected void draw_drag(int x, int y) @@ -965,11 +1007,16 @@ } } - protected void overlay_resize(int x, int y, int w, int h, int alpha, int wraparond) + protected void overlay_resize(int x, int y, int w, int h, int wraparound) { //Log.e("NavitGraphics","overlay_resize"); + draw_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); + bitmap_w = w; + bitmap_h = h; pos_x = x; pos_y = y; + pos_wraparound = wraparound; + draw_canvas.setBitmap(draw_bitmap); } public static String getLocalizedString(String text) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/Navit.java navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/Navit.java --- navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/Navit.java 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/Navit.java 2016-01-02 22:29:50.000000000 +0000 @@ -59,6 +59,7 @@ import android.view.Display; import android.view.Menu; import android.view.MenuItem; +import android.view.Window; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.RelativeLayout; @@ -84,13 +85,14 @@ public static final int NavitDownloaderSelectMap_id = 967; public static final int MAP_NUM_PRIMARY = 11; public static final int NavitAddressSearch_id = 70; + public static final int NavitSelectStorage_id = 43; public static String NavitLanguage; public static Resources NavitResources = null; public static final int MAP_NUM_SECONDARY = 12; static final String NAVIT_PACKAGE_NAME = "org.navitproject.navit"; static final String TAG = "Navit"; - static final String MAP_FILENAME_PATH = Environment.getExternalStorageDirectory().getPath() + "/navit/"; + static String map_filename_path = null; static final String NAVIT_DATA_DIR = "/data/data/" + NAVIT_PACKAGE_NAME; static final String NAVIT_DATA_SHARE_DIR = NAVIT_DATA_DIR + "/share"; static final String FIRST_STARTUP_FILE = NAVIT_DATA_SHARE_DIR + "/has_run_once.txt"; @@ -181,6 +183,7 @@ while ((i = resourcestream.read(buf)) != -1) { resultfilestream.write(buf, 0, i); } + resultfilestream.close(); } catch (Exception e) { Log.e(TAG, "Exception " + e.getMessage()); return false; @@ -241,6 +244,8 @@ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) + this.requestWindowFeature(Window.FEATURE_NO_TITLE); dialogs = new NavitDialogs(this); @@ -294,8 +299,11 @@ } Log.e("Navit", "Language " + lang); + SharedPreferences prefs = getSharedPreferences(NAVIT_PREFS,MODE_PRIVATE); + map_filename_path = prefs.getString("filenamePath", Environment.getExternalStorageDirectory().getPath() + "/navit/"); + // make sure the new path for the navitmap.bin file(s) exist!! - File navit_maps_dir = new File(MAP_FILENAME_PATH); + File navit_maps_dir = new File(map_filename_path); navit_maps_dir.mkdirs(); // make sure the share dir exists @@ -307,7 +315,7 @@ int height_ = display_.getHeight(); metrics = new DisplayMetrics(); display_.getMetrics(Navit.metrics); - int densityDpi = (int)(( Navit.metrics.density*160)+.5f); + int densityDpi = (int)(( Navit.metrics.density*160)-.5f); Log.e("Navit", "Navit -> pixels x=" + width_ + " pixels y=" + height_); Log.e("Navit", "Navit -> dpi=" + densityDpi); Log.e("Navit", "Navit -> density=" + Navit.metrics.density); @@ -331,15 +339,27 @@ { my_display_density = "mdpi"; } - else if (densityDpi < 320) + else if (densityDpi < 240) { my_display_density = "hdpi"; } + else if (densityDpi < 320) + { + my_display_density = "xhdpi"; + } + else if (densityDpi < 480) + { + my_display_density = "xxhdpi"; + } + else if (densityDpi < 640) + { + my_display_density = "xxxhdpi"; + } else { - Log.e("Navit", "found xhdpi device, this is not fully supported!!"); - Log.e("Navit", "using hdpi values"); - my_display_density = "hdpi"; + Log.e("Navit", "found device of very high density ("+densityDpi+")"); + Log.e("Navit", "using xxxhdpi values"); + my_display_density = "xxxhdpi"; } if (!extractRes("navit" + my_display_density, NAVIT_DATA_DIR + "/share/navit.xml")) @@ -349,7 +369,7 @@ // --> dont use android.os.Build.VERSION.SDK_INT, needs API >= 4 Log.e("Navit", "android.os.Build.VERSION.SDK_INT=" + Integer.valueOf(android.os.Build.VERSION.SDK)); - NavitMain(this, NavitLanguage, Integer.valueOf(android.os.Build.VERSION.SDK), my_display_density, NAVIT_DATA_DIR+"/bin/navit"); + NavitMain(this, NavitLanguage, Integer.valueOf(android.os.Build.VERSION.SDK), my_display_density, NAVIT_DATA_DIR+"/bin/navit",map_filename_path); showInfos(); @@ -453,13 +473,14 @@ menu.clear(); // group-id,item-id,sort order number - menu.add(1, 1, 100, getString(R.string.optionsmenu_zoom_in)); //TRANS - menu.add(1, 2, 200, getString(R.string.optionsmenu_zoom_out)); //TRANS + //menu.add(1, 1, 100, getString(R.string.optionsmenu_zoom_in)); //TRANS + //menu.add(1, 2, 200, getString(R.string.optionsmenu_zoom_out)); //TRANS menu.add(1, 3, 300, getString(R.string.optionsmenu_download_maps)); //TRANS menu.add(1, 5, 400, getString(R.string.optionsmenu_toggle_poi)); //TRANS menu.add(1, 6, 500, getString(R.string.optionsmenu_address_search)); //TRANS + menu.add(1, 10, 600, getString(R.string.optionsmenu_set_map_location)); menu.add(1, 99, 900, getString(R.string.optionsmenu_exit_navit)); //TRANS @@ -508,8 +529,14 @@ @Override public boolean onOptionsItemSelected(MenuItem item) { + runOptionsItem(item.getItemId()); + return true; + } + + public void runOptionsItem(int id) + { // Handle item selection - switch (item.getItemId()) + switch (id) { case 1 : // zoom in @@ -553,13 +580,15 @@ /* Backup / Restore */ showDialog(NavitDialogs.DIALOG_BACKUP_RESTORE); break; + case 10: + setMapLocation(); + break; case 99 : // exit this.onStop(); this.exit(); break; } - return true; } void setDestination(float latitude, float longitude, String address) { @@ -596,6 +625,22 @@ msg.sendToTarget(); } break; + case NavitSelectStorage_id : + if(resultCode == RESULT_OK) { + String newDir = data.getStringExtra(FileBrowserActivity.returnDirectoryParameter); + Log.d(TAG, "selected path= "+newDir); + if(!newDir.contains("/navit")) + newDir = newDir+"/navit/"; + else + newDir = newDir+"/"; + SharedPreferences prefs = this.getSharedPreferences(NAVIT_PREFS,MODE_PRIVATE); + SharedPreferences.Editor prefs_editor = prefs.edit(); + prefs_editor.putString("filenamePath", newDir); + prefs_editor.commit(); + Toast.makeText(this, String.format(Navit._("New location set to %s\nRestart Navit to apply the changes."),newDir),Toast.LENGTH_LONG).show(); + } + else Log.w(TAG, "select path failed"); + break; default : //Log.e("Navit", "onActivityResult " + requestCode + " " + resultCode); ActivityResults[requestCode].onActivityResult(requestCode, resultCode, data); @@ -623,6 +668,17 @@ return true; } + public boolean setMapLocation() + { + Intent fileExploreIntent = new Intent(this,FileBrowserActivity.class); + fileExploreIntent + .putExtra(FileBrowserActivity.startDirectoryParameter, "/mnt") + .setAction(FileBrowserActivity.INTENT_ACTION_SELECT_DIR); + startActivityForResult(fileExploreIntent,NavitSelectStorage_id); + + return true; + } + @Override public void onDestroy() { @@ -634,17 +690,25 @@ NavitDestroy(); } - public void fullscreen(int fullscreen) { - if(fullscreen != 0) { + public void fullscreen(int fullscreen) + { + if(fullscreen != 0) + { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) + this.getActionBar().hide(); } - else { + else + { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) + this.getActionBar().show(); } } + public void disableSuspend() { wl.acquire(); @@ -656,10 +720,10 @@ NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); nm.cancel(R.string.app_name); NavitVehicle.removeListener(); - finish(); + NavitDestroy(); } - public native void NavitMain(Navit x, String lang, int version, String display_density_string, String path); + public native void NavitMain(Navit x, String lang, int version, String display_density_string, String path, String path2); public native void NavitDestroy(); /* diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitMapDownloader.java navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitMapDownloader.java --- navit-0.5.0~svn5900+dfsg.1/navit/android/src/org/navitproject/navit/NavitMapDownloader.java 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/android/src/org/navitproject/navit/NavitMapDownloader.java 2016-01-02 22:29:50.000000000 +0000 @@ -94,211 +94,211 @@ // define the maps here // public static final osm_map_values[] osm_maps = { - new osm_map_values(Navit._("Whole Planet"),"-180","-90","180","90", 7449814676L, 0), - new osm_map_values(Navit._("Africa"),"-30.89","-36.17","61.68","38.40", 280880799L, 0), - new osm_map_values(Navit._("Angola"),"11.4","-18.1","24.2","-5.3", 55850695L, 1), - new osm_map_values(Navit._("Burundi"),"28.9","-4.5","30.9","-2.2", 60694550L, 1), - new osm_map_values(Navit._("Canary Islands"),"-18.69","26.52","-12.79","29.99", 58904212L, 1), - new osm_map_values(Navit._("Congo, Democratic Republic of the"),"11.7","-13.6","31.5","5.7", 70168822L, 1), - new osm_map_values(Navit._("Ethiopia"),"32.89","3.33","48.07","14.97", 68113437L, 1), - new osm_map_values(Navit._("Guinea"),"-15.47","7.12","-7.58","12.74", 57466702L, 1), - new osm_map_values(Navit._("Cote d'Ivoire"),"-8.72","4.09","-2.43","10.80", 62652062L, 1), - new osm_map_values(Navit._("Kenya"),"33.8","-5.2","42.4","4.9", 64420106L, 1), - new osm_map_values(Navit._("Lesotho"),"26.9","-30.7","29.6","-28.4", 55533656L, 1), - new osm_map_values(Navit._("Liberia"),"-15.00","-0.73","-7.20","8.65", 55963569L, 1), - new osm_map_values(Navit._("Libya"),"9.32","19.40","25.54","33.63", 63127225L, 1), - new osm_map_values(Navit._("Madagascar"),"42.25","-26.63","51.20","-11.31", 56681202L, 1), - new osm_map_values(Navit._("Namibia")+"+"+Navit._("Botswana"),"11.4","-29.1","29.5","-16.9", 64357926L, 1), - new osm_map_values(Navit._("Reunion"),"55.2","-21.4","55.9","-20.9", 59487456L, 1), - new osm_map_values(Navit._("Rwanda"),"28.8","-2.9","30.9","-1.0", 60654274L, 1), - new osm_map_values(Navit._("South Africa")+"+"+Navit._("Lesotho"),"15.93","-36.36","33.65","-22.08", 79904318L, 1), - new osm_map_values(Navit._("Tanzania, United Republic of"),"29.19","-11.87","40.74","-0.88", 65380211L, 1), - new osm_map_values(Navit._("Uganda"),"29.3","-1.6","35.1","4.3", 61521337L, 1), - new osm_map_values(Navit._("Asia"),"23.8","0.1","195.0","82.4", 1185692230L, 0), - new osm_map_values(Navit._("Azerbaijan"),"44.74","38.34","51.69","42.37", 64563990L, 1), - new osm_map_values(Navit._("China"),"67.3","5.3","135.0","54.5", 354889731L, 1), - new osm_map_values(Navit._("Cyprus"),"32.0","34.5","34.9","35.8", 62657503L, 1), - new osm_map_values(Navit._("India")+"+"+Navit._("Nepal"),"67.9","5.5","89.6","36.0", 96930647L, 1), - new osm_map_values(Navit._("Indonesia"),"93.7","-17.3","155.5","7.6", 81860551L, 1), - new osm_map_values(Navit._("Iran, Islamic Republic of"),"43.5","24.4","63.6","40.4", 79782055L, 1), - new osm_map_values(Navit._("Iraq"),"38.7","28.5","49.2","37.4", 64053119L, 1), - new osm_map_values(Navit._("Israel"),"33.99","29.8","35.95","33.4", 73981247L, 1), - new osm_map_values(Navit._("Japan")+"+"+Navit._("Korea")+"+"+Navit._("Taiwan"),"117.6","20.5","151.3","47.1", 451295345L, 1), - new osm_map_values(Navit._("Kazakhstan"),"46.44","40.89","87.36","55.45", 114949353L, 1), - new osm_map_values(Navit._("Kyrgyzstan"),"69.23","39.13","80.33","43.29", 62425757L, 1), - new osm_map_values(Navit._("Malaysia")+"+"+Navit._("Singapore"),"94.3","-5.9","108.6","6.8", 61142116L, 1), - new osm_map_values(Navit._("Mongolia"),"87.5","41.4","120.3","52.7", 66228736L, 1), - new osm_map_values(Navit._("Pakistan"),"60.83","23.28","77.89","37.15", 74060802L, 1), - new osm_map_values(Navit._("Philippines"),"115.58","4.47","127.85","21.60", 71601316L, 1), - new osm_map_values(Navit._("Saudi Arabia"),"33.2","16.1","55.9","33.5", 100651634L, 1), - new osm_map_values(Navit._("Thailand"),"97.5","5.7","105.2","19.7", 68260330L, 1), - new osm_map_values(Navit._("Turkey"),"25.1","35.8","46.4","42.8", 105200911L, 1), - new osm_map_values(Navit._("Turkmenistan"),"51.78","35.07","66.76","42.91", 62188003L, 1), - new osm_map_values(Navit._("UAE+Other"),"51.5","22.6","56.7","26.5", 61873090L, 1), - new osm_map_values(Navit._("Australia")+"+"+Navit._("Oceania"),"89.84","-57.39","179.79","7.26", 185657003L, 0), - new osm_map_values(Navit._("Australia"),"110.5","-44.2","154.9","-9.2", 138812990L, 0), - new osm_map_values(Navit._("Tasmania"),"144.0","-45.1","155.3","-24.8", 109169592L, 1), - new osm_map_values(Navit._("Victoria")+"+"+Navit._("New South Wales"),"140.7","-39.4","153.7","-26.9", 104820309L, 1), - new osm_map_values(Navit._("New Caledonia"),"157.85","-25.05","174.15","-16.85", 54512722L, 1), - new osm_map_values(Navit._("New Zealand"),"165.2","-47.6","179.1","-33.7", 68221081L, 1), - new osm_map_values(Navit._("Europe"),"-12.97","33.59","34.15","72.10", 3570653608L, 0), - new osm_map_values(Navit._("Western Europe"),"-17.6","34.5","42.9","70.9", 3700019849L, 1), - new osm_map_values(Navit._("Austria"),"9.4","46.32","17.21","49.1", 289080462L, 1), - new osm_map_values(Navit._("Azores"),"-31.62","36.63","-24.67","40.13", 54507108L, 1), - new osm_map_values(Navit._("BeNeLux"),"2.08","48.87","7.78","54.52", 656716695L, 1), - new osm_map_values(Navit._("Netherlands"),"3.07","50.75","7.23","53.73", 525336576L, 1), - new osm_map_values(Navit._("Denmark"),"7.65","54.32","15.58","58.07", 154275079L, 1), - new osm_map_values(Navit._("Faroe Islands"),"-7.8","61.3","-6.1","62.5", 54931474L, 1), - new osm_map_values(Navit._("France"),"-5.45","42.00","8.44","51.68", 1468741961L, 1), - new osm_map_values(Navit._("Alsace"),"6.79","47.27","8.48","49.17", 144023488L, 2), - new osm_map_values(Navit._("Aquitaine"),"-2.27","42.44","1.50","45.76", 186786072L, 2), - new osm_map_values(Navit._("Auvergne"),"2.01","44.57","4.54","46.85", 118942252L, 2), - new osm_map_values(Navit._("Basse-Normandie"),"-2.09","48.13","1.03","49.98", 111940365L, 2), - new osm_map_values(Navit._("Bourgogne"),"2.80","46.11","5.58","48.45", 114109115L, 2), - new osm_map_values(Navit._("Bretagne"),"-5.58","46.95","-0.96","48.99", 188689862L, 2), - new osm_map_values(Navit._("Centre"),"0.01","46.29","3.18","48.99", 208870488L, 2), - new osm_map_values(Navit._("Champagne-Ardenne"),"3.34","47.53","5.94","50.28", 112266252L, 2), - new osm_map_values(Navit._("Corse"),"8.12","41.32","9.95","43.28", 67997394L, 2), - new osm_map_values(Navit._("Franche-Comte"),"5.20","46.21","7.83","48.07", 131236689L, 2), - new osm_map_values(Navit._("Haute-Normandie"),"-0.15","48.62","1.85","50.18", 90484736L, 2), - new osm_map_values(Navit._("Ile-de-France"),"1.40","48.07","3.61","49.29", 152890366L, 2), - new osm_map_values(Navit._("Languedoc-Roussillon"),"1.53","42.25","4.89","45.02", 168413195L, 2), - new osm_map_values(Navit._("Limousin"),"0.58","44.87","2.66","46.50", 98422724L, 2), - new osm_map_values(Navit._("Lorraine"),"4.84","47.77","7.72","49.73", 137538540L, 2), - new osm_map_values(Navit._("Midi-Pyrenees"),"-0.37","42.18","3.50","45.10", 186740619L, 2), - new osm_map_values(Navit._("Nord-pas-de-Calais"),"1.42","49.92","4.49","51.31", 145320230L, 2), - new osm_map_values(Navit._("Pays-de-la-Loire"),"-2.88","46.20","0.97","48.62", 243736184L, 2), - new osm_map_values(Navit._("Picardie"),"1.25","48.79","4.31","50.43", 163238861L, 2), - new osm_map_values(Navit._("Poitou-Charentes"),"-1.69","45.04","1.26","47.23", 197886714L, 2), - new osm_map_values(Navit._("Provence-Alpes-Cote-d-Azur"),"4.21","42.91","7.99","45.18", 179863755L, 2), - new osm_map_values(Navit._("Rhone-Alpes"),"3.65","44.07","7.88","46.64", 201452039L, 2), - new osm_map_values(Navit._("Germany"),"5.18","46.84","15.47","55.64", 1187298374L, 1), - new osm_map_values(Navit._("Baden-Wuerttemberg"),"7.32","47.14","10.57","49.85", 247149038L, 2), - new osm_map_values(Navit._("Bayern"),"8.92","47.22","13.90","50.62", 306577202L, 2), - new osm_map_values(Navit._("Mittelfranken"),"9.86","48.78","11.65","49.84", 95916401L, 2), - new osm_map_values(Navit._("Niederbayern"),"11.55","47.75","14.12","49.42", 119427776L, 2), - new osm_map_values(Navit._("Oberbayern"),"10.67","47.05","13.57","49.14", 147630851L, 2), - new osm_map_values(Navit._("Oberfranken"),"10.31","49.54","12.49","50.95", 104963024L, 2), - new osm_map_values(Navit._("Oberpfalz"),"11.14","48.71","13.47","50.43", 112413336L, 2), - new osm_map_values(Navit._("Schwaben"),"9.27","47.10","11.36","49.09", 126836560L, 2), - new osm_map_values(Navit._("Unterfranken"),"8.59","49.16","10.93","50.67", 124601596L, 2), - new osm_map_values(Navit._("Berlin"),"13.03","52.28","13.81","52.73", 78189548L, 2), - new osm_map_values(Navit._("Brandenburg"),"11.17","51.30","14.83","53.63", 126821283L, 2), - new osm_map_values(Navit._("Bremen"),"8.43","52.96","9.04","53.66", 69427370L, 2), - new osm_map_values(Navit._("Hamburg"),"9.56","53.34","10.39","53.80", 76388380L, 2), - new osm_map_values(Navit._("Hessen"),"7.72","49.34","10.29","51.71", 155980870L, 2), - new osm_map_values(Navit._("Mecklenburg-Vorpommern"),"10.54","53.05","14.48","55.05", 92107050L, 2), - new osm_map_values(Navit._("Niedersachsen"),"6.40","51.24","11.69","54.22", 288712601L, 2), - new osm_map_values(Navit._("Nordrhein-westfalen"),"5.46","50.26","9.52","52.59", 335383638L, 2), - new osm_map_values(Navit._("Rheinland-Pfalz"),"6.06","48.91","8.56","51.00", 157909942L, 2), - new osm_map_values(Navit._("Saarland"),"6.30","49.06","7.46","49.69", 78579241L, 2), - new osm_map_values(Navit._("Sachsen-Anhalt"),"10.50","50.88","13.26","53.11", 115314663L, 2), - new osm_map_values(Navit._("Sachsen"),"11.82","50.11","15.10","51.73", 134182818L, 2), - new osm_map_values(Navit._("Schleswig-Holstein"),"7.41","53.30","11.98","55.20", 114865543L, 2), - new osm_map_values(Navit._("Thueringen"),"9.81","50.15","12.72","51.70", 112896293L, 2), - new osm_map_values(Navit._("Germany")+"+"+Navit._("Austria")+"+"+Navit._("Switzerland"),"3.4","44.5","18.6","55.1", 1763000779L, 1), - new osm_map_values(Navit._("Iceland"),"-25.3","62.8","-11.4","67.5", 58803839L, 1), - new osm_map_values(Navit._("Ireland"),"-11.17","51.25","-5.23","55.9", 74456575L, 1), - new osm_map_values(Navit._("Italy"),"6.52","36.38","18.96","47.19", 373215809L, 1), - new osm_map_values(Navit._("Spain")+"+"+Navit._("Portugal"),"-11.04","34.87","4.62","44.41", 354839261L, 1), - new osm_map_values(Navit._("Mallorca"),"2.2","38.8","4.7","40.2", 66781797L, 2), - new osm_map_values(Navit._("Galicia"),"-10.0","41.7","-6.3","44.1", 69081612L, 2), - new osm_map_values(Navit._("Scandinavia"),"4.0","54.4","32.1","71.5", 386082513L, 1), - new osm_map_values(Navit._("Finland"),"18.6","59.2","32.3","70.3", 167464389L, 1), - new osm_map_values(Navit._("Denmark"),"7.49","54.33","13.05","57.88", 142017133L, 1), - new osm_map_values(Navit._("Switzerland"),"5.79","45.74","10.59","47.84", 197612725L, 1), - new osm_map_values(Navit._("United Kingdom"),"-9.7","49.6","2.2","61.2", 308044592L, 1), - new osm_map_values(Navit._("England"),"-7.80","48.93","2.41","56.14", 331085897L, 1), - new osm_map_values(Navit._("Buckinghamshire"),"-1.19","51.44","-0.43","52.25", 74619627L, 2), - new osm_map_values(Navit._("Cambridgeshire"),"-0.55","51.96","0.56","52.79", 71849188L, 2), - new osm_map_values(Navit._("Cumbria"),"-3.96","53.85","-2.11","55.24", 71699620L, 2), - new osm_map_values(Navit._("East yorkshire with hull"),"-1.16","53.50","0.54","54.26", 68241870L, 2), - new osm_map_values(Navit._("Essex"),"-0.07","51.40","1.36","52.14", 82991499L, 2), - new osm_map_values(Navit._("Herefordshire"),"-3.19","51.78","-2.29","52.45", 66471962L, 2), - new osm_map_values(Navit._("Kent"),"-0.02","50.81","1.65","51.53", 75449128L, 2), - new osm_map_values(Navit._("Lancashire"),"-3.20","53.43","-2.00","54.29", 75096621L, 2), - new osm_map_values(Navit._("Leicestershire"),"-1.65","52.34","-0.61","53.03", 75492394L, 2), - new osm_map_values(Navit._("Norfolk"),"0.10","52.30","2.04","53.41", 71556838L, 2), - new osm_map_values(Navit._("Nottinghamshire"),"-1.39","52.73","-0.62","53.55", 72979826L, 2), - new osm_map_values(Navit._("Oxfordshire"),"-1.77","51.41","-0.82","52.22", 73351886L, 2), - new osm_map_values(Navit._("Shropshire"),"-3.29","52.26","-2.18","53.05", 69144272L, 2), - new osm_map_values(Navit._("Somerset"),"-3.89","50.77","-2.20","51.40", 72098176L, 2), - new osm_map_values(Navit._("South yorkshire"),"-1.88","53.25","-0.80","53.71", 72594920L, 2), - new osm_map_values(Navit._("Suffolk"),"0.29","51.88","1.81","52.60", 72985880L, 2), - new osm_map_values(Navit._("Surrey"),"-0.90","51.02","0.10","51.52", 79850137L, 2), - new osm_map_values(Navit._("Wiltshire"),"-2.41","50.90","-1.44","51.76", 71244578L, 2), - new osm_map_values(Navit._("Scotland"),"-8.13","54.49","-0.15","61.40", 102111248L, 2), - new osm_map_values(Navit._("Wales"),"-5.56","51.28","-2.60","53.60", 84860075L, 2), - new osm_map_values(Navit._("Albania"),"19.09","39.55","21.12","42.72", 71097966L, 1), - new osm_map_values(Navit._("Belarus"),"23.12","51.21","32.87","56.23", 100471644L, 1), - new osm_map_values(Navit._("Russian Federation"),"27.9","41.5","190.4", "77.6", 508559360L, 1), - new osm_map_values(Navit._("Bulgaria"),"24.7","42.1","24.8","42.1", 62211433L, 1), - new osm_map_values(Navit._("Bosnia and Herzegovina"),"15.69","42.52","19.67","45.32", 75756822L, 1), - new osm_map_values(Navit._("Czech Republic"),"11.91","48.48","19.02","51.17", 288911729L, 1), - new osm_map_values(Navit._("Croatia"),"13.4","42.1","19.4","46.9", 118479986L, 1), - new osm_map_values(Navit._("Estonia"),"21.5","57.5","28.2","59.6", 86149958L, 1), - new osm_map_values(Navit._("Greece"),"28.9","37.8","29.0","37.8", 59191120L, 1), - new osm_map_values(Navit._("Crete"),"23.3","34.5","26.8","36.0", 61121443L, 1), - new osm_map_values(Navit._("Hungary"),"16.08","45.57","23.03","48.39", 129046944L, 1), - new osm_map_values(Navit._("Latvia"),"20.7","55.6","28.3","58.1", 81683354L, 1), - new osm_map_values(Navit._("Lithuania"),"20.9","53.8","26.9","56.5", 77228922L, 1), - new osm_map_values(Navit._("Poland"),"13.6","48.8","24.5","55.0", 331299544L, 1), - new osm_map_values(Navit._("Romania"),"20.3","43.5","29.9","48.4", 150011857L, 1), - new osm_map_values(Navit._("Ukraine"),"22.0","44.3","40.4","52.4", 372000000L, 1), - new osm_map_values(Navit._("North America"),"-178.1","6.5","-10.4","84.0", 2738147321L, 0), - new osm_map_values(Navit._("Alaska"),"-179.5","49.5","-129","71.6", 72413728L, 1), - new osm_map_values(Navit._("Canada"),"-141.3","41.5","-52.2","70.2", 1125713287L, 1), - new osm_map_values(Navit._("Hawaii"),"-161.07","18.49","-154.45","22.85", 57463829L, 1), - new osm_map_values(Navit._("USA")+Navit._(" (except Alaska and Hawaii)"),"-125.4","24.3","-66.5","49.3", 2356238167L, 1), - new osm_map_values(Navit._("Midwest"),"-104.11","35.92","-80.46","49.46", 663062321L, 2), - new osm_map_values(Navit._("Michigan"),"-90.47","41.64","-79.00","49.37", 207416918L, 2), - new osm_map_values(Navit._("Ohio"),"-84.87","38.05","-79.85","43.53", 143571732L, 2), - new osm_map_values(Navit._("Northeast"),"-80.58","38.72","-66.83","47.53", 517925445L, 2), - new osm_map_values(Navit._("Massachusetts"),"-73.56","40.78","-68.67","42.94", 159493455L, 2), - new osm_map_values(Navit._("Vermont"),"-73.49","42.68","-71.41","45.07", 74308439L, 2), - new osm_map_values(Navit._("Pacific"),"-180.05","15.87","-129.75","73.04", 78496182L, 2), - new osm_map_values(Navit._("South"),"-106.70","23.98","-71.46","40.70", 1135650708L, 2), - new osm_map_values(Navit._("Arkansas"),"-94.67","32.95","-89.59","36.60", 89637645L, 2), - new osm_map_values(Navit._("District of Columbia"),"-77.17","38.74","-76.86","39.05", 64042148L, 2), - new osm_map_values(Navit._("Florida"),"-88.75","23.63","-77.67","31.05", 118647388L, 2), - new osm_map_values(Navit._("Louisiana"),"-94.09","28.09","-88.62","33.07", 136435773L, 2), - new osm_map_values(Navit._("Maryland"),"-79.54","37.83","-74.99","40.22", 134152161L, 2), - new osm_map_values(Navit._("Mississippi"),"-91.71","29.99","-88.04","35.05", 100291749L, 2), - new osm_map_values(Navit._("Oklahoma"),"-103.41","33.56","-94.38","37.38", 106601625L, 2), - new osm_map_values(Navit._("Texas"),"-106.96","25.62","-92.97","36.58", 220587321L, 2), - new osm_map_values(Navit._("Virginia"),"-83.73","36.49","-74.25","39.52", 218627122L, 2), - new osm_map_values(Navit._("West Virginia"),"-82.70","37.15","-77.66","40.97", 133830267L, 2), - new osm_map_values(Navit._("West"),"-133.11","31.28","-101.99","49.51", 616041200L, 2), - new osm_map_values(Navit._("Arizona"),"-114.88","30.01","-108.99","37.06", 89434673L, 2), - new osm_map_values(Navit._("California"),"-125.94","32.43","-114.08","42.07", 303663259L, 2), - new osm_map_values(Navit._("Colorado"),"-109.11","36.52","-100.41","41.05", 132835514L, 2), - new osm_map_values(Navit._("Idaho"),"-117.30","41.93","-110.99","49.18", 97305030L, 2), - new osm_map_values(Navit._("Montana"),"-116.10","44.31","-102.64","49.74", 93935496L, 2), - new osm_map_values(Navit._("New Mexico"),"-109.10","26.98","-96.07","37.05", 185648327L, 2), - new osm_map_values(Navit._("Nevada"),"-120.2","35.0","-113.8","42.1", 138055868L, 2), - new osm_map_values(Navit._("Oregon"),"-124.8","41.8","-116.3","46.3", 103551459L, 2), - new osm_map_values(Navit._("Utah"),"-114.11","36.95","-108.99","42.05", 78249845L, 2), - new osm_map_values(Navit._("Washington State"),"-125.0","45.5","-116.9","49.0", 100601625L, 2), - new osm_map_values(Navit._("South+Middle America"),"-83.5","-56.3","-30.8","13.7", 204217202L, 0), - new osm_map_values(Navit._("Argentina"),"-73.9","-57.3","-51.6","-21.0", 105910515L, 1), - new osm_map_values(Navit._("Argentina")+"+"+Navit._("Chile"),"-77.2","-56.3","-52.7","-16.1", 111585063L, 1), - new osm_map_values(Navit._("Bolivia"),"-70.5","-23.1","-57.3","-9.3", 59215113L, 1), - new osm_map_values(Navit._("Brazil"),"-71.4","-34.7","-32.8","5.4", 127279780L, 1), - new osm_map_values(Navit._("Chile"),"-81.77","-58.50","-65.46","-17.41", 84808355L, 1), - new osm_map_values(Navit._("Cuba"),"-85.3","19.6","-74.0","23.6", 57704852L, 1), - new osm_map_values(Navit._("Colombia"),"-79.1","-4.0","-66.7","12.6", 85701114L, 1), - new osm_map_values(Navit._("Ecuador"),"-82.6","-5.4","-74.4","2.3", 63453353L, 1), - new osm_map_values(Navit._("Guyana")+"+"+Navit._("Suriname")+"+"+Navit._("Guyane Francaise"),"-62.0","1.0","-51.2","8.9", 57226004L, 1), - new osm_map_values(Navit._("Haiti")+"+"+Navit._("Dominican Republic"),"-74.8","17.3","-68.2","20.1", 63826780L, 1), - new osm_map_values(Navit._("Jamaica"),"-78.6","17.4","-75.9","18.9", 53888545L, 1), - new osm_map_values(Navit._("Mexico"),"-117.6","14.1","-86.4","32.8", 258877491L, 1), - new osm_map_values(Navit._("Paraguay"),"-63.8","-28.1","-53.6","-18.8", 60539032L, 1), - new osm_map_values(Navit._("Peru"),"-82.4","-18.1","-67.5","0.4", 71286591L, 1), - new osm_map_values(Navit._("Uruguay"),"-59.2","-36.5","-51.7","-29.7", 64850903L, 1), - new osm_map_values(Navit._("Venezuela"),"-73.6","0.4","-59.7","12.8", 74521456L, 1) + new osm_map_values(Navit._("Whole Planet"), "-180", "-90", "180", "90", 17142215673L, 0), + new osm_map_values(Navit._("Africa"), "-30.89", "-36.17", "61.68", "38.40", 978759015L, 0), + new osm_map_values(Navit._("Angola"), "11.4", "-18.1", "24.2", "-5.3", 91248521L, 1), + new osm_map_values(Navit._("Burundi"), "28.9", "-4.5", "30.9", "-2.2", 90190335L, 1), + new osm_map_values(Navit._("Canary Islands"), "-18.69", "26.52", "-12.79", "29.99", 98499593L, 1), + new osm_map_values(Navit._("Congo, Democratic Republic of the"), "11.7", "-13.6", "31.5", "5.7", 142546118L, 1), + new osm_map_values(Navit._("Ethiopia"), "32.89", "3.33", "48.07", "14.97", 104750098L, 1), + new osm_map_values(Navit._("Guinea"), "-15.47", "7.12", "-7.58", "12.74", 142811547L, 1), + new osm_map_values(Navit._("Cote d'Ivoire"), "-8.72", "4.09", "-2.43", "10.80", 96781332L, 1), + new osm_map_values(Navit._("Kenya"), "33.8", "-5.2", "42.4", "4.9", 99336192L, 1), + new osm_map_values(Navit._("Lesotho"), "26.9", "-30.7", "29.6", "-28.4", 100726025L, 1), + new osm_map_values(Navit._("Liberia"), "-15.00", "-0.73", "-7.20", "8.65", 124911153L, 1), + new osm_map_values(Navit._("Libya"), "9.32", "19.40", "25.54", "33.63", 92073435L, 1), + new osm_map_values(Navit._("Madagascar"), "42.25", "-26.63", "51.20", "-11.31", 106061047L, 1), + new osm_map_values(Navit._("Namibia")+"+"+Navit._("Botswana"), "11.4", "-29.1", "29.5", "-16.9", 114970822L, 1), + new osm_map_values(Navit._("Reunion"), "55.2", "-21.4", "55.9", "-20.9", 98431755L, 1), + new osm_map_values(Navit._("Rwanda"), "28.8", "-2.9", "30.9", "-1.0", 94150938L, 1), + new osm_map_values(Navit._("South Africa")+"+"+Navit._("Lesotho"), "15.93", "-36.36", "33.65", "-22.08", 156152979L, 1), + new osm_map_values(Navit._("Tanzania, United Republic of"), "29.19", "-11.87", "40.74", "-0.88", 106768648L, 1), + new osm_map_values(Navit._("Uganda"), "29.3", "-1.6", "35.1", "4.3", 100022833L, 1), + new osm_map_values(Navit._("Asia"), "23.8", "0.1", "195.0", "82.4", 3253177355L, 0), + new osm_map_values(Navit._("Azerbaijan"), "44.74", "38.34", "51.69", "42.37", 102293296L, 1), + new osm_map_values(Navit._("China"), "67.3", "5.3", "135.0", "54.5", 903999878L, 1), + new osm_map_values(Navit._("Cyprus"), "32.0", "34.5", "34.9", "35.8", 90703681L, 1), + new osm_map_values(Navit._("India")+"+"+Navit._("Nepal"), "67.9", "5.5", "89.6", "36.0", 256058660L, 1), + new osm_map_values(Navit._("Indonesia"), "93.7", "-17.3", "155.5", "7.6", 228766382L, 1), + new osm_map_values(Navit._("Iran, Islamic Republic of"), "43.5", "24.4", "63.6", "40.4", 154094880L, 1), + new osm_map_values(Navit._("Iraq"), "38.7", "28.5", "49.2", "37.4", 107058534L, 1), + new osm_map_values(Navit._("Israel"), "33.99", "29.8", "35.95", "33.4", 119569846L, 1), + new osm_map_values(Navit._("Japan")+"+"+Navit._("Korea")+"+"+Navit._("Taiwan"), "117.6", "20.5", "151.3", "47.1", 766362093L, 1), + new osm_map_values(Navit._("Kazakhstan"), "46.44", "40.89", "87.36", "55.45", 280438037L, 1), + new osm_map_values(Navit._("Kyrgyzstan"), "69.23", "39.13", "80.33", "43.29", 110465464L, 1), + new osm_map_values(Navit._("Malaysia")+"+"+Navit._("Singapore"), "94.3", "-5.9", "108.6", "6.8", 119187612L, 1), + new osm_map_values(Navit._("Mongolia"), "87.5", "41.4", "120.3", "52.7", 107398401L, 1), + new osm_map_values(Navit._("Pakistan"), "60.83", "23.28", "77.89", "37.15", 136107911L, 1), + new osm_map_values(Navit._("Philippines"), "115.58", "4.47", "127.85", "21.60", 166151582L, 1), + new osm_map_values(Navit._("Saudi Arabia"), "33.2", "16.1", "55.9", "33.5", 170037602L, 1), + new osm_map_values(Navit._("Thailand"), "97.5", "5.7", "105.2", "19.7", 134166813L, 1), + new osm_map_values(Navit._("Turkey"), "25.1", "35.8", "46.4", "42.8", 232347346L, 1), + new osm_map_values(Navit._("Turkmenistan"), "51.78", "35.07", "66.76", "42.91", 95588384L, 1), + new osm_map_values(Navit._("UAE+Other"), "51.5", "22.6", "56.7", "26.5", 95709627L, 1), + new osm_map_values(Navit._("Australia")+"+"+Navit._("Oceania"), "89.84", "-57.39", "179.79", "7.26", 482408675L, 0), + new osm_map_values(Navit._("Australia"), "110.5", "-44.2", "154.9", "-9.2", 244410808L, 0), + new osm_map_values(Navit._("Tasmania"), "144.0", "-45.1", "155.3", "-24.8", 176390644L, 1), + new osm_map_values(Navit._("Victoria")+"+"+Navit._("New South Wales"), "140.7", "-39.4", "153.7", "-26.9", 166905296L, 1), + new osm_map_values(Navit._("New Caledonia"), "157.85", "-25.05", "174.15", "-16.85", 88175405L, 1), + new osm_map_values(Navit._("New Zealand"), "165.2", "-47.6", "179.1", "-33.7", 180469055L, 1), + new osm_map_values(Navit._("Europe"), "-12.97", "33.59", "34.15", "72.10", 9046728786L, 0), + new osm_map_values(Navit._("Western Europe"), "-17.6", "34.5", "42.9", "70.9", 9512395121L, 1), + new osm_map_values(Navit._("Austria"), "9.4", "46.32", "17.21", "49.1", 662454467L, 1), + new osm_map_values(Navit._("Azores"), "-31.62", "36.63", "-24.67", "40.13", 84310373L, 1), + new osm_map_values(Navit._("BeNeLux"), "2.08", "48.87", "7.78", "54.52", 1520394547L, 1), + new osm_map_values(Navit._("Netherlands"), "3.07", "50.75", "7.23", "53.73", 1055308779L, 1), + new osm_map_values(Navit._("Denmark"), "7.65", "54.32", "15.58", "58.07", 290170098L, 1), + new osm_map_values(Navit._("Faroe Islands"), "-7.8", "61.3", "-6.1", "62.5", 83188591L, 1), + new osm_map_values(Navit._("France"), "-5.45", "42.00", "8.44", "51.68", 3249655126L, 1), + new osm_map_values(Navit._("Alsace"), "6.79", "47.27", "8.48", "49.17", 288424319L, 2), + new osm_map_values(Navit._("Aquitaine"), "-2.27", "42.44", "1.50", "45.76", 372741849L, 2), + new osm_map_values(Navit._("Auvergne"), "2.01", "44.57", "4.54", "46.85", 248344580L, 2), + new osm_map_values(Navit._("Basse-Normandie"), "-2.09", "48.13", "1.03", "49.98", 212920166L, 2), + new osm_map_values(Navit._("Bourgogne"), "2.80", "46.11", "5.58", "48.45", 254169749L, 2), + new osm_map_values(Navit._("Bretagne"), "-5.58", "46.95", "-0.96", "48.99", 344216282L, 2), + new osm_map_values(Navit._("Centre"), "0.01", "46.29", "3.18", "48.99", 406182417L, 2), + new osm_map_values(Navit._("Champagne-Ardenne"), "3.34", "47.53", "5.94", "50.28", 229584275L, 2), + new osm_map_values(Navit._("Corse"), "8.12", "41.32", "9.95", "43.28", 100145697L, 2), + new osm_map_values(Navit._("Franche-Comte"), "5.20", "46.21", "7.83", "48.07", 262855868L, 2), + new osm_map_values(Navit._("Haute-Normandie"), "-0.15", "48.62", "1.85", "50.18", 161154198L, 2), + new osm_map_values(Navit._("Ile-de-France"), "1.40", "48.07", "3.61", "49.29", 161154198L, 2), + new osm_map_values(Navit._("Languedoc-Roussillon"), "1.53", "42.25", "4.89", "45.02", 327632080L, 2), + new osm_map_values(Navit._("Limousin"), "0.58", "44.87", "2.66", "46.50", 183489689L, 2), + new osm_map_values(Navit._("Lorraine"), "4.84", "47.77", "7.72", "49.73", 269812559L, 2), + new osm_map_values(Navit._("Midi-Pyrenees"), "-0.37", "42.18", "3.50", "45.10", 383558262L, 2), + new osm_map_values(Navit._("Nord-pas-de-Calais"), "1.42", "49.92", "4.49", "51.31", 302919146L, 2), + new osm_map_values(Navit._("Pays-de-la-Loire"), "-2.88", "46.20", "0.97", "48.62", 450193605L, 2), + new osm_map_values(Navit._("Picardie"), "1.25", "48.79", "4.31", "50.43", 307070563L, 2), + new osm_map_values(Navit._("Poitou-Charentes"), "-1.69", "45.04", "1.26", "47.23", 313113043L, 2), + new osm_map_values(Navit._("Provence-Alpes-Cote-d-Azur"), "4.21", "42.91", "7.99", "45.18", 317595783L, 2), + new osm_map_values(Navit._("Rhone-Alpes"), "3.65", "44.07", "7.88", "46.64", 407877163L, 2), + new osm_map_values(Navit._("Germany"), "5.18", "46.84", "15.47", "55.64", 2837673591L, 1), + new osm_map_values(Navit._("Baden-Wuerttemberg"), "7.32", "47.14", "10.57", "49.85", 527492836L, 2), + new osm_map_values(Navit._("Bayern"), "8.92", "47.22", "13.90", "50.62", 662940459L, 2), + new osm_map_values(Navit._("Mittelfranken"), "9.86", "48.78", "11.65", "49.84", 160155291L, 2), + new osm_map_values(Navit._("Niederbayern"), "11.55", "47.75", "14.12", "49.42", 239575482L, 2), + new osm_map_values(Navit._("Oberbayern"), "10.67", "47.05", "13.57", "49.14", 301207029L, 2), + new osm_map_values(Navit._("Oberfranken"), "10.31", "49.54", "12.49", "50.95", 183767024L, 2), + new osm_map_values(Navit._("Oberpfalz"), "11.14", "48.71", "13.47", "50.43", 199582448L, 2), + new osm_map_values(Navit._("Schwaben"), "9.27", "47.10", "11.36", "49.09", 248955385L, 2), + new osm_map_values(Navit._("Unterfranken"), "8.59", "49.16", "10.93", "50.67", 236009244L, 2), + new osm_map_values(Navit._("Berlin"), "13.03", "52.28", "13.81", "52.73", 236009244L, 2), + new osm_map_values(Navit._("Brandenburg"), "11.17", "51.30", "14.83", "53.63", 248263976L, 2), + new osm_map_values(Navit._("Bremen"), "8.43", "52.96", "9.04", "53.66", 116469818L, 2), + new osm_map_values(Navit._("Hamburg"), "9.56", "53.34", "10.39", "53.80", 122614777L, 2), + new osm_map_values(Navit._("Hessen"), "7.72", "49.34", "10.29", "51.71", 334364378L, 2), + new osm_map_values(Navit._("Mecklenburg-Vorpommern"), "10.54", "53.05", "14.48", "55.05", 164819613L, 2), + new osm_map_values(Navit._("Niedersachsen"), "6.40", "51.24", "11.69", "54.22", 662782848L, 2), + new osm_map_values(Navit._("Nordrhein-westfalen"), "5.46", "50.26", "9.52", "52.59", 796972268L, 2), + new osm_map_values(Navit._("Rheinland-Pfalz"), "6.06", "48.91", "8.56", "51.00", 334191707L, 2), + new osm_map_values(Navit._("Saarland"), "6.30", "49.06", "7.46", "49.69", 120534914L, 2), + new osm_map_values(Navit._("Sachsen-Anhalt"), "10.50", "50.88", "13.26", "53.11", 221889143L, 2), + new osm_map_values(Navit._("Sachsen"), "11.82", "50.11", "15.10", "51.73", 267277236L, 2), + new osm_map_values(Navit._("Schleswig-Holstein"), "7.41", "53.30", "11.98", "55.20", 219653495L, 2), + new osm_map_values(Navit._("Thueringen"), "9.81", "50.15", "12.72", "51.70", 208223042L, 2), + new osm_map_values(Navit._("Germany")+"+"+Navit._("Austria")+"+"+Navit._("Switzerland"), "3.4", "44.5", "18.6", "55.1", 4492224830L, 1), + new osm_map_values(Navit._("Iceland"), "-25.3", "62.8", "-11.4", "67.5", 94548231L, 1), + new osm_map_values(Navit._("Ireland"), "-11.17", "51.25", "-5.23", "55.9", 165550114L, 1), + new osm_map_values(Navit._("Italy"), "6.52", "36.38", "18.96", "47.19", 1062662974L, 1), + new osm_map_values(Navit._("Spain")+"+"+Navit._("Portugal"), "-11.04", "34.87", "4.62", "44.41", 812986937L, 1), + new osm_map_values(Navit._("Mallorca"), "2.2", "38.8", "4.7", "40.2", 134412997L, 2), + new osm_map_values(Navit._("Galicia"), "-10.0", "41.7", "-6.3", "44.1", 151155417L, 2), + new osm_map_values(Navit._("Scandinavia"), "4.0", "54.4", "32.1", "71.5", 957345953L, 1), + new osm_map_values(Navit._("Finland"), "18.6", "59.2", "32.3", "70.3", 326001389L, 1), + new osm_map_values(Navit._("Denmark"), "7.49", "54.33", "13.05", "57.88", 255631813L, 1), + new osm_map_values(Navit._("Switzerland"), "5.79", "45.74", "10.59", "47.84", 439384941L, 1), + new osm_map_values(Navit._("United Kingdom"), "-9.7", "49.6", "2.2", "61.2", 679063758L, 1), + new osm_map_values(Navit._("England"), "-7.80", "48.93", "2.41", "56.14", 724085648L, 1), + new osm_map_values(Navit._("Buckinghamshire"), "-1.19", "51.44", "-0.43", "52.25", 109563143L, 2), + new osm_map_values(Navit._("Cambridgeshire"), "-0.55", "51.96", "0.56", "52.79", 108935775L, 2), + new osm_map_values(Navit._("Cumbria"), "-3.96", "53.85", "-2.11", "55.24", 108479102L, 2), + new osm_map_values(Navit._("East yorkshire with hull"), "-1.16", "53.50", "0.54", "54.26", 109066505L, 2), + new osm_map_values(Navit._("Essex"), "-0.07", "51.40", "1.36", "52.14", 126883293L, 2), + new osm_map_values(Navit._("Herefordshire"), "-3.19", "51.78", "-2.29", "52.45", 97777992L, 2), + new osm_map_values(Navit._("Kent"), "-0.02", "50.81", "1.65", "51.53", 112579242L, 2), + new osm_map_values(Navit._("Lancashire"), "-3.20", "53.43", "-2.00", "54.29", 112845974L, 2), + new osm_map_values(Navit._("Leicestershire"), "-1.65", "52.34", "-0.61", "53.03", 117179765L, 2), + new osm_map_values(Navit._("Norfolk"), "0.10", "52.30", "2.04", "53.41", 108306587L, 2), + new osm_map_values(Navit._("Nottinghamshire"), "-1.39", "52.73", "-0.62", "53.55", 112023678L, 2), + new osm_map_values(Navit._("Oxfordshire"), "-1.77", "51.41", "-0.82", "52.22", 109834780L, 2), + new osm_map_values(Navit._("Shropshire"), "-3.29", "52.26", "-2.18", "53.05", 103532414L, 2), + new osm_map_values(Navit._("Somerset"), "-3.89", "50.77", "-2.20", "51.40", 109975069L, 2), + new osm_map_values(Navit._("South yorkshire"), "-1.88", "53.25", "-0.80", "53.71", 110488840L, 2), + new osm_map_values(Navit._("Suffolk"), "0.29", "51.88", "1.81", "52.60", 109788040L, 2), + new osm_map_values(Navit._("Surrey"), "-0.90", "51.02", "0.10", "51.52", 121727148L, 2), + new osm_map_values(Navit._("Wiltshire"), "-2.41", "50.90", "-1.44", "51.76", 106375888L, 2), + new osm_map_values(Navit._("Scotland"), "-8.13", "54.49", "-0.15", "61.40", 189176250L, 2), + new osm_map_values(Navit._("Wales"), "-5.56", "51.28", "-2.60", "53.60", 144572638L, 2), + new osm_map_values(Navit._("Albania"), "19.09", "39.55", "21.12", "42.72", 106939331L, 1), + new osm_map_values(Navit._("Belarus"), "23.12", "51.21", "32.87", "56.23", 229648760L, 1), + new osm_map_values(Navit._("Russian Federation"), "27.9", "41.5", "190.4", "77.6", 1479983473L, 1), + new osm_map_values(Navit._("Bulgaria"), "24.7", "42.1", "24.8", "42.1", 83696190L, 1), + new osm_map_values(Navit._("Bosnia and Herzegovina"), "15.69", "42.52", "19.67", "45.32", 144196241L, 1), + new osm_map_values(Navit._("Czech Republic"), "11.91", "48.48", "19.02", "51.17", 711304334L, 1), + new osm_map_values(Navit._("Croatia"), "13.4", "42.1", "19.4", "46.9", 251673871L, 1), + new osm_map_values(Navit._("Estonia"), "21.5", "57.5", "28.2", "59.6", 142340828L, 1), + new osm_map_values(Navit._("Greece"), "28.9", "37.8", "29.0", "37.8", 83257661L, 1), + new osm_map_values(Navit._("Crete"), "23.3", "34.5", "26.8", "36.0", 87834598L, 1), + new osm_map_values(Navit._("Hungary"), "16.08", "45.57", "23.03", "48.39", 256779608L, 1), + new osm_map_values(Navit._("Latvia"), "20.7", "55.6", "28.3", "58.1", 144857068L, 1), + new osm_map_values(Navit._("Lithuania"), "20.9", "53.8", "26.9", "56.5", 156811735L, 1), + new osm_map_values(Navit._("Poland"), "13.6", "48.8", "24.5", "55.0", 1018629889L, 1), + new osm_map_values(Navit._("Romania"), "20.3", "43.5", "29.9", "48.4", 265402066L, 1), + new osm_map_values(Navit._("Ukraine"), "22.0", "44.3", "40.4", "52.4", 524768547L, 1), + new osm_map_values(Navit._("North America"), "-178.1", "6.5", "-10.4", "84.0", 4526641449L, 0), + new osm_map_values(Navit._("Alaska"), "-179.5", "49.5", "-129", "71.6", 174207438L, 1), + new osm_map_values(Navit._("Canada"), "-141.3", "41.5", "-52.2", "70.2", 2273900574L, 1), + new osm_map_values(Navit._("Hawaii"), "-161.07", "18.49", "-154.45", "22.85", 87476921L, 1), + new osm_map_values(Navit._("USA")+Navit._(" (except Alaska and Hawaii)"), "-125.4", "24.3", "-66.5", "49.3", 3389691841L, 1), + new osm_map_values(Navit._("Midwest"), "-104.11", "35.92", "-80.46", "49.46", 1030850300L, 2), + new osm_map_values(Navit._("Michigan"), "-90.47", "41.64", "-79.00", "49.37", 495136827L, 2), + new osm_map_values(Navit._("Ohio"), "-84.87", "38.05", "-79.85", "43.53", 226499873L, 2), + new osm_map_values(Navit._("Northeast"), "-80.58", "38.72", "-66.83", "47.53", 848767227L, 2), + new osm_map_values(Navit._("Massachusetts"), "-73.56", "40.78", "-68.67", "42.94", 284272912L, 2), + new osm_map_values(Navit._("Vermont"), "-73.49", "42.68", "-71.41", "45.07", 110911886L, 2), + new osm_map_values(Navit._("Pacific"), "-180.05", "15.87", "-129.75", "73.04", 172206612L, 2), + new osm_map_values(Navit._("South"), "-106.70", "23.98", "-71.46", "40.70", 1481026457L, 2), + new osm_map_values(Navit._("Arkansas"), "-94.67", "32.95", "-89.59", "36.60", 125115656L, 2), + new osm_map_values(Navit._("District of Columbia"), "-77.17", "38.74", "-76.86", "39.05", 101152353L, 2), + new osm_map_values(Navit._("Florida"), "-88.75", "23.63", "-77.67", "31.05", 174378547L, 2), + new osm_map_values(Navit._("Louisiana"), "-94.09", "28.09", "-88.62", "33.07", 177996551L, 2), + new osm_map_values(Navit._("Maryland"), "-79.54", "37.83", "-74.99", "40.22", 213559925L, 2), + new osm_map_values(Navit._("Mississippi"), "-91.71", "29.99", "-88.04", "35.05", 146620850L, 2), + new osm_map_values(Navit._("Oklahoma"), "-103.41", "33.56", "-94.38", "37.38", 167396836L, 2), + new osm_map_values(Navit._("Texas"), "-106.96", "25.62", "-92.97", "36.58", 320259945L, 2), + new osm_map_values(Navit._("Virginia"), "-83.73", "36.49", "-74.25", "39.52", 306054196L, 2), + new osm_map_values(Navit._("West Virginia"), "-82.70", "37.15", "-77.66", "40.97", 181531617L, 2), + new osm_map_values(Navit._("West"), "-133.11", "31.28", "-101.99", "49.51", 837597071L, 2), + new osm_map_values(Navit._("Arizona"), "-114.88", "30.01", "-108.99", "37.06", 140190223L, 2), + new osm_map_values(Navit._("California"), "-125.94", "32.43", "-114.08", "42.07", 384857326L, 2), + new osm_map_values(Navit._("Colorado"), "-109.11", "36.52", "-100.41", "41.05", 185388342L, 2), + new osm_map_values(Navit._("Idaho"), "-117.30", "41.93", "-110.99", "49.18", 137642365L, 2), + new osm_map_values(Navit._("Montana"), "-116.10", "44.31", "-102.64", "49.74", 140601787L, 2), + new osm_map_values(Navit._("New Mexico"), "-109.10", "26.98", "-96.07", "37.05", 263105357L, 2), + new osm_map_values(Navit._("Nevada"), "-120.2", "35.0", "-113.8", "42.1", 164712473L, 2), + new osm_map_values(Navit._("Oregon"), "-124.8", "41.8", "-116.3", "46.3", 153169398L, 2), + new osm_map_values(Navit._("Utah"), "-114.11", "36.95", "-108.99", "42.05", 115653638L, 2), + new osm_map_values(Navit._("Washington State"), "-125.0", "45.5", "-116.9", "49.0", 167427046L, 2), + new osm_map_values(Navit._("South+Middle America"), "-83.5", "-56.3", "-30.8", "13.7", 562230441L, 0), + new osm_map_values(Navit._("Argentina"), "-73.9", "-57.3", "-51.6", "-21.0", 244901827L, 1), + new osm_map_values(Navit._("Argentina")+"+"+Navit._("Chile"), "-77.2", "-56.3", "-52.7", "-16.1", 269594088L, 1), + new osm_map_values(Navit._("Bolivia"), "-70.5", "-23.1", "-57.3", "-9.3", 121759213L, 1), + new osm_map_values(Navit._("Brazil"), "-71.4", "-34.7", "-32.8", "5.4", 388405363L, 1), + new osm_map_values(Navit._("Chile"), "-81.77", "-58.50", "-65.46", "-17.41", 160742590L, 1), + new osm_map_values(Navit._("Cuba"), "-85.3", "19.6", "-74.0", "23.6", 95014897L, 1), + new osm_map_values(Navit._("Colombia"), "-79.1", "-4.0", "-66.7", "12.6", 151545547L, 1), + new osm_map_values(Navit._("Ecuador"), "-82.6", "-5.4", "-74.4", "2.3", 105488624L, 1), + new osm_map_values(Navit._("Guyana")+"+"+Navit._("Suriname")+"+"+Navit._("Guyane Francaise"), "-62.0", "1.0", "-51.2", "8.9", 92083881L, 1), + new osm_map_values(Navit._("Haiti")+"+"+Navit._("Dominican Republic"), "-74.8", "17.3", "-68.2", "20.1", 103797756L, 1), + new osm_map_values(Navit._("Jamaica"), "-78.6", "17.4", "-75.9", "18.9", 85053924L, 1), + new osm_map_values(Navit._("Mexico"), "-117.6", "14.1", "-86.4", "32.8", 384891270L, 1), + new osm_map_values(Navit._("Paraguay"), "-63.8", "-28.1", "-53.6", "-18.8", 116798539L, 1), + new osm_map_values(Navit._("Peru"), "-82.4", "-18.1", "-67.5", "0.4", 137292365L, 1), + new osm_map_values(Navit._("Uruguay"), "-59.2", "-36.5", "-51.7", "-29.7", 113817110L, 1), + new osm_map_values(Navit._("Venezuela"), "-73.6", "0.4", "-59.7", "12.8", 124001905L, 1) }; - public static final String MAP_FILENAME_PATH = Navit.MAP_FILENAME_PATH; + private String map_filename_path; public static NavitMap[] getAvailableMaps() { class filterMaps implements FilenameFilter { @@ -309,18 +309,19 @@ } } NavitMap maps[] = new NavitMap[0]; - File map_dir = new File(MAP_FILENAME_PATH); + File map_dir = new File(Navit.map_filename_path); String map_file_names[] = map_dir.list(new filterMaps()); if (map_file_names != null) { maps = new NavitMap[map_file_names.length]; for (int map_file_index = 0; map_file_index < map_file_names.length; map_file_index++) { - maps[map_file_index] = new NavitMap(MAP_FILENAME_PATH, map_file_names[map_file_index]); + maps[map_file_index] = new NavitMap(Navit.map_filename_path, map_file_names[map_file_index]); } } return maps; } private Boolean stop_me = false; private osm_map_values map_values; + private int map_id; private long uiLastUpdated = -1; private Boolean retryDownload = false; //Download failed, but @@ -338,6 +339,8 @@ public NavitMapDownloader(int map_id) { this.map_values = osm_maps[map_id]; + this.map_id=map_id; + this.map_filename_path=Navit.map_filename_path; } public void run() { @@ -345,7 +348,7 @@ retry_counter = 0; Log.v(TAG, "start download " + map_values.map_name); - updateProgress(0, 20, Navit._("downloading") + ": " + map_values.map_name); + updateProgress(0, map_values.est_size_bytes, Navit._("downloading") + ": " + map_values.map_name); boolean success; do { @@ -366,7 +369,7 @@ if (success || stop_me ) { NavitDialogs.sendDialogMessage( NavitDialogs.MSG_MAP_DOWNLOAD_FINISHED - , MAP_FILENAME_PATH + map_values.map_name + ".bin", null, -1, success ? 1 : 0 , 0 ); + , map_filename_path + map_values.map_name + ".bin", null, -1, success ? 1 : 0 , map_id ); } } @@ -382,8 +385,13 @@ needed_bytes = MAP_WRITE_FILE_BUFFER; if (free_space < needed_bytes ) { - Log.e(TAG, "Not enough free space. Please free at least " + needed_bytes / 1024 /1024 + "Mb."); - updateProgress(free_space, needed_bytes, Navit._("Error downloading map!") + "\n" + Navit._("Not enough free space")); + String msg; + Log.e(TAG, "Not enough free space or media not available. Please free at least " + needed_bytes / 1024 /1024 + "Mb."); + if(free_space<0) + msg=Navit._("Media selected for map storage is not available"); + else + msg=Navit._("Not enough free space"); + updateProgress(free_space, needed_bytes, Navit._("Error downloading map!") + "\n" + msg); return false; } return true; @@ -435,8 +443,12 @@ c.setRequestProperty("Range", "bytes=" + old_download_size + "-"); already_read = old_download_size; } + try { + real_size_bytes=Long.parseLong(c.getHeaderField("Content-Length")) + already_read; + } catch(Exception e) { + real_size_bytes=-1; + } - real_size_bytes = c.getContentLength() + already_read; long fileTime = c.getLastModified(); if (!resume) { @@ -465,7 +477,7 @@ } protected File getDestinationFile() { - File outputFile = new File(MAP_FILENAME_PATH, map_values.map_name + ".tmp"); + File outputFile = new File(map_filename_path, map_values.map_name + ".tmp"); outputFile.getParentFile().mkdir(); return outputFile; } @@ -506,8 +518,12 @@ } protected long getFreeSpace() { - StatFs fsInfo = new StatFs(MAP_FILENAME_PATH); - return (long)fsInfo.getAvailableBlocks() * fsInfo.getBlockSize(); + try { + StatFs fsInfo = new StatFs(map_filename_path); + return (long)fsInfo.getAvailableBlocks() * fsInfo.getBlockSize(); + } catch(Exception e) { + return -1; + } } protected BufferedInputStream getInputStream(URLConnection c) { @@ -530,11 +546,11 @@ } protected File getMapFile() { - return new File(MAP_FILENAME_PATH, map_values.map_name + ".bin"); + return new File(map_filename_path, map_values.map_name + ".bin"); } protected File getMapInfoFile() { - return new File(MAP_FILENAME_PATH, map_values.map_name + ".tmp.info"); + return new File(map_filename_path, map_values.map_name + ".tmp.info"); } protected BufferedOutputStream getOutputStream(File outputFile, boolean resume) { @@ -638,7 +654,7 @@ protected void updateProgress(long startTime, long offsetBytes, long readBytes, long maxBytes) { long currentTime = System.nanoTime(); - if (currentTime > uiLastUpdated + UPDATE_PROGRESS_TIME_NS) { + if ((currentTime > uiLastUpdated + UPDATE_PROGRESS_TIME_NS) && startTime!=currentTime) { float per_second_overall = (readBytes - offsetBytes) / ((currentTime - startTime) / 1000000000f); long bytes_remaining = maxBytes - readBytes; int eta_seconds = (int) (bytes_remaining / per_second_overall); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/attr.c navit-0.5.0+dfsg.1/navit/attr.c --- navit-0.5.0~svn5900+dfsg.1/navit/attr.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/attr.c 2016-01-02 22:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -/** +/* * Navit, a modular navigation system. * Copyright (C) 2005-2008 Navit Team * @@ -16,6 +16,15 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ + +/** @file attr.c + * @brief Attribute handling code + * + * Structures and functions for working with attributes. + * + * @author Navit Team + * @date 2005-2014 + */ #include #include @@ -26,6 +35,7 @@ #include "coord.h" #include "transform.h" #include "color.h" +#include "navigation.h" #include "attr.h" #include "map.h" #include "config.h" @@ -74,6 +84,14 @@ attr_hash=NULL; } +/** + * @brief Converts a string to an attr_type + * + * This function reads a string and returns the corresponding attr_type. + * + * @param name The attribute name + * @return The corresponding {@code attr_type}, or {@code attr_none} if the string specifies a nonexistent or invalid attribute type. + */ enum attr_type attr_from_name(const char *name) { @@ -93,6 +111,14 @@ +/** + * @brief Converts an attr_type to a string + * + * @param attr The attribute type to be converted. + * @return The attribute name, or NULL if an invalid value was passed as {@code attr}. + * The calling function should create a copy of the string if it needs to alter it or relies on the + * string being available permanently. + */ char * attr_to_name(enum attr_type attr) { @@ -105,6 +131,16 @@ return NULL; } +/** + * @brief Creates an attribute from text information + * + * This function creates an attribute from two strings specifying the name and + * the value. + * + * @param name The name of the new attribute + * @param value The value of the new attribute + * @return The new attribute + */ struct attr * attr_new_from_text(const char *name, const char *value) { @@ -117,7 +153,7 @@ int min,max,count; ret=g_new0(struct attr, 1); - dbg(3,"enter name='%s' value='%s'\n", name, value); + dbg(lvl_debug,"enter name='%s' value='%s'\n", name, value); attr=attr_from_name(name); ret->type=attr; switch (attr) { @@ -135,7 +171,7 @@ ret->u.item_types[count++]=item_type; ret->u.item_types[count]=type_none; } else { - dbg(0,"Unknown item type '%s' ignored.\n",tok); + dbg(lvl_error,"Unknown item type '%s' ignored.\n",tok); } str=NULL; } @@ -187,31 +223,54 @@ ret->u.str=g_strdup(value); break; } - if (attr >= attr_type_int_begin && attr <= attr_type_int_end) { + if (attr >= attr_type_int_begin && attr < attr_type_rel_abs_begin) { + char *tail; if (value[0] == '0' && value[1] == 'x') - ret->u.num=strtoul(value, NULL, 0); + ret->u.num=strtoul(value, &tail, 0); else - ret->u.num=strtol(value, NULL, 0); - - if ((attr >= attr_type_rel_abs_begin) && (attr < attr_type_boolean_begin)) { - /* Absolute values are from -0x40000000 - 0x40000000, with 0x0 being 0 (who would have thought that?) - Relative values are from 0x40000001 - 0x80000000, with 0x60000000 being 0 */ - if (strchr(value, '%')) { - if ((ret->u.num > 0x20000000) || (ret->u.num < -0x1FFFFFFF)) { - dbg(0, "Relative possibly-relative attribute with invalid value %li\n", ret->u.num); - } - - ret->u.num += 0x60000000; + ret->u.num=strtol(value, &tail, 0); + if (*tail) { + dbg(lvl_error, "Incorrect value '%s' for attribute '%s'; expected a number. " + "Defaulting to 0.\n", value, name); + ret->u.num=0; + } + break; + } + if (attr >= attr_type_rel_abs_begin && attr < attr_type_boolean_begin) { + char *tail; + int value_is_relative=0; + ret->u.num=strtol(value, &tail, 0); + if (*tail) { + if (!strcmp(tail, "%")) { + value_is_relative=1; } else { - if ((ret->u.num > 0x40000000) || (ret->u.num < -0x40000000)) { - dbg(0, "Non-relative possibly-relative attribute with invalid value %li\n", ret->u.num); - } - } - } else if (attr >= attr_type_boolean_begin) { // also check for yes and no - if (g_ascii_strcasecmp(value,"no") && g_ascii_strcasecmp(value,"0") && g_ascii_strcasecmp(value,"false")) - ret->u.num=1; - else + dbg(lvl_error, "Incorrect value '%s' for attribute '%s'; expected a number or a relative value in percent. " + "Defaulting to 0.\n", value, name); ret->u.num=0; + } + } + if (value_is_relative) { + if ((ret->u.num > ATTR_REL_MAXREL) || (ret->u.num < ATTR_REL_MINREL)) { + dbg(lvl_error, "Relative possibly-relative attribute with value out of range: %li\n", ret->u.num); + } + + ret->u.num += ATTR_REL_RELSHIFT; + } else { + if ((ret->u.num > ATTR_REL_MAXABS) || (ret->u.num < ATTR_REL_MINABS)) { + dbg(lvl_error, "Non-relative possibly-relative attribute with value out of range: %li\n", ret->u.num); + } + } + break; + } + if (attr >= attr_type_boolean_begin && attr <= attr_type_int_end) { + if (!(g_ascii_strcasecmp(value,"no") && g_ascii_strcasecmp(value,"0") && g_ascii_strcasecmp(value,"false"))) + ret->u.num=0; + else if (!(g_ascii_strcasecmp(value,"yes") && g_ascii_strcasecmp(value,"1") && g_ascii_strcasecmp(value,"true"))) + ret->u.num=1; + else { + dbg(lvl_error, "Incorrect value '%s' for attribute '%s'; expected a boolean (no/0/false or yes/1/true). " + "Defaulting to 'true'.\n", value, name); + ret->u.num=1; } break; } @@ -232,7 +291,7 @@ color->b = (b << 8) | b; color->a = (a << 8) | a; } else { - dbg(0,"color %s has unknown format\n",value); + dbg(lvl_error,"color %s has unknown format\n",value); } break; } @@ -243,13 +302,19 @@ transform_to_geo(projection_mg, &c, g); break; } - dbg(1,"default\n"); + dbg(lvl_debug,"unknown attribute\n"); g_free(ret); ret=NULL; } return ret; } +/** + * @brief Converts access flags to a human-readable string. + * + * @param flags The flags as a number + * @return The flags in human-readable form + */ static char * flags_to_text(int flags) { @@ -289,6 +354,22 @@ return ret; } +/** + * @brief Converts attribute data to human-readable text + * + * @param attr The attribute to be formatted + * @param sep The separator to insert between a numeric value and its unit. If NULL, nothing will be inserted. + * @param fmt Set to {@code attr_format_with_units} if {@code attr} is of type {@code attr_destination_length} + * or {@code attr_destination_time} or a group type which might contain attributes of those types. Ignored for + * all other attribute types. + * @param def_fmt Not used + * @param map The translation map. This is only needed for string type attributes or group type + * attributes which might contain strings. It can be NULL for other attribute types. If a string + * type attribute is encountered and {@code map} is NULL, the string will be returned unchanged. + * + * @return The attribute data in human-readable form. The caller is responsible for calling {@code g_free()} on + * the result when it is no longer needed. + */ char * attr_to_text_ext(struct attr *attr, char *sep, enum attr_format fmt, enum attr_format def_fmt, struct map *map) { @@ -398,21 +479,45 @@ if (type >= attr_type_item_type_begin && type <= attr_type_item_type_end) { return g_strdup_printf("0x%ld[%s]",attr->u.num,item_to_name(attr->u.num)); } + if (type == attr_nav_status) { + return nav_status_to_text(attr->u.num); + } return g_strdup_printf("(no text[%s])", attr_to_name(type)); } +/** + * @brief Converts an attribute to a string that can be displayed + * + * This function is just a wrapper around {@code attr_to_text_ext()}. + * + * @param attr The attribute to convert + * @param map The translation map, see {@code attr_to_text_ext()} + * @param pretty Not used + */ char * attr_to_text(struct attr *attr, struct map *map, int pretty) { return attr_to_text_ext(attr, NULL, attr_format_default, attr_format_default, map); } +/** + * @brief Searches for an attribute of a given type + * + * This function searches an array of pointers to attributes for a given + * attribute type and returns the first match. + * + * @param attrs Points to the array of attribute pointers to be searched + * @param last Not used + * @param attr_type The attribute type to search for. Generic types (such as + * attr_any or attr_any_xml) are NOT supported. + * @return Pointer to the first matching attribute, or NULL if no match was found. + */ struct attr * attr_search(struct attr **attrs, struct attr *last, enum attr_type attr) { - dbg(2, "enter attrs=%p\n", attrs); + dbg(lvl_info, "enter attrs=%p\n", attrs); while (*attrs) { - dbg(3,"*attrs=%p\n", *attrs); + dbg(lvl_debug,"*attrs=%p\n", *attrs); if ((*attrs)->type == attr) { return *attrs; } @@ -439,6 +544,32 @@ } } +/** + * @brief Generic get function + * + * This function searches an attribute list for an attribute of a given type and + * stores it in the attr parameter. If no match is found in attrs and the + * def_attrs argument is supplied, def_attrs is searched for the attribute type + * and the first match (if any) is returned. + *

+ * Searching for attr_any or attr_any_xml is supported, but def_attrs will not + * be searched in that case. + *

+ * An iterator can be specified to get multiple attributes of the same type: + * The first call will return the first match from attr; each subsequent call + * with the same iterator will return the next match. After obtaining the last + * match from attr, def_attrs is searched in the same manner. If no more matching + * attributes are found in either of them, false is returned. + * + * @param attrs Points to the array of attribute pointers to be searched + * @param def_attrs Points to a list of pointers to default attributes. + * If an attribute is not found in attrs, the function will return the first + * match from def_attrs. This parameter may be NULL. + * @param type The attribute type to search for + * @param attr Points to a {@code struct attr} which will receive the attribute + * @param iter An iterator. This parameter may be NULL. + * @return True if a matching attribute was found, false if not. + */ int attr_generic_get_attr(struct attr **attrs, struct attr **def_attrs, enum attr_type type, struct attr *attr, struct attr_iter *iter) { @@ -466,11 +597,24 @@ return 0; } +/** + * @brief Generic set function + * + * This function will search the list for the first attribute of the same type + * as the supplied new one and replace it with that. If the list does not + * contain an attribute whose type matches that of the new one, the new + * attribute is inserted into the list. + * + * @param attrs Points to the array of attribute pointers to be updated + * @param attr The new attribute. + * @return Pointer to the updated attribute list + */ struct attr ** attr_generic_set_attr(struct attr **attrs, struct attr *attr) { struct attr **curr=attrs; int i,count=0; + dbg(lvl_debug, "enter, attrs=%p, attr=%p (%s)\n", attrs, attr, attr_to_name(attr->type)); while (curr && *curr) { if ((*curr)->type == attr->type) { attr_free(*curr); @@ -489,11 +633,21 @@ return curr; } +/** + * @brief Generic add function + * + * This function will insert a new attribute into the list. + * + * @param attrs Points to the array of attribute pointers to be updated + * @param attr The new attribute. + * @return Pointer to the updated attribute list + */ struct attr ** attr_generic_add_attr(struct attr **attrs, struct attr *attr) { struct attr **curr=attrs; int i,count=0; + dbg(lvl_debug, "enter, attrs=%p, attr=%p (%s)\n", attrs, attr, attr_to_name(attr->type)); while (curr && *curr) { curr++; count++; @@ -628,7 +782,7 @@ while (attr->u.attr_types[i++] != attr_none); return i*sizeof(enum attr_type); } - dbg(0,"size for %s unknown\n", attr_to_name(attr->type)); + dbg(lvl_error,"size for %s unknown\n", attr_to_name(attr->type)); return 0; } @@ -765,7 +919,7 @@ int len=0,quoted; char *p,*e,*n; - dbg(1,"get_tag %s from %s\n", name, line); + dbg(lvl_debug,"get_tag %s from %s\n", name, line); if (name) len=strlen(name); if (pos) @@ -814,12 +968,12 @@ } /** - * Check if an enumeration of attribute types contains a specific attribute. + * @brief Checks if an enumeration of attribute types contains a specific attribute. * - * @param types Pointer to the attr_type enumeration to be searched + * @param types Points to a NULL-terminated array of pointers to {@code enum attr_type}, which will be searched * @param type The attr_type to be searched for * - * @return 1 if the attribute type was found, 0 if it was not found or if a null pointer was passed as types + * @return True if the attribute type was found, false if it was not found or if {@code types} is empty */ int attr_types_contains(enum attr_type *types, enum attr_type type) @@ -833,14 +987,16 @@ } /** - * Check if an enumeration of attribute types contains a specific attribute. - * It is different from attr_types_contains in that it returns a caller-defined value if the pointer to the enumeration is NULL. + * @brief Check if an enumeration of attribute types contains a specific attribute. * - * @param types Pointer to the attr_type enumeration to be searched + * This function is mostly identical to {@code attr_types_contains()} but returns the supplied default + * value if {@code types} is empty. + * + * @param types Points to a NULL-terminated array of pointers to {@code enum attr_type}, which will be searched * @param type The attr_type to be searched for - * @param deflt The default value to return if types is NULL. + * @param deflt The default value to return if {@code types} is empty. * - * @return 1 if the attribute type was found, 0 if it was not found, the value of the deflt argument if types is NULL. + * @return True if the attribute type was found, false if it was not found, {@code deflt} if types is empty. */ int attr_types_contains_default(enum attr_type *types, enum attr_type type, int deflt) @@ -850,3 +1006,22 @@ } return attr_types_contains(types, type); } + +/** + * @brief Derive absolute value from relative attribute, given value of the whole range. + * + * @param attrval Value of u.num member of attribute capable of holding relative values. + * @param whole Range counted as 100%. + * @param treat_neg_as_rel Replace negative absolute values with whole+attr.u.num. + * + * @return Absolute value corresponding to given relative value. + */ +int attr_rel2real(int attrval, int whole, int treat_neg_as_rel) +{ + if (attrval > ATTR_REL_MAXABS) + return whole * (attrval - ATTR_REL_RELSHIFT)/100; + if(treat_neg_as_rel && attrval<0 ) + return whole+attrval; + return attrval; +} + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/attr_def.h navit-0.5.0+dfsg.1/navit/attr_def.h --- navit-0.5.0~svn5900+dfsg.1/navit/attr_def.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/attr_def.h 2016-01-02 22:29:50.000000000 +0000 @@ -1,6 +1,6 @@ -/** +/* * Navit, a modular navigation system. - * Copyright (C) 2005-2009 Navit Team + * Copyright (C) 2005-2014 Navit Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License @@ -17,6 +17,15 @@ * Boston, MA 02110-1301, USA. */ +/** @file attr_def.h + * @brief Attribute definitions. + * + * Any attribute used by a Navit object must be defined in this file. + * + * @author Navit Team + * @date 2005-2014 + */ + /* prototypes */ /* common */ @@ -184,14 +193,11 @@ ATTR(turn_around_penalty) ATTR(turn_around_penalty2) ATTR(autozoom_max) +ATTR(nav_status) ATTR2(0x00027500,type_rel_abs_begin) -/* These attributes are int that can either hold relative * - * or absolute values. A relative value is indicated by * - * adding 0x60000000. * - * * - * The range of valid absolute values is -0x40000000 to * - * 0x40000000, the range of relative values is from * - * -0x20000000 to 0x20000000. */ +/* These attributes are int that can either hold relative or absolute values. See the + * documentation of ATTR_REL_RELSHIFT for details. + */ ATTR(h) ATTR(w) ATTR(x) @@ -380,6 +386,13 @@ * exclude the end nodes, because these are imported as separate nodes. */ ATTR(house_number_interpolation_no_ends_incrmt_1) ATTR(house_number_interpolation_no_ends_incrmt_2) +ATTR(dbg_level) +ATTR(street_name_systematic_nat) +ATTR(street_name_systematic_int) +ATTR(street_destination) +ATTR(exit_to) +ATTR(street_destination_forward) +ATTR(street_destination_backward) ATTR2(0x0003ffff,type_string_end) ATTR2(0x00040000,type_special_begin) ATTR(order) @@ -414,6 +427,7 @@ ATTR(color) ATTR_UNUSED ATTR(background_color) +ATTR(foreground_color) ATTR(text_color) ATTR(idle_color) ATTR(background_color2) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/attr.h navit-0.5.0+dfsg.1/navit/attr.h --- navit-0.5.0~svn5900+dfsg.1/navit/attr.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/attr.h 2016-01-02 22:29:50.000000000 +0000 @@ -97,16 +97,40 @@ #define AF_DG_EXPLOSIVE (1<<2) #define AF_DG_FLAMMABLE (1<<3) -/* Values for attributes that could carry relative values */ -#define ATTR_REL_MAXABS 0x40000000 -#define ATTR_REL_RELSHIFT 0x60000000 +/* + * Values for attributes that could carry relative values. + * Some attributes allow both absolute and relative values. The value for these + * attributes is stored as an int. Absolute values are stored as-is, relative + * values are stored shifted by adding ATTR_REL_RELSHIFT. + */ +/** Minimum value for an absolute attribute value. */ +#define ATTR_REL_MINABS -0x40000000 +/** Maximum value for an absolute attribute value. */ +#define ATTR_REL_MAXABS 0x40000000 +/** Minimum value for an relative attribute value (without value shift). */ +#define ATTR_REL_MINREL -0x1FFFFFFF +/** Maximum value for an relative attribute value (without value shift). */ +#define ATTR_REL_MAXREL 0x20000000 +/** + * Value shift for relative values. This value is added to an attribute values to indicate + * a relative value. */ +#define ATTR_REL_RELSHIFT 0x60000000 +/** Indicates whether a position is valid **/ enum attr_position_valid { - attr_position_valid_invalid, - attr_position_valid_static, - attr_position_valid_extrapolated_time, - attr_position_valid_extrapolated_spatial, - attr_position_valid_valid, + attr_position_valid_invalid, /**< The position is invalid and should be discarded. **/ + attr_position_valid_static, /**< The position is valid but the vehicle is not moving, or moving very slowly. + Calculations that involve the difference between two consecutive positions, + such as bearing, may therefore be inaccurate. **/ + attr_position_valid_extrapolated_time, /**< FIXME: this description is just my (mvglasow) guess; this value is not used anywhere as of r5957. + The position is the vehicle's last known position, and the consumer of the + information should be aware that the vehicle may have moved since. **/ + attr_position_valid_extrapolated_spatial, /**< FIXME: this description is just my (mvglasow) guess; this value is not used anywhere as of r5957. + The position is a prediction of the vehicle's current position, based on + its last known position, the time elapsed since it was obtained and possibly + other factors. This would be used for positions obtained through inertial + navigation. **/ + attr_position_valid_valid, /**< The position is valid and can be used for all purposes. **/ }; #define ATTR_IS_INT(x) ((x) >= attr_type_int_begin && (x) <= attr_type_int_end) @@ -217,6 +241,7 @@ int attr_from_line(char *line, char *name, int *pos, char *val_ret, char *name_ret); int attr_types_contains(enum attr_type *types, enum attr_type type); int attr_types_contains_default(enum attr_type *types, enum attr_type type, int deflt); +int attr_rel2real(int attrval, int whole, int treat_neg_as_rel); /* end of prototypes */ #ifdef __cplusplus } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/autoload/osso/osso.c navit-0.5.0+dfsg.1/navit/autoload/osso/osso.c --- navit-0.5.0~svn5900+dfsg.1/navit/autoload/osso/osso.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/autoload/osso/osso.c 2016-01-02 22:29:50.000000000 +0000 @@ -24,7 +24,7 @@ { osso_return_t err; err = osso_display_blanking_pause(osso_context); - dbg(1, "Unblank result: ", + dbg(lvl_warning, "Unblank result: ", err == OSSO_OK ? "Ok" : (err == OSSO_ERROR ? "Error" : "Invalid context")); @@ -33,7 +33,7 @@ static gboolean osso_cb_hw_state_idle(struct cb_hw_state_trail * params) { - dbg(0, "(inact=%d, save=%d, shut=%d, memlow=%d, state=%d)\n", + dbg(lvl_debug, "(inact=%d, save=%d, shut=%d, memlow=%d, state=%d)\n", params->state->system_inactivity_ind, params->state->save_unsaved_data_ind, params->state->shutdown_ind, params->state->memory_low_ind, params->state->sig_device_mode_ind); @@ -69,10 +69,10 @@ static void osso_navit(struct navit *nav, int add) { - dbg(1, "Installing osso context for org.navit_project.navit\n"); + dbg(lvl_debug, "Installing osso context for org.navit_project.navit\n"); osso_context = osso_initialize("org.navit_project.navit", version, TRUE, NULL); if (osso_context == NULL) { - dbg(0, "error initiating osso context\n"); + dbg(lvl_error, "error initiating osso context\n"); } osso_hw_set_event_cb(osso_context, NULL, osso_cb_hw_state, nav); @@ -87,7 +87,7 @@ { //struct callback *cb; - dbg(2, "enter\n"); + dbg(lvl_info, "enter\n"); callback.u.callback = callback_new_attr_0(callback_cast(osso_navit), attr_navit); config_add_attr(config, &callback); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/binding/dbus/binding_dbus.c navit-0.5.0+dfsg.1/navit/binding/dbus/binding_dbus.c --- navit-0.5.0~svn5900+dfsg.1/navit/binding/dbus/binding_dbus.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/binding/dbus/binding_dbus.c 2016-01-02 22:29:50.000000000 +0000 @@ -50,7 +50,8 @@ #include "layout.h" #include "roadprofile.h" #include "util.h" - +#include "transform.h" +#include "event.h" static DBusConnection *connection; static dbus_uint32_t dbus_serial; @@ -84,7 +85,7 @@ { int id; char *ret; - dbg(1,"enter %s\n", type); + dbg(lvl_debug,"enter %s\n", type); if ((ret=g_hash_table_lookup(object_hash_rev, object))) return ret; id=GPOINTER_TO_INT(g_hash_table_lookup(object_count, type)); @@ -92,7 +93,7 @@ ret=g_strdup_printf("%s/%s/%d", object_path, type, id); g_hash_table_insert(object_hash, ret, object); g_hash_table_insert(object_hash_rev, object, ret); - dbg(1,"return %s\n", ret); + dbg(lvl_debug,"return %s\n", ret); return (ret); } @@ -134,7 +135,7 @@ struct attr attr; if (strncmp(opath, object_path, strlen(object_path))) { - dbg(0,"wrong object path %s\n",opath); + dbg(lvl_error,"wrong object path %s\n",opath); return NULL; } prefix=g_strdup_printf("%s/%s/", object_path, type); @@ -151,7 +152,7 @@ if (!config_get_attr(config, attr_navit, &navit, NULL)) return NULL; if (!oprefix[0]) { - dbg(0,"default_navit\n"); + dbg(lvl_debug,"default_navit\n"); return navit.u.navit; } if (!strncmp(oprefix,def_graphics,strlen(def_graphics))) { @@ -362,6 +363,12 @@ } static DBusHandlerResult +dbus_error_navigation_not_configured(DBusConnection *connection, DBusMessage *message) +{ + return dbus_error(connection, message, DBUS_ERROR_FAILED, "navigation is not configured (no element in config file?)"); +} + +static DBusHandlerResult dbus_error_no_data_available(DBusConnection *connection, DBusMessage *message) { #if 1 @@ -382,42 +389,42 @@ switch (arg) { case DBUS_TYPE_INT32: dbus_message_iter_get_basic(iter, &vali); - dbg(0,"%sDBUS_TYPE_INT32: %d\n",prefix,vali); + dbg(lvl_debug,"%sDBUS_TYPE_INT32: %d\n",prefix,vali); break; case DBUS_TYPE_STRING: dbus_message_iter_get_basic(iter, &vals); - dbg(0,"%sDBUS_TYPE_STRING: %s\n",prefix,vals); + dbg(lvl_debug,"%sDBUS_TYPE_STRING: %s\n",prefix,vals); break; case DBUS_TYPE_STRUCT: - dbg(0,"%sDBUS_TYPE_STRUCT:\n",prefix); + dbg(lvl_debug,"%sDBUS_TYPE_STRUCT:\n",prefix); prefixr=g_strdup_printf("%s ",prefix); dbus_message_iter_recurse(iter, &iterr); dbus_dump_iter(prefixr, &iterr); g_free(prefixr); break; case DBUS_TYPE_VARIANT: - dbg(0,"%sDBUS_TYPE_VARIANT:\n",prefix); + dbg(lvl_debug,"%sDBUS_TYPE_VARIANT:\n",prefix); prefixr=g_strdup_printf("%s ",prefix); dbus_message_iter_recurse(iter, &iterr); dbus_dump_iter(prefixr, &iterr); g_free(prefixr); break; case DBUS_TYPE_DICT_ENTRY: - dbg(0,"%sDBUS_TYPE_DICT_ENTRY:\n",prefix); + dbg(lvl_debug,"%sDBUS_TYPE_DICT_ENTRY:\n",prefix); prefixr=g_strdup_printf("%s ",prefix); dbus_message_iter_recurse(iter, &iterr); dbus_dump_iter(prefixr, &iterr); g_free(prefixr); break; case DBUS_TYPE_ARRAY: - dbg(0,"%sDBUS_TYPE_ARRAY:\n",prefix); + dbg(lvl_debug,"%sDBUS_TYPE_ARRAY:\n",prefix); prefixr=g_strdup_printf("%s ",prefix); dbus_message_iter_recurse(iter, &iterr); dbus_dump_iter(prefixr, &iterr); g_free(prefixr); break; default: - dbg(0,"%c\n",arg); + dbg(lvl_debug,"%c\n",arg); } dbus_message_iter_next(iter); } @@ -517,7 +524,7 @@ dbus_message_iter_get_basic(iter, &attr_type); dbus_message_iter_next(iter); ret=attr_from_name(attr_type); - dbg(1, "attr value: 0x%x string: %s\n", ret, attr_type); + dbg(lvl_debug, "attr value: 0x%x string: %s\n", ret, attr_type); return ret; } @@ -534,21 +541,25 @@ dbus_message_iter_recurse(iter, &iterattr); dbus_message_iter_next(iter); - dbg(1, "seems valid. signature: %s\n", dbus_message_iter_get_signature(&iterattr)); + dbg(lvl_debug, "seems valid. signature: %s\n", dbus_message_iter_get_signature(&iterattr)); if (attr->type >= attr_type_item_begin && attr->type <= attr_type_item_end) return 0; if (attr->type >= attr_type_int_begin && attr->type <= attr_type_boolean_begin) { if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_INT32) { - dbus_message_iter_get_basic(&iterattr, &attr->u.num); + int val; + dbus_message_iter_get_basic(&iterattr, &val); + attr->u.num=val; return 1; } return 0; } if(attr->type >= attr_type_boolean_begin && attr->type <= attr_type_int_end) { if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_BOOLEAN) { - dbus_message_iter_get_basic(&iterattr, &attr->u.num); + int val; + dbus_message_iter_get_basic(&iterattr, &val); + attr->u.num=val; return 1; } return 0; @@ -812,9 +823,9 @@ destroy_attr(&attr); if (ret) return empty_reply(connection, message); - dbg(0,"failed to set/add/remove attr\n"); + dbg(lvl_error,"failed to set/add/remove attr\n"); } else { - dbg(0,"failed to decode attr\n"); + dbg(lvl_error,"failed to decode attr\n"); } return dbus_error_invalid_parameter(connection, message); } @@ -981,6 +992,31 @@ return request_set_add_remove_attr(connection, message, "map", NULL, (int (*)(void *, struct attr *))map_set_attr); } +static DBusHandlerResult +request_map_dump(DBusConnection *connection, DBusMessage *message) +{ + DBusMessageIter iter; + struct map *map; + + map=object_get_from_message(message, "map"); + if (! map) + return dbus_error_invalid_object_path(connection, message); + + dbus_message_iter_init(message, &iter); + if(!strcmp(dbus_message_iter_get_signature(&iter), "s")) { + char *file; + FILE *f; + dbus_message_iter_get_basic(&iter, &file); + /* dbg(0,"File '%s'\n",file); */ + f=fopen(file,"w"); + map_dump_filedesc(map,f); + fclose(f); + return empty_reply(connection, message); + } + return dbus_error_invalid_parameter(connection, message); +} + + /* mapset */ static DBusHandlerResult @@ -1121,7 +1157,7 @@ { DBusMessageIter iter2; - dbg(0,"%s\n", dbus_message_iter_get_signature(iter)); + dbg(lvl_debug,"%s\n", dbus_message_iter_get_signature(iter)); dbus_message_iter_recurse(iter, &iter2); @@ -1135,7 +1171,7 @@ return 0; dbus_message_iter_get_basic(&iter2, &p->y); - dbg(0, " x -> %x y -> %x\n", p->x, p->y); + dbg(lvl_debug, " x -> %x y -> %x\n", p->x, p->y); dbus_message_iter_next(&iter2); @@ -1255,6 +1291,31 @@ return empty_reply(connection, message); } +/** + * @brief Gracefully exit Navit by registering a one-second callback to allow clean shutdown of the dbus connection + * @param connection The DBusConnection object through which \a message arrived + * @param message The DBusMessage + * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED + */ +static DBusHandlerResult +request_navit_quit(DBusConnection *connection, DBusMessage *message) +{ + dbg(lvl_debug,"Got a quit request from DBUS\n"); + struct attr navit; + navit.type=attr_navit; + struct navit *nav; + nav = object_get_from_message(message, "navit"); + if (! nav) + return dbus_error_invalid_object_path(connection, message); + navit.u.navit=nav; + config_remove_attr(config, &navit); + + struct callback *callback; + callback=callback_new_1(callback_cast(event_main_loop_quit), NULL); + event_add_timeout(1000, 1, callback); + return empty_reply(connection, message); +} + static DBusHandlerResult request_navit_zoom(DBusConnection *connection, DBusMessage *message) { @@ -1268,7 +1329,7 @@ return dbus_error_invalid_object_path(connection, message); dbus_message_iter_init(message, &iter); - dbg(0,"%s\n", dbus_message_iter_get_signature(&iter)); + dbg(lvl_debug,"%s\n", dbus_message_iter_get_signature(&iter)); dbus_message_iter_get_basic(&iter, &factor); @@ -1289,6 +1350,180 @@ } +/** + * @brief Exports the current route as a GPX file + * @param connection The DBusConnection object through which a message arrived + * @param message The DBusMessage including the 'filename' parameter + * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED + */ +static DBusHandlerResult +request_navit_zoom_to_route(DBusConnection *connection, DBusMessage *message) +{ + struct navit *navit; + DBusMessageIter iter; + + navit = object_get_from_message(message, "navit"); + if (! navit) + return dbus_error_invalid_object_path(connection, message); + + dbus_message_iter_init(message, &iter); + dbg(lvl_debug,"%s\n", dbus_message_iter_get_signature(&iter)); + + navit_zoom_to_route(navit,0); + + return empty_reply(connection, message); + +} + +static DBusHandlerResult +request_navit_route_export_gpx(DBusConnection *connection, DBusMessage *message) +{ + char * filename; + struct navit *navit; + DBusMessageIter iter; + + navit = object_get_from_message(message, "navit"); + if (! navit) + return dbus_error_invalid_object_path(connection, message); + + dbus_message_iter_init(message, &iter); + + dbus_message_iter_get_basic(&iter, &filename); + + struct navigation *nav = navit_get_navigation(navit); + if(!nav) { + return dbus_error_navigation_not_configured(connection, message); + } + + dbg(lvl_debug,"Dumping route from dbus to %s\n", filename); + + struct map * map=NULL; + struct map_rect * mr=NULL; + struct item *item = NULL; + struct attr attr; + struct coord c; + struct coord_geo g; + + char *header = "\n" + "\n" + "\n"; + char *trailer = "\n\n"; + + map = navigation_get_map(nav); + if(map) + mr = map_rect_new(map,NULL); + + FILE *fp; + fp = fopen(filename,"w"); + fprintf(fp, "%s", header); + + while((item = map_rect_get_item(mr))) { + if(item_attr_get(item,attr_navigation_long,&attr)) { + item_coord_get(item, &c, 1); + transform_to_geo (projection_mg, &c, &g); + fprintf(fp,"%s%s\n",g.lng, g.lat, item_to_name(item->type), map_convert_string_tmp(item->map,attr.u.str)); + } + } + fprintf(fp,"%s",trailer); + + fclose(fp); + + return empty_reply(connection, message); +} + +/** + * @brief Exports the current route as a GeoJSON file + * @param connection The DBusConnection object through which a message arrived + * @param message The DBusMessage including the 'filename' parameter + * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED + */ +static DBusHandlerResult +request_navit_route_export_geojson(DBusConnection *connection, DBusMessage *message) +{ + char * filename; + struct point p; + struct navit *navit; + DBusMessageIter iter; + + navit = object_get_from_message(message, "navit"); + if (! navit) + return dbus_error_invalid_object_path(connection, message); + + dbus_message_iter_init(message, &iter); + + dbus_message_iter_get_basic(&iter, &filename); + + if (dbus_message_iter_has_next(&iter)) + { + dbus_message_iter_next(&iter); + if (!point_get_from_message(message, &iter, &p)) + return dbus_error_invalid_parameter(connection, message); + } + + dbg(lvl_debug,"Dumping route from dbus to %s\n", filename); + + struct map * map=NULL; + struct navigation * nav = NULL; + struct map_rect * mr=NULL; + struct item *item = NULL; + struct attr attr; + struct coord c; + struct coord_geo g; + + char *header = "{\n" +" \"type\": \"FeatureCollection\",\n" +" \"features\": [\n" +" {\n" +" \"type\": \"Feature\",\n" +" \"properties\": {\n" +" \"name\": \"Navit route export\",\n" +" \"stroke\": \"red\",\n" +" \"stroke-width\": \"5px\"\n" +" },\n" +" \"geometry\": {\n" +" \"type\": \"LineString\",\n" +" \"coordinates\": [\n"; + + nav = navit_get_navigation(navit); + if(!nav) { + return dbus_error_navigation_not_configured(connection, message); + } + map = navigation_get_map(nav); + if(map) + mr = map_rect_new(map,NULL); + + FILE *fp; + fp = fopen(filename,"w"); + fprintf(fp, "%s", header); + int is_first=1; + char * instructions; + instructions=g_strdup(""); + while((item = map_rect_get_item(mr))) { + if(item_attr_get(item,attr_navigation_long,&attr)) { + item_coord_get(item, &c, 1); + transform_to_geo (projection_mg, &c, &g); + if(!is_first){ + fprintf(fp,",\n"); + instructions=g_strconcat_printf(instructions,",\n"); + } + fprintf(fp,"[ %4.16f, %4.16f ]",g.lng, g.lat); + instructions=g_strconcat_printf(instructions, g_strdup_printf(" { \"type\": \"Feature\", \"properties\": { \"Instruction\": \"%s\", \"name\": \"\" }, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ %4.16f, %4.16f ] } }", map_convert_string_tmp(item->map,attr.u.str), g.lng, g.lat)); + /* fprintf(fp,"%s%s\n",g.lng, g.lat, item_to_name(item->type), map_convert_string_tmp(item->map,attr.u.str)); */ + is_first=0; + } + } + + fprintf(fp," ]}\n },\n%s ]\n }\n",instructions); + + fclose(fp); + + return empty_reply(connection, message); +} + static DBusHandlerResult request_navit_block(DBusConnection *connection, DBusMessage *message) { @@ -1321,7 +1556,7 @@ return dbus_error_invalid_object_path(connection, message); dbus_message_iter_init(message, &iter); - dbg(0,"%s\n", dbus_message_iter_get_signature(&iter)); + dbg(lvl_debug,"%s\n", dbus_message_iter_get_signature(&iter)); if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_INT32) return dbus_error_invalid_parameter(connection, message); @@ -1333,7 +1568,7 @@ return dbus_error_invalid_parameter(connection, message); dbus_message_iter_get_basic(&iter, &h); - dbg(0, " w -> %i h -> %i\n", w, h); + dbg(lvl_debug, " w -> %i h -> %i\n", w, h); navit_handle_resize(navit, w, h); @@ -1432,7 +1667,7 @@ dbus_message_iter_next(&iter); dbus_message_iter_get_basic(&iter, &description); - dbg(0, " destination -> %s\n", description); + dbg(lvl_debug, " destination -> %s\n", description); navit_set_destination(navit, &pc, description, 1); return empty_reply(connection, message); @@ -1730,6 +1965,10 @@ {".navit", "set_layout", "s", "layoutname", "", "", request_navit_set_layout}, {".navit", "zoom", "i(ii)", "factor(pixel_x,pixel_y)", "", "", request_navit_zoom}, {".navit", "zoom", "i", "factor", "", "", request_navit_zoom}, + {".navit", "zoom_to_route", "", "", "", "", request_navit_zoom_to_route}, + {".navit", "quit", "", "", "", "", request_navit_quit}, + {".navit", "export_as_gpx", "s", "filename", "", "", request_navit_route_export_gpx}, + {".navit", "export_as_geojson", "s", "filename", "", "", request_navit_route_export_geojson}, {".navit", "block", "i", "mode", "", "", request_navit_block}, {".navit", "resize", "ii", "upperleft,lowerright", "", "", request_navit_resize}, {".navit", "attr_iter", "", "", "o", "attr_iter", request_navit_attr_iter}, @@ -1750,6 +1989,7 @@ {".layout", "get_attr", "s", "attribute", "sv", "attrname,value", request_layout_get_attr}, {".map", "get_attr", "s", "attribute", "sv", "attrname,value", request_map_get_attr}, {".map", "set_attr", "sv", "attribute,value", "", "", request_map_set_attr}, + {".map", "dump", "s", "file", "", "", request_map_dump}, {".mapset", "attr_iter", "", "", "o", "attr_iter", request_mapset_attr_iter}, {".mapset", "attr_iter_destroy", "o", "attr_iter", "", "", request_mapset_attr_iter_destroy}, {".mapset", "get_attr", "s", "attribute", "sv", "attrname,value", request_mapset_get_attr}, @@ -1793,7 +2033,7 @@ if (strncmp(object, object_path, strlen(object_path))) return NULL; ret=g_strdup(object+strlen(object_path)); - dbg(1,"path=%s\n",ret); + dbg(lvl_debug,"path=%s\n",ret); for (i = strlen(ret)-1 ; i >= 0 ; i--) { if (ret[i] == '/' || (ret[i] >= '0' && ret[i] <= '9')) ret[i]='\0'; @@ -1821,7 +2061,7 @@ char *path=introspect_path(object); if (!path) return NULL; - dbg(1,"path=%s\n",path); + dbg(lvl_debug,"path=%s\n",path); // write header and make navit introspectable navitintrospectxml = g_strdup_printf("%s%s%s\n", navitintrospectxml_head1, object, navitintrospectxml_head2); @@ -1864,11 +2104,11 @@ { int i; char *path; - dbg(1,"type=%s interface=%s path=%s member=%s signature=%s\n", dbus_message_type_to_string(dbus_message_get_type(message)), dbus_message_get_interface(message), dbus_message_get_path(message), dbus_message_get_member(message), dbus_message_get_signature(message)); + dbg(lvl_debug,"type=%s interface=%s path=%s member=%s signature=%s\n", dbus_message_type_to_string(dbus_message_get_type(message)), dbus_message_get_interface(message), dbus_message_get_path(message), dbus_message_get_member(message), dbus_message_get_signature(message)); if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Introspectable", "Introspect")) { DBusMessage *reply; char *navitintrospectxml = generate_navitintrospectxml(dbus_message_get_path(message)); - dbg(1,"Introspect %s:Result:%s\n",dbus_message_get_path(message), navitintrospectxml); + dbg(lvl_debug,"Introspect %s:Result:%s\n",dbus_message_get_path(message), navitintrospectxml); if (navitintrospectxml) { reply = dbus_message_new_method_return(message); dbus_message_append_args(reply, DBUS_TYPE_STRING, &navitintrospectxml, DBUS_TYPE_INVALID); @@ -1902,7 +2142,7 @@ DBusHandlerResult filter(DBusConnection *connection, DBusMessage *message, void *user_data) { - dbg(0,"type=%s interface=%s path=%s member=%s signature=%s\n", dbus_message_type_to_string(dbus_message_get_type(message)), dbus_message_get_interface(message), dbus_message_get_path(message), dbus_message_get_member(message), dbus_message_get_signature(message)); + dbg(lvl_debug,"type=%s interface=%s path=%s member=%s signature=%s\n", dbus_message_type_to_string(dbus_message_get_type(message)), dbus_message_get_interface(message), dbus_message_get_path(message), dbus_message_get_member(message), dbus_message_get_signature(message)); if (dbus_message_is_signal(message, DBUS_INTERFACE_DBUS, "NameOwnerChanged")) { } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; @@ -1915,7 +2155,7 @@ DBusMessage* msg; char *opath=object_new("navit",navit); char *interface=g_strdup_printf("%s%s", service_name, ".navit"); - dbg(0,"enter %s %s %s\n",opath,command,interface); + dbg(lvl_debug,"enter %s %s %s\n",opath,command,interface); msg = dbus_message_new_signal(opath, interface, "signal"); if (msg) { DBusMessageIter iter1,iter2,iter3; @@ -1970,7 +2210,7 @@ object_hash=g_hash_table_new(g_str_hash, g_str_equal); object_hash_rev=g_hash_table_new(NULL, NULL); object_count=g_hash_table_new(g_str_hash, g_str_equal); - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); dbus_error_init(&error); #ifdef DBUS_USE_SYSTEM_BUS connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); @@ -1978,7 +2218,7 @@ connection = dbus_bus_get(DBUS_BUS_SESSION, &error); #endif if (!connection) { - dbg(0,"Failed to open connection to session message bus: %s\n", error.message); + dbg(lvl_error,"Failed to open connection to session message bus: %s\n", error.message); dbus_error_free(&error); return; } @@ -1990,7 +2230,7 @@ dbus_connection_register_fallback(connection, object_path, &dbus_navit_vtable, NULL); dbus_bus_request_name(connection, service_name, 0, &error); if (dbus_error_is_set(&error)) { - dbg(0,"Failed to request name: %s", error.message); + dbg(lvl_error,"Failed to request name: %s", error.message); dbus_error_free (&error); } callback.type=attr_callback; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/binding/python/config.c navit-0.5.0+dfsg.1/navit/binding/python/config.c --- navit-0.5.0~svn5900+dfsg.1/navit/binding/python/config.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/binding/python/config.c 2016-01-02 22:29:50.000000000 +0000 @@ -66,7 +66,7 @@ { configObject *ret; - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); ret=PyObject_NEW(configObject, &config_Type); return (PyObject *)ret; } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/binding/python/navit.c navit-0.5.0+dfsg.1/navit/binding/python/navit.c --- navit-0.5.0~svn5900+dfsg.1/navit/binding/python/navit.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/binding/python/navit.c 2016-01-02 22:29:50.000000000 +0000 @@ -44,10 +44,10 @@ if (!PyArg_ParseTuple(args, "s", &name)) return NULL; if (!navit_get_attr(self->navit, attr_from_name(name), &attr, NULL)) { - dbg(0,"get_attr not ok\n"); + dbg(lvl_error,"get_attr not ok\n"); Py_RETURN_NONE; } - dbg(0,"get_attr ok\n"); + dbg(lvl_debug,"get_attr ok\n"); return python_object_from_attr(&attr); } @@ -131,7 +131,7 @@ { navitObject *ret; - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); ret=PyObject_NEW(navitObject, &navit_Type); return (PyObject *)ret; } @@ -139,7 +139,7 @@ PyObject * navit_py_ref(struct navit *navit) { - dbg(0,"navit=%p\n", navit); + dbg(lvl_debug,"navit=%p\n", navit); navitObject *ret=PyObject_NEW(navitObject, &navit_Type); ret->navit=navit; return (PyObject *)ret; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/binding/python/pcoord.c navit-0.5.0+dfsg.1/navit/binding/python/pcoord.c --- navit-0.5.0~svn5900+dfsg.1/navit/binding/python/pcoord.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/binding/python/pcoord.c 2016-01-02 22:29:50.000000000 +0000 @@ -76,7 +76,7 @@ ret->pc.pro=pro; ret->pc.x=c.x; ret->pc.y=c.y; - dbg(0,"0x%x,0x%x\n", c.x, c.y); + dbg(lvl_debug,"0x%x,0x%x\n", c.x, c.y); return (PyObject *)ret; } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/bookmarks.c navit-0.5.0+dfsg.1/navit/bookmarks.c --- navit-0.5.0~svn5900+dfsg.1/navit/bookmarks.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/bookmarks.c 2016-01-02 22:29:50.000000000 +0000 @@ -83,7 +83,7 @@ void bookmarks_move_root(struct bookmarks *this_) { this_->current=this_->root; this_->current->iter=g_list_first(this_->current->children); - dbg(2,"Root list have %u entries\n",g_list_length(this_->current->children)); + dbg(lvl_info,"Root list have %u entries\n",g_list_length(this_->current->children)); return; } void bookmarks_move_up(struct bookmarks *this_) { @@ -103,7 +103,7 @@ if (!strcmp(data->label,name)) { this_->current=(struct bookmark_item_priv*)this_->current->iter->data; this_->current->iter=g_list_first(this_->current->children); - dbg(2,"%s list have %u entries\n",this_->current->label,g_list_length(this_->current->children)); + dbg(lvl_info,"%s list have %u entries\n",this_->current->label,g_list_length(this_->current->children)); return 1; } this_->current->iter=g_list_next(this_->current->iter); @@ -207,7 +207,7 @@ finder=b_item->label; while ((pos=strchr(finder,'/'))) { *pos=0x00; - dbg(1,"Found path entry: %s\n",finder); + dbg(lvl_debug,"Found path entry: %s\n",finder); if (!bookmarks_move_down(this_,finder)) { struct bookmark_item_priv *path_item=g_new0(struct bookmark_item_priv,1); path_item->type=type_bookmark_folder; @@ -231,7 +231,7 @@ this_->bookmarks_list=g_list_append(this_->bookmarks_list,b_item); this_->current->children=g_list_append(this_->current->children,b_item); this_->current->children=g_list_first(this_->current->children); - dbg(1,"Added %s to %s and current list now %u long\n",b_item->label,this_->current->label,g_list_length(this_->current->children)); + dbg(lvl_debug,"Added %s to %s and current list now %u long\n",b_item->label,this_->current->label,g_list_length(this_->current->children)); } bookmarks_move_root(this_); } @@ -327,7 +327,7 @@ g_free(fullname); fullname=g_strdup(pathHelper); g_free(pathHelper); - dbg(1,"full name: %s\n",fullname); + dbg(lvl_debug,"full name: %s\n",fullname); } } @@ -760,7 +760,7 @@ } fclose(f); } else { - dbg(0, "Error updating destinations file %s: %s\n", former_destination_file, strerror(errno)); + dbg(lvl_error, "Error updating destinations file %s: %s\n", former_destination_file, strerror(errno)); } } /** diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/cache.c navit-0.5.0+dfsg.1/navit/cache.c --- navit-0.5.0~svn5900+dfsg.1/navit/cache.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/cache.c 2016-01-02 22:29:50.000000000 +0000 @@ -33,13 +33,13 @@ cache_entry_dump(struct cache *cache, struct cache_entry *entry) { int i,size; - dbg(0,"Usage: %d size %d\n",entry->usage, entry->size); + dbg(lvl_debug,"Usage: %d size %d\n",entry->usage, entry->size); if (cache) size=cache->id_size; else size=5; for (i = 0 ; i < size ; i++) { - dbg(0,"0x%x\n", entry->id[i]); + dbg(lvl_debug,"0x%x\n", entry->id[i]); } } @@ -47,7 +47,7 @@ cache_list_dump(char *str, struct cache *cache, struct cache_entry_list *list) { struct cache_entry *first=list->first; - dbg(0,"dump %s %d\n",str, list->size); + dbg(lvl_debug,"dump %s %d\n",str, list->size); while (first) { cache_entry_dump(cache, first); first=first->next; @@ -106,7 +106,7 @@ cache->hash=g_hash_table_new(cache_hash20, cache_equal20); break; default: - dbg(0,"cache with id_size of %d not supported\n", id_size); + dbg(lvl_error,"cache with id_size of %d not supported\n", id_size); g_free(cache); cache=NULL; } @@ -152,7 +152,7 @@ static void cache_remove(struct cache *cache, struct cache_entry *entry) { - dbg(1,"remove 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); + dbg(lvl_debug,"remove 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); g_hash_table_remove(cache->hash, (gpointer)(entry->id)); g_slice_free1(entry->size, entry); } @@ -185,7 +185,7 @@ last=list->last; if (! last || last->usage || seen >= list->size) return NULL; - dbg(1,"removing %d\n", last->id[0]); + dbg(lvl_debug,"removing %d\n", last->id[0]); cache_remove_lru_helper(list); if (cache) { cache_remove(cache, last); @@ -211,7 +211,7 @@ cache_entry_destroy(struct cache *cache, void *data) { struct cache_entry *entry=(struct cache_entry *)((char *)data-cache->entry_size); - dbg(1,"destroy 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); + dbg(lvl_debug,"destroy 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); entry->usage--; } @@ -219,8 +219,8 @@ cache_trim(struct cache *cache, struct cache_entry *entry) { struct cache_entry *new_entry; - dbg(1,"trim 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); - dbg(1,"Trim %x from %d -> %d\n", entry->id[0], entry->size, cache->size); + dbg(lvl_debug,"trim 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); + dbg(lvl_debug,"Trim %x from %d -> %d\n", entry->id[0], entry->size, cache->size); if ( cache->entry_size < entry->size ) { g_hash_table_remove(cache->hash, (gpointer)(entry->id)); @@ -256,11 +256,11 @@ cache_replace(struct cache *cache) { if (cache->t1.size >= MAX(1,cache->t1_target)) { - dbg(1,"replace 12\n"); + dbg(lvl_debug,"replace 12\n"); if (!cache_move(cache, &cache->t1, &cache->b1)) cache_move(cache, &cache->t2, &cache->b2); } else { - dbg(1,"replace t2\n"); + dbg(lvl_debug,"replace t2\n"); if (!cache_move(cache, &cache->t2, &cache->b2)) cache_move(cache, &cache->t1, &cache->b1); } @@ -298,17 +298,17 @@ cache_lookup(struct cache *cache, void *id) { struct cache_entry *entry; - dbg(1,"get %d\n", ((int *)id)[0]); + dbg(lvl_debug,"get %d\n", ((int *)id)[0]); entry=g_hash_table_lookup(cache->hash, id); if (entry == NULL) { cache->insert=&cache->t1; #ifdef DEBUG_CACHE fprintf(stderr,"-"); #endif - dbg(1,"not in cache\n"); + dbg(lvl_debug,"not in cache\n"); return NULL; } - dbg(1,"found 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); + dbg(lvl_debug,"found 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); if (entry->where == &cache->t1 || entry->where == &cache->t2) { cache->hits+=entry->size; #ifdef DEBUG_CACHE @@ -317,7 +317,7 @@ else fprintf(stderr,"H"); #endif - dbg(1,"in cache %s\n", entry->where == &cache->t1 ? "T1" : "T2"); + dbg(lvl_debug,"in cache %s\n", entry->where == &cache->t1 ? "T1" : "T2"); cache_remove_from_list(entry->where, entry); cache_insert_mru(NULL, &cache->t2, entry); entry->usage++; @@ -327,18 +327,18 @@ #ifdef DEBUG_CACHE fprintf(stderr,"m"); #endif - dbg(1,"in phantom cache B1\n"); + dbg(lvl_debug,"in phantom cache B1\n"); cache->t1_target=MIN(cache->t1_target+MAX(cache->b2.size/cache->b1.size, 1),cache->size); cache_remove_from_list(&cache->b1, entry); } else if (entry->where == &cache->b2) { #ifdef DEBUG_CACHE fprintf(stderr,"M"); #endif - dbg(1,"in phantom cache B2\n"); + dbg(lvl_debug,"in phantom cache B2\n"); cache->t1_target=MAX(cache->t1_target-MAX(cache->b1.size/cache->b2.size, 1),0); cache_remove_from_list(&cache->b2, entry); } else { - dbg(0,"**ERROR** invalid where\n"); + dbg(lvl_error,"**ERROR** invalid where\n"); } cache_replace(cache); cache_remove(cache, entry); @@ -351,7 +351,7 @@ cache_insert(struct cache *cache, void *data) { struct cache_entry *entry=(struct cache_entry *)((char *)data-cache->entry_size); - dbg(1,"insert 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); + dbg(lvl_debug,"insert 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]); if (cache->insert == &cache->t1) { if (cache->t1.size + cache->b1.size >= cache->size) { if (cache->t1.size < cache->size) { @@ -382,8 +382,8 @@ static void cache_stats(struct cache *cache) { - dbg(0,"hits %d misses %d hitratio %d size %d entry_size %d id_size %d T1 target %d\n", cache->hits, cache->misses, cache->hits*100/(cache->hits+cache->misses), cache->size, cache->entry_size, cache->id_size, cache->t1_target); - dbg(0,"T1:%d B1:%d T2:%d B2:%d\n", cache->t1.size, cache->b1.size, cache->t2.size, cache->b2.size); + dbg(lvl_debug,"hits %d misses %d hitratio %d size %d entry_size %d id_size %d T1 target %d\n", cache->hits, cache->misses, cache->hits*100/(cache->hits+cache->misses), cache->size, cache->entry_size, cache->id_size, cache->t1_target); + dbg(lvl_debug,"T1:%d B1:%d T2:%d B2:%d\n", cache->t1.size, cache->b1.size, cache->t2.size, cache->b2.size); cache->hits=0; cache->misses=0; } @@ -396,6 +396,6 @@ cache_list_dump("B1", cache, &cache->b1); cache_list_dump("T2", cache, &cache->t2); cache_list_dump("B2", cache, &cache->b2); - dbg(0,"dump end\n"); + dbg(lvl_debug,"dump end\n"); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/callback.c navit-0.5.0+dfsg.1/navit/callback.c --- navit-0.5.0~svn5900+dfsg.1/navit/callback.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/callback.c 2016-01-02 22:29:50.000000000 +0000 @@ -145,13 +145,13 @@ if (! cb) return; if (cb->pcount + pcount <= 8) { - dbg(3,"cb->pcount=%d\n", cb->pcount); + dbg(lvl_debug,"cb->pcount=%d\n", cb->pcount); if (cb->pcount && cb->p) - dbg(3,"cb->p[0]=%p\n", cb->p[0]); - dbg(3,"pcount=%d\n", pcount); + dbg(lvl_debug,"cb->p[0]=%p\n", cb->p[0]); + dbg(lvl_debug,"pcount=%d\n", pcount); if (pcount) { dbg_assert(p!=NULL); - dbg(3,"p[0]=%p\n", p[0]); + dbg(lvl_debug,"p[0]=%p\n", p[0]); } for (i = 0 ; i < cb->pcount ; i++) pf[i]=cb->p[i]; @@ -195,7 +195,7 @@ break; } } else { - dbg(0,"too many parameters for callback (%d+%d)\n", cb->pcount, pcount); + dbg(lvl_error,"too many parameters for callback (%d+%d)\n", cb->pcount, pcount); } } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/CMakeLists.txt navit-0.5.0+dfsg.1/navit/CMakeLists.txt --- navit-0.5.0~svn5900+dfsg.1/navit/CMakeLists.txt 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/CMakeLists.txt 2016-01-02 22:29:50.000000000 +0000 @@ -8,7 +8,7 @@ set(NAVIT_SRC announcement.c atom.c attr.c cache.c callback.c command.c config_.c coord.c country.c data_window.c debug.c event.c file.c geom.c graphics.c gui.c item.c layout.c log.c main.c map.c maps.c linguistics.c mapset.c maptype.c menu.c messages.c bookmarks.c navit.c navit_nls.c navigation.c osd.c param.c phrase.c plugin.c popup.c - profile.c profile_option.c projection.c roadprofile.c route.c routech.c script.c search.c speech.c start_real.c sunriset.c transform.c track.c + profile.c profile_option.c projection.c roadprofile.c route.c script.c search.c speech.c start_real.c sunriset.c transform.c track.c search_houseno_interpol.c util.c vehicle.c vehicleprofile.c xmlconfig.c ) if(NOT USE_PLUGINS) @@ -107,12 +107,11 @@ set_target_properties(${NAVIT_LIBNAME} PROPERTIES COMPILE_FLAGS "${NAVIT_COMPILE_FLAGS}") endif() -# Subversion revision ADD_CUSTOM_TARGET( - version + git_version ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_SOURCE_DIR}/version.h.in -D DST=${CMAKE_CURRENT_BINARY_DIR}/version.h - -D NAME=SVN_VERSION + -D NAME="GIT_VERSION" -P ${PROJECT_SOURCE_DIR}/cmake/version.cmake ) @@ -139,10 +138,13 @@ endmacro() if(ANDROID) - process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navithdpi.xml OSD_SIZE=2 ICON_MEDIUM=48) - process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitmdpi.xml OSD_SIZE=1.33) - process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitldpi.xml OSD_SIZE=1) - add_custom_target( navit_config_xml ALL DEPENDS navithdpi.xml navitmdpi.xml navitldpi.xml) + process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitxxxhdpi.xml OSD_SIZE=5.33 ICON_SMALL=128 ICON_MEDIUM=192 ICON_BIG=256) + process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitxxhdpi.xml OSD_SIZE=4 ICON_SMALL=96 ICON_MEDIUM=128 ICON_BIG=192) + process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitxhdpi.xml OSD_SIZE=2.67 ICON_SMALL=64 ICON_MEDIUM=96 ICON_BIG=128) + process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navithdpi.xml OSD_SIZE=2 ICON_SMALL=48 ICON_MEDIUM=64 ICON_BIG=96) + process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitmdpi.xml OSD_SIZE=1.33 ICON_SMALL=32 ICON_MEDIUM=48 ICON_BIG=64) + process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitldpi.xml OSD_SIZE=1 ICON_SMALL=24 ICON_MEDIUM=32 ICON_BIG=48) + add_custom_target( navit_config_xml ALL DEPENDS navitxxxhdpi.xml navitxxhdpi.xml navitxhdpi.xml navithdpi.xml navitmdpi.xml navitldpi.xml) else() process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navit.xml "") add_custom_target( navit_config_xml_resource DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/navit.xml COMMAND mkdir -p resources/share/navit COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/navit.xml resources/share/navit) @@ -150,7 +152,7 @@ add_custom_target( navit_config_xml ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/navit.xml) endif() -ADD_DEPENDENCIES(${NAVIT_LIBNAME} version) +ADD_DEPENDENCIES(${NAVIT_LIBNAME} git_version) if (USE_LIBGNUINTL AND NOT HAVE_GLIB) ADD_DEPENDENCIES(support_glib support_gettext_intl) endif() diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/color.h navit-0.5.0+dfsg.1/navit/color.h --- navit-0.5.0~svn5900+dfsg.1/navit/color.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/color.h 2016-01-02 22:29:50.000000000 +0000 @@ -24,6 +24,7 @@ int r,g,b,a; }; +#define COLOR_BITDEPTH 16 #define COLOR_WHITE_ 0xffff,0xffff,0xffff,0xffff #define COLOR_BLACK_ 0x0000,0x0000,0x0000,0xffff #define COLOR_BACKGROUND_ 0xffff, 0xefef, 0xb7b7, 0xffff diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/command.c navit-0.5.0+dfsg.1/navit/command.c --- navit-0.5.0~svn5900+dfsg.1/navit/command.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/command.c 2016-01-02 22:29:50.000000000 +0000 @@ -28,14 +28,26 @@ */ +/** + * The result, or interim result, of evaluating a saved command. + */ struct result { - struct attr attr; + struct attr attr; /**< The attribute. If {@code allocated} is true, it stores an object that was + * successfully retrieved. Else it is either a placeholder or a constant value. + */ double val; - const char *var; - int varlen; - const char *attrn; - int attrnlen; - int allocated; + const char *var; /**< If {@code allocated} is false, the name of the object to be resolved. + * Else, it is the name of the object successfully retrieved and stored in + * {@code attr}, or {@code NULL} if retrieval failed. + * Only the first {@code varlen} characters are significant. + */ + int varlen; /**< Number of significant characters in {@code var} */ + const char *attrn; /**< The name of an object that has been resolved but not yet retrieved, + * {@code NULL} otherwise. Only the first {@code attrnlen} characters are + * significant. + */ + int attrnlen; /**< Number of significant characters in {@code attrn} */ + int allocated; /**< Whether the result has been calculated */ }; struct result_list { @@ -50,23 +62,31 @@ struct result res; }; +/** + * Information about a callback function for a saved command. + */ struct command_saved_cb { - struct callback *cb; + struct callback *cb; /**< The callback function */ struct attr attr; }; +/** + * A saved command. + */ struct command_saved { struct context ctx; struct result res; - char *command; // The command string itself - struct event_idle *idle_ev; // Event to update this command + char *command; /**< The command string itself **/ + struct event_idle *idle_ev; /**< Event to update this command **/ struct callback *idle_cb; - struct callback *register_cb; // Callback to register all the callbacks - struct event_idle *register_ev; // Idle event to register all the callbacks - struct attr context_attr; - int num_cbs; - struct command_saved_cb *cbs; // List of callbacks for this saved command - struct callback *cb; // Callback that should be called when we re-evaluate + struct callback *register_cb; /**< Callback to register all the callbacks **/ + struct event_idle *register_ev; /**< Idle event to register all the callbacks **/ + struct attr context_attr; /**< The root of the object hierarchy, which will be assumed as + * the parent of all unqualified or partially qualified object + * references. **/ + int num_cbs; /**< Number of entries in {@code cbs} **/ + struct command_saved_cb *cbs; /**< List of callbacks for this saved command **/ + struct callback *cb; /**< Callback that should be called when we re-evaluate **/ int error; int async; }; @@ -88,6 +108,51 @@ static void eval_comma(struct context *ctx, struct result *res); static struct attr ** eval_list(struct context *ctx); +/** + * @brief Converts an error to human-readable text. + * + * @param err The error code + * + * @return A string containing the error description. The caller is responsible for freeing up the string by + * calling {@code g_free()} when it is no longer needed. + */ +char *command_error_to_text(int err) { + switch (err) { + case no_error: + return g_strdup("no_error"); + case missing_double_quote: + return g_strdup("missing_double_quote"); + case missing_opening_parenthesis: + return g_strdup("missing_opening_parenthesis"); + case missing_closing_parenthesis: + return g_strdup("missing_closing_parenthesis"); + case missing_closing_brace: + return g_strdup("missing_closing_brace"); + case missing_colon: + return g_strdup("missing_colon"); + case missing_semicolon: + return g_strdup("missing_semicolon"); + case wrong_type: + return g_strdup("wrong_type"); + case illegal_number_format: + return g_strdup("illegal_number_format"); + case illegal_character: + return g_strdup("illegal_character"); + case missing_closing_bracket: + return g_strdup("missing_closing_bracket"); + case invalid_type: + return g_strdup("invalid_type"); + case not_ready: + return g_strdup("not_ready"); + case internal: + return g_strdup("internal"); + case eof_reached: + return g_strdup("eof_reached"); + default: + return g_strdup("unknown"); + } +} + static void result_free(struct result *res) { @@ -152,8 +217,8 @@ if (res->attrn) strncpy(attribute, res->attrn, res->attrnlen); attribute[res->attrnlen]='\0'; - dbg(0,"type:%s\n", attr_to_name(res->attr.type)); - dbg(0,"attribute '%s' from '%s'\n", attribute, object); + dbg(lvl_debug,"type:%s\n", attr_to_name(res->attr.type)); + dbg(lvl_debug,"attribute '%s' from '%s'\n", attribute, object); #endif } @@ -167,17 +232,36 @@ return attr_from_name(attrn); } +/** + * @brief Retrieves an attribute from an object. + * + * This function will retrieve the first matching attribute by calling the {@code get_attr} method for + * the object type. If {@code object} does not refer to a valid object, or the {@code get_attr} method + * for the object type could not be defined, the function fails and zero is returned. + * + * @param ctx The context (ignored) + * @param object The object for which the attribute is to be retrieved. + * @param attr_type The type of attribute to retrieve + * @param ret Points to a {@code struct attr} to which the attribute will be copied + * + * @return True if a matching attribute was found, false if no matching attribute was found or an error + * occurred + */ static int command_object_get_attr(struct context *ctx, struct attr *object, enum attr_type attr_type, struct attr *ret) { int r; struct attr dup; struct object_func *func=object_func_lookup(object->type); - if (!object->u.data || !func || !func->get_attr) + if (!object->u.data || !func || !func->get_attr) { + dbg(lvl_warning, "cannot retrieve attributes from %s (%p), func=%p\n", attr_to_name(object->type), object->u.data, func) return 0; + } r=func->get_attr(object->u.data, attr_type, &dup, NULL); if(r) attr_dup_content(&dup,ret); + else + dbg(lvl_warning, "%s (%p) has no attribute %s\n", attr_to_name(object->type), object->u.data, attr_to_name(attr_type)) return r; } @@ -200,12 +284,34 @@ } +/** + * @brief Retrieves the current value of an attribute and stores it in {@code res}. + * + * If {@code ctx->skip} is true, the function aborts and no action is taken. + * + * Before calling this function, object references in {@code res} must be resolved. That is, + * {@code res->attr} holds a copy of {@code ctx->attr} and the first {@code res->attrnlen} characters of + * {@code res->attrn} correspond to the object name. + * + * After this function completes, {@code res->allocated} is true, and {@code res->attrn} and + * {@code res->attrnlen} are reset. + * + * If the attribute was successfully retrieved, the first {@code res->varlen} characters of + * {@code res->var} correspond to an object name and {@code res->attr} holds the attribute. + * + * If the attribute could not be retrieved, {@code res->attr.type} is set to {@code attr_none}, and + * {@code res->var} and {@code res->varlen} are reset. + * + * @param ctx The context + * @param res The result + */ static void command_get_attr(struct context *ctx, struct result *res) { int result; struct result tmp={{0,},}; enum attr_type attr_type=command_attr_type(res); + enum attr_type parent_type = res->attr.type; /* for debugging only */ if (ctx->skip) return; result=command_object_get_attr(ctx, &res->attr, attr_type, &tmp.attr); @@ -213,9 +319,11 @@ *res=tmp; res->allocated=1; if (result) { + dbg(lvl_debug, "successfully retrieved '%s' from '%s'\n", attr_to_name(attr_type), attr_to_name(parent_type)); res->var=res->attrn; res->varlen=res->attrnlen; } else { + dbg(lvl_warning, "could not retrieve '%s' from '%s'\n", attr_to_name(attr_type), attr_to_name(parent_type)); result_free(res); res->attr.type=attr_none; res->var=NULL; @@ -251,6 +359,20 @@ *res=*newres; } +/** + * @brief Resolves an object reference. + * + * Prior to calling this function, {@code res} must contain a valid, unresolved object reference: + * {@code res->attr.type} must be {@code attr_none}, and the first {@code res->varlen} characters of + * {@code res->var} must correspond to an object name. + * + * After the function returns, {@code res->attr} holds a copy of {@code ctx->attr} and the first + * {@code res->attrnlen} characters of {@code res->attrn} correspond to the object name. + * {@code res->var} and {@code res->varlen} are reset. + * + * @param ctx The context + * @param res The result + */ static void resolve_object(struct context *ctx, struct result *res) { @@ -263,6 +385,24 @@ } } +/** + * @brief Resolves and retrieves an object and stores it in {@code res}. + * + * Prior to calling this function, {@code res} must contain a valid, unresolved object reference: + * {@code res->attr.type} must be {@code attr_none}, and the first {@code res->varlen} characters of + * {@code res->var} must correspond to an object name. + * + * If {@code ctx->skip} is true, the object reference will be resolved but the object will not be + * retrieved: the first {@code res->attrnlen} characters of {@code res->attrn} correspond to the object + * name after the function returns, while {@code res->var} and {@code res->varlen} are reset. + * + * If {@code ctx->skip} is false, {@code res->allocated} is true after this function completes. The + * object is stored in {@code res->attr} if it was successfully retrieved, otherwise {@code res->var} + * and {@code res->varlen} are reset. + * + * @param ctx The context + * @param res The result + */ static void resolve(struct context *ctx, struct result *res) { @@ -279,7 +419,26 @@ } - +/** + * @brief Returns an integer or bool representation of the result of an expression + * + * This function evaluates the result of an expression ({@code res->attr}). + * + * If {@code res->attr} is of a numeric type, its integer part is returned. + * + * If {@code is_bool} is false and {@code res->attr} is not of a numeric type, 0 is returned. + * + * If {@code is_bool} is true and {@code res->attr} is of an object or string type, true is returned + * for non-null, false otherwise. + * + * For all other types of {@code res->attr}, 0 (false) is returned. + * + * @param ctx The context for the expression + * @param is_bool If true, return boolean representation, else return integer representation. See description. + * @param res The result of the evaluation + * + * @return The result of the expression, see description. + */ static int get_int_bool(struct context *ctx, int is_bool, struct result *res) { @@ -296,17 +455,29 @@ return res->attr.u.data != NULL; if (is_bool && ATTR_IS_STRING(res->attr.type)) return res->attr.u.data != NULL; - dbg(0,"bool %d %s\n",is_bool,attr_to_name(res->attr.type)); + dbg(lvl_debug,"bool %d %s\n",is_bool,attr_to_name(res->attr.type)); ctx->error=wrong_type; return 0; } +/** + * @brief Returns an integer representation of the result of an expression + * + * This function is a wrapper around {@code get_int_bool()}. It is equivalent to + * {@code get_int_bool(ctx, 0, res)}. See {@code get_int_bool()} for a description. + */ static int get_int(struct context *ctx, struct result *res) { return get_int_bool(ctx, 0, res); } +/** + * @brief Returns a boolean representation of the result of an expression + * + * This function is a wrapper around {@code get_int_bool()}. It is equivalent to + * {@code get_int_bool(ctx, 1, res)}. See {@code get_int_bool()} for a description. + */ static int get_bool(struct context *ctx, struct result *res) { @@ -450,7 +621,7 @@ default: break; } - dbg(0,"Unkown op %d %s\n",op_type,op); + dbg(lvl_error,"Unkown op %d %s\n",op_type,op); ctx->error=internal; } @@ -487,17 +658,46 @@ default: break; } - dbg(0,"unknown set type %d %s\n",set_type,op); + dbg(lvl_error,"unknown set type %d %s\n",set_type,op); ctx->error=internal; } +/** + * @brief Evaluates a value and stores its result. + * + * This function evaluates the first value in {@code ctx->expr}. A value can be either an object name + * (such as {@code vehicle.position_speed}) or a literal value. + * + * If evaluation is successful, the result is stored in {@code res->attr}. + * + * If an object name is encountered, the result has an attribute type of {@code attr_none} and the first + * {@code res->varlen} characters of {@code res->var} will point to the object name. + * + * If a literal value is encountered, the result's attribute type is set to the corresponding generic + * data type and its value is stored with the attribute. + * + * After this function returns, {@code ctx->expr} contains the rest of the expression string, which was + * not evaluated. Leading spaces before the value will be discarded with the value. + * + * If {@code ctx->expr}, after eliminating any leading whitespace, does not begin with a valid value, + * one of the following errors is stored in {@code ctx->error}: + *

    + *
  • {@code illegal_number_format} An illegal number format, such as a second decimal dot, was + * encountered.
  • + *
  • {@code missing_double_quote} A double quote without a matching second double quote was found.
  • + *
  • {@code eof_reached} The expression string is empty.
  • + *
  • {@code illegal_character} The expression string begins with a character which is illegal in a + * value. This may happen when the expression string begins with an operator.
  • + *
+ * + * @param ctx The context to evaluate + * @param res Points to a {@code struct res} in which the result will be stored + */ static void eval_value(struct context *ctx, struct result *res) { const char *op; int dots=0; - op=ctx->expr; - result_free(res); res->varlen=0; @@ -505,9 +705,11 @@ res->attrnlen=0; res->attrn=NULL; - while (g_ascii_isspace(*op)) { - op++; + while (g_ascii_isspace(*(ctx->expr))) { + ctx->expr++; } + op = ctx->expr; + if ((op[0] >= 'a' && op[0] <= 'z') || (op[0] >= 'A' && op[0] <= 'Z') || op[0] == '_') { const char *s=op; for (;;) { @@ -574,11 +776,37 @@ if (!*op) ctx->error=eof_reached; else { - dbg(0,"illegal character 0x%x\n",*op); + /* + * If we get here, ctx->expr does not begin with a variable or a literal value. This is not an + * error if this function is being called to test if an expression begins with a value. + */ + dbg(lvl_debug, "character 0x%x is illegal in a value\n",*op); ctx->error=illegal_character; } } +/** + * @brief Retrieves the next object reference from an expression. + * + * This function scans the expression string {@code ctx->expr} for the next object reference. Anything + * other than an object reference (whitespace characters, literal values, operators and even illegal + * characters) is discarded until either the end of the string is reached or an object reference is + * encountered. + * + * After this function completes successfully, {@code res->attr.type} is {@code attr_none} and the first + * {@code res->varlen} characters of {@code res->var} point to the object name. + * + * Object names retrieved by this function are unqualified, i.e. {@code vehicle.position_speed} will be + * retrieved as {@code vehicle} on the first call (return value 2) and {@code position_speed} on the + * second call (return value 1). + * + * @param ctx The context + * @param res Points to a {@code struct result} where the result will be stored. + * + * @return If a complete object name has been retrieved, the return value is 1. If a partial object name + * has been retrieved (e.g. {@code vehicle} from {@code vehicle.position_speed}), the return value is 2. + * If no object references were found, the return value is 0. + */ static int get_next_object(struct context *ctx, struct result *res) { @@ -626,7 +854,7 @@ if (res->attrn) strncpy(function, res->attrn, res->attrnlen); function[res->attrnlen]='\0'; - dbg(1,"function=%s\n", function); + dbg(lvl_debug,"function=%s\n", function); if (ctx->expr[0] != ')') { list=eval_list(ctx); if (ctx->error) { @@ -655,7 +883,7 @@ res->attr.u.num=list[0]->u.num; res->allocated=0; } else { - dbg(0,"don't know how to create int of args\n"); + dbg(lvl_error,"don't know how to create int of args\n"); } } else if (ATTR_IS_STRING(attr_type)) { if (list && list[0] && ATTR_IS_STRING(list[0]->type)) { @@ -663,7 +891,7 @@ res->attr.u.str=g_strdup(list[0]->u.str); res->allocated=1; } else { - dbg(0,"don't know how to create string of args\n"); + dbg(lvl_error,"don't know how to create string of args\n"); } } else if (ATTR_IS_OBJECT(attr_type)) { struct object_func *func=object_func_lookup(attr_type); @@ -675,7 +903,7 @@ res->allocated=1; } } else { - dbg(0,"don't know how to create %s (%s)\n",attr_to_name(attr_type),function+4); + dbg(lvl_error,"don't know how to create %s (%s)\n",attr_to_name(attr_type),function+4); } } else if (!strcmp(function,"add_attr")) { command_object_add_attr(ctx, &res->attr, list[0]); @@ -685,10 +913,10 @@ if (command_object_get_attr(ctx, &res->attr, attr_callback_list, &cbl)) { int valid =0; struct attr **out=NULL; - dbg(1,"function call %s from %s\n",function, attr_to_name(res->attr.type)); + dbg(lvl_debug,"function call %s from %s\n",function, attr_to_name(res->attr.type)); callback_list_call_attr_4(cbl.u.callback_list, attr_command, function, list, &out, &valid); if (valid!=1){ - dbg(0, "invalid command ignored: \"%s\"; see http://wiki.navit-project.org/index.php/" + dbg(lvl_error, "invalid command ignored: \"%s\"; see http://wiki.navit-project.org/index.php/" "The_Navit_Command_Interface for valid commands.\n", function); } if (out && out[0]) { @@ -739,15 +967,15 @@ enum attr_type attr_type=command_attr_type(res); void *obj=res->attr.u.data; if (!obj) { - dbg(0,"no object\n"); + dbg(lvl_error,"no object\n"); return; } if (!obj_func) { - dbg(0,"no object func\n"); + dbg(lvl_error,"no object func\n"); return; } if (!obj_func->iter_new || !obj_func->iter_destroy) { - dbg(0,"no iter func\n"); + dbg(lvl_error,"no iter func\n"); return; } iter = obj_func->iter_new(NULL); @@ -770,7 +998,7 @@ return; } } else if (op[0] == '(') { - dbg(1,"function call\n"); + dbg(lvl_debug,"function call\n"); resolve_object(ctx, res); command_call_function(ctx, res); } @@ -958,7 +1186,7 @@ memset(&tmp,0,sizeof(tmp)); if (!get_op(ctx,0,":",NULL)) { - dbg(0,"ctxerr\n"); + dbg(lvl_debug,"ctxerr\n"); ctx->error=missing_colon; return; } @@ -1079,7 +1307,7 @@ return attr_none; resolve_object(&ctx, &res); *ret=res.attr; - dbg(1,"type %s\n",attr_to_name(command_attr_type(&res))); + dbg(lvl_debug,"type %s\n",attr_to_name(command_attr_type(&res))); return command_attr_type(&res); } @@ -1249,15 +1477,15 @@ } end=ctx->expr; if (!obj) { - dbg(0,"no object\n"); + dbg(lvl_error,"no object\n"); return 0; } if (!obj_func) { - dbg(0,"no object func\n"); + dbg(lvl_error,"no object func\n"); return 0; } if (!obj_func->iter_new || !obj_func->iter_destroy) { - dbg(0,"no iter func\n"); + dbg(lvl_error,"no iter func\n"); return 0; } iter = obj_func->iter_new(NULL); @@ -1329,6 +1557,7 @@ * subsequent command call. Hence the g_strdup. */ char *expr_dup; + char *err = NULL; /* Error description */ struct context ctx={0,}; ctx.attr=attr; ctx.error=0; @@ -1341,7 +1570,9 @@ char expr[32]; strncpy(expr, ctx.expr, 32); expr[31]='\0'; - dbg(0,"error %d starting at %s\n",ctx.error,expr); + err = command_error_to_text(ctx.error); + dbg(lvl_error, "error %s starting at %s\n", err, expr); + g_free(err); } g_free(expr_dup); } @@ -1398,6 +1629,12 @@ cs->cb = cb; } +/** + * @brief Returns an integer representation of the evaluation result of a saved command + * + * This function is a wrapper around {@code get_int()}. It is equivalent to + * {@code get_int(&cs->ctx, &cs->res)}. See {@code get_int()} for a description. + */ int command_saved_get_int (struct command_saved *cs) { @@ -1410,9 +1647,20 @@ return cs->error; } +/** + * @brief Idle function to evaluate a command + * + * This function is called from an idle loop for asynchronous evaluation but may also be called in-line. + * + * The result of the evaluation can be retrieved from {@code cs->res} after this function returns. If an + * error occurred, it will be stored in {@code cs->error}. + * + * @param cs The command to evaluate + */ static void command_saved_evaluate_idle (struct command_saved *cs) { + dbg(lvl_debug, "enter: cs=%p, cs->command=%s\n", cs, cs->command); // Only run once at a time if (cs->idle_ev) { event_remove_idle(cs->idle_ev); @@ -1432,9 +1680,21 @@ } } +/** + * @brief Evaluates a command + * + * This function examines {@code cs->async} to determine if the command should be evaluated immediately. + * If {@code cs->async} is true, an idle event is registered to register the command. Else the command + * is evaluated immediately and the result can be retrieved immediately after this function returns. + * + * See {@link command_saved_evaluate_idle(struct command_saved *)} for details. + * + * @param cs The command to evaluate + */ static void command_saved_evaluate(struct command_saved *cs) { + dbg(lvl_debug, "enter: cs=%p, cs->async=%d, cs->command=%s\n", cs, cs->async, cs->command); if (!cs->async) { command_saved_evaluate_idle(cs); return; @@ -1451,6 +1711,11 @@ cs->idle_ev = event_add_idle(100, cs->idle_cb); } +/** + * @brief Recreates all callbacks for a saved command + * + * @param cs The saved command + */ static void command_saved_callbacks_changed(struct command_saved *cs) { @@ -1459,6 +1724,8 @@ struct object_func *func; struct attr attr; + dbg(lvl_debug, "enter: cs=%p, cs->async=%d, cs->command=%s\n", cs, cs->async, cs->command); + if (cs->register_ev) { event_remove_idle(cs->register_ev); cs->register_ev = NULL; @@ -1470,7 +1737,7 @@ func = object_func_lookup(cs->cbs[i].attr.type); if (!func->remove_attr) { - dbg(0, "Could not remove command-evaluation callback because remove_attr is missing for type %i!\n", cs->cbs[i].attr.type); + dbg(lvl_error, "Could not remove command-evaluation callback because remove_attr is missing for type %i!\n", cs->cbs[i].attr.type); continue; } @@ -1488,24 +1755,52 @@ command_register_callbacks(cs); } +/** + * @brief Registers callbacks for a saved command + * + * This function registers callbacks for each attribute used in a saved command, causing the command to + * be re-evaluated whenever its value might change. + * + * This function will fail if an object used in the expression could not be resolved. This may happen + * during startup if this function is called before all objects have been created. In this case, the + * caller should schedule the function to be called again at a later time. + * + * It will also fail if an error is encountered. This can be determined by examining + * {@code cs->ctx.error} after the function returns. + * + * @param cs The command + * + * @return True if all callbacks were successfully registered, false if the function failed + */ static int command_register_callbacks(struct command_saved *cs) { - struct attr prev,cb_attr,attr; + struct attr prev; /* The parent of the next object which will be retrieved. */ + struct attr cb_attr; int status; struct object_func *func; struct callback *cb; + int tmpoffset; /* For debugging. Because we work with pointers into the same string instance. + * we can figure out offsets by using simple pointer arithmetics. + */ - attr = cs->context_attr; + dbg(lvl_debug, "enter: cs=%p, cs->async=%d, cs->command=%s\n", cs, cs->async, cs->command); cs->ctx.expr = cs->command; - cs->ctx.attr = &attr; prev = cs->context_attr; while ((status = get_next_object(&cs->ctx, &cs->res)) != 0) { + tmpoffset = cs->res.var - cs->command; + cs->ctx.attr = &prev; resolve(&cs->ctx, &cs->res); - if (cs->ctx.error || (cs->res.attr.type == attr_none)) { - // We could not resolve an object, perhaps because it has not been created + if (cs->ctx.error) { + /* An error occurred while parsing the command */ + tmpoffset = cs->ctx.expr - cs->command; + dbg(lvl_error, "parsing error: cs=%p, cs->ctx.error=%d\n\t%s\n\t%*s\n", cs, cs->ctx.error, cs->command, tmpoffset + 1, "^"); + return 0; + } else if (cs->res.attr.type == attr_none) { + /* We could not resolve an object, perhaps because it has not been created */ + dbg(lvl_error, "could not resolve object in cs=%p:\n\t%s\n\t%*s\n", cs, cs->command, tmpoffset + 1, "^"); return 0; } @@ -1515,12 +1810,11 @@ if (func->add_attr) { if (status == 2) { // This is not the final attribute name cb = callback_new_attr_1(callback_cast(command_saved_callbacks_changed), cs->res.attr.type, (void*)cs); - attr = cs->res.attr; } else if (status == 1) { // This is the final attribute name cb = callback_new_attr_1(callback_cast(command_saved_evaluate), cs->res.attr.type, (void*)cs); cs->ctx.attr = &cs->context_attr; } else { - dbg(0, "Error: Strange status returned from get_next_object()\n"); + dbg(lvl_error, "Error: Strange status returned from get_next_object()\n"); } cs->num_cbs++; @@ -1534,7 +1828,7 @@ func->add_attr(prev.u.data, &cb_attr); } else { - dbg(0, "Could not add callback because add_attr is missing for type %i}n", prev.type); + dbg(lvl_error, "Could not add callback because add_attr is missing for type %i\n", prev.type); } } @@ -1547,15 +1841,26 @@ command_saved_evaluate_idle(cs); + dbg(lvl_debug, "done: cs=%p, cs->command=%s\n", cs, cs->command); return 1; } +/** + * @brief Creates a new saved command. + * + * @param command The command string + * @param attr The context attribute for the saved command + * @param cb The callback to call whenver the command is re-evaluated + * @param async Whether the saved command should be flagged as asynchronous, causing it to be evaluated + * in an idle callback + */ struct command_saved * command_saved_attr_new(char *command, struct attr *attr, struct callback *cb, int async) { struct command_saved *ret; ret = g_new0(struct command_saved, 1); + dbg(lvl_debug, "enter, ret=%p, command=%s\n", ret, command); ret->command = g_strdup(command); ret->context_attr = *attr; ret->cb = cb; @@ -1564,6 +1869,7 @@ if (!command_register_callbacks(ret)) { // We try this as an idle call again + dbg(lvl_debug, "could not register callbacks, will retry as an idle call\n"); ret->register_cb = callback_new_1(callback_cast(command_saved_callbacks_changed), ret); ret->register_ev = event_add_idle(300, ret->register_cb); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/command.h navit-0.5.0+dfsg.1/navit/command.h --- navit-0.5.0~svn5900+dfsg.1/navit/command.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/command.h 2016-01-02 22:29:50.000000000 +0000 @@ -39,6 +39,7 @@ struct command_saved; struct command_table; struct navit; +char *command_error_to_text(int err); enum attr_type command_evaluate_to_attr(struct attr *attr, char *expr, int *error, struct attr *ret); void command_evaluate_to_void(struct attr *attr, char *expr, int *error); char *command_evaluate_to_string(struct attr *attr, char *expr, int *error); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/config_.c navit-0.5.0+dfsg.1/navit/config_.c --- navit-0.5.0~svn5900+dfsg.1/navit/config_.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/config_.c 2016-01-02 22:29:50.000000000 +0000 @@ -60,7 +60,7 @@ static void config_terminate(int sig) { - dbg(0,"terminating\n"); + dbg(lvl_debug,"terminating\n"); config_destroy(config); } @@ -142,11 +142,11 @@ config_new(struct attr *parent, struct attr **attrs) { if (configured) { - dbg(0,"only one config allowed\n"); + dbg(lvl_error,"only one config allowed\n"); return config; } if (parent) { - dbg(0,"no parent in config allowed\n"); + dbg(lvl_error,"no parent in config allowed\n"); return NULL; } if (!config) @@ -156,7 +156,7 @@ config->attrs=attr_generic_add_attr_list(config->attrs, attrs); while (*attrs) { if (!config_set_attr_int(config,*attrs)) { - dbg(0,"failed to set attribute '%s'\n",attr_to_name((*attrs)->type)); + dbg(lvl_error,"failed to set attribute '%s'\n",attr_to_name((*attrs)->type)); config_destroy(config); config=NULL; break; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/coord.c navit-0.5.0+dfsg.1/navit/coord.c --- navit-0.5.0~svn5900+dfsg.1/navit/coord.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/coord.c 2016-01-02 22:29:50.000000000 +0000 @@ -104,7 +104,7 @@ dbg_assert(r1->lu.y >= r1->rl.y); dbg_assert(r2->lu.x <= r2->rl.x); dbg_assert(r2->lu.y >= r2->rl.y); - dbg(3,"0x%x,0x%x - 0x%x,0x%x vs 0x%x,0x%x - 0x%x,0x%x\n", r1->lu.x, r1->lu.y, r1->rl.x, r1->rl.y, r2->lu.x, r2->lu.y, r2->rl.x, r2->rl.y); + dbg(lvl_debug,"0x%x,0x%x - 0x%x,0x%x vs 0x%x,0x%x - 0x%x,0x%x\n", r1->lu.x, r1->lu.y, r1->rl.x, r1->rl.y, r2->lu.x, r2->lu.y, r2->rl.x, r2->rl.y); if (r1->lu.x > r2->rl.x) return 0; if (r1->rl.x < r2->lu.x) @@ -146,51 +146,47 @@ } /** - * Parses \c char \a *c_str and writes back the coordinates to \c coord \a *c_ret. Uses \c projection \a pro if no projection is given in \c char \a *c_str. - * The format for \a *c_str can be: - * \li [Proj:]-0xX [-]0xX - * - where Proj can be mg/garmin, defaults to mg - * \li [Proj:][D][D]Dmm.ss[S][S] N/S [D][D]DMM.ss[S][S]... E/W - * \li [Proj:][-][D]D.d[d]... [-][D][D]D.d[d] - * - where Proj can be geo + * Parses \c char \a *coord_input and writes back the coordinates to \c coord \a *result, using \c projection \a output_projection. + * \a *coord_input may specify its projection at the beginning. + * The format for \a *coord_input can be: + * \li [Proj:][-]0xXX.... [-]0xXX... - Mercator coordinates, hex integers (XX), Proj can be "mg" or "garmin", defaults to mg + * \li [Proj:][D][D]Dmm.mm.. N/S [D][D]DMM.mm... E/W - lat/long (WGS 84), integer degrees (DD) and minutes as decimal fraction (MM), Proj must be "geo" or absent + * \li [Proj:][-][D]D.d[d]... [-][D][D]D.d[d] - long/lat (WGS 84, note order!), degrees as decimal fraction, Proj does not matter + * \li utm[zoneinfo]:[-][D]D.d[d]... [-][D][D]D.d[d] - UTM coordinates, as decimal fraction, with optional zone information (?) + * Note that the spaces are relevant for parsing. * - * @param *c_str String to be parsed - * @param pro Projection of the string - * @param *pc_ret Where the \a pcoord should get stored + * @param *coord_input String to be parsed + * @param output_projection Desired projection of the result + * @param *result For returning result * @returns The lenght of the parsed string */ int -coord_parse(const char *c_str, enum projection pro, struct coord *c_ret) +coord_parse(const char *coord_input, enum projection output_projection, struct coord *result) { - int debug=0; char *proj=NULL,*s,*co; - const char *str=c_str; + const char *str=coord_input; int args,ret = 0; struct coord_geo g; struct coord c,offset; enum projection str_pro=projection_none; - dbg(1,"enter('%s',%d,%p)\n", c_str, pro, c_ret); + dbg(lvl_debug,"enter('%s',%d,%p)\n", coord_input, output_projection, result); s=strchr(str,' '); co=strchr(str,':'); if (co && co < s) { proj=malloc(co-str+1); strncpy(proj, str, co-str); proj[co-str]='\0'; - dbg(1,"projection=%s\n", proj); + dbg(lvl_debug,"projection=%s\n", proj); str=co+1; s=strchr(str,' '); - if (!strcmp(proj, "mg")) - str_pro = projection_mg; - else if (!strcmp(proj, "garmin")) - str_pro = projection_garmin; - else if (!strcmp(proj, "geo")) + if (!strcmp(proj, "geo")) str_pro = projection_none; else { str_pro = projection_from_name(proj,&offset); if (str_pro == projection_none) { - dbg(0, "Unknown projection: %s\n", proj); + dbg(lvl_error, "Unknown projection: %s\n", proj); goto out; } } @@ -206,26 +202,26 @@ args=sscanf(str, "%i %i%n",&c.x, &c.y, &ret); if (args < 2) goto out; - dbg(1,"str='%s' x=0x%x y=0x%x c=%d\n", str, c.x, c.y, ret); - dbg(1,"rest='%s'\n", str+ret); + dbg(lvl_debug,"str='%s' x=0x%x y=0x%x c=%d\n", str, c.x, c.y, ret); + dbg(lvl_debug,"rest='%s'\n", str+ret); if (str_pro == projection_none) str_pro=projection_mg; - if (str_pro != pro) { + if (str_pro != output_projection) { transform_to_geo(str_pro, &c, &g); - transform_from_geo(pro, &g, &c); + transform_from_geo(output_projection, &g, &c); } - *c_ret=c; + *result=c; } else if (*s == 'N' || *s == 'n' || *s == 'S' || *s == 's') { double lng, lat; char ns, ew; - dbg(1,"str='%s'\n", str); + dbg(lvl_debug,"str='%s'\n", str); args=sscanf(str, "%lf %c %lf %c%n", &lat, &ns, &lng, &ew, &ret); - dbg(1,"args=%d\n", args); - dbg(1,"lat=%f %c lon=%f %c\n", lat, ns, lng, ew); + dbg(lvl_debug,"args=%d\n", args); + dbg(lvl_debug,"lat=%f %c lon=%f %c\n", lat, ns, lng, ew); if (args < 4) goto out; - dbg(1,"projection=%d str_pro=%d projection_none=%d\n", pro, str_pro, projection_none); + dbg(lvl_debug,"projection=%d str_pro=%d projection_none=%d\n", output_projection, str_pro, projection_none); if (str_pro == projection_none) { g.lat=floor(lat/100); lat-=g.lat*100; @@ -237,53 +233,45 @@ g.lat=-g.lat; if (ew == 'w' || ew == 'W') g.lng=-g.lng; - dbg(1,"transform_from_geo(%f,%f)",g.lat,g.lng); - transform_from_geo(pro, &g, c_ret); - dbg(1,"result 0x%x,0x%x\n", c_ret->x,c_ret->y); + dbg(lvl_debug,"transform_from_geo(%f,%f)",g.lat,g.lng); + transform_from_geo(output_projection, &g, result); + dbg(lvl_debug,"result 0x%x,0x%x\n", result->x,result->y); } - dbg(3,"str='%s' x=%f ns=%c y=%f ew=%c c=%d\n", str, lng, ns, lat, ew, ret); - dbg(3,"rest='%s'\n", str+ret); - } else if (str_pro == projection_utm || str_pro == projection_gk) { + dbg(lvl_debug,"str='%s' x=%f ns=%c y=%f ew=%c c=%d\n", str, lng, ns, lat, ew, ret); + dbg(lvl_debug,"rest='%s'\n", str+ret); + } else if (str_pro == projection_utm) { double x,y; args=sscanf(str, "%lf %lf%n", &x, &y, &ret); if (args < 2) goto out; c.x=x+offset.x; c.y=y+offset.y; - if (str_pro != pro) { + if (str_pro != output_projection) { transform_to_geo(str_pro, &c, &g); - transform_from_geo(pro, &g, &c); + transform_from_geo(output_projection, &g, &c); } - *c_ret=c; + *result=c; } else { double lng, lat; args=sscanf(str, "%lf %lf%n", &lng, &lat, &ret); if (args < 2) goto out; - dbg(1,"str='%s' x=%f y=%f c=%d\n", str, lng, lat, ret); - dbg(1,"rest='%s'\n", str+ret); + dbg(lvl_debug,"str='%s' x=%f y=%f c=%d\n", str, lng, lat, ret); + dbg(lvl_debug,"rest='%s'\n", str+ret); g.lng=lng; g.lat=lat; - transform_from_geo(pro, &g, c_ret); - } - if (debug) - printf("rest='%s'\n", str+ret); - ret+=str-c_str; - if (debug) { - printf("args=%d\n", args); - printf("ret=%d delta=%d ret_str='%s'\n", ret, GPOINTER_TO_INT(str-c_str), c_str+ret); + transform_from_geo(output_projection, &g, result); } + ret+=str-coord_input; + dbg(lvl_info, "ret=%d delta=%d ret_str='%s'\n", ret, GPOINTER_TO_INT(str-coord_input), coord_input+ret); out: free(proj); return ret; } /** - * A wrapper for pcoord_parse that also return the projection - * @param *c_str String to be parsed - * @param pro Projection of the string - * @param *pc_ret Where the \a pcoord should get stored - * @returns The lenght of the parsed string + * A wrapper for coord_parse that also returns the projection. + * For parameters see coord_parse. */ int diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/debug.c navit-0.5.0+dfsg.1/navit/debug.c --- navit-0.5.0~svn5900+dfsg.1/navit/debug.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/debug.c 2016-01-02 22:29:50.000000000 +0000 @@ -52,9 +52,10 @@ #endif -int debug_level=0; -#define GLOBAL_DEBUG_LEVEL_UNSET -1 -int global_debug_level=GLOBAL_DEBUG_LEVEL_UNSET; +#define DEFAULT_DEBUG_LEVEL lvl_error +dbg_level max_debug_level=DEFAULT_DEBUG_LEVEL; +#define GLOBAL_DEBUG_LEVEL_UNSET lvl_unset +dbg_level global_debug_level=GLOBAL_DEBUG_LEVEL_UNSET; int segv_level=0; int timestamp_prefix=0; @@ -87,8 +88,10 @@ void debug_init(const char *program_name) { +#ifndef HAVE_API_ANDROID gdb_program=g_strdup(program_name); signal(SIGSEGV, sigsegv); +#endif debug_hash=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); #ifdef __IPHONE_OS_VERSION_MIN_REQUIRED debug_fp = stdout; @@ -101,29 +104,31 @@ static void debug_update_level(gpointer key, gpointer value, gpointer user_data) { - if (debug_level < GPOINTER_TO_INT(value)) - debug_level = GPOINTER_TO_INT(value); + if (max_debug_level < GPOINTER_TO_INT(value)) + max_debug_level = GPOINTER_TO_INT(value); } void -debug_set_global_level(int level, int override_old_value ) { +debug_set_global_level(dbg_level level, int override_old_value ) { if (global_debug_level == GLOBAL_DEBUG_LEVEL_UNSET || override_old_value) { global_debug_level=level; - if (debug_level < global_debug_level){ - debug_level = global_debug_level; + if (max_debug_level < global_debug_level){ + max_debug_level = global_debug_level; } } } void -debug_level_set(const char *name, int level) +debug_level_set(const char *name, dbg_level level) { if (!strcmp(name, "segv")) { +#ifndef HAVE_API_ANDROID segv_level=level; if (segv_level) signal(SIGSEGV, sigsegv); else signal(SIGSEGV, NULL); +#endif } else if (!strcmp(name, "timestamps")) { timestamp_prefix=level; } else if (!strcmp(name, DEBUG_MODULE_GLOBAL)) { @@ -134,14 +139,43 @@ } } +static dbg_level +parse_dbg_level(struct attr *dbg_level_attr, struct attr *level_attr) +{ + if (dbg_level_attr) { + if(!strcmp(dbg_level_attr->u.str,"error")){ + return lvl_error; + } + if(!strcmp(dbg_level_attr->u.str,"warning")){ + return lvl_warning; + } + if(!strcmp(dbg_level_attr->u.str,"info")){ + return lvl_info; + } + if(!strcmp(dbg_level_attr->u.str,"debug")){ + return lvl_debug; + } + dbg(lvl_error, "Invalid debug level in config: '%s'\n", dbg_level_attr->u.str); + } else if (level_attr) { + if (level_attr->u.num>= lvl_error && + level_attr->u.num<= lvl_debug) + return level_attr->u.num; + dbg(lvl_error, "Invalid debug level in config: %ld\n", level_attr->u.num); + } + return lvl_unset; +} + struct debug * debug_new(struct attr *parent, struct attr **attrs) { - struct attr *name,*level; + struct attr *name,*dbg_level_attr,*level_attr; + dbg_level level; name=attr_search(attrs, NULL, attr_name); - level=attr_search(attrs, NULL, attr_level); + dbg_level_attr=attr_search(attrs, NULL, attr_dbg_level); + level_attr=attr_search(attrs, NULL, attr_level); + level = parse_dbg_level(dbg_level_attr,level_attr); #ifdef HAVE_SOCKET - if (!name && !level) { + if (!name && level==lvl_unset) { struct attr *socket_attr=attr_search(attrs, NULL, attr_socket); char *p,*s; if (!socket_attr) @@ -165,19 +199,23 @@ return (struct debug *)&dummy; } #endif - if (!name || !level) + if (!name || level==lvl_unset) return NULL; - debug_level_set(name->u.str, level->u.num); + debug_level_set(name->u.str, level); return (struct debug *)&dummy; } -int -debug_level_get(const char *name) +dbg_level +debug_level_get(const char *message_category) { if (!debug_hash) - return 0; - return GPOINTER_TO_INT(g_hash_table_lookup(debug_hash, name)); + return DEFAULT_DEBUG_LEVEL; + gpointer level = g_hash_table_lookup(debug_hash, message_category); + if (!level) { + return DEFAULT_DEBUG_LEVEL; + } + return GPOINTER_TO_INT(level); } static void debug_timestamp(char *buffer) @@ -206,49 +244,88 @@ #endif } +static char* dbg_level_to_string(dbg_level level) +{ + switch(level) { + case lvl_unset: + return "-unset-"; + case lvl_error: + return "error"; + case lvl_warning: + return "warning"; + case lvl_info: + return "info"; + case lvl_debug: + return "debug"; + } + return "-invalid level-"; +} + +#ifdef HAVE_API_ANDROID +static android_LogPriority +dbg_level_to_android(dbg_level level) +{ + switch(level) { + case lvl_unset: + return ANDROID_LOG_UNKNOWN; + case lvl_error: + return ANDROID_LOG_ERROR; + case lvl_warning: + return ANDROID_LOG_WARN; + case lvl_info: + return ANDROID_LOG_INFO; + case lvl_debug: + return ANDROID_LOG_DEBUG; + } + return ANDROID_LOG_UNKNOWN; +} +#endif + void -debug_vprintf(int level, const char *module, const int mlen, const char *function, const int flen, int prefix, const char *fmt, va_list ap) +debug_vprintf(dbg_level level, const char *module, const int mlen, const char *function, const int flen, int prefix, const char *fmt, va_list ap) { #if defined HAVE_API_WIN32_CE || defined _MSC_VER - char buffer[4096]; + char message_origin[4096]; #else - char buffer[mlen+flen+3]; + char message_origin[mlen+flen+3]; #endif - FILE *fp=debug_fp; - sprintf(buffer, "%s:%s", module, function); - if (global_debug_level >= level || debug_level_get(module) >= level || debug_level_get(buffer) >= level) { + sprintf(message_origin, "%s:%s", module, function); + if (global_debug_level >= level || debug_level_get(module) >= level || debug_level_get(message_origin) >= level) { #if defined(DEBUG_WIN32_CE_MESSAGEBOX) wchar_t muni[4096]; #endif - char xbuffer[4096]; - xbuffer[0]='\0'; + char debug_message[4096]; + debug_message[0]='\0'; if (prefix) { if (timestamp_prefix) - debug_timestamp(xbuffer); - strcpy(xbuffer+strlen(xbuffer),buffer); - strcpy(xbuffer+strlen(xbuffer),":"); + debug_timestamp(debug_message); + strcpy(debug_message+strlen(debug_message),dbg_level_to_string(level)); + strcpy(debug_message+strlen(debug_message),":"); + strcpy(debug_message+strlen(debug_message),message_origin); + strcpy(debug_message+strlen(debug_message),":"); } #if defined HAVE_API_WIN32_CE #define vsnprintf _vsnprintf #endif - vsnprintf(xbuffer+strlen(xbuffer),4095-strlen(xbuffer),fmt,ap); + vsnprintf(debug_message+strlen(debug_message),4095-strlen(debug_message),fmt,ap); #ifdef DEBUG_WIN32_CE_MESSAGEBOX - mbstowcs(muni, xbuffer, strlen(xbuffer)+1); + mbstowcs(muni, debug_message, strlen(debug_message)+1); MessageBoxW(NULL, muni, TEXT("Navit - Error"), MB_APPLMODAL|MB_OK|MB_ICONERROR); #else #ifdef HAVE_API_ANDROID - __android_log_print(ANDROID_LOG_ERROR,"navit", "%s", xbuffer); + __android_log_print(dbg_level_to_android(level), "navit", "%s", debug_message); #else #ifdef HAVE_SOCKET if (debug_socket != -1) { - sendto(debug_socket, xbuffer, strlen(xbuffer), 0, (struct sockaddr *)&debug_sin, sizeof(debug_sin)); + sendto(debug_socket, debug_message, strlen(debug_message), 0, (struct sockaddr *)&debug_sin, sizeof(debug_sin)); return; } #endif + FILE *fp=debug_fp; if (! fp) fp = stderr; - fprintf(fp,"%s",xbuffer); + fprintf(fp,"%s",debug_message); fflush(fp); #endif #endif @@ -256,7 +333,7 @@ } void -debug_printf(int level, const char *module, const int mlen,const char *function, const int flen, int prefix, const char *fmt, ...) +debug_printf(dbg_level level, const char *module, const int mlen,const char *function, const int flen, int prefix, const char *fmt, ...) { va_list ap; va_start(ap, fmt); @@ -267,7 +344,7 @@ void debug_assert_fail(const char *module, const int mlen,const char *function, const int flen, const char *file, int line, const char *expr) { - debug_printf(0,module,mlen,function,flen,1,"%s:%d assertion failed:%s\n", file, line, expr); + debug_printf(lvl_error,module,mlen,function,flen,1,"%s:%d assertion failed:%s\n", file, line, expr); abort(); } @@ -314,7 +391,7 @@ { struct malloc_head *head=malloc_heads; int i; - dbg(0,"mallocs %d\n",mallocs); + dbg(lvl_debug,"mallocs %d\n",mallocs); while (head) { fprintf(stderr,"unfreed malloc from %s of size %d\n",head->where,head->size); for (i = 0 ; i < 8 ; i++) @@ -337,7 +414,7 @@ debug_malloc_size+=size; if (debug_malloc_size/(1024*1024) != debug_malloc_size_m) { debug_malloc_size_m=debug_malloc_size/(1024*1024); - dbg(0,"malloced %d kb\n",debug_malloc_size/1024); + dbg(lvl_debug,"malloced %d kb\n",debug_malloc_size/1024); } head=malloc(size+sizeof(*head)+sizeof(*tail)); head->magic=0xdeadbeef; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/debug.h navit-0.5.0+dfsg.1/navit/debug.h --- navit-0.5.0~svn5900+dfsg.1/navit/debug.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/debug.h 2016-01-02 22:29:50.000000000 +0000 @@ -38,11 +38,25 @@ #endif #endif -extern int debug_level; +/** Possible debug levels (inspired by SLF4J). */ +typedef enum { + /** Internal use only, do not use for logging. */ + lvl_unset=-1, + /** Error: something did not work. */ + lvl_error, + /** Warning: something may not have worked. */ + lvl_warning, + /** Informational message. Should make sense to non-programmers. */ + lvl_info, + /** Debug output: (almost) anything goes. */ + lvl_debug +} dbg_level; + +extern dbg_level max_debug_level; #define dbg_str2(x) #x #define dbg_str1(x) dbg_str2(x) #define dbg_module dbg_str1(MODULE) -#define dbg(level,...) { if (debug_level >= level) debug_printf(level,dbg_module,strlen(dbg_module),__PRETTY_FUNCTION__, strlen(__PRETTY_FUNCTION__),1,__VA_ARGS__); } +#define dbg(level,...) { if (max_debug_level >= level) debug_printf(level,dbg_module,strlen(dbg_module),__PRETTY_FUNCTION__, strlen(__PRETTY_FUNCTION__),1,__VA_ARGS__); } #define dbg_assert(expr) ((expr) ? (void) 0 : debug_assert_fail(dbg_module,strlen(dbg_module),__PRETTY_FUNCTION__, strlen(__PRETTY_FUNCTION__),__FILE__,__LINE__,dbg_str1(expr))) #define DEBUG_MODULE_GLOBAL "global" @@ -70,11 +84,11 @@ struct attr; struct debug; void debug_init(const char *program_name); -void debug_level_set(const char *name, int level); +void debug_level_set(const char *name, dbg_level level); struct debug *debug_new(struct attr *parent, struct attr **attrs); -int debug_level_get(const char *name); -void debug_vprintf(int level, const char *module, const int mlen, const char *function, const int flen, int prefix, const char *fmt, va_list ap); -void debug_printf(int level, const char *module, const int mlen, const char *function, const int flen, int prefix, const char *fmt, ...) +dbg_level debug_level_get(const char *name); +void debug_vprintf(dbg_level level, const char *module, const int mlen, const char *function, const int flen, int prefix, const char *fmt, va_list ap); +void debug_printf(dbg_level level, const char *module, const int mlen, const char *function, const int flen, int prefix, const char *fmt, ...) #ifdef __GNUC__ __attribute__ ((format (printf, 7, 8))) #endif @@ -91,7 +105,7 @@ void debug_free_func(void *ptr); void debug_finished(void); void *debug_realloc(const char *where, int line, const char *func, void *ptr, int size); -void debug_set_global_level(int level, int override_old_value); +void debug_set_global_level(dbg_level level, int override_old_value); /* end of prototypes */ #ifdef __cplusplus diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/event.c navit-0.5.0+dfsg.1/navit/event.c --- navit-0.5.0~svn5900+dfsg.1/navit/event.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/event.c 2016-01-02 22:29:50.000000000 +0000 @@ -29,12 +29,24 @@ static int has_quit; +#define require_method_helper(m)\ + if(!event_methods.m) {\ + dbg(lvl_error, "Can't find event system method %s. Event system is %s%s\n",\ + #m ,e_system?"set to ":"not set.", e_system?e_system:"");\ + +#define require_method(m)\ + require_method_helper(m)\ + return;\ + } + +#define require_method2(m,r)\ + require_method_helper(m)\ + return r;\ + } + void event_main_loop_run(void) { - if (! event_methods.main_loop_run) { - dbg(0,"no event system set\n"); - return; - } + require_method(main_loop_run); event_methods.main_loop_run(); } @@ -54,42 +66,49 @@ struct event_watch * event_add_watch(int fd, enum event_watch_cond cond, struct callback *cb) { + require_method2(add_watch, NULL); return event_methods.add_watch(fd, cond, cb); } void event_remove_watch(struct event_watch *ev) { + require_method(remove_watch); event_methods.remove_watch(ev); } struct event_timeout * event_add_timeout(int timeout, int multi, struct callback *cb) { + require_method2(add_timeout, NULL); return event_methods.add_timeout(timeout, multi, cb); } void event_remove_timeout(struct event_timeout *ev) { + require_method(remove_timeout); event_methods.remove_timeout(ev); } struct event_idle * event_add_idle(int priority, struct callback *cb) { + require_method2(add_idle, NULL); return event_methods.add_idle(priority,cb); } void event_remove_idle(struct event_idle *ev) { + require_method(remove_idle); event_methods.remove_idle(ev); } void event_call_callback(struct callback_list *cb) { + require_method(call_callback); event_methods.call_callback(cb); } @@ -105,14 +124,14 @@ void (*event_type_new)(struct event_methods *meth); if (e_system) { if (strcmp(e_system, system)) { - dbg(0,"system '%s' already requested by '%s', can't set to '%s' as requested from '%s'\n", e_system, e_requestor, system, requestor); + dbg(lvl_error,"system '%s' already requested by '%s', can't set to '%s' as requested from '%s'\n", e_system, e_requestor, system, requestor); return 0; } return 1; } event_type_new=plugin_get_event_type(system); if (! event_type_new) { - dbg(0,"unsupported event system '%s' requested from '%s'\n", system, requestor); + dbg(lvl_error,"unsupported event system '%s' requested from '%s'\n", system, requestor); return 0; } event_type_new(&event_methods); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/file.c navit-0.5.0+dfsg.1/navit/file.c --- navit-0.5.0~svn5900+dfsg.1/navit/file.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/file.c 2016-01-02 22:29:50.000000000 +0000 @@ -91,7 +91,7 @@ hints.ai_protocol = 0; s = getaddrinfo(host, service, &hints, &result); if (s != 0) { - dbg(0,"getaddrinfo error %s\n",gai_strerror(s)); + dbg(lvl_error,"getaddrinfo error %s\n",gai_strerror(s)); return -1; } for (rp = result; rp != NULL; rp = rp->ai_next) { @@ -112,7 +112,7 @@ { char *request=g_strdup_printf("%s %s HTTP/1.0\r\nUser-Agent: navit %s\r\nHost: %s\r\n%s%s%s\r\n",method,path,version,host,persistent?"Connection: Keep-Alive\r\n":"",header?header:"",header?"\r\n":""); write(file->fd, request, strlen(request)); - dbg(1,"%s\n",request); + dbg(lvl_debug,"%s\n",request); file->requests++; } @@ -149,7 +149,7 @@ host[path-name-7]='\0'; if (port) *port++='\0'; - dbg(1,"host=%s path=%s\n",host,path); + dbg(lvl_debug,"host=%s path=%s\n",host,path); if (connect) file->fd=file_socket_connect(host,port?port:"80"); file_http_request(file,method,host,path,header,persistent); @@ -223,11 +223,11 @@ g_free(file); return NULL; } - dbg(1,"fd=%d\n", file->fd); + dbg(lvl_debug,"fd=%d\n", file->fd); file->size=lseek(file->fd, 0, SEEK_END); if (file->size < 0) file->size=0; - dbg(1,"size="LONGLONG_FMT"\n", file->size); + dbg(lvl_debug,"size="LONGLONG_FMT"\n", file->size); file->name_id = (long)atom(name); } #ifdef CACHE_SIZE @@ -282,7 +282,7 @@ char *buffer=g_alloca(sizeof(char)*(strlen(name)+1)); int ret; char *next; - dbg(1,"enter %s %d\n",name,pflag); + dbg(lvl_debug,"enter %s %d\n",name,pflag); if (!pflag) { if (file_is_dir(name)) return 0; @@ -380,7 +380,7 @@ if (*sep == ' ') sep++; strtolower(tok, tok); - dbg(1,"header '%s'='%s'\n",tok,sep); + dbg(lvl_debug,"header '%s'='%s'\n",tok,sep); g_hash_table_insert(file->headers, tok, sep); headers=NULL; } @@ -424,10 +424,10 @@ eof=1; } if (file->requests) { - dbg(1,"checking header\n"); + dbg(lvl_debug,"checking header\n"); if ((hdr=file_http_header_end(file->buffer, file->buffer_len))) { hdr[-1]='\0'; - dbg(1,"found %s\n",file->buffer); + dbg(lvl_debug,"found %s\n",file->buffer); file_process_headers(file, file->buffer); file_shift_buffer(file, hdr-file->buffer); file->requests--; @@ -461,7 +461,7 @@ if (file->cache) { struct file_cache_id id={offset,size,file->name_id,0}; cache_flush(file_cache,&id); - dbg(1,"Flushing "LONGLONG_FMT" %d bytes\n",offset,size); + dbg(lvl_debug,"Flushing "LONGLONG_FMT" %d bytes\n",offset,size); } } @@ -545,7 +545,7 @@ ret=NULL; } else { if (uncompress_int(ret, &destLen, (Bytef *)buffer, size) != Z_OK) { - dbg(0,"uncompress failed\n"); + dbg(lvl_error,"uncompress failed\n"); g_free(ret); ret=NULL; } @@ -604,7 +604,7 @@ datap=buffer+sizeof(salt)+sizeof(verify); if (compressed) { if (uncompress_int(ret, &destLen, (Bytef *)datap, size) != Z_OK) { - dbg(0,"uncompress failed\n"); + dbg(lvl_error,"uncompress failed\n"); g_free(ret); ret=NULL; } @@ -612,7 +612,7 @@ if (size == destLen) memcpy(ret, buffer, destLen); else { - dbg(0,"memcpy failed\n"); + dbg(lvl_error,"memcpy failed\n"); g_free(ret); ret=NULL; } @@ -832,7 +832,7 @@ ret->pattern=g_strdup(pattern); ret->err=wordexp(pattern, &ret->we, 0); if (ret->err) - dbg(0,"wordexp('%s') returned %d\n", pattern, ret->err); + dbg(lvl_debug,"wordexp('%s') returned %d\n", pattern, ret->err); return ret; } @@ -886,7 +886,7 @@ file->mtime=st.st_mtime; file->ctime=st.st_ctime; file->version++; - dbg(1,"%s now version %d\n", file->name, file->version); + dbg(lvl_debug,"%s now version %d\n", file->name, file->version); } } return file->version; @@ -920,6 +920,6 @@ file_cache=cache_new(sizeof(struct file_cache_id), CACHE_SIZE); #endif if(sizeof(off_t)<8) - dbg(0,"Maps larger than 2GB are not supported by this binary, sizeof(off_t)=%zu\n",sizeof(off_t)); + dbg(lvl_error,"Maps larger than 2GB are not supported by this binary, sizeof(off_t)=%zu\n",sizeof(off_t)); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/font/freetype/font_freetype.c navit-0.5.0+dfsg.1/navit/font/freetype/font_freetype.c --- navit-0.5.0~svn5900+dfsg.1/navit/font/freetype/font_freetype.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/font/freetype/font_freetype.c 2016-01-02 22:29:50.000000000 +0000 @@ -53,6 +53,9 @@ #endif #endif +#define COLOR_BITDEPTH_OUTPUT 8 +#define COL_SHIFT (COLOR_BITDEPTH-COLOR_BITDEPTH_OUTPUT) + struct font_freetype_font { int size; #if USE_CACHING @@ -351,37 +354,27 @@ if (! face_id) return FT_Err_Invalid_Handle; fontfile=g_strdup((char *)face_id); - dbg(1,"fontfile=%s\n", fontfile); + dbg(lvl_debug,"fontfile=%s\n", fontfile); fontindex=strrchr(fontfile,'/'); if (! fontindex) { g_free(fontfile); return FT_Err_Invalid_Handle; } *fontindex++='\0'; - dbg(1,"new face %s %d\n", fontfile, atoi(fontindex)); + dbg(lvl_debug,"new face %s %d\n", fontfile, atoi(fontindex)); ret = FT_New_Face( library, fontfile, atoi(fontindex), aface ); if(ret) { - dbg(0,"Error while creating freetype face: %d\n", ret); + dbg(lvl_error,"Error while creating freetype face: %d\n", ret); return ret; } if((ret = FT_Select_Charmap(*aface, FT_ENCODING_UNICODE))) { - dbg(0,"Error while creating freetype face: %d\n", ret); + dbg(lvl_error,"Error while creating freetype face: %d\n", ret); } return 0; } #endif -/** - * Load a new font using the fontconfig library. - * First search for each of the font families and require and exact match on family - * If no font found, let fontconfig pick the best match - * @param graphics_priv FIXME - * @param graphics_font_methods FIXME - * @param fontfamily the preferred font family - * @param size requested size of fonts - * @param flags extra flags for the font (bold,etc) - * @returns <> -*/ +/** Implementation of font_freetype_methods.font_new */ static struct font_freetype_font * font_freetype_font_new(struct graphics_priv *gr, struct graphics_font_methods *meth, @@ -412,7 +405,7 @@ } font->size=size; #ifdef HAVE_FONTCONFIG - dbg(2, " about to search for fonts, preferred = %s\n", fontfamily); + dbg(lvl_info, " about to search for fonts, preferred = %s\n", fontfamily); family = g_malloc(sizeof(fontfamilies) + sizeof(fontfamily)); if (fontfamily) { memcpy(family, &fontfamily, sizeof(fontfamily)); @@ -426,7 +419,7 @@ while (*family && !found) { - dbg(2, "Looking for font family %s. exact=%d\n", + dbg(lvl_info, "Looking for font family %s. exact=%d\n", *family, exact); FcPattern *required = FcPatternBuild(NULL, FC_FAMILY, FcTypeString, @@ -456,7 +449,7 @@ if ((r1 == FcResultMatch) && (r2 == FcResultMatch) && (FcValueEqual(v1, v2) || !exact)) { - dbg(2, + dbg(lvl_info, "About to load font from file %s index %d\n", fontfile, fontindex); #if USE_CACHING @@ -528,7 +521,7 @@ g_free(name); #endif /* HAVE_FONTCONFIG */ if (!found) { - dbg(0,"Failed to load font, no labelling\n"); + dbg(lvl_error,"Failed to load font, no labelling\n"); g_free(font); return NULL; } @@ -539,36 +532,22 @@ return font; } +/** Implementation of font_freetype_methods.get_shadow. */ static int font_freetype_glyph_get_shadow(struct font_freetype_glyph *g, - unsigned char *data, int depth, int stride, struct color *foreground, struct color *background) + unsigned char *data, int stride, struct color *foreground, struct color *background) { - int mask0, mask1, mask2, x, y, w = g->w, h = g->h; + int x, y, w = g->w, h = g->h; unsigned int bg, fg; unsigned char *pm, *psp,*ps,*psn; - switch (depth) { - case 1: - fg=0xff; - bg=0x00; - break; - case 8: - fg=foreground->a>>8; - bg=background->a>>8; - break; - case 24: - case 32: - fg=((foreground->a>>8)<<24)| - ((foreground->r>>8)<<16)| - ((foreground->g>>8)<<8)| - ((foreground->b>>8)<<0); - bg=((background->a>>8)<<24)| - ((background->r>>8)<<16)| - ((background->g>>8)<<8)| - ((background->b>>8)<<0); - break; - default: - return 0; - } + fg=((foreground->a>>COL_SHIFT)<<24)| + ((foreground->r>>COL_SHIFT)<<16)| + ((foreground->g>>COL_SHIFT)<<8)| + ((foreground->b>>COL_SHIFT)<<0); + bg=((background->a>>COL_SHIFT)<<24)| + ((background->r>>COL_SHIFT)<<16)| + ((background->g>>COL_SHIFT)<<8)| + ((background->b>>COL_SHIFT)<<0); for (y = 0; y < h+2; y++) { if (stride) { ps = data + stride * y; @@ -576,25 +555,8 @@ unsigned char **dataptr=(unsigned char **)data; ps = dataptr[y]; } - switch (depth) { - case 1: - memset(ps, bg, (w+9)/2); - break; - case 8: - memset(ps, bg, w+2); - break; - case 24: - for (x = 0 ; x < w+2 ; x++) { - ps[x*3]=bg>>16; - ps[x*3+1]=bg>>8; - ps[x*3+2]=bg; - } - break; - case 32: - for (x = 0 ; x < w+2 ; x++) - ((unsigned int *)ps)[x]=bg; - break; - } + for (x = 0 ; x < w+2 ; x++) + ((unsigned int *)ps)[x]=bg; } for (y = 0; y < h; y++) { pm = g->pixmap + y * w; @@ -608,120 +570,35 @@ ps = dataptr[y+1]; psn = dataptr[y+2]; } - switch (depth) { - case 1: - mask0 = 0x4000; - mask1 = 0xe000; - mask2 = 0x4000; - for (x = 0; x < w; x++) { - if (*pm) { - psp[0] |= (mask0 >> 8); - if (mask0 & 0xff) - psp[1] |= mask0; - ps[0] |= (mask1 >> 8); - if (mask1 & 0xff) - ps[1] |= mask1; - psn[0] |= (mask2 >> 8); - if (mask2 & 0xff) - psn[1] |= mask2; - } - mask0 >>= 1; - mask1 >>= 1; - mask2 >>= 1; - if (! - ((mask0 >> 8) | (mask1 >> 8) | - (mask2 >> 8))) { - mask0 <<= 8; - mask1 <<= 8; - mask2 <<= 8; - psp++; - ps++; - psn++; - } - pm++; + for (x = 0; x < w; x++) { + if (*pm) { + ((unsigned int *)psp)[1]=fg; + ((unsigned int *)ps)[0]=fg; + ((unsigned int *)ps)[1]=fg; + ((unsigned int *)ps)[2]=fg; + ((unsigned int *)psn)[1]=fg; } - break; - case 8: - for (x = 0; x < w; x++) { - if (*pm) { - psp[1] = fg; - ps[0] = fg; - ps[1] = fg; - ps[2] = fg; - psn[1] = fg; - } - psp++; - ps++; - psn++; - pm++; - } - break; - case 24: - for (x = 0; x < w; x++) { - if (*pm) { - psp[3]=fg>>16; - psp[4]=fg>>8; - psp[5]=fg; - ps[0]=fg>>16; - ps[1]=fg>>8; - ps[2]=fg; - ps[3]=fg>>16; - ps[4]=fg>>8; - ps[5]=fg; - ps[6]=fg>>16; - ps[7]=fg>>8; - ps[8]=fg; - psn[3]=fg>>16; - psn[4]=fg>>8; - psn[5]=fg; - } - psp+=3; - ps+=3; - psn+=3; - pm++; - } - break; - case 32: - for (x = 0; x < w; x++) { - if (*pm) { - ((unsigned int *)psp)[1]=fg; - ((unsigned int *)ps)[0]=fg; - ((unsigned int *)ps)[1]=fg; - ((unsigned int *)ps)[2]=fg; - ((unsigned int *)psn)[1]=fg; - } - psp+=4; - ps+=4; - psn+=4; - pm++; - } - break; + psp+=4; + ps+=4; + psn+=4; + pm++; } } return 1; } +/** Implementation of font_freetype_methods.get_glyph. */ static int font_freetype_glyph_get_glyph(struct font_freetype_glyph *g, - unsigned char *data, int depth, int stride, struct color *fg, struct color *bg, struct color *transparent) + unsigned char *data, int stride, struct color *fg, struct color *bg, struct color *transparent) { int x, y, w = g->w, h = g->h; unsigned int tr; unsigned char v,vi,*pm, *ps; - switch (depth) { - case 8: - tr=transparent->a>>8; - break; - case 24: - case 32: - tr=((transparent->a>>8)<<24)| - ((transparent->r>>8)<<16)| - ((transparent->g>>8)<<8)| - ((transparent->b>>8)<<0); - break; - default: - return 0; - } + tr=((transparent->a>>COL_SHIFT)<<24)| + ((transparent->r>>COL_SHIFT)<<16)| + ((transparent->g>>COL_SHIFT)<<8)| + ((transparent->b>>COL_SHIFT)<<0); for (y = 0; y < h; y++) { pm = g->pixmap + y * w; if (stride) { @@ -730,51 +607,19 @@ unsigned char **dataptr=(unsigned char **)data; ps = dataptr[y]; } - switch (depth) { - case 8: - for (x = 0; x < w; x++) { - v=*pm; - if (v) - *ps=fg->a; - else - *ps=tr; - ps++; - pm++; - } - break; - case 24: - for (x = 0; x < w; x++) { - v=*pm; - if (v) { - vi=255-v; - ps[0]=(((fg->r*v+bg->r*vi)/255)>>8); - ps[1]=(((fg->g*v+bg->g*vi)/255)>>8); - ps[2]=(((fg->b*v+bg->b*vi)/255)>>8); - } else { - ps[0]=tr >> 16; - ps[1]=tr >> 8; - ps[2]=tr; - } - ps+=3; - pm++; - } - break; - case 32: - for (x = 0; x < w; x++) { - v=*pm; - if (v) { - vi=255-v; - ((unsigned int *)ps)[0]= - ((((fg->a*v+bg->a*vi)/255)>>8)<<24)| - ((((fg->r*v+bg->r*vi)/255)>>8)<<16)| - ((((fg->g*v+bg->g*vi)/255)>>8)<<8)| - ((((fg->b*v+bg->b*vi)/255)>>8)<<0); - } else - ((unsigned int *)ps)[0]=tr; - ps+=4; - pm++; - } - break; + for (x = 0; x < w; x++) { + v=*pm; + if (v) { + vi=255-v; + ((unsigned int *)ps)[0]= + ((((fg->a*v+bg->a*vi)/255)>>COL_SHIFT)<<24)| + ((((fg->r*v+bg->r*vi)/255)>>COL_SHIFT)<<16)| + ((((fg->g*v+bg->g*vi)/255)>>COL_SHIFT)<<8)| + ((((fg->b*v+bg->b*vi)/255)>>COL_SHIFT)<<0); + } else + ((unsigned int *)ps)[0]=tr; + ps+=4; + pm++; } } return 1; @@ -782,14 +627,13 @@ static void font_freetype_destroy(void) { + // Do not call FcFini here: GdkPixbuf also (indirectly) uses fontconfig (for SVGs with + // text), but does not properly deallocate all objects, so FcFini assert()s. if (!library_deinit) { -#ifdef HAVE_FONTCONFIG - FcFini(); -#endif #if USE_CACHING - FTC_Manager_Done(manager); + FTC_Manager_Done(manager); #endif - FT_Done_FreeType(library); + FT_Done_FreeType(library); } library_deinit = 1; } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/font/freetype/font_freetype.h navit-0.5.0+dfsg.1/navit/font/freetype/font_freetype.h --- navit-0.5.0~svn5900+dfsg.1/navit/font/freetype/font_freetype.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/font/freetype/font_freetype.h 2016-01-02 22:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -/** +/* * Navit, a modular navigation system. * Copyright (C) 2005-2011 Navit Team * @@ -16,11 +16,37 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ + +/** @file + * @brief Interface to the FreeType 2 library, to render text as bitmaps. + * + * This plugin supplies functions to render text (encoded as UTF-8) to bitmaps with the help of + * FreeType 2. Typical usage: + * @li create a struct font_freetype_font by calling font_freetype_methods.font_new() + * @li for the text to render, create a struct font_freetype_text by calling font_freetype_methods.text_new() + * @li obtain glyph bitmaps by calling font_freetype_methods.get_glyph() on the glyphs inside + * struct font_freetype_text + * @li optionally, obtain a "shadow" of the glyph from font_freetype_methods.get_shadow(), to make + * the text easier to read against a colored background (like the map) + */ struct font_freetype_font; struct font_freetype_glyph; +/** Methods provided by this plugin. */ struct font_freetype_methods { void (*destroy)(void); + /** + * @brief Load a font, preferring one with the given font family. + * + * Try to load a font, trying to match either the given font family, or one from a list + * of hardcoded families, or let fontconfig pick the best match. + * @param graphics_priv unused + * @param graphics_font_methods used to return font methods + * @param fontfamily the preferred font family + * @param size requested size of font + * @param flags extra flags for the font (bold,etc) + * @returns loaded font, or NULL + */ struct font_freetype_font *(*font_new) (struct graphics_priv * gr, struct graphics_font_methods * @@ -34,10 +60,40 @@ struct font_freetype_font * font, int dx, int dy); void (*text_destroy) (struct font_freetype_text * text); + /** + * @brief Get glyph "shadow", a glyph bitmap to be used as background. + * + * This method returns a glyph shadow, a bitmap with the glyph, where the glyph has been + * "fattened" by expanding it by one pixel on each side. + * In Navit, the shadow is used as the background behind the glyph bitmaps (returned by + * font_freetype_methods.get_glyph() ), to make the text easier to read. + * + * @param g glyph to render, usually created via font_freetype_methods.text_new() + * @param data buffer for result image bitmap. Size must be at least (4 * stride * (g->h+2)). + * @param stride see font_freetype_methods.get_glyph(). Minimum: g->w+2. + * @param foreground color for rendering the "shadow" + * @param background color for rest of the bitmap (typically set to transparent) + * @returns 0 if depth is invalid, 1 otherwise + */ int (*get_shadow) (struct font_freetype_glyph * glyph, - unsigned char *data, int depth, int stride, struct color *fg, struct color *tr); + unsigned char *data, int stride, struct color *fg, struct color *tr); + /** + * @brief Get a glyph bitmap. + * + * This method returns a bitmap for rendering the supplied glyph. + * + * @param g glyph to render, usually obtained from a struct font_freetype_text created via font_freetype_methods.text_new() + * @param data buffer for result image bitmap. Size must be at least (4 * stride * g->h). + * @param stride stride (bytes per data row) for result bitmap; must be at least g->w, but may include padding. + * Special case: + * If set to 0, 'data' is interpreted as an array of pointers to image data rows (i.e. unsigned char**). + * @param fg color for rendering the glyph + * @param bg color to alpha blend with fg for semi-transparent glyph pixels + * @param transparent color for background pixels + * @returns 0 if depth is invalid, 1 otherwise + */ int (*get_glyph) (struct font_freetype_glyph * glyph, - unsigned char *data, int depth, int stride, + unsigned char *data, int stride, struct color * fg, struct color * bg, struct color *tr); }; @@ -47,10 +103,6 @@ }; struct font_freetype_text { - int x1, y1; - int x2, y2; - int x3, y3; - int x4, y4; int glyph_count; struct font_freetype_glyph *glyph[0]; }; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/fonts/CMakeLists.txt navit-0.5.0+dfsg.1/navit/fonts/CMakeLists.txt --- navit-0.5.0~svn5900+dfsg.1/navit/fonts/CMakeLists.txt 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/fonts/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -add_custom_target( fonts ALL DEPENDS ${NAVIT_FONTS} - COMMAND ${CMAKE_COMMAND} - -D GLOB_EXP="${CMAKE_CURRENT_SOURCE_DIR}/*.ttf" #${NAVIT_FONTS}" - -D DST=${CMAKE_CURRENT_BINARY_DIR} - -P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake -) - -FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.ttf") -install( - FILES ${files} - DESTINATION ${SHARE_DIR}/fonts - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE -) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/android/graphics_android.c navit-0.5.0+dfsg.1/navit/graphics/android/graphics_android.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/android/graphics_android.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/android/graphics_android.c 2016-01-02 22:29:50.000000000 +0000 @@ -30,12 +30,16 @@ #include "debug.h" #include "callback.h" #include "android.h" +#include "command.h" int dummy; struct graphics_priv { jclass NavitGraphicsClass; - jmethodID NavitGraphics_draw_polyline, NavitGraphics_draw_polygon, NavitGraphics_draw_rectangle, NavitGraphics_draw_circle, NavitGraphics_draw_text, NavitGraphics_draw_image, NavitGraphics_draw_mode, NavitGraphics_draw_drag, NavitGraphics_overlay_disable, NavitGraphics_overlay_resize, NavitGraphics_SetCamera; + jmethodID NavitGraphics_draw_polyline, NavitGraphics_draw_polygon, NavitGraphics_draw_rectangle, + NavitGraphics_draw_circle, NavitGraphics_draw_text, NavitGraphics_draw_image, + NavitGraphics_draw_image_warp, NavitGraphics_draw_mode, NavitGraphics_draw_drag, + NavitGraphics_overlay_disable, NavitGraphics_overlay_resize, NavitGraphics_SetCamera; jclass PaintClass; jmethodID Paint_init,Paint_setStrokeWidth,Paint_setARGB; @@ -47,7 +51,7 @@ jmethodID BitmapFactory_decodeFile, BitmapFactory_decodeResource; jclass BitmapClass; - jmethodID Bitmap_getHeight, Bitmap_getWidth; + jmethodID Bitmap_getHeight, Bitmap_getWidth, Bitmap_createScaledBitmap; jclass ContextClass; jmethodID Context_getResources; @@ -89,7 +93,7 @@ { *ret=(*jnienv)->FindClass(jnienv, name); if (! *ret) { - dbg(0,"Failed to get Class %s\n",name); + dbg(lvl_error,"Failed to get Class %s\n",name); return 0; } *ret = (*jnienv)->NewGlobalRef(jnienv, *ret); @@ -101,7 +105,7 @@ { *ret = (*jnienv)->GetMethodID(jnienv, class, name, args); if (*ret == NULL) { - dbg(0,"Failed to get Method %s with signature %s\n",name,args); + dbg(lvl_error,"Failed to get Method %s with signature %s\n",name,args); return 0; } return 1; @@ -112,7 +116,7 @@ { *ret = (*jnienv)->GetStaticMethodID(jnienv, class, name, args); if (*ret == NULL) { - dbg(0,"Failed to get static Method %s with signature %s\n",name,args); + dbg(lvl_error,"Failed to get static Method %s with signature %s\n",name,args); return 0; } return 1; @@ -215,49 +219,57 @@ { struct graphics_image_priv* ret = NULL; - if ( !g_hash_table_lookup_extended( image_cache_hash, path, NULL, (gpointer)&ret) ) - { - ret=g_new0(struct graphics_image_priv, 1); - jstring string; - jclass localBitmap = NULL; - int id; - - dbg(1,"enter %s\n",path); - if (!strncmp(path,"res/drawable/",13)) { - jstring a=(*jnienv)->NewStringUTF(jnienv, "drawable"); - char *path_noext=g_strdup(path+13); - char *pos=strrchr(path_noext, '.'); - if (pos) - *pos='\0'; - dbg(1,"path_noext=%s\n",path_noext); - string = (*jnienv)->NewStringUTF(jnienv, path_noext); - g_free(path_noext); - id=(*jnienv)->CallIntMethod(jnienv, gra->Resources, gra->Resources_getIdentifier, string, a, gra->packageName); - dbg(1,"id=%d\n",id); - if (id) - localBitmap=(*jnienv)->CallStaticObjectMethod(jnienv, gra->BitmapFactoryClass, gra->BitmapFactory_decodeResource, gra->Resources, id); - (*jnienv)->DeleteLocalRef(jnienv, a); - } else { - string = (*jnienv)->NewStringUTF(jnienv, path); - localBitmap=(*jnienv)->CallStaticObjectMethod(jnienv, gra->BitmapFactoryClass, gra->BitmapFactory_decodeFile, string); - } - dbg(1,"result=%p\n",localBitmap); - if (localBitmap) { - ret->Bitmap = (*jnienv)->NewGlobalRef(jnienv, localBitmap); - (*jnienv)->DeleteLocalRef(jnienv, localBitmap); - ret->width=(*jnienv)->CallIntMethod(jnienv, ret->Bitmap, gra->Bitmap_getWidth); - ret->height=(*jnienv)->CallIntMethod(jnienv, ret->Bitmap, gra->Bitmap_getHeight); - dbg(1,"w=%d h=%d for %s\n",ret->width,ret->height,path); - ret->hot.x=ret->width/2; - ret->hot.y=ret->height/2; - } else { - g_free(ret); - ret=NULL; - dbg(1,"Failed to open %s\n",path); + ret=g_new0(struct graphics_image_priv, 1); + jstring string; + jclass localBitmap = NULL; + int id; + + dbg(lvl_debug,"enter %s\n",path); + if (!strncmp(path,"res/drawable/",13)) { + jstring a=(*jnienv)->NewStringUTF(jnienv, "drawable"); + char *path_noext=g_strdup(path+13); + char *pos=strrchr(path_noext, '.'); + if (pos) + *pos='\0'; + dbg(lvl_debug,"path_noext=%s\n",path_noext); + string = (*jnienv)->NewStringUTF(jnienv, path_noext); + g_free(path_noext); + id=(*jnienv)->CallIntMethod(jnienv, gra->Resources, gra->Resources_getIdentifier, string, a, gra->packageName); + dbg(lvl_debug,"id=%d\n",id); + if (id) + localBitmap=(*jnienv)->CallStaticObjectMethod(jnienv, gra->BitmapFactoryClass, gra->BitmapFactory_decodeResource, gra->Resources, id); + (*jnienv)->DeleteLocalRef(jnienv, a); + } else { + string = (*jnienv)->NewStringUTF(jnienv, path); + localBitmap=(*jnienv)->CallStaticObjectMethod(jnienv, gra->BitmapFactoryClass, gra->BitmapFactory_decodeFile, string); + } + if (localBitmap) { + ret->width=(*jnienv)->CallIntMethod(jnienv, localBitmap, gra->Bitmap_getWidth); + ret->height=(*jnienv)->CallIntMethod(jnienv, localBitmap, gra->Bitmap_getHeight); + if((*w!=-1 && *w!=ret->width) || (*h!=-1 && *w!=ret->height)) { + jclass scaledBitmap=(*jnienv)->CallStaticObjectMethod(jnienv, gra->BitmapClass, + gra->Bitmap_createScaledBitmap, localBitmap, (*w==-1)?ret->width:*w, (*h==-1)?ret->height:*h, JNI_TRUE); + if(!scaledBitmap) { + dbg(lvl_error,"Bitmap scaling to %dx%d failed for %s",*w,*h,path); + } else { + (*jnienv)->DeleteLocalRef(jnienv, localBitmap); + localBitmap=scaledBitmap; + ret->width=(*jnienv)->CallIntMethod(jnienv, localBitmap, gra->Bitmap_getWidth); + ret->height=(*jnienv)->CallIntMethod(jnienv, localBitmap, gra->Bitmap_getHeight); + } } - (*jnienv)->DeleteLocalRef(jnienv, string); - g_hash_table_insert(image_cache_hash, g_strdup( path ), (gpointer)ret ); + ret->Bitmap = (*jnienv)->NewGlobalRef(jnienv, localBitmap); + (*jnienv)->DeleteLocalRef(jnienv, localBitmap); + + dbg(lvl_debug,"w=%d h=%d for %s\n",ret->width,ret->height,path); + ret->hot.x=ret->width/2; + ret->hot.y=ret->height/2; + } else { + g_free(ret); + ret=NULL; + dbg(lvl_warning,"Failed to open %s\n",path); } + (*jnienv)->DeleteLocalRef(jnienv, string); if (ret) { *w=ret->width; *h=ret->height; @@ -346,7 +358,7 @@ draw_text(struct graphics_priv *gra, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, struct graphics_font_priv *font, char *text, struct point *p, int dx, int dy) { int bgcolor=0; - dbg(1,"enter %s\n", text); + dbg(lvl_debug,"enter %s\n", text); initPaint(gra, fg); if(bg) bgcolor=(bg->a<<24)| (bg->r<<16) | (bg->g<<8) | bg->b; @@ -358,17 +370,34 @@ static void draw_image(struct graphics_priv *gra, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img) { - dbg(1,"enter %p\n",img); + dbg(lvl_debug,"enter %p\n",img); initPaint(gra, fg); (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_image, fg->gra->Paint, p->x, p->y, img->Bitmap); } static void -draw_restore(struct graphics_priv *gr, struct point *p, int w, int h) +draw_image_warp (struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, int count, struct graphics_image_priv *img) { + + /* + * + * + * if coord count==3 then top.left top.right bottom.left + * + */ + + if (count==3) + { + initPaint(gr, fg); + (*jnienv)->CallVoidMethod(jnienv, gr->NavitGraphics, gr->NavitGraphics_draw_image_warp, fg->gra->Paint, + count, p[0].x, p[0].y,p[1].x, p[1].y, p[2].x, p[2].y, img->Bitmap); + } else + dbg(lvl_debug,"draw_image_warp is called with unsupported count parameter value %d\n", count); } + + static void draw_drag(struct graphics_priv *gra, struct point *p) { (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_drag, p ? p->x : 0, p ? p->y : 0); @@ -385,7 +414,7 @@ (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_mode, (int)mode); } -static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int alpha, int wraparound); +static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound); static void * get_data(struct graphics_priv *this, const char *type) @@ -422,9 +451,9 @@ (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_overlay_disable, disable); } -static void overlay_resize(struct graphics_priv *gra, struct point *pnt, int w, int h, int alpha, int wraparound) +static void overlay_resize(struct graphics_priv *gra, struct point *pnt, int w, int h, int wraparound) { - (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_overlay_resize, pnt ? pnt->x:0 , pnt ? pnt->y:0, w, h, alpha, wraparound); + (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_overlay_resize, pnt ? pnt->x:0 , pnt ? pnt->y:0, w, h, wraparound); } static int @@ -448,8 +477,7 @@ draw_circle, draw_text, draw_image, - NULL, - draw_restore, + draw_image_warp, draw_drag, font_new, gc_new, @@ -467,7 +495,7 @@ static void resize_callback(struct graphics_priv *gra, int w, int h) { - dbg(0,"w=%d h=%d ok\n",w,h); + dbg(lvl_debug,"w=%d h=%d ok\n",w,h); callback_list_call_attr_2(gra->cbl, attr_resize, (void *)w, (void *)h); } @@ -483,7 +511,7 @@ static void keypress_callback(struct graphics_priv *gra, char *s) { - dbg(0,"enter %s\n",s); + dbg(lvl_debug,"enter %s\n",s); callback_list_call_attr_1(gra->cbl, attr_keypress, s); } @@ -504,30 +532,30 @@ jmethodID cid; ActivityClass = (*jnienv)->GetObjectClass(jnienv, android_activity); - dbg(0,"at 5\n"); + dbg(lvl_debug,"at 5\n"); if (ActivityClass == NULL) { - dbg(0,"no activity class found\n"); + dbg(lvl_debug,"no activity class found\n"); return 0; } - dbg(0,"at 6\n"); + dbg(lvl_debug,"at 6\n"); cid = (*jnienv)->GetMethodID(jnienv, ActivityClass, "setContentView", "(Landroid/view/View;)V"); if (cid == NULL) { - dbg(0,"no setContentView method found\n"); + dbg(lvl_error,"no setContentView method found\n"); return 0; } - dbg(0,"at 7\n"); + dbg(lvl_debug,"at 7\n"); (*jnienv)->CallVoidMethod(jnienv, android_activity, cid, graphics); - dbg(0,"at 8\n"); + dbg(lvl_debug,"at 8\n"); return 1; } static int -graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, struct point *pnt, int w, int h, int alpha, int wraparound, int use_camera) +graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, struct point *pnt, int w, int h, int wraparound, int use_camera) { struct callback *cb; jmethodID cid, Context_getPackageName; - dbg(0,"at 2 jnienv=%p\n",jnienv); + dbg(lvl_debug,"at 2 jnienv=%p\n",jnienv); if (!find_class_global("android/graphics/Paint", &ret->PaintClass)) return 0; if (!find_method(ret->PaintClass, "", "(I)V", &ret->Paint_init)) @@ -550,6 +578,8 @@ return 0; if (!find_method(ret->BitmapClass, "getWidth", "()I", &ret->Bitmap_getWidth)) return 0; + if (!find_static_method(ret->BitmapClass, "createScaledBitmap", "(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;", &ret->Bitmap_createScaledBitmap)) + return 0; if (!find_class_global("android/content/Context", &ret->ContextClass)) return 0; @@ -572,15 +602,15 @@ if (!find_class_global("org/navitproject/navit/NavitGraphics", &ret->NavitGraphicsClass)) return 0; - dbg(0,"at 3\n"); - cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "", "(Landroid/app/Activity;Lorg/navitproject/navit/NavitGraphics;IIIIIII)V"); + dbg(lvl_debug,"at 3\n"); + cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "", "(Landroid/app/Activity;Lorg/navitproject/navit/NavitGraphics;IIIIII)V"); if (cid == NULL) { - dbg(0,"no method found\n"); + dbg(lvl_error,"no method found\n"); return 0; /* exception thrown */ } - dbg(0,"at 4 android_activity=%p\n",android_activity); - ret->NavitGraphics=(*jnienv)->NewObject(jnienv, ret->NavitGraphicsClass, cid, android_activity, parent ? parent->NavitGraphics : NULL, pnt ? pnt->x:0 , pnt ? pnt->y:0, w, h, alpha, wraparound, use_camera); - dbg(0,"result=%p\n",ret->NavitGraphics); + dbg(lvl_debug,"at 4 android_activity=%p\n",android_activity); + ret->NavitGraphics=(*jnienv)->NewObject(jnienv, ret->NavitGraphicsClass, cid, android_activity, parent ? parent->NavitGraphics : NULL, pnt ? pnt->x:0 , pnt ? pnt->y:0, w, h, wraparound, use_camera); + dbg(lvl_debug,"result=%p\n",ret->NavitGraphics); if (ret->NavitGraphics) ret->NavitGraphics = (*jnienv)->NewGlobalRef(jnienv, ret->NavitGraphics); @@ -589,13 +619,13 @@ /* 0x101 = text kerning (default), antialiasing */ ret->Paint=(*jnienv)->NewObject(jnienv, ret->PaintClass, ret->Paint_init, 0x101); - dbg(0,"result=%p\n",ret->Paint); + dbg(lvl_debug,"result=%p\n",ret->Paint); if (ret->Paint) ret->Paint = (*jnienv)->NewGlobalRef(jnienv, ret->Paint); cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setSizeChangedCallback", "(I)V"); if (cid == NULL) { - dbg(0,"no SetResizeCallback method found\n"); + dbg(lvl_error,"no SetResizeCallback method found\n"); return 0; /* exception thrown */ } cb=callback_new_1(callback_cast(resize_callback), ret); @@ -603,7 +633,7 @@ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setButtonCallback", "(I)V"); if (cid == NULL) { - dbg(0,"no SetButtonCallback method found\n"); + dbg(lvl_error,"no SetButtonCallback method found\n"); return 0; /* exception thrown */ } cb=callback_new_1(callback_cast(button_callback), ret); @@ -611,7 +641,7 @@ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setMotionCallback", "(I)V"); if (cid == NULL) { - dbg(0,"no SetMotionCallback method found\n"); + dbg(lvl_error,"no SetMotionCallback method found\n"); return 0; /* exception thrown */ } cb=callback_new_1(callback_cast(motion_callback), ret); @@ -619,7 +649,7 @@ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setKeypressCallback", "(I)V"); if (cid == NULL) { - dbg(0,"no SetKeypressCallback method found\n"); + dbg(lvl_error,"no SetKeypressCallback method found\n"); return 0; /* exception thrown */ } cb=callback_new_1(callback_cast(keypress_callback), ret); @@ -637,13 +667,15 @@ return 0; if (!find_method(ret->NavitGraphicsClass, "draw_image", "(Landroid/graphics/Paint;IILandroid/graphics/Bitmap;)V", &ret->NavitGraphics_draw_image)) return 0; + if (!find_method(ret->NavitGraphicsClass, "draw_image_warp", "(Landroid/graphics/Paint;IIIIIIILandroid/graphics/Bitmap;)V", &ret->NavitGraphics_draw_image_warp)) + return 0; if (!find_method(ret->NavitGraphicsClass, "draw_mode", "(I)V", &ret->NavitGraphics_draw_mode)) return 0; if (!find_method(ret->NavitGraphicsClass, "draw_drag", "(II)V", &ret->NavitGraphics_draw_drag)) return 0; if (!find_method(ret->NavitGraphicsClass, "overlay_disable", "(I)V", &ret->NavitGraphics_overlay_disable)) return 0; - if (!find_method(ret->NavitGraphicsClass, "overlay_resize", "(IIIIII)V", &ret->NavitGraphics_overlay_resize)) + if (!find_method(ret->NavitGraphicsClass, "overlay_resize", "(IIIII)V", &ret->NavitGraphics_overlay_resize)) return 0; if (!find_method(ret->NavitGraphicsClass, "SetCamera", "(I)V", &ret->NavitGraphics_SetCamera)) return 0; @@ -654,7 +686,7 @@ } static jclass NavitClass; -static jmethodID Navit_disableSuspend, Navit_exit, Navit_fullscreen; +static jmethodID Navit_disableSuspend, Navit_exit, Navit_fullscreen, Navit_runOptionsItem; static int graphics_android_fullscreen(struct window *win, int on) @@ -666,10 +698,30 @@ static void graphics_android_disable_suspend(struct window *win) { - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_disableSuspend); } +static void +graphics_android_cmd_runMenuItem(struct graphics_priv *this, char *function, struct attr **in, struct attr ***out, int *valid) +{ + int ncmd=0; + dbg(0,"Running %s\n",function); + if(!strcmp(function,"map_download_dialog")) { + ncmd=3; + } else if(!strcmp(function,"backup_restore_dialog")) { + ncmd=7; + } else if(!strcmp(function,"set_map_location")) { + ncmd=10; + } + (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_runOptionsItem, ncmd); +} + +static struct command_table commands[] = { + {"map_download_dialog",command_cast(graphics_android_cmd_runMenuItem)}, + {"set_map_location",command_cast(graphics_android_cmd_runMenuItem)}, + {"backup_restore_dialog",command_cast(graphics_android_cmd_runMenuItem)}, +}; static struct graphics_priv * graphics_android_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl) @@ -689,9 +741,12 @@ if ((attr=attr_search(attrs, NULL, attr_use_camera))) { use_camera=attr->u.num; } + if ((attr=attr_search(attrs, NULL, attr_callback_list))) { + command_add_table(attr->u.callback_list, commands, sizeof(commands)/sizeof(struct command_table), ret); + } image_cache_hash = g_hash_table_new(g_str_hash, g_str_equal); - if (graphics_android_init(ret, NULL, NULL, 0, 0, 0, 0, use_camera)) { - dbg(0,"returning %p\n",ret); + if (graphics_android_init(ret, NULL, NULL, 0, 0, 0, use_camera)) { + dbg(lvl_debug,"returning %p\n",ret); return ret; } else { g_free(ret); @@ -700,12 +755,12 @@ } static struct graphics_priv * -overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int alpha, int wraparound) +overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound) { struct graphics_priv *ret=g_new0(struct graphics_priv, 1); *meth=graphics_methods; - if (graphics_android_init(ret, gr, p, w, h, alpha, wraparound, 0)) { - dbg(0,"returning %p\n",ret); + if (graphics_android_init(ret, gr, p, w, h, wraparound, 0)) { + dbg(lvl_debug,"returning %p\n",ret); return ret; } else { g_free(ret); @@ -717,12 +772,12 @@ static void event_android_main_loop_run(void) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static void event_android_main_loop_quit(void) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_exit); } @@ -744,7 +799,7 @@ { struct pollfd pfd; pfd.fd=fd; - dbg(1,"%p poll called for %d %d\n", fd, cond); + dbg(lvl_debug,"%p poll called for %d %d\n", fd, cond); switch ((enum event_watch_cond)cond) { case event_watch_cond_read: pfd.events=POLLIN; @@ -767,7 +822,7 @@ { jobject ret; ret=(*jnienv)->NewObject(jnienv, NavitWatchClass, NavitWatch_init, (int)do_poll, h, (int) cond, (int)cb); - dbg(0,"result for %d,%d,%p=%p\n",h,cond,cb,ret); + dbg(lvl_debug,"result for %d,%d,%p=%p\n",h,cond,cb,ret); if (ret) ret = (*jnienv)->NewGlobalRef(jnienv, ret); return (struct event_watch *)ret; @@ -776,7 +831,7 @@ static void event_android_remove_watch(struct event_watch *ev) { - dbg(0,"enter %p\n",ev); + dbg(lvl_debug,"enter %p\n",ev); if (ev) { jobject obj=(jobject )ev; (*jnienv)->CallVoidMethod(jnienv, obj, NavitWatch_remove); @@ -828,9 +883,9 @@ { #if 0 jobject ret; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); ret=(*jnienv)->NewObject(jnienv, NavitIdleClass, NavitIdle_init, (int)cb); - dbg(1,"result for %p=%p\n",cb,ret); + dbg(lvl_debug,"result for %p=%p\n",cb,ret); if (ret) ret = (*jnienv)->NewGlobalRef(jnienv, ret); return (struct event_idle *)ret; @@ -842,7 +897,7 @@ event_android_remove_idle(struct event_idle *ev) { #if 0 - dbg(1,"enter %p\n",ev); + dbg(lvl_debug,"enter %p\n",ev); if (ev) { jobject obj=(jobject )ev; (*jnienv)->CallVoidMethod(jnienv, obj, NavitIdle_remove); @@ -855,7 +910,7 @@ static void event_android_call_callback(struct callback_list *cb) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static struct event_methods event_android_methods = { @@ -873,7 +928,7 @@ static struct event_priv * event_android_new(struct event_methods *meth) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); if (!find_class_global("org/navitproject/navit/NavitTimeout", &NavitTimeoutClass)) return NULL; NavitTimeout_init = (*jnienv)->GetMethodID(jnienv, NavitTimeoutClass, "", "(IZI)V"); @@ -913,7 +968,11 @@ Navit_fullscreen = (*jnienv)->GetMethodID(jnienv, NavitClass, "fullscreen", "(I)V"); if (Navit_fullscreen == NULL) return NULL; - dbg(0,"ok\n"); + Navit_runOptionsItem = (*jnienv)->GetMethodID(jnienv, NavitClass, "runOptionsItem", "(I)V"); + if (Navit_runOptionsItem == NULL) + return NULL; + + dbg(lvl_debug,"ok\n"); *meth=event_android_methods; return NULL; } @@ -922,7 +981,7 @@ void plugin_init(void) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); plugin_register_graphics_type("android", graphics_android_new); plugin_register_event_type("android", event_android_new); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/gd/graphics_gd.c navit-0.5.0+dfsg.1/navit/graphics/gd/graphics_gd.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/gd/graphics_gd.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/gd/graphics_gd.c 2016-01-02 22:29:50.000000000 +0000 @@ -195,7 +195,7 @@ struct graphics_priv { gdImagePtr im; - int w,h,flags,alpha,overlay,shmkey,shmsize,shmoffset; + int w,h,flags,overlay,shmkey,shmsize,shmoffset; void *shm; struct shmem_header *shm_header; struct point p; @@ -430,7 +430,7 @@ h=g->h; if (w && h) { im=gdImageCreateTrueColor(w+2, h+2); - gr->freetype_methods.get_shadow(g,(unsigned char *)(im->tpixels),32,0,&bgc,&transparent); + gr->freetype_methods.get_shadow(g,(unsigned char *)(im->tpixels),0,&bgc,&transparent); gdImageCopy(gr->im, im, ((x+g->x)>>6)-1, ((y+g->y)>>6)-1, 0, 0, w+2, h+2); gdImageDestroy(im); } @@ -450,7 +450,7 @@ h=g->h; if (w && h) { im=gdImageCreateTrueColor(w, h); - gr->freetype_methods.get_glyph(g,(unsigned char *)(im->tpixels),32,0,&fgc,&bgc,&transparent); + gr->freetype_methods.get_glyph(g,(unsigned char *)(im->tpixels),0,&fgc,&bgc,&transparent); gdImageCopy(gr->im, im, (x+g->x)>>6, (y+g->y)>>6, 0, 0, w, h); gdImageDestroy(im); } @@ -467,11 +467,6 @@ } static void -draw_restore(struct graphics_priv *gr, struct point *p, int w, int h) -{ -} - -static void draw_drag(struct graphics_priv *gr, struct point *p) { if (p) @@ -516,7 +511,7 @@ if (gr->flags & 2) { struct shmem_header *next=shm_next(gr); gr->shm_header->flag=1; - dbg(1,"next flag is %d\n",next->flag); + dbg(lvl_debug,"next flag is %d\n",next->flag); if (!next->flag) { gr->shm_header=next; image_setup(gr); @@ -531,15 +526,15 @@ while (sockets) { int fd=socket(PF_INET, SOCK_STREAM, 0); if (fd < 0) { - dbg(0,"socket failed\n"); + dbg(lvl_error,"socket failed\n"); } else { if (connect(fd, (struct sockaddr *)sockets->data, sizeof(struct sockaddr_in)) < 0) { - dbg(0,"connect failed\n"); + dbg(lvl_error,"connect failed\n"); } else { size_written=write(fd, data, size); - dbg(0,"size %d vs %d\n",size, size_written); + dbg(lvl_debug,"size %d vs %d\n",size, size_written); if (shutdown(fd, SHUT_RDWR) < 0) - dbg(0,"shutdown failed\n"); + dbg(lvl_error,"shutdown failed\n"); } close(fd); } @@ -552,7 +547,7 @@ } } -static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int alpha); +static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound); static void add_overlays(struct graphics_priv *overlay, gdImagePtr im) @@ -591,7 +586,7 @@ int b; struct point p; gdImagePtr im = this->im; - dbg(1,"type=%s\n",type); + dbg(lvl_debug,"type=%s\n",type); if (!strcmp(type,"window")) return &this->window; if (!strcmp(type,"image_png")) { @@ -613,11 +608,11 @@ return &this->image; } if (sscanf(type,"click_%d_%d_%d",&p.x,&p.y,&b) == 3) { - dbg(1,"click %d %d %d\n",p.x,p.y,b); + dbg(lvl_debug,"click %d %d %d\n",p.x,p.y,b); callback_list_call_attr_3(this->cbl, attr_button, (void *)b, (void *)1, (void *)&p); } if (sscanf(type,"move_%d_%d",&p.x,&p.y) == 2) { - dbg(1,"move %d %d\n",p.x,p.y); + dbg(lvl_debug,"move %d %d\n",p.x,p.y); callback_list_call_attr_1(this->cbl, attr_motion, (void *)&p); } return NULL; @@ -634,13 +629,13 @@ static void overlay_disable(struct graphics_priv *gr, int disable) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static void -overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, int alpha, int wraparound) +overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } struct shmem_header * @@ -648,10 +643,10 @@ { char *next=(char *)gr->shm_header+gr->shmoffset; if (next+gr->shmoffset > (char *)gr->shm+gr->shmsize) { - dbg(1,"wraparound\n"); + dbg(lvl_debug,"wraparound\n"); return gr->shm; } - dbg(1,"next 0x%x (offset 0x%x)\n",next-(char *)gr->shm,gr->shmoffset); + dbg(lvl_debug,"next 0x%x (offset 0x%x)\n",next-(char *)gr->shm,gr->shmoffset); return (struct shmem_header *)next; } @@ -672,17 +667,17 @@ static void image_create(struct graphics_priv *gr) { - dbg(0,"shmkey %d\n",gr->shmkey); + dbg(lvl_debug,"shmkey %d\n",gr->shmkey); #ifdef HAVE_SHMEM if (gr->shmkey) { int size=gr->h*gr->w*sizeof(int); int shmid=shmget(gr->shmkey, size, 0666); - dbg(0,"shmid for key 0x%x is 0x%x\n",gr->shmkey, shmid); + dbg(lvl_debug,"shmid for key 0x%x is 0x%x\n",gr->shmkey, shmid); if (shmid < 0) - dbg(0,"shmget\n"); + dbg(lvl_debug,"shmget\n"); gr->shm=shmat(shmid, NULL, 0); if (!gr->shm) - dbg(0,"shmat\n"); + dbg(lvl_debug,"shmat\n"); gr->shm_header=gr->shm; gr->im=g_new0(gdImage,1); gr->im->tpixels=g_new(int *,gr->h); @@ -759,7 +754,7 @@ g_list_free(gr->sockets); gr->sockets=NULL; c=s=g_strdup(attr->u.str); - dbg(0,"s=%s\n",s); + dbg(lvl_debug,"s=%s\n",s); while (c) { n=strchr(c,','); if (n) @@ -773,12 +768,12 @@ if (inet_aton(c, &sin->sin_addr)) { gr->sockets=g_list_append(gr->sockets, sin); } else { - dbg(0,"error in %s\n",c); + dbg(lvl_error,"error in %s\n",c); g_free(sin); } - dbg(0,"host=%s port=%s\n",c,p); + dbg(lvl_debug,"host=%s port=%s\n",c,p); } else - dbg(0,"error in format: %s\n",p); + dbg(lvl_error,"error in format: %s\n",p); c=n; } g_free(s); @@ -806,7 +801,6 @@ draw_text, draw_image, NULL, - draw_restore, draw_drag, NULL, gc_new, @@ -822,12 +816,12 @@ }; static struct graphics_priv * -overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int alpha) +overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound) { struct font_priv * (*font_freetype_new)(void *meth); struct graphics_priv *ret; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); ret=g_new0(struct graphics_priv, 1); *meth=graphics_methods; font_freetype_new=plugin_get_font_type("freetype"); @@ -837,7 +831,6 @@ ret->p=*p; ret->w=w; ret->h=h; - ret->alpha=alpha; ret->overlay=1; ret->flags=1; ret->im=gdImageCreateTrueColor(ret->w,ret->h); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c navit-0.5.0+dfsg.1/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c 2016-01-02 22:29:50.000000000 +0000 @@ -22,8 +22,10 @@ #include #include #include +#include #include #include +#include #include /* For WIN32 */ #if !defined(GDK_Book) || !defined(GDK_Calendar) #include @@ -62,13 +64,8 @@ GtkWidget *widget; GtkWidget *win; struct window window; - GdkDrawable *drawable; - GdkDrawable *background; - int background_ready; - GdkColormap *colormap; + cairo_t *cairo; struct point p; - struct point pclean; - int cleanup; int width; int height; int win_w; @@ -76,13 +73,11 @@ int visible; int overlay_disabled; int overlay_autodisabled; - int a; int wraparound; struct graphics_priv *parent; struct graphics_priv *overlays; struct graphics_priv *next; struct graphics_gc_priv *background_gc; - enum draw_mode_num mode; struct callback_list *cbl; struct font_freetype_methods freetype_methods; struct navit *nav; @@ -96,10 +91,12 @@ struct graphics_gc_priv { - GdkGC *gc; - GdkPixmap *pixmap; struct graphics_priv *gr; struct color c; + double linewidth; + double *dashes; + int ndashes; + double offset; }; struct graphics_image_priv { @@ -114,13 +111,13 @@ static void graphics_destroy(struct graphics_priv *gr) { - dbg(3,"enter parent %p\n",gr->parent); + dbg(lvl_debug,"enter parent %p\n",gr->parent); gr->freetype_methods.destroy(); if (!gr->parent) { - dbg(3,"enter win %p\n",gr->win); + dbg(lvl_debug,"enter win %p\n",gr->win); if (gr->win) gtk_widget_destroy(gr->win); - dbg(3,"widget %p\n",gr->widget); + dbg(lvl_debug,"widget %p\n",gr->widget); if (gr->widget) gtk_widget_destroy(gr->widget); g_free(gr->window_title); @@ -131,59 +128,41 @@ static void gc_destroy(struct graphics_gc_priv *gc) { - g_object_unref(gc->gc); g_free(gc); } static void gc_set_linewidth(struct graphics_gc_priv *gc, int w) { - gdk_gc_set_line_attributes(gc->gc, w, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); + gc->linewidth = w; } static void gc_set_dashes(struct graphics_gc_priv *gc, int w, int offset, unsigned char *dash_list, int n) { - gdk_gc_set_dashes(gc->gc, offset, (gint8 *)dash_list, n); - gdk_gc_set_line_attributes(gc->gc, w, GDK_LINE_ON_OFF_DASH, GDK_CAP_ROUND, GDK_JOIN_ROUND); -} - -static void -gc_set_color(struct graphics_gc_priv *gc, struct color *c, int fg) -{ - GdkColor gdkc; - gdkc.pixel=0; - gdkc.red=c->r; - gdkc.green=c->g; - gdkc.blue=c->b; - gdk_colormap_alloc_color(gc->gr->colormap, &gdkc, FALSE, TRUE); - gdk_colormap_query_color(gc->gr->colormap, gdkc.pixel, &gdkc); - gc->c=*c; - if (fg) { - gdk_gc_set_foreground(gc->gc, &gdkc); - } else - gdk_gc_set_background(gc->gc, &gdkc); + int i; + g_free(gc->dashes); + gc->ndashes=n; + gc->offset=offset; + if(n) { + gc->dashes=g_malloc_n(n, sizeof(double)); + for (i=0; idashes[i]=dash_list[i]; + } + } else { + gc->dashes=NULL; + } } static void gc_set_foreground(struct graphics_gc_priv *gc, struct color *c) { - gc_set_color(gc, c, 1); + gc->c=*c; } static void gc_set_background(struct graphics_gc_priv *gc, struct color *c) { - gc_set_color(gc, c, 0); -} - -static void -gc_set_stipple(struct graphics_gc_priv *gc, struct graphics_image_priv *img) -{ - char data[2]={0x2,0x1}; - gdk_gc_set_fill(gc->gc, GDK_STIPPLED); - gc->pixmap=gdk_bitmap_create_from_data(gc->gr->widget->window, data, 2, 2); - gdk_gc_set_stipple(gc->gc, gc->pixmap); } static struct graphics_gc_methods gc_methods = { @@ -192,7 +171,6 @@ gc_set_dashes, gc_set_foreground, gc_set_background, - gc_set_stipple, }; static struct graphics_gc_priv *gc_new(struct graphics_priv *gr, struct graphics_gc_methods *meth) @@ -200,8 +178,17 @@ struct graphics_gc_priv *gc=g_new(struct graphics_gc_priv, 1); *meth=gc_methods; - gc->gc=gdk_gc_new(gr->widget->window); gc->gr=gr; + + gc->linewidth=1; + gc->c.r=0; + gc->c.g=0; + gc->c.b=0; + gc->c.a=0; + gc->dashes=NULL; + gc->ndashes=0; + gc->offset=0; + return gc; } @@ -290,46 +277,83 @@ } static void +set_drawing_color(cairo_t *cairo, struct color c) +{ + double col_max = 1<c); + cairo_set_dash(cairo, gc->dashes, gc->ndashes, gc->offset); + cairo_set_line_width(cairo, gc->linewidth); +} + +static void draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count) { - if (gr->mode == draw_mode_begin || gr->mode == draw_mode_end) - gdk_draw_lines(gr->drawable, gc->gc, (GdkPoint *)p, count); - if (gr->mode == draw_mode_end || gr->mode == draw_mode_cursor) - gdk_draw_lines(gr->widget->window, gc->gc, (GdkPoint *)p, count); + int i; + if (!count) + return; + cairo_move_to(gr->cairo, p[0].x, p[0].y); + for (i=1; icairo, p[i].x, p[i].y); + } + set_stroke_params_from_gc(gr->cairo, gc); + cairo_stroke(gr->cairo); } static void draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count) { - if (gr->mode == draw_mode_begin || gr->mode == draw_mode_end) - gdk_draw_polygon(gr->drawable, gc->gc, TRUE, (GdkPoint *)p, count); - if (gr->mode == draw_mode_end || gr->mode == draw_mode_cursor) - gdk_draw_polygon(gr->widget->window, gc->gc, TRUE, (GdkPoint *)p, count); + int i; + set_drawing_color(gr->cairo, gc->c); + cairo_move_to(gr->cairo, p[0].x, p[0].y); + for (i=1; icairo, p[i].x, p[i].y); + } + cairo_fill(gr->cairo); } static void draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h) { - gdk_draw_rectangle(gr->drawable, gc->gc, TRUE, p->x, p->y, w, h); + cairo_save(gr->cairo); + // Use OPERATOR_SOURCE to overwrite old contents even when drawing with transparency. + // Necessary for OSD drawing. + cairo_set_operator(gr->cairo, CAIRO_OPERATOR_SOURCE); + cairo_rectangle(gr->cairo, p->x, p->y, w, h); + set_drawing_color(gr->cairo, gc->c); + cairo_fill(gr->cairo); + cairo_restore(gr->cairo); } static void draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r) { - if (gr->mode == draw_mode_begin || gr->mode == draw_mode_end) - gdk_draw_arc(gr->drawable, gc->gc, FALSE, p->x-r/2, p->y-r/2, r, r, 0, 64*360); - if (gr->mode == draw_mode_end || gr->mode == draw_mode_cursor) - gdk_draw_arc(gr->widget->window, gc->gc, FALSE, p->x-r/2, p->y-r/2, r, r, 0, 64*360); + cairo_arc (gr->cairo, p->x, p->y, r/2, 0.0, 2*M_PI); + set_stroke_params_from_gc(gr->cairo, gc); + cairo_stroke(gr->cairo); } static void -display_text_draw(struct font_freetype_text *text, struct graphics_priv *gr, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, int color, struct point *p) +draw_rgb_image_buffer(cairo_t *cairo, int buffer_width, int buffer_height, int draw_pos_x, int draw_pos_y, int stride, unsigned char *buffer) +{ + cairo_surface_t *buffer_surface = cairo_image_surface_create_for_data( + buffer, CAIRO_FORMAT_ARGB32, buffer_width, buffer_height, stride); + cairo_set_source_surface(cairo, buffer_surface, draw_pos_x, draw_pos_y); + cairo_paint(cairo); + cairo_surface_destroy(buffer_surface); +} + +static void +display_text_draw(struct font_freetype_text *text, struct graphics_priv *gr, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, struct point *p) { int i,x,y,stride; struct font_freetype_glyph *g, **gp; - unsigned char *shadow,*glyph; struct color transparent={0x0,0x0,0x0,0x0}; - struct color white={0xffff,0xffff,0xffff,0xffff}; gp=text->glyph; i=text->glyph_count; @@ -339,30 +363,12 @@ { g=*gp++; if (g->w && g->h && bg ) { -#if 1 - stride=g->w+2; + unsigned char *shadow; + stride=cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, g->w+2); shadow=g_malloc(stride*(g->h+2)); - if (gr->freetype_methods.get_shadow(g, shadow, 8, stride, &white, &transparent)) - gdk_draw_gray_image(gr->drawable, bg->gc, ((x+g->x)>>6)-1, ((y+g->y)>>6)-1, g->w+2, g->h+2, GDK_RGB_DITHER_NONE, shadow, stride); + gr->freetype_methods.get_shadow(g, shadow, stride, &bg->c, &transparent); + draw_rgb_image_buffer(gr->cairo, g->w+2, g->h+2, ((x+g->x)>>6)-1, ((y+g->y)>>6)-1, stride, shadow); g_free(shadow); - if (color) { - stride*=3; - shadow=g_malloc(stride*(g->h+2)); - gr->freetype_methods.get_shadow(g, shadow, 24, stride, &bg->c, &transparent); - gdk_draw_rgb_image(gr->drawable, fg->gc, ((x+g->x)>>6)-1, ((y+g->y)>>6)-1, g->w+2, g->h+2, GDK_RGB_DITHER_NONE, shadow, stride); - g_free(shadow); - } -#else - GdkImage *image; - stride=(g->w+9)/8; - shadow=malloc(stride*(g->h+2)); - - gr->freetype_methods.get_shadow(g, shadow, 1, stride); - image=gdk_image_new_bitmap(gdk_visual_get_system(),shadow,g->w+2, g->h+2); - gdk_draw_image(gr->drawable, bg->gc, image, 0, 0, ((x+g->x)>>6)-1, ((y+g->y)>>6)-1, g->w+2, g->h+2); - g_object_unref(image); -#endif - } x+=g->dx; y+=g->dy; @@ -375,21 +381,12 @@ { g=*gp++; if (g->w && g->h) { - if (color) { - stride=g->w; - if (bg) { - glyph=g_malloc(stride*g->h); - gr->freetype_methods.get_glyph(g, glyph, 8, stride, &fg->c, &bg->c, &transparent); - gdk_draw_gray_image(gr->drawable, bg->gc, (x+g->x)>>6, (y+g->y)>>6, g->w, g->h, GDK_RGB_DITHER_NONE, glyph, g->w); - g_free(glyph); - } - stride*=3; - glyph=g_malloc(stride*g->h); - gr->freetype_methods.get_glyph(g, glyph, 24, stride, &fg->c, bg?&bg->c:&transparent, &transparent); - gdk_draw_rgb_image(gr->drawable, fg->gc, (x+g->x)>>6, (y+g->y)>>6, g->w, g->h, GDK_RGB_DITHER_NONE, glyph, stride); - g_free(glyph); - } else - gdk_draw_gray_image(gr->drawable, fg->gc, (x+g->x)>>6, (y+g->y)>>6, g->w, g->h, GDK_RGB_DITHER_NONE, g->pixmap, g->w); + unsigned char *glyph; + stride=cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, g->w); + glyph=g_malloc(stride*g->h); + gr->freetype_methods.get_glyph(g, glyph, stride, &fg->c, bg?&bg->c:&transparent, &transparent); + draw_rgb_image_buffer(gr->cairo, g->w, g->h, (x+g->x)>>6, (y+g->y)>>6, stride, glyph); + g_free(glyph); } x+=g->dx; y+=g->dy; @@ -400,11 +397,10 @@ draw_text(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, struct graphics_font_priv *font, char *text, struct point *p, int dx, int dy) { struct font_freetype_text *t; - int color=0; if (! font) { - dbg(0,"no font, returning\n"); + dbg(lvl_error,"no font, returning\n"); return; } #if 0 /* Temporarily disabled because it destroys text rendering of overlays and in gui internal in some places */ @@ -420,48 +416,36 @@ #endif if (bg && !bg->c.a) bg=NULL; - if (bg) { - if (COLOR_IS_BLACK(fg->c) && COLOR_IS_WHITE(bg->c)) { - gdk_gc_set_function(fg->gc, GDK_AND_INVERT); - gdk_gc_set_function(bg->gc, GDK_OR); - } else if (COLOR_IS_WHITE(fg->c) && COLOR_IS_BLACK(bg->c)) { - gdk_gc_set_function(fg->gc, GDK_OR); - gdk_gc_set_function(bg->gc, GDK_AND_INVERT); - } else { - gdk_gc_set_function(fg->gc, GDK_OR); - gdk_gc_set_function(bg->gc, GDK_AND_INVERT); - color=1; - } - } else { - gdk_gc_set_function(fg->gc, GDK_OR); - color=1; - } t=gr->freetype_methods.text_new(text, (struct font_freetype_font *)font, dx, dy); - display_text_draw(t, gr, fg, bg, color, p); + display_text_draw(t, gr, fg, bg, p); gr->freetype_methods.text_destroy(t); - gdk_gc_set_function(fg->gc, GDK_COPY); - if (bg) - gdk_gc_set_function(bg->gc, GDK_COPY); -#if 0 - { - struct point pnt[5]; - int i; - gr->freetype_methods.get_text_bbox(gr, font, text, dx, dy, pnt, 1); - for (i = 0 ; i < 4 ; i++) { - pnt[i].x+=p->x; - pnt[i].y+=p->y; - } - pnt[4]=pnt[0]; - gdk_draw_lines(gr->drawable, fg->gc, (GdkPoint *)pnt, 5); - } -#endif } static void draw_image(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img) { - gdk_draw_pixbuf(gr->drawable, fg->gc, img->pixbuf, 0, 0, p->x, p->y, - img->w, img->h, GDK_RGB_DITHER_NONE, 0, 0); + gdk_cairo_set_source_pixbuf(gr->cairo, img->pixbuf, p->x, p->y); + cairo_paint(gr->cairo); +} + +static unsigned char* +create_buffer_with_stride_if_required(unsigned char *input_buffer, int w, int h, size_t bytes_per_pixel, size_t output_stride) +{ + int line; + size_t input_offset, output_offset; + unsigned char *out_buf; + size_t input_stride = w*bytes_per_pixel; + if (input_stride == output_stride) { + return NULL; + } + + out_buf = g_malloc(h*output_stride); + for (line = 0; line < h; line++) { + input_offset = line*input_stride; + output_offset = line*output_stride; + memcpy(out_buf+output_offset, input_buffer+input_offset, input_stride); + } + return out_buf; } #ifdef HAVE_IMLIB2 @@ -469,28 +453,19 @@ draw_image_warp(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, int count, struct graphics_image_priv *img) { int w,h; - static struct graphics_priv *imlib_gr; - dbg(1,"draw_image_warp data=%p\n", img); - if (imlib_gr != gr) { - imlib_context_set_display(gdk_x11_drawable_get_xdisplay(gr->widget->window)); - imlib_context_set_colormap(gdk_x11_colormap_get_xcolormap(gtk_widget_get_colormap(gr->widget))); - imlib_context_set_visual(gdk_x11_visual_get_xvisual(gtk_widget_get_visual(gr->widget))); - imlib_context_set_drawable(gdk_x11_drawable_get_xid(gr->drawable)); - imlib_gr=gr; - } + DATA32 *intermediate_buffer; + unsigned char* intermediate_buffer_aligned; + Imlib_Image intermediate_image; + size_t stride; + dbg(lvl_debug,"draw_image_warp data=%p\n", img); w = img->w; h = img->h; if (!img->image) { int x,y; -#if 0 - if (!gdk_pixbuf_get_has_alpha(img->pixbuf)) { - img->pixbuf=gdk_pixbuf_add_alpha(img->pixbuf, FALSE, 0, 0, 0); - } -#endif img->image=imlib_create_image(w, h); imlib_context_set_image(img->image); if (gdk_pixbuf_get_colorspace(img->pixbuf) != GDK_COLORSPACE_RGB || gdk_pixbuf_get_bits_per_sample(img->pixbuf) != 8) { - dbg(0,"implement me\n"); + dbg(lvl_error,"implement me\n"); } else if (gdk_pixbuf_get_has_alpha(img->pixbuf) && gdk_pixbuf_get_n_channels(img->pixbuf) == 4) { for (y=0 ; y < h ; y++) { unsigned int *dst=imlib_image_get_data()+y*w; @@ -510,40 +485,54 @@ } } } else { - dbg(0,"implement me\n"); + dbg(lvl_error,"implement me\n"); } - } else - imlib_context_set_image(img->image); + } + + intermediate_buffer = g_malloc0(gr->width*gr->height*4); + intermediate_image = imlib_create_image_using_data(gr->width, gr->height, intermediate_buffer); + imlib_context_set_image(intermediate_image); + imlib_image_set_has_alpha(1); + if (count == 3) { /* 0 1 2 */ - imlib_render_image_on_drawable_skewed(0, 0, w, h, p[0].x, p[0].y, p[1].x-p[0].x, p[1].y-p[0].y, p[2].x-p[0].x, p[2].y-p[0].y); + imlib_blend_image_onto_image_skewed(img->image, 1, 0, 0, w, h, p[0].x, p[0].y, p[1].x-p[0].x, p[1].y-p[0].y, p[2].x-p[0].x, p[2].y-p[0].y); } if (count == 2) { - /* 0 + /* 0 1 */ - imlib_render_image_on_drawable_skewed(0, 0, w, h, p[0].x, p[0].y, p[1].x-p[0].x, 0, 0, p[1].y-p[0].y); + imlib_blend_image_onto_image_skewed(img->image, 1, 0, 0, w, h, p[0].x, p[0].y, p[1].x-p[0].x, 0, 0, p[1].y-p[0].y); } if (count == 1) { - /* - 0 + /* + 0 */ - imlib_render_image_on_drawable_skewed(0, 0, w, h, p[0].x-w/2, p[0].y-h/2, w, 0, 0, h); + imlib_blend_image_onto_image_skewed(img->image, 1, 0, 0, w, h, p[0].x-w/2, p[0].y-h/2, w, 0, 0, h); } + + stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, gr->width); + intermediate_buffer_aligned = create_buffer_with_stride_if_required( + (unsigned char* )intermediate_buffer, gr->width, gr->height, sizeof(DATA32), stride); + cairo_surface_t *buffer_surface = cairo_image_surface_create_for_data( + intermediate_buffer_aligned ? intermediate_buffer_aligned : (unsigned char*)intermediate_buffer, + CAIRO_FORMAT_ARGB32, gr->width, gr->height, stride); + cairo_set_source_surface(gr->cairo, buffer_surface, 0, 0); + cairo_paint(gr->cairo); + + cairo_surface_destroy(buffer_surface); + imlib_free_image(); + g_free(intermediate_buffer); + g_free(intermediate_buffer_aligned); } #endif static void -overlay_rect(struct graphics_priv *parent, struct graphics_priv *overlay, int clean, GdkRectangle *r) +overlay_rect(struct graphics_priv *parent, struct graphics_priv *overlay, GdkRectangle *r) { - if (clean) { - r->x=overlay->pclean.x; - r->y=overlay->pclean.y; - } else { - r->x=overlay->p.x; - r->y=overlay->p.y; - } + r->x=overlay->p.x; + r->y=overlay->p.y; r->width=overlay->width; r->height=overlay->height; if (!overlay->wraparound) @@ -559,76 +548,24 @@ } static void -overlay_draw(struct graphics_priv *parent, struct graphics_priv *overlay, GdkRectangle *re, GdkPixmap *pixmap, GdkGC *gc) +overlay_draw(struct graphics_priv *parent, struct graphics_priv *overlay, GdkRectangle *re, cairo_t *cairo) { - GdkPixbuf *pixbuf,*pixbuf2; - guchar *pixels1, *pixels2, *p1, *p2, r=0, g=0, b=0, a=0; - int x,y; - int rowstride1,rowstride2; - int n_channels1,n_channels2; - GdkRectangle or,ir; - struct graphics_gc_priv *bg=overlay->background_gc; - if (bg) { - r=bg->c.r>>8; - g=bg->c.g>>8; - b=bg->c.b>>8; - a=bg->c.a>>8; - } - + GdkRectangle or, ir; if (parent->overlay_disabled || overlay->overlay_disabled || overlay->overlay_autodisabled) return; - dbg(1,"r->x=%d r->y=%d r->width=%d r->height=%d\n", re->x, re->y, re->width, re->height); - overlay_rect(parent, overlay, 0, &or); - dbg(1,"or.x=%d or.y=%d or.width=%d or.height=%d\n", or.x, or.y, or.width, or.height); + overlay_rect(parent, overlay, &or); if (! gdk_rectangle_intersect(re, &or, &ir)) return; or.x-=re->x; or.y-=re->y; - pixbuf=gdk_pixbuf_get_from_drawable(NULL, overlay->drawable, NULL, 0, 0, 0, 0, or.width, or.height); - pixbuf2=gdk_pixbuf_new(gdk_pixbuf_get_colorspace(pixbuf), TRUE, gdk_pixbuf_get_bits_per_sample(pixbuf), - or.width, or.height); - rowstride1 = gdk_pixbuf_get_rowstride (pixbuf); - rowstride2 = gdk_pixbuf_get_rowstride (pixbuf2); - pixels1=gdk_pixbuf_get_pixels (pixbuf); - pixels2=gdk_pixbuf_get_pixels (pixbuf2); - n_channels1 = gdk_pixbuf_get_n_channels (pixbuf); - n_channels2 = gdk_pixbuf_get_n_channels (pixbuf2); - for (y = 0 ; y < or.height ; y++) { - for (x = 0 ; x < or.width ; x++) { - p1 = pixels1 + y * rowstride1 + x * n_channels1; - p2 = pixels2 + y * rowstride2 + x * n_channels2; - p2[0]=p1[0]; - p2[1]=p1[1]; - p2[2]=p1[2]; - if (bg && p1[0] == r && p1[1] == g && p1[2] == b) - p2[3]=a; - else - p2[3]=overlay->a; - } - } - gdk_draw_pixbuf(pixmap, gc, pixbuf2, 0, 0, or.x, or.y, or.width, or.height, GDK_RGB_DITHER_NONE, 0, 0); - g_object_unref(pixbuf); - g_object_unref(pixbuf2); -} - -static void -draw_restore(struct graphics_priv *gr, struct point *p, int w, int h) -{ - GtkWidget *widget=gr->widget; - gdk_draw_drawable(widget->window, - widget->style->fg_gc[GTK_WIDGET_STATE(widget)], - gr->drawable, - p->x, p->y, p->x, p->y, w, h); - + cairo_surface_t *overlay_surface = cairo_get_target(overlay->cairo); + cairo_set_source_surface(cairo, overlay_surface, or.x, or.y); + cairo_paint(cairo); } static void draw_drag(struct graphics_priv *gr, struct point *p) { - if (!gr->cleanup) { - gr->pclean=gr->p; - gr->cleanup=1; - } if (p) gr->p=*p; else { @@ -645,62 +582,13 @@ } static void -gtk_drawing_area_draw(struct graphics_priv *gr, GdkRectangle *r) -{ - GdkPixmap *pixmap; - GtkWidget *widget=gr->widget; - GdkGC *gc=widget->style->fg_gc[GTK_WIDGET_STATE(widget)]; - struct graphics_priv *overlay; - - if (! gr->drawable) - return; - pixmap = gdk_pixmap_new(widget->window, r->width, r->height, -1); - if ((gr->p.x || gr->p.y) && gr->background_gc) - gdk_draw_rectangle(pixmap, gr->background_gc->gc, TRUE, 0, 0, r->width, r->height); - gdk_draw_drawable(pixmap, gc, gr->drawable, r->x, r->y, gr->p.x, gr->p.y, r->width, r->height); - overlay=gr->overlays; - while (overlay) { - overlay_draw(gr,overlay,r,pixmap,gc); - overlay=overlay->next; - } - gdk_draw_drawable(widget->window, gc, pixmap, 0, 0, r->x, r->y, r->width, r->height); - g_object_unref(pixmap); -} - -static void draw_mode(struct graphics_priv *gr, enum draw_mode_num mode) { - GdkRectangle r; - struct graphics_priv *overlay; -#if 0 - if (mode == draw_mode_begin) { - if (! gr->parent && gr->background_gc) - gdk_draw_rectangle(gr->drawable, gr->background_gc->gc, TRUE, 0, 0, gr->width, gr->height); - } -#endif - if (mode == draw_mode_end && gr->mode != draw_mode_cursor) { - if (gr->parent) { - if (gr->cleanup) { - overlay_rect(gr->parent, gr, 1, &r); - gtk_drawing_area_draw(gr->parent, &r); - gr->cleanup=0; - } - overlay_rect(gr->parent, gr, 0, &r); - gtk_drawing_area_draw(gr->parent, &r); - } else { - r.x=0; - r.y=0; - r.width=gr->width; - r.height=gr->height; - gtk_drawing_area_draw(gr, &r); - overlay=gr->overlays; - while (overlay) { - overlay->cleanup=0; - overlay=overlay->next; - } - } + if (mode == draw_mode_end) { + // Just invalidate the whole window. We could only the invalidate the area of + // graphics_priv, but that is probably not significantly faster. + gdk_window_invalidate_rect(gr->widget->window, NULL, TRUE); } - gr->mode=mode; } /* Events */ @@ -711,19 +599,17 @@ struct graphics_priv *gra=user_data; if (! gra->visible) return TRUE; - if (gra->drawable != NULL) { - g_object_unref(gra->drawable); - } - if(gra->background_ready && gra->background != NULL) { - g_object_unref(gra->background); - gra->background_ready = 0; - } #ifndef _WIN32 - dbg(1,"window=%lu\n", GDK_WINDOW_XID(widget->window)); + dbg(lvl_debug,"window=%lu\n", GDK_WINDOW_XID(widget->window)); #endif gra->width=widget->allocation.width; gra->height=widget->allocation.height; - gra->drawable = gdk_pixmap_new(widget->window, gra->width, gra->height, -1); + cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, gra->width, gra->height); + if (gra->cairo) + cairo_destroy(gra->cairo); + gra->cairo = cairo_create(surface); + cairo_surface_destroy(surface); + cairo_set_antialias (gra->cairo, CAIRO_ANTIALIAS_GOOD); callback_list_call_attr_2(gra->cbl, attr_resize, GINT_TO_POINTER(gra->width), GINT_TO_POINTER(gra->height)); return TRUE; } @@ -732,38 +618,30 @@ expose(GtkWidget * widget, GdkEventExpose * event, gpointer user_data) { struct graphics_priv *gra=user_data; + struct graphics_gc_priv *background_gc=gra->background_gc; + struct graphics_priv *overlay; gra->visible=1; - if (! gra->drawable) + if (! gra->cairo) configure(widget, NULL, user_data); - gtk_drawing_area_draw(gra, &event->area); -#if 0 - gdk_draw_drawable(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE(widget)], - gra->drawable, event->area.x, event->area.y, - event->area.x, event->area.y, - event->area.width, event->area.height); -#endif - - return FALSE; -} -#if 0 -static gint -button_timeout(gpointer user_data) -{ -#if 0 - struct container *co=user_data; - int x=co->gra->gra->button_event.x; - int y=co->gra->gra->button_event.y; - int button=co->gra->gra->button_event.button; + cairo_t *cairo=gdk_cairo_create(widget->window); + if (gra->p.x || gra->p.y) { + set_drawing_color(cairo, background_gc->c); + cairo_paint(cairo); + } + cairo_set_source_surface(cairo, cairo_get_target(gra->cairo), gra->p.x, gra->p.y); + cairo_paint(cairo); - co->gra->gra->button_timeout=0; - popup(co, x, y, button); + overlay = gra->overlays; + while (overlay) { + overlay_draw(gra,overlay,&event->area,cairo); + overlay=overlay->next; + } + cairo_destroy(cairo); return FALSE; -#endif } -#endif static int tv_delta(struct timeval *old, struct timeval *new) @@ -871,7 +749,7 @@ delete(GtkWidget *widget, GdkEventKey *event, gpointer user_data) { struct graphics_priv *this=user_data; - dbg(3,"enter this->win=%p\n",this->win); + dbg(lvl_debug,"enter this->win=%p\n",this->win); if (this->delay & 2) { if (this->win) this->win=NULL; @@ -943,11 +821,19 @@ key[0]=NAVIT_KEY_ZOOM_OUT; key[1]='\0'; break; + case GDK_Page_Up: + key[0]=NAVIT_KEY_PAGE_UP; + key[1]='\0'; + break; + case GDK_Page_Down: + key[0]=NAVIT_KEY_PAGE_DOWN; + key[1]='\0'; + break; } if (key[0]) callback_list_call_attr_1(this->cbl, attr_keypress, (void *)key); else - dbg(3,"keyval 0x%x\n", event->keyval); + dbg(lvl_debug,"keyval 0x%x\n", event->keyval); return FALSE; } @@ -961,14 +847,14 @@ gr->overlay_disabled=disabled; if (gr->parent) { GdkRectangle r; - overlay_rect(gr->parent, gr, 0, &r); - gtk_drawing_area_draw(gr->parent, &r); + overlay_rect(gr->parent, gr, &r); + gdk_window_invalidate_rect(gr->parent->widget->window, &r, TRUE); } } } static void -overlay_resize(struct graphics_priv *this, struct point *p, int w, int h, int alpha, int wraparound) +overlay_resize(struct graphics_priv *this, struct point *p, int w, int h, int wraparound) { //do not dereference parent for non overlay osds if(!this->parent) { @@ -1001,16 +887,13 @@ changed = 1; } - this->a = alpha >> 8; this->wraparound = wraparound; if (changed) { - // Set the drawables to the right sizes - g_object_unref(this->drawable); - g_object_unref(this->background); - - this->drawable=gdk_pixmap_new(this->parent->widget->window, w2, h2, -1); - this->background=gdk_pixmap_new(this->parent->widget->window, w2, h2, -1); + cairo_destroy(this->cairo); + cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w2, h2); + this->cairo=cairo_create(surface); + cairo_surface_destroy(surface); if ((w == 0) || (h == 0)) { this->overlay_autodisabled = 1; @@ -1032,7 +915,7 @@ if (!gtk_widget_get_parent(this->widget)) gtk_widget_ref(this->widget); gtk_window_set_default_size(GTK_WINDOW(this->win), this->win_w, this->win_h); - dbg(1,"h= %i, w= %i\n",this->win_h, this->win_w); + dbg(lvl_debug,"h= %i, w= %i\n",this->win_h, this->win_w); gtk_window_set_title(GTK_WINDOW(this->win), this->window_title); gtk_window_set_wmclass (GTK_WINDOW (this->win), "navit", this->window_title); gtk_widget_realize(this->win); @@ -1051,7 +934,7 @@ static int set_attr(struct graphics_priv *gr, struct attr *attr) { - dbg(3,"enter\n"); + dbg(lvl_debug,"enter\n"); switch (attr->type) { case attr_windowid: get_data_window(gr, attr->u.num); @@ -1062,11 +945,10 @@ } static struct graphics_priv * -overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int alpha, int wraparound) +overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound) { int w2,h2; struct graphics_priv *this=graphics_gtk_drawing_area_new_helper(meth); - this->colormap=gr->colormap; this->widget=gr->widget; this->p=*p; this->width=w; @@ -1087,8 +969,9 @@ w2 = w; } - this->background=gdk_pixmap_new(gr->widget->window, w2, h2, -1); - this->drawable=gdk_pixmap_new(gr->widget->window, w2, h2, -1); + cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w2, h2); + this->cairo=cairo_create(surface); + cairo_surface_destroy(surface); if ((w == 0) || (h == 0)) { this->overlay_autodisabled = 1; @@ -1097,7 +980,6 @@ } this->next=gr->overlays; - this->a=alpha >> 8; this->wraparound=wraparound; gr->overlays=this; return this; @@ -1127,7 +1009,7 @@ if (gr->pid) kill(gr->pid, SIGWINCH); #else - dbg(1, "failed to kill() under Windows\n"); + dbg(lvl_warning, "failed to kill() under Windows\n"); #endif } @@ -1156,7 +1038,7 @@ f=popen("pidof /usr/bin/ipaq-sleep","r"); if (f) { fscanf(f,"%d",&this->pid); - dbg(1,"ipaq_sleep pid=%d\n", this->pid); + dbg(lvl_debug,"ipaq_sleep pid=%d\n", this->pid); pclose(f); } #endif @@ -1179,7 +1061,6 @@ #else NULL, #endif - draw_restore, draw_drag, NULL, /* font_new */ gc_new, @@ -1240,7 +1121,6 @@ else this->window_title=g_strdup("Navit"); this->cbl=cbl; - this->colormap=gdk_colormap_new(gdk_visual_get_system(),FALSE); gtk_widget_set_events(draw, GDK_BUTTON_PRESS_MASK|GDK_BUTTON_RELEASE_MASK|GDK_POINTER_MOTION_MASK|GDK_KEY_PRESS_MASK); g_signal_connect(G_OBJECT(draw), "expose_event", G_CALLBACK(expose), this); g_signal_connect(G_OBJECT(draw), "configure_event", G_CALLBACK(configure), this); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/gtk_gl_ext/graphics_gtk_gl_ext.c navit-0.5.0+dfsg.1/navit/graphics/gtk_gl_ext/graphics_gtk_gl_ext.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/gtk_gl_ext/graphics_gtk_gl_ext.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/gtk_gl_ext/graphics_gtk_gl_ext.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,352 +0,0 @@ -/** - * Navit, a modular navigation system. - * Copyright (C) 2005-2008 Navit Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * version 2 as published by the Free Software Foundation. - * - * 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. - */ - -#include -#include -#include -#include -#include -#include "point.h" -#include "graphics.h" -#include "container.h" - - -struct graphics_gra { - GtkWidget *widget; - int width; - int height; - int library_init; - int visible; - int buffer; -}; - -struct graphics_font { -}; - -struct graphics_gc { - double fr,fg,fb; - double br,bg,bb; - double width; - struct graphics_gra *gra; -}; - -static struct graphics_font *font_new(struct graphics *gr, int size) -{ - struct graphics_font *font=g_new(struct graphics_font, 1); - return font; -} - -static struct graphics_gc *gc_new(struct graphics *gr) -{ - struct graphics_gc *gc=g_new(struct graphics_gc, 1); - - gc->fr=1; - gc->fg=1; - gc->fb=1; - gc->br=0; - gc->bg=0; - gc->bb=0; - gc->width=1; - gc->gra=gr->gra; - return gc; -} - -static void -gc_set_linewidth(struct graphics_gc *gc, int w) -{ - gc->width=w; -} - -static void -gc_set_foreground(struct graphics_gc *gc, int r, int g, int b) -{ - gc->fr=r/65535.0; - gc->fg=g/65535.0; - gc->fb=b/65535.0; -} - -static void -gc_set_background(struct graphics_gc *gc, int r, int g, int b) -{ - gc->br=r/65535.0; - gc->bg=g/65535.0; - gc->bb=b/65535.0; -} - -static void -vertex(struct point *p) -{ - double x,y; - x=p->x; - y=p->y; - x/=792; - y/=469; - x-=0.5; - y=0.5-y; - glVertex3f(x,y,0); -} - -static void -draw_lines(struct graphics *gr, struct graphics_gc *gc, struct point *p, int count) -{ - int i; - - glLineWidth(gc->width); - glColor3f(gc->fr, gc->fg, gc->fb); - glBegin(GL_LINE_STRIP); - for (i=0 ; i < count ; i++) - vertex(p++); - glEnd(); -} - -static void -draw_polygon(struct graphics *gr, struct graphics_gc *gc, struct point *p, int count) -{ - int i; - double x,y; - glColor3f(gc->fr, gc->fg, gc->fb); - glBegin(GL_POLYGON); - for (i=0 ; i < count ; i++) - vertex(p++); - glEnd(); -} - - -static void -draw_circle(struct graphics *gr, struct graphics_gc *gc, struct point *p, int r) -{ - -} - -static void -draw_text(struct graphics *gr, struct graphics_gc *fg, struct graphics_gc *bg, struct graphics_font *font, unsigned char *text, int x, int y, int dx, int dy) -{ -} - -static void -draw_begin(struct graphics *gr) -{ - printf("draw_begin\n"); - glClearColor(gr->gc[0]->br, gr->gc[0]->bg, gr->gc[0]->bb, 0); - glNewList(1, GL_COMPILE); - gr->gra->buffer=1; -} - -static void -draw_end(struct graphics *gr) -{ - printf("draw_end\n"); - glEndList(); - gr->gra->buffer=0; -} - -static void realize(GtkWidget * widget, gpointer data) -{ - GdkGLContext *glcontext = gtk_widget_get_gl_context(widget); - GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget); - - GLUquadricObj *qobj; - static GLfloat light_diffuse[] = { 1.0, 0.0, 0.0, 1.0 }; - static GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; - - /*** OpenGL BEGIN ***/ - if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext)) - return; - - qobj = gluNewQuadric(); - gluQuadricDrawStyle(qobj, GLU_FILL); -#if 0 - glNewList(1, GL_COMPILE); - gluSphere(qobj, 1.0, 20, 20); - glBegin(GL_LINE_STRIP); - glVertex3f(0.0,0.1,0.0); - glVertex3f(0.1,0.1,0.0); - glVertex3f(0.1,0.2,0.0); - glVertex3f(0.2,0.2,0.0); - glEnd(); - glEndList(); -#endif - -#if 0 - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); -#endif - - glClearColor(1.0, 1.0, 1.0, 1.0); - glClearDepth(1.0); - - glViewport(0, 0, - widget->allocation.width, widget->allocation.height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(19.0, 1.0, 1.0, 10.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); - glTranslatef(0.0, 0.0, 0.0); - - gdk_gl_drawable_gl_end(gldrawable); - /*** OpenGL END ***/ -} - -static gboolean -configure(GtkWidget * widget, GdkEventConfigure * event, gpointer user_data) -{ - GdkGLContext *glcontext = gtk_widget_get_gl_context(widget); - GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget); - struct container *co=user_data; - struct graphics_gra *gra=co->gra->gra; - - - printf("configure %d %d\n",gra->width, gra->height); - gra->width=widget->allocation.width; - gra->height=widget->allocation.height; - - /*** OpenGL BEGIN ***/ - if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext)) - return FALSE; - - glViewport(0, 0, - widget->allocation.width, widget->allocation.height); - - gdk_gl_drawable_gl_end(gldrawable); - /*** OpenGL END ***/ - if (gra->visible) - graphics_resize(co, gra->width, gra->height); - - return TRUE; -} - -static gboolean -expose(GtkWidget * widget, GdkEventExpose * event, gpointer user_data) -{ - GdkGLContext *glcontext = gtk_widget_get_gl_context(widget); - GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget); - struct container *co=user_data; - struct graphics_gra *gra=co->gra->gra; - - printf("expose\n"); - if (! gra->visible) { - gra->visible=1; - configure(widget, NULL, user_data); - } - /*** OpenGL BEGIN ***/ - if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext)) - return FALSE; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glCallList(1); - - if (gdk_gl_drawable_is_double_buffered(gldrawable)) - gdk_gl_drawable_swap_buffers(gldrawable); - else - glFlush(); - - gdk_gl_drawable_gl_end(gldrawable); - /*** OpenGL END ***/ - - return TRUE; -} - - -struct graphics * -graphics_gtk_gl_area_new(struct container *co, GtkWidget **widget) -{ - GdkGLConfig *glconfig; - gint major, minor; - GtkWidget *drawing_area; - - struct graphics *this=g_new0(struct graphics,1); - this->draw_lines=draw_lines; - this->draw_polygon=draw_polygon; - this->draw_circle=draw_circle; - this->draw_text=draw_text; -#if 0 - this->draw_begin=draw_begin; - this->draw_end=draw_end; -#endif - this->gc_new=gc_new; - this->gc_set_linewidth=gc_set_linewidth; - this->gc_set_foreground=gc_set_foreground; - this->gc_set_background=gc_set_background; - this->font_new=font_new; - this->gra=g_new0(struct graphics_gra, 1); - - /* - * Init GtkGLExt. - */ - - gtk_gl_init(NULL, NULL); - - /* - * Query OpenGL extension version. - */ - - gdk_gl_query_version(&major, &minor); - g_print("OpenGL extension version - %d.%d\n", major, minor); - - /* - * Configure OpenGL-capable visual. - */ - - /* Try double-buffered visual */ - glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB | - GDK_GL_MODE_DEPTH | - GDK_GL_MODE_DOUBLE); - if (glconfig == NULL) { - g_print("*** Cannot find the double-buffered visual.\n"); - g_print("*** Trying single-buffered visual.\n"); - - /* Try single-buffered visual */ - glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB | - GDK_GL_MODE_DEPTH); - if (glconfig == NULL) { - g_print - ("*** No appropriate OpenGL-capable visual found.\n"); - exit(1); - } - } - - - drawing_area = gtk_drawing_area_new(); - - /* Set OpenGL-capability to the widget. */ - gtk_widget_set_gl_capability(drawing_area, - glconfig, - NULL, TRUE, GDK_GL_RGBA_TYPE); - - g_signal_connect_after(G_OBJECT(drawing_area), "realize", - G_CALLBACK(realize), NULL); - g_signal_connect(G_OBJECT(drawing_area), "configure_event", - G_CALLBACK(configure), co); - g_signal_connect(G_OBJECT(drawing_area), "expose_event", - G_CALLBACK(expose), co); - - *widget=drawing_area; - this->gra->widget=drawing_area; - return this; -} - - diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/null/graphics_null.c navit-0.5.0+dfsg.1/navit/graphics/null/graphics_null.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/null/graphics_null.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/null/graphics_null.c 2016-01-02 22:29:50.000000000 +0000 @@ -150,11 +150,6 @@ { } -static void -draw_restore(struct graphics_priv *gr, struct point *p, int w, int h) -{ -} - static void draw_drag(struct graphics_priv *gr, struct point *p) { } @@ -169,7 +164,7 @@ { } -static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int alpha, int wraparound); +static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound); static void resize_callback(int w, int h) @@ -216,7 +211,7 @@ { } -static void overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, int alpha, int wraparound) +static void overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound) { } @@ -230,7 +225,6 @@ draw_text, draw_image, NULL, - draw_restore, draw_drag, font_new, gc_new, @@ -245,7 +239,7 @@ }; static struct graphics_priv * -overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int alpha, int wraparound) +overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound) { *meth=graphics_methods; return &graphics_priv; @@ -261,7 +255,7 @@ event_loop_system = attr_search(attrs, NULL, attr_event_loop_system); if (event_loop_system && event_loop_system->u.str) { - dbg(1, "event_system is %s\n", event_loop_system->u.str); + dbg(lvl_debug, "event_system is %s\n", event_loop_system->u.str); if (!event_request_system(event_loop_system->u.str, "graphics_null")) return NULL; } else { @@ -277,7 +271,7 @@ event_null_main_loop_run(void) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); for (;;) sleep(1); @@ -285,54 +279,54 @@ static void event_null_main_loop_quit(void) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static struct event_watch * event_null_add_watch(int h, enum event_watch_cond cond, struct callback *cb) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); return NULL; } static void event_null_remove_watch(struct event_watch *ev) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static struct event_timeout * event_null_add_timeout(int timeout, int multi, struct callback *cb) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); return NULL; } static void event_null_remove_timeout(struct event_timeout *to) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static struct event_idle * event_null_add_idle(int priority, struct callback *cb) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); return NULL; } static void event_null_remove_idle(struct event_idle *ev) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static void event_null_call_callback(struct callback_list *cb) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static struct event_methods event_null_methods = { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/opengl/graphics_opengl.c navit-0.5.0+dfsg.1/navit/graphics/opengl/graphics_opengl.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/opengl/graphics_opengl.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/opengl/graphics_opengl.c 2016-01-02 22:29:50.000000000 +0000 @@ -252,6 +252,7 @@ { /*FIXME graphics_destroy is never called */ /*TODO add destroy code for image cache(delete entries in hImageData) */ + gr->freetype_methods.destroy(); g_free(gr); gr = NULL; } @@ -259,7 +260,6 @@ static void gc_destroy(struct graphics_gc_priv *gc) { - gc->gr->freetype_methods.destroy(); g_free(gc); gc = NULL; } @@ -527,7 +527,7 @@ return gi; } #else - dbg(0,"FreeImage not available - cannot load any images.\n", path); + dbg(lvl_error,"FreeImage not available - cannot load any images.\n", path); return NULL; #endif } @@ -748,7 +748,7 @@ void APIENTRY tessBeginCB(GLenum which) { - dbg(1, "glBegin( %s );\n", getPrimitiveType(which)); + dbg(lvl_debug, "glBegin( %s );\n", getPrimitiveType(which)); tess_type=which; tess_count=0; } @@ -758,7 +758,7 @@ void APIENTRY tessEndCB(void) { - dbg(1, "glEnd();\n"); + dbg(lvl_debug, "glEnd();\n"); draw_array(graphics_priv_root, tess_array, tess_count, tess_type); } @@ -769,14 +769,14 @@ { // cast back to double type const GLdouble *ptr = (const GLdouble *) data; - dbg(1, " glVertex3d();\n"); + dbg(lvl_debug, " glVertex3d();\n"); tess_array[tess_count].x=ptr[0]; tess_array[tess_count].y=ptr[1]; if (tess_count < 511) tess_count++; else - dbg(0,"overflow\n"); + dbg(lvl_error,"overflow\n"); } void APIENTRY @@ -921,7 +921,7 @@ if (color) { shadow = g_malloc(stride * (g->h + 2)); gr->freetype_methods.get_shadow(g, shadow, - 32, stride, + stride, &white, &transparent); #ifdef USE_OPENGLES @@ -961,7 +961,6 @@ g_malloc(stride * g->h * 4); gr->freetype_methods.get_glyph(g, glyph, - 32, stride * 4, &black, @@ -989,7 +988,7 @@ stride *= 4; glyph = g_malloc(stride * g->h); gr->freetype_methods.get_glyph(g, glyph, - 32, stride, + stride, &black, &white, &transparent); @@ -1032,7 +1031,7 @@ int color = 1; if (!font) { - dbg(0, "no font, returning\n"); + dbg(lvl_error, "no font, returning\n"); return; } @@ -1084,11 +1083,6 @@ } static void -draw_restore(struct graphics_priv *gr, struct point *p, int w, int h) -{ -} - -static void draw_drag(struct graphics_priv *gr, struct point *p) { @@ -1210,7 +1204,7 @@ glNewList(gr->DLid, GL_COMPILE); } - if (mode == draw_mode_end || mode == draw_mode_end_lazy) { + if (mode == draw_mode_end) { glEndList(); } #endif @@ -1240,7 +1234,7 @@ static struct graphics_priv *overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, - int alpha, int wraparound); + int wraparound); static int graphics_opengl_fullscreen(struct window *w, int on) @@ -1374,7 +1368,7 @@ static void overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, - int alpha, int wraparound) + int wraparound) { int changed = 0; int w2, h2; @@ -1427,7 +1421,6 @@ draw_text, draw_image, NULL, - draw_restore, draw_drag, NULL, gc_new, @@ -1468,7 +1461,7 @@ static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, - struct point *p, int w, int h, int alpha, int wraparound) + struct point *p, int w, int h, int wraparound) { struct graphics_priv *this = graphics_opengl_new_helper(meth); this->p = *p; @@ -1499,7 +1492,7 @@ click_notify_do(struct graphics_priv *priv, int button, int state, int x, int y) { struct point p={x,y}; - dbg(0,"enter state %d button %d\n",state,button); + dbg(lvl_debug,"enter state %d button %d\n",state,button); callback_list_call_attr_3(priv->cbl, attr_button, (void *) state, (void *)button, (void *) &p); } #endif @@ -1743,61 +1736,61 @@ static void event_opengl_main_loop_run(void) { - dbg(2, "enter\n"); + dbg(lvl_info, "enter\n"); } static void event_opengl_main_loop_quit(void) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); } static struct event_watch * event_opengl_add_watch(int fd, enum event_watch_cond cond, struct callback *cb) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); return NULL; } static void event_opengl_remove_watch(struct event_watch *ev) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); } static struct event_timeout * event_opengl_add_timeout(int timeout, int multi, struct callback *cb) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); return NULL; } static void event_opengl_remove_timeout(struct event_timeout *to) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); } static struct event_idle * event_opengl_add_idle(int priority, struct callback *cb) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); return NULL; } static void event_opengl_remove_idle(struct event_idle *ev) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); } static void event_opengl_call_callback(struct callback_list *cb) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); } static struct event_methods event_opengl_methods = { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/opengl/graphics_opengl_egl.c navit-0.5.0+dfsg.1/navit/graphics/opengl/graphics_opengl_egl.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/opengl/graphics_opengl_egl.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/opengl/graphics_opengl_egl.c 2016-01-02 22:29:50.000000000 +0000 @@ -61,31 +61,31 @@ *methods=&graphics_opengl_egl_methods; ret->egldisplay = eglGetDisplay((EGLNativeDisplayType)display); if (!ret->egldisplay) { - dbg(0, "can't get display\n"); + dbg(lvl_error, "can't get display\n"); goto error; } if (!eglInitialize(ret->egldisplay, &major, &minor)) { - dbg(0, "eglInitialize failed\n"); + dbg(lvl_error, "eglInitialize failed\n"); goto error; } - dbg(0,"eglInitialize ok with version %d.%d\n",major,minor); + dbg(lvl_debug,"eglInitialize ok with version %d.%d\n",major,minor); eglBindAPI(EGL_OPENGL_ES_API); if (!eglChooseConfig(ret->egldisplay, attributeList, ret->config, sizeof(ret->config)/sizeof(EGLConfig), &nconfig)) { - dbg(0, "eglChooseConfig failed\n"); + dbg(lvl_error, "eglChooseConfig failed\n"); goto error; } if (nconfig != 1) { - dbg(0, "unexpected number of configs %d\n",nconfig); + dbg(lvl_error, "unexpected number of configs %d\n",nconfig); goto error; } ret->eglwindow = eglCreateWindowSurface(ret->egldisplay, ret->config[0], (NativeWindowType) window, NULL); if (ret->eglwindow == EGL_NO_SURFACE) { - dbg(0, "eglCreateWindowSurface failed"); + dbg(lvl_error, "eglCreateWindowSurface failed"); goto error; } ret->context = eglCreateContext(ret->egldisplay, ret->config[0], EGL_NO_CONTEXT, aEGLContextAttributes); if (ret->context == EGL_NO_CONTEXT) { - dbg(0, "eglCreateContext failed"); + dbg(lvl_error, "eglCreateContext failed"); goto error; } eglMakeCurrent(ret->egldisplay, ret->eglwindow, ret->eglwindow, ret->context); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/opengl/graphics_opengl_x11.c navit-0.5.0+dfsg.1/navit/graphics/opengl/graphics_opengl_x11.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/opengl/graphics_opengl_x11.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/opengl/graphics_opengl_x11.c 2016-01-02 22:29:50.000000000 +0000 @@ -86,29 +86,29 @@ x11->button(x11->data,event.xbutton.button,0,event.xbutton.x,event.xbutton.y); break; case ConfigureNotify: - dbg(0,"ConfigureNotify\n"); + dbg(lvl_debug,"ConfigureNotify\n"); break; case Expose: - dbg(0,"Expose\n"); + dbg(lvl_debug,"Expose\n"); break; case KeyPress: - dbg(0,"KeyPress\n"); + dbg(lvl_debug,"KeyPress\n"); break; case KeyRelease: - dbg(0,"KeyRelease\n"); + dbg(lvl_debug,"KeyRelease\n"); break; case MapNotify: - dbg(0,"MapNotify\n"); + dbg(lvl_debug,"MapNotify\n"); break; case MotionNotify: if (x11->motion) x11->motion(x11->data,event.xmotion.x,event.xmotion.y); break; case ReparentNotify: - dbg(0,"ReparentNotify\n"); + dbg(lvl_debug,"ReparentNotify\n"); break; default: - dbg(0,"type %d\n",event.type); + dbg(lvl_debug,"type %d\n",event.type); } } } @@ -126,14 +126,14 @@ *methods=&graphics_opengl_x11_methods; ret->display=XOpenDisplay(displayname); if (!ret->display) { - dbg(0,"failed to open display\n"); + dbg(lvl_error,"failed to open display\n"); goto error; } ret->watch=event_add_watch(ConnectionNumber(ret->display), event_watch_cond_read, ret->cb); ret->screen=XDefaultScreen(ret->display); ret->root_window=RootWindow(ret->display, ret->screen); if (!XMatchVisualInfo(ret->display, ret->screen, depth, TrueColor, &ret->visual)) { - dbg(0,"failed to find visual\n"); + dbg(lvl_error,"failed to find visual\n"); goto error; } ret->colormap=XCreateColormap(ret->display, ret->root_window, ret->visual.visual, AllocNone); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp navit-0.5.0+dfsg.1/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp 2016-01-02 22:29:50.000000000 +0000 @@ -65,7 +65,7 @@ { if (!paintev) { #ifndef QT_QPAINTER_NO_WIDGET - dbg(1,"update %d,%d %d x %d\n", r->x(), r->y(), r->width(), r->height()); + dbg(lvl_debug,"update %d,%d %d x %d\n", r->x(), r->y(), r->width(), r->height()); if (r->x() <= -r->width()) return; if (r->y() <= -r->height()) @@ -74,7 +74,7 @@ return; if (r->y() > gr->widget->pixmap->height()) return; - dbg(1,"update valid %d,%d %dx%d\n", r->x(), r->y(), r->width(), r->height()); + dbg(lvl_debug,"update valid %d,%d %dx%d\n", r->x(), r->y(), r->width(), r->height()); gr->widget->update(*r); #endif return; @@ -95,23 +95,14 @@ if (!overlay->overlay_disable && r->intersects(ovr)) { unsigned char *data; int i,size=ovr.width()*ovr.height(); -#if QT_VERSION < 0x040000 - QImage img=overlay->widget->pixmap->convertToImage(); - img.setAlphaBuffer(1); -#else QImage img=overlay->widget->pixmap->toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied); -#endif data=img.bits(); for (i = 0 ; i < size ; i++) { if (data[0] == overlay->rgba[0] && data[1] == overlay->rgba[1] && data[2] == overlay->rgba[2]) data[3]=overlay->rgba[3]; data+=4; } -#if QT_VERSION < 0x040000 - painter.drawImage(QPoint(ovr.x()-r->x(),ovr.y()-r->y()), img, 0); -#else painter.drawImage(QPoint(ovr.x()-r->x(),ovr.y()-r->y()), img); -#endif } overlay=overlay->next; } @@ -231,11 +222,7 @@ //############################################################################################################## static void gc_set_foreground(struct graphics_gc_priv *gc, struct color *c) { -#if QT_VERSION >= 0x040000 QColor col(c->r >> 8, c->g >> 8, c->b >> 8 /* , c->a >> 8 */); -#else - QColor col(c->r >> 8, c->g >> 8, c->b >> 8); -#endif gc->pen->setColor(col); gc->brush->setColor(col); gc->c=*c; @@ -340,11 +327,7 @@ static void draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count) { int i; -#if QT_VERSION >= 0x040000 QPolygon polygon; -#else - QPointArray polygon; -#endif for (i = 0 ; i < count ; i++) polygon.putPoints(i, 1, p[i].x, p[i].y); @@ -360,11 +343,7 @@ static void draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count) { int i; -#if QT_VERSION >= 0x040000 QPolygon polygon; -#else - QPointArray polygon; -#endif for (i = 0 ; i < count ; i++) polygon.putPoints(i, 1, p[i].x, p[i].y); @@ -380,7 +359,7 @@ //############################################################################################################## static void draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h) { - dbg(1,"gr=%p gc=%p %d,%d,%d,%d\n", gr, gc, p->x, p->y, w, h); + dbg(lvl_debug,"gr=%p gc=%p %d,%d,%d,%d\n", gr, gc, p->x, p->y, w, h); gr->painter->fillRect(p->x,p->y, w, h, *gc->brush); } @@ -407,15 +386,9 @@ #ifndef QT_QPAINTER_USE_FREETYPE QString tmp=QString::fromUtf8(text); #ifndef QT_NO_TRANSFORMATIONS -#if QT_VERSION >= 0x040000 QMatrix sav=gr->painter->worldMatrix(); QMatrix m(dx/65535.0,dy/65535.0,-dy/65535.0,dx/65535.0,p->x,p->y); painter->setWorldMatrix(m,TRUE); -#else - QWMatrix sav=gr->painter->worldMatrix(); - QWMatrix m(dx/65535.0,dy/65535.0,-dy/65535.0,dx/65535.0,p->x,p->y); - painter->setWorldMatrix(m,TRUE); -#endif painter->setPen(*fg->pen); painter->setFont(*font->font); painter->drawText(0, 0, tmp); @@ -445,16 +418,9 @@ g=*gp++; if (g->w && g->h) { unsigned char *data; -#if QT_VERSION < 0x040000 - QImage img(g->w+2, g->h+2, 32); - img.setAlphaBuffer(1); - data=img.bits(); - gr->freetype_methods.get_shadow(g,(unsigned char *)(img.jumpTable()),32,0,bgc,&transparent); -#else QImage img(g->w+2, g->h+2, QImage::Format_ARGB32_Premultiplied); data=img.bits(); - gr->freetype_methods.get_shadow(g,(unsigned char *)data,32,img.bytesPerLine(),bgc,&transparent); -#endif + gr->freetype_methods.get_shadow(g,(unsigned char *)data,img.bytesPerLine(),bgc,&transparent); painter->drawImage(((x+g->x)>>6)-1, ((y+g->y)>>6)-1, img); } @@ -471,16 +437,9 @@ g=*gp++; if (g->w && g->h) { unsigned char *data; -#if QT_VERSION < 0x040000 - QImage img(g->w, g->h, 32); - img.setAlphaBuffer(1); - data=img.bits(); - gr->freetype_methods.get_glyph(g,(unsigned char *)(img.jumpTable()),32,0,fgc,bgc,&transparent); -#else QImage img(g->w, g->h, QImage::Format_ARGB32_Premultiplied); data=img.bits(); - gr->freetype_methods.get_glyph(g,(unsigned char *)data,32,img.bytesPerLine(),fgc,bgc,&transparent); -#endif + gr->freetype_methods.get_glyph(g,(unsigned char *)data,img.bytesPerLine(),fgc,bgc,&transparent); painter->drawImage((x+g->x)>>6, (y+g->y)>>6, img); } x+=g->dx; @@ -500,16 +459,6 @@ gr->painter->drawPixmap(p->x, p->y, *img->pixmap); } -//############################################################################################################## -//# Description: -//# Comment: -//# Authors: Martin Schaller (04/2008) -//############################################################################################################## -static void draw_restore(struct graphics_priv *gr, struct point *p, int w, int h) -{ -} - - static void draw_drag(struct graphics_priv *gr, struct point *p) { @@ -547,28 +496,15 @@ //############################################################################################################## static void draw_mode(struct graphics_priv *gr, enum draw_mode_num mode) { - dbg(1,"mode for %p %d\n", gr, mode); + dbg(lvl_debug,"mode for %p %d\n", gr, mode); QRect r; if (mode == draw_mode_begin) { -#if QT_VERSION >= 0x040000 if (gr->widget->pixmap->paintingActive()) { gr->widget->pixmap->paintEngine()->painter()->end(); } -#endif gr->painter->begin(gr->widget->pixmap); -#if 0 - gr->painter->fillRect(QRect(QPoint(0,0), gr->widget->size()), *gr->background_gc->brush); -#endif } -#if QT_VERSION < 0x040000 - if (mode == draw_mode_cursor) { - gr->painter->begin(gr->widget); - } -#endif if (mode == draw_mode_end) { -#if 0 - if (gr->mode == draw_mode_begin) { -#endif gr->painter->end(); if (gr->parent) { if (gr->cleanup) { @@ -582,23 +518,9 @@ r.setRect(0, 0, gr->widget->pixmap->width(), gr->widget->pixmap->height()); qt_qpainter_draw(gr, &r, 0); } -#if 0 - } else { -#if QT_VERSION < 0x040000 - gr->painter->end(); -#endif - } -#endif -#if QT_VERSION >= 0x040000 if (!gr->parent) QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents|QEventLoop::ExcludeSocketNotifiers|QEventLoop::DeferredDeletion|QEventLoop::X11ExcludeTimers); -#endif } -#if QT_VERSION >= 0x040000 - if (mode == draw_mode_end_lazy) { - gr->painter->end(); - } -#endif gr->mode=mode; } @@ -607,7 +529,7 @@ //# Comment: //# Authors: Martin Schaller (04/2008) //############################################################################################################## -static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h,int alpha, int wraparound); +static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h,int wraparound); static int argc=1; static char *argv[]={NULL,NULL,NULL}; @@ -652,7 +574,7 @@ bool ok; if (!strcmp(type, "resize")) { - dbg(0,"resize %d %d\n",this_->w,this_->h); + dbg(lvl_debug,"resize %d %d\n",this_->w,this_->h); QSize size(this_->w,this_->h); this_->widget->do_resize(size); } @@ -762,7 +684,6 @@ draw_text, draw_image, NULL, - draw_restore, draw_drag, font_new, gc_new, @@ -783,7 +704,7 @@ //# Comment: //# Authors: Martin Schaller (04/2008) //############################################################################################################## -static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h,int alpha,int wraparound) +static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h,int wraparound) { *meth=graphics_methods; struct graphics_priv *ret=g_new0(struct graphics_priv, 1); @@ -821,14 +742,14 @@ static void event_qt_main_loop_quit(void) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); exit(0); } static struct event_watch * event_qt_add_watch(int fd, enum event_watch_cond cond, struct callback *cb) { - dbg(1,"enter fd=%d\n",(int)(long)fd); + dbg(lvl_debug,"enter fd=%d\n",(int)(long)fd); struct event_watch *ret=g_new0(struct event_watch, 1); ret->fd=fd; ret->cb=cb; @@ -868,21 +789,21 @@ static struct event_idle * event_qt_add_idle(int priority, struct callback *cb) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); return (struct event_idle *)event_qt_add_timeout(0, 1, cb); } static void event_qt_remove_idle(struct event_idle *ev) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); event_qt_remove_timeout((struct event_timeout *) ev); } static void event_qt_call_callback(struct callback_list *cb) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static struct event_methods event_qt_methods = { @@ -903,7 +824,7 @@ struct event_priv * event_qt_new(struct event_methods *meth) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); *meth=event_qt_methods; return NULL; } @@ -920,7 +841,7 @@ struct font_priv * (*font_freetype_new)(void *meth); struct attr *attr; - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); #ifdef QT_QPAINTER_USE_EVENT_QT if (event_gr) return NULL; @@ -934,7 +855,7 @@ #ifdef QT_QPAINTER_USE_FREETYPE font_freetype_new=(struct font_priv *(*)(void *))plugin_get_font_type("freetype"); if (!font_freetype_new) { - dbg(0,"no freetype\n"); + dbg(lvl_error,"no freetype\n"); return NULL; } #endif @@ -987,7 +908,7 @@ else ret->window_title=g_strdup("Navit"); - dbg(0,"return\n"); + dbg(lvl_debug,"return\n"); return ret; } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/qt_qpainter/graphics_qt_qpainter.h navit-0.5.0+dfsg.1/navit/graphics/qt_qpainter/graphics_qt_qpainter.h --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/qt_qpainter/graphics_qt_qpainter.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/qt_qpainter/graphics_qt_qpainter.h 2016-01-02 22:29:50.000000000 +0000 @@ -36,6 +36,9 @@ #include "navit/navit.h" #include +#if QT_VERSION < 0x040000 +#error "Support for Qt 3 was dropped in rev 5999." +#endif #ifndef QT_QPAINTER_USE_FREETYPE #define QT_QPAINTER_USE_FREETYPE 1 @@ -45,25 +48,6 @@ #include "navit/font/freetype/font_freetype.h" #endif -#if QT_VERSION < 0x040000 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef HAVE_QPE -#include -#endif -#ifndef QT_QPAINTER_USE_EVENT_QT -#define QT_QPAINTER_USE_EVENT_QT 1 -#endif -#else #include #include #if QT_VERSION >= 0x040200 @@ -92,8 +76,6 @@ #endif #endif -#endif - #ifdef QT_QPAINTER_USE_EMBEDDING #include #endif diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/qt_qpainter/RenderArea.cpp navit-0.5.0+dfsg.1/navit/graphics/qt_qpainter/RenderArea.cpp --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/qt_qpainter/RenderArea.cpp 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/qt_qpainter/RenderArea.cpp 2016-01-02 22:29:50.000000000 +0000 @@ -25,11 +25,7 @@ EmbeddedWidget::EmbeddedWidget(struct graphics_priv *priv, QWidget* child, QWidget *parent) : QX11EmbedWidget(parent) { this->gra=priv; -#if QT_VERSION >= 0x040000 this->setWindowTitle(priv->window_title); -#else - this->setCaption(priv->window_title); -#endif QStackedLayout* _outerLayout = new QStackedLayout(this); this->setLayout(_outerLayout); _outerLayout->addWidget(child); @@ -58,11 +54,7 @@ grabGesture(Qt::SwipeGesture); grabGesture(Qt::PanGesture); #endif -#if QT_VERSION >= 0x040000 setWindowTitle(priv->window_title); -#else - setCaption(priv->window_title); -#endif } #endif is_overlay=overlay; @@ -72,11 +64,7 @@ timer_callback=g_hash_table_new(NULL, NULL); watches=g_hash_table_new(NULL, NULL); #ifndef QT_QPAINTER_NO_WIDGET -#if QT_VERSION >= 0x040000 setAttribute(Qt::WA_OpaquePaintEvent, true); -#else - setBackgroundMode(QWidget::NoBackground); -#endif #endif #endif } @@ -98,7 +86,7 @@ { #if QT_VERSION >= 0x040700 if (event->type() == QEvent::Gesture) { - dbg(0,"gesture\n"); + dbg(lvl_debug,"gesture\n"); return true; } #endif @@ -135,8 +123,8 @@ QPainter painter(pixmap); QBrush brush; painter.fillRect(0, 0, size.width(), size.height(), brush); - dbg(0,"size %dx%d\n", size.width(), size.height()); - dbg(0,"pixmap %p %dx%d\n", pixmap, pixmap->width(), pixmap->height()); + dbg(lvl_debug,"size %dx%d\n", size.width(), size.height()); + dbg(lvl_debug,"pixmap %p %dx%d\n", pixmap, pixmap->width(), pixmap->height()); callback_list_call_attr_2(this->cbl, attr_resize, GINT_TO_POINTER(size.width()), GINT_TO_POINTER(size.height())); } @@ -234,15 +222,10 @@ void RenderArea::keyPressEvent(QKeyEvent *event) { QString str=event->text(); -#if QT_VERSION < 0x040000 - QCString cstr=str.utf8(); - const char *text=cstr; -#else const char *text=str.toUtf8().constData(); -#endif - dbg(0,"enter text='%s' 0x%x (%zu) key=%d\n", text, text[0], strlen(text), event->key()); + dbg(lvl_debug,"enter text='%s' 0x%x (%zu) key=%d\n", text, text[0], strlen(text), event->key()); if (!text || !text[0] || text[0] == 0x7f) { - dbg(0,"special key\n"); + dbg(lvl_debug,"special key\n"); switch (event->key()) { case 4099: { @@ -305,7 +288,7 @@ { #ifdef QT_QPAINTER_USE_EVENT_QT struct event_watch *ev=(struct event_watch *)g_hash_table_lookup(watches, (void *)fd); - dbg(1,"fd=%d ev=%p cb=%p\n", fd, ev, ev->cb); + dbg(lvl_debug,"fd=%d ev=%p cb=%p\n", fd, ev, ev->cb); callback_call_0(ev->cb); #endif } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/sdl/event.c navit-0.5.0+dfsg.1/navit/graphics/sdl/event.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/sdl/event.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/sdl/event.c 2016-01-02 22:29:50.000000000 +0000 @@ -48,7 +48,7 @@ int zAxis = SDL_JoystickGetAxis(accelerometer, 2); unsigned char new_orientation; - dbg(2, "x(%d) y(%d) z(%d) c(%d)\n", xAxis, yAxis, zAxis, + dbg(lvl_info, "x(%d) y(%d) z(%d) c(%d)\n", xAxis, yAxis, zAxis, sdl_orientation_count); if (zAxis > -30000) { @@ -74,7 +74,7 @@ sdl_orientation_count++; if (new_orientation != orientation) { - dbg(1, "x(%d) y(%d) z(%d) o(%d)\n", xAxis, yAxis, zAxis, + dbg(lvl_debug, "x(%d) y(%d) z(%d) o(%d)\n", xAxis, yAxis, zAxis, new_orientation); orientation = new_orientation; @@ -100,7 +100,7 @@ static Uint32 sdl_timer_callback(Uint32 interval, void* param) { struct event_timeout *timeout = (struct event_timeout*) param; - dbg(1, "timer(%p) multi(%d) interval(%d) fired\n", param, timeout->multi, + dbg(lvl_debug, "timer(%p) multi(%d) interval(%d) fired\n", param, timeout->multi, interval); SDL_Event event; @@ -169,7 +169,7 @@ for (idx = 0; idx < watch_list->len; idx++) { if (pfds[idx].revents == pfds[idx].events) { /* The requested event happened, notify mainloop! */ ew = g_ptr_array_index(watch_list, idx); - dbg(1, "watch(%p) event(%d) encountered\n", ew, + dbg(lvl_debug, "watch(%p) event(%d) encountered\n", ew, pfds[idx].revents); SDL_Event event; @@ -194,7 +194,7 @@ } static void event_sdl_watch_startthread(GPtrArray *watch_list) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); if (sdl_watch_thread) event_sdl_watch_stopthread(); @@ -206,7 +206,7 @@ } static void event_sdl_watch_stopthread() { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); if (sdl_watch_thread) { /* Notify the watch thread that the list of FDs will change */ pthread_kill(sdl_watch_thread, SIGUSR1); @@ -217,7 +217,7 @@ static struct event_watch * event_sdl_add_watch(int fd, enum event_watch_cond cond, struct callback *cb) { - dbg(1, "fd(%d) cond(%x) cb(%x)\n", fd, cond, cb); + dbg(lvl_debug, "fd(%d) cond(%x) cb(%x)\n", fd, cond, cb); event_sdl_watch_stopthread(); @@ -253,7 +253,7 @@ } static void event_sdl_remove_watch(struct event_watch *ew) { - dbg(1, "enter %p\n", ew); + dbg(lvl_debug, "enter %p\n", ew); event_sdl_watch_stopthread(); @@ -272,7 +272,7 @@ struct event_timeout * ret = g_new0(struct event_timeout, 1); if (!ret) return ret; - dbg(1, "timer(%p) multi(%d) interval(%d) cb(%p) added\n", ret, multi, + dbg(lvl_debug, "timer(%p) multi(%d) interval(%d) cb(%p) added\n", ret, multi, timeout, cb); ret->multi = multi; ret->cb = cb; @@ -282,14 +282,14 @@ } static void event_sdl_remove_timeout(struct event_timeout *to) { - dbg(2, "enter %p\n", to); + dbg(lvl_info, "enter %p\n", to); if (to != NULL) { int ret = to->id ? SDL_RemoveTimer(to->id) : SDL_TRUE; if (ret == SDL_FALSE) { - dbg(0, "SDL_RemoveTimer (%p) failed\n", to->id); + dbg(lvl_debug, "SDL_RemoveTimer (%p) failed\n", to->id); } else { g_free(to); - dbg(1, "timer(%p) removed\n", to); + dbg(lvl_debug, "timer(%p) removed\n", to); } } } @@ -309,7 +309,7 @@ static struct event_idle * event_sdl_add_idle(int priority, struct callback *cb) { - dbg(1, "add idle priority(%d) cb(%p)\n", priority, cb); + dbg(lvl_debug, "add idle priority(%d) cb(%p)\n", priority, cb); struct idle_task *task = g_new0(struct idle_task, 1); task->priority = priority; @@ -321,7 +321,7 @@ SDL_Event event; SDL_UserEvent userevent; - dbg(1, "poking eventloop because of new idle_events\n"); + dbg(lvl_debug, "poking eventloop because of new idle_events\n"); userevent.type = SDL_USEREVENT; userevent.code = SDL_USEREVENT_CODE_IDLE_EVENT; @@ -340,14 +340,14 @@ } static void event_sdl_remove_idle(struct event_idle *task) { - dbg(1, "remove task(%p)\n", task); + dbg(lvl_debug, "remove task(%p)\n", task); g_ptr_array_remove(idle_tasks, (gpointer) task); } /* callback */ static void event_sdl_call_callback(struct callback_list *cbl) { - dbg(1, "call_callback cbl(%p)\n", cbl); + dbg(lvl_debug, "call_callback cbl(%p)\n", cbl); SDL_Event event; SDL_UserEvent userevent; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/sdl/event_sdl.c navit-0.5.0+dfsg.1/navit/graphics/sdl/event_sdl.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/sdl/event_sdl.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/sdl/event_sdl.c 2016-01-02 22:29:50.000000000 +0000 @@ -48,7 +48,7 @@ { struct event_timeout *timeout=(struct event_timeout*)param; - dbg(1,"timer(%p) multi(%d) interval(%d) fired\n", param, timeout->multi, interval); + dbg(lvl_debug,"timer(%p) multi(%d) interval(%d) fired\n", param, timeout->multi, interval); SDL_Event event; SDL_UserEvent userevent; @@ -104,7 +104,7 @@ for (idx = 0; idx < watch_list->len; idx++ ) { if (pfds[idx].revents == pfds[idx].events) { /* The requested event happened, notify mainloop! */ ew = g_ptr_array_index (watch_list, idx); - dbg(1,"watch(%p) event(%d) encountered\n", ew, pfds[idx].revents); + dbg(lvl_debug,"watch(%p) event(%d) encountered\n", ew, pfds[idx].revents); SDL_Event event; SDL_UserEvent userevent; @@ -130,7 +130,7 @@ static void event_sdl_watch_startthread(GPtrArray *watch_list) { - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); if (sdl_watch_thread) event_sdl_watch_stopthread(); @@ -143,7 +143,7 @@ static void event_sdl_watch_stopthread() { - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); if (sdl_watch_thread) { /* Notify the watch thread that the list of FDs will change */ pthread_kill(sdl_watch_thread, SIGUSR1); @@ -155,7 +155,7 @@ static struct event_watch * event_sdl_add_watch(int fd, enum event_watch_cond cond, struct callback *cb) { - dbg(1,"fd(%d) cond(%x) cb(%x)\n", fd, cond, cb); + dbg(lvl_debug,"fd(%d) cond(%x) cb(%x)\n", fd, cond, cb); event_sdl_watch_stopthread(); @@ -193,7 +193,7 @@ static void event_sdl_remove_watch(struct event_watch *ew) { - dbg(1,"enter %p\n",ew); + dbg(lvl_debug,"enter %p\n",ew); event_sdl_watch_stopthread(); @@ -212,10 +212,10 @@ { struct event_timeout * ret = g_new0(struct event_timeout, 1); if(!ret) { - dbg (0,"g_new0 failed\n"); + dbg(lvl_error,"g_new0 failed\n"); return ret; } - dbg(1,"timer(%p) multi(%d) interval(%d) cb(%p) added\n",ret, multi, timeout, cb); + dbg(lvl_debug,"timer(%p) multi(%d) interval(%d) cb(%p) added\n",ret, multi, timeout, cb); ret->multi = multi; ret->cb = cb; ret->id = SDL_AddTimer(timeout, sdl_timer_callback, ret); @@ -226,17 +226,17 @@ static void event_sdl_remove_timeout(struct event_timeout *to) { - dbg(2,"enter %p\n", to); + dbg(lvl_info,"enter %p\n", to); if(to) { /* do not SDL_RemoveTimer if oneshot timer has already fired */ int ret = to->id == 0 ? SDL_TRUE : SDL_RemoveTimer(to->id); if (ret == SDL_FALSE) - dbg(0,"SDL_RemoveTimer (%p) failed\n", to->id); + dbg(lvl_error,"SDL_RemoveTimer (%p) failed\n", to->id); g_free(to); - dbg(1,"timer(%p) removed\n", to); + dbg(lvl_debug,"timer(%p) removed\n", to); } } @@ -258,7 +258,7 @@ static struct event_idle * event_sdl_add_idle(int priority, struct callback *cb) { - dbg(1,"add idle priority(%d) cb(%p)\n", priority, cb); + dbg(lvl_debug,"add idle priority(%d) cb(%p)\n", priority, cb); struct idle_task *task = g_new0(struct idle_task, 1); task->priority = priority; @@ -271,7 +271,7 @@ SDL_Event event; SDL_UserEvent userevent; - dbg(1,"poking eventloop because of new idle_events\n"); + dbg(lvl_debug,"poking eventloop because of new idle_events\n"); userevent.type = SDL_USEREVENT; userevent.code = SDL_USEREVENT_CODE_IDLE_EVENT; @@ -292,7 +292,7 @@ static void event_sdl_remove_idle(struct event_idle *task) { - dbg(1,"remove task(%p)\n", task); + dbg(lvl_debug,"remove task(%p)\n", task); g_ptr_array_remove(idle_tasks, (gpointer)task); } @@ -301,7 +301,7 @@ static void event_sdl_call_callback(struct callback_list *cbl) { - dbg(1,"call_callback cbl(%p)\n",cbl); + dbg(lvl_debug,"call_callback cbl(%p)\n",cbl); SDL_Event event; SDL_UserEvent userevent; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics/sdl/graphics_sdl.c navit-0.5.0+dfsg.1/navit/graphics/sdl/graphics_sdl.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics/sdl/graphics_sdl.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics/sdl/graphics_sdl.c 2016-01-02 22:29:50.000000000 +0000 @@ -187,7 +187,7 @@ static void graphics_destroy(struct graphics_priv *gr) { - dbg(0, "graphics_destroy %p %u\n", gr, gr->overlay_mode); + dbg(lvl_debug, "graphics_destroy %p %u\n", gr, gr->overlay_mode); if(gr->overlay_mode) { @@ -222,7 +222,7 @@ static void gc_set_linewidth(struct graphics_gc_priv *gc, int w) { - dbg(1, "gc_set_linewidth %p %d\n", gc, w); + dbg(lvl_debug, "gc_set_linewidth %p %d\n", gc, w); gc->linewidth = w; } @@ -235,7 +235,7 @@ static void gc_set_foreground(struct graphics_gc_priv *gc, struct color *c) { - dbg(1, "gc_set_foreground: %p %d %d %d %d\n", gc, c->a, c->r, c->g, c->b); + dbg(lvl_debug, "gc_set_foreground: %p %d %d %d %d\n", gc, c->a, c->r, c->g, c->b); gc->fore_r = c->r/256; gc->fore_g = c->g/256; gc->fore_b = c->b/256; @@ -245,7 +245,7 @@ static void gc_set_background(struct graphics_gc_priv *gc, struct color *c) { - dbg(1, "gc_set_background: %p %d %d %d %d\n", gc, c->a, c->r, c->g, c->b); + dbg(lvl_debug, "gc_set_background: %p %d %d %d %d\n", gc, c->a, c->r, c->g, c->b); gc->back_r = c->r/256; gc->back_g = c->g/256; gc->back_b = c->b/256; @@ -294,7 +294,7 @@ else { /* TODO: debug "colour parse errors" on xpm */ - dbg(0,"image_new on '%s' failed: %s\n", name, IMG_GetError()); + dbg(lvl_error,"image_new on '%s' failed: %s\n", name, IMG_GetError()); g_free(gi); gi = NULL; } @@ -331,7 +331,7 @@ vx[i] = x; vy[i] = y; - dbg(1, "draw_polygon: %p %i %d,%d\n", gc, i, p[i].x, p[i].y); + dbg(lvl_debug, "draw_polygon: %p %i %d,%d\n", gc, i, p[i].x, p[i].y); } if(gr->aa) @@ -362,7 +362,7 @@ return; } - dbg(1, "draw_rectangle: %d %d %d %d r=%d g=%d b=%d a=%d\n", p->x, p->y, w, h, + dbg(lvl_debug, "draw_rectangle: %d %d %d %d r=%d g=%d b=%d a=%d\n", p->x, p->y, w, h, gc->fore_r, gc->fore_g, gc->fore_b, gc->fore_a); if(w > gr->screen->w) { @@ -495,10 +495,10 @@ y_lw_adj = round(cos(angle)*(float)lw/2.0); if((x_lw_adj < 0) || (y_lw_adj < 0)) { - dbg(1, "i=%d\n", i); - dbg(1, " %d,%d->%d,%d\n", p[i].x, p[i].y, p[i+1].x, p[i+1].y); - dbg(1, " lw=%d angle=%f\n", lw, 180.0 * angle / M_PI); - dbg(1, " x_lw_adj=%d y_lw_adj=%d\n", x_lw_adj, y_lw_adj); + dbg(lvl_debug, "i=%d\n", i); + dbg(lvl_debug, " %d,%d->%d,%d\n", p[i].x, p[i].y, p[i+1].x, p[i+1].y); + dbg(lvl_debug, " lw=%d angle=%f\n", lw, 180.0 * angle / M_PI); + dbg(lvl_debug, " x_lw_adj=%d y_lw_adj=%d\n", x_lw_adj, y_lw_adj); } } @@ -588,7 +588,7 @@ if (new_size > ft_buffer_size) { g_free (ft_buffer); ft_buffer = g_malloc (new_size); - dbg(1, "old_size(%u) new_size(%u) ft_buffer(%p)\n", ft_buffer_size, new_size, ft_buffer); + dbg(lvl_debug, "old_size(%u) new_size(%u) ft_buffer(%p)\n", ft_buffer_size, new_size, ft_buffer); ft_buffer_size = new_size; } } @@ -650,7 +650,7 @@ stride = (g->w + 2) * 4; if (color) { resize_ft_buffer(stride * (g->h + 2)); - gr->freetype_methods.get_shadow(g, ft_buffer, 32, stride, &white, &transparent); + gr->freetype_methods.get_shadow(g, ft_buffer, stride, &white, &transparent); SDL_Surface *glyph_surface = SDL_CreateRGBSurfaceFrom(ft_buffer, g->w + 2, g->h + 2, @@ -684,7 +684,7 @@ stride = g->w; if (bg) { resize_ft_buffer(stride * g->h * 4); - gr->freetype_methods.get_glyph(g, ft_buffer, 32, + gr->freetype_methods.get_glyph(g, ft_buffer, stride * 4, &black, &white, &transparent); SDL_Surface *glyph_surface = @@ -704,7 +704,7 @@ } stride *= 4; resize_ft_buffer(stride * g->h); - gr->freetype_methods.get_glyph(g, ft_buffer, 32, stride, + gr->freetype_methods.get_glyph(g, ft_buffer, stride, &black, &white, &transparent); int ii, jj; @@ -746,7 +746,7 @@ int color = 1; if (!font) { - dbg(0, "no font, returning\n"); + dbg(lvl_error, "no font, returning\n"); return; } t = gr->freetype_methods.text_new(text, @@ -780,15 +780,9 @@ } static void -draw_restore(struct graphics_priv *gr, struct point *p, int w, int h) -{ - dbg(1, "draw_restore\n"); -} - -static void background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc) { - dbg(1, "background_gc\n"); + dbg(lvl_debug, "background_gc\n"); } @@ -805,7 +799,7 @@ } else { - dbg(1, "draw_mode: %d\n", mode); + dbg(lvl_debug, "draw_mode: %d\n", mode); if(mode == draw_mode_end) { @@ -846,7 +840,7 @@ } static struct graphics_priv * -overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int alpha, int wraparound); +overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound); static int window_fullscreen(struct window *win, int on) { @@ -903,7 +897,6 @@ draw_text, draw_image, NULL, /*draw_image_warp */ - draw_restore, draw_drag, NULL, /* font_new */ gc_new, @@ -919,7 +912,7 @@ }; static struct graphics_priv * -overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h,int alpha, int wraparound) +overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h,int wraparound) { struct graphics_priv *ov; Uint32 rmask, gmask, bmask, amask; @@ -934,11 +927,11 @@ } if(i == OVERLAY_MAX) { - dbg(0, "too many overlays! increase OVERLAY_MAX\n"); + dbg(lvl_error, "too many overlays! increase OVERLAY_MAX\n"); return NULL; } - dbg(1, "overlay_new %d %d %d %u %u (%x, %x, %x ,%x, %d)\n", i, + dbg(lvl_debug, "overlay_new %d %d %d %u %u (%x, %x, %x ,%x, %d)\n", i, p->x, p->y, w, @@ -1032,7 +1025,7 @@ gr = the_graphics; } else { - dbg(0,"graphics_idle: graphics not set!\n"); + dbg(lvl_error,"graphics_idle: graphics not set!\n"); return FALSE; } } @@ -1077,7 +1070,7 @@ if (idle_tasks_idx >= idle_tasks->len) idle_tasks_idx = 0; - dbg(3,"idle_tasks_idx(%d)\n",idle_tasks_idx); + dbg(lvl_debug,"idle_tasks_idx(%d)\n",idle_tasks_idx); task = (struct idle_task *)g_ptr_array_index(idle_tasks,idle_tasks_idx); if (idle_tasks_idx == 0) // only execute tasks with lowest priority value @@ -1102,7 +1095,7 @@ } #ifdef USE_WEBOS - dbg(5,"SDL_Event %d\n", ev.type); + dbg(lvl_debug,"SDL_Event %d\n", ev.type); #endif switch(ev.type) { @@ -1227,7 +1220,7 @@ key_mod &= ~(WEBOS_KEY_MOD_ORANGE_STICKY); } else { - dbg(0,"Unknown key sym: %x\n", ev.key.keysym.sym); + dbg(lvl_error,"Unknown key sym: %x\n", ev.key.keysym.sym); } #else /* return unicode chars when they can be converted to ascii */ @@ -1237,7 +1230,7 @@ } } - dbg(2,"key mod: 0x%x\n", key_mod); + dbg(lvl_info,"key mod: 0x%x\n", key_mod); if (keybuf[0]) { callback_list_call_attr_1(gr->cbl, attr_keypress, (void *)keybuf); @@ -1252,7 +1245,7 @@ case SDL_MOUSEBUTTONDOWN: { - dbg(1, "SDL_MOUSEBUTTONDOWN %d %d %d %d %d\n", + dbg(lvl_debug, "SDL_MOUSEBUTTONDOWN %d %d %d %d %d\n", ev.button.which, ev.button.button, ev.button.state, @@ -1267,7 +1260,7 @@ case SDL_MOUSEBUTTONUP: { - dbg(1, "SDL_MOUSEBUTTONUP %d %d %d %d %d\n", + dbg(lvl_debug, "SDL_MOUSEBUTTONUP %d %d %d %d %d\n", ev.button.which, ev.button.button, ev.button.state, @@ -1276,7 +1269,7 @@ p.x = ev.button.x; p.y = ev.button.y; - callback_list_call_attr_3(gr->cbl, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER((int)ev.button.button), (void *)&p); + callback_list_call_attr_3(gr->cbl, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER((int)ev.button.button), (void *)&p); break; } @@ -1309,7 +1302,7 @@ case SDL_USEREVENT: { SDL_UserEvent userevent = ev.user; - dbg(9,"received SDL_USEREVENT type(%x) code(%x)\n",userevent.type,userevent.code); + dbg(lvl_info,"received SDL_USEREVENT type(%x) code(%x)\n",userevent.type,userevent.code); if (userevent.type != SDL_USEREVENT) break; @@ -1329,28 +1322,28 @@ else if(userevent.code == SDL_USEREVENT_CODE_TIMER) { struct callback *cb = (struct callback *)userevent.data1; - dbg(1, "SDL_USEREVENT timer received cb(%p)\n", cb); + dbg(lvl_debug, "SDL_USEREVENT timer received cb(%p)\n", cb); callback_call_0(cb); } else if(userevent.code == SDL_USEREVENT_CODE_WATCH) { struct callback *cb = (struct callback *)userevent.data1; - dbg(1, "SDL_USEREVENT watch received cb(%p)\n", cb); + dbg(lvl_debug, "SDL_USEREVENT watch received cb(%p)\n", cb); callback_call_0(cb); } else if(userevent.code == SDL_USEREVENT_CODE_CALL_CALLBACK) { struct callback_list *cbl = (struct callback_list *)userevent.data1; - dbg(1, "SDL_USEREVENT call_callback received cbl(%p)\n", cbl); + dbg(lvl_debug, "SDL_USEREVENT call_callback received cbl(%p)\n", cbl); callback_list_call_0(cbl); } else if(userevent.code == SDL_USEREVENT_CODE_IDLE_EVENT) { - dbg(1, "SDL_USEREVENT idle_event received\n"); + dbg(lvl_debug, "SDL_USEREVENT idle_event received\n"); } #ifdef USE_WEBOS_ACCELEROMETER else if(userevent.code == SDL_USEREVENT_CODE_ROTATE) { - dbg(1, "SDL_USEREVENT rotate received\n"); + dbg(lvl_debug, "SDL_USEREVENT rotate received\n"); switch(gr->orientation) { case WEBOS_ORIENTATION_PORTRAIT: @@ -1373,14 +1366,14 @@ } #endif else - dbg(1, "unknown SDL_USEREVENT\n"); + dbg(lvl_warning, "unknown SDL_USEREVENT\n"); break; } #endif default: { - dbg(1, "SDL_Event %d\n", ev.type); + dbg(lvl_debug, "SDL_Event %d\n", ev.type); break; } } @@ -1430,7 +1423,7 @@ int)) this->freetype_methods.font_new; meth->get_text_bbox = (void*) this->freetype_methods.get_text_bbox; - dbg(1,"Calling SDL_Init\n"); + dbg(lvl_debug,"Calling SDL_Init\n"); #ifdef USE_WEBOS # ifdef USE_WEBOS_ACCELEROMETER ret = SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_JOYSTICK); @@ -1442,18 +1435,18 @@ #endif if(ret < 0) { - dbg(0,"SDL_Init failed %d\n", ret); + dbg(lvl_error,"SDL_Init failed %d\n", ret); this->freetype_methods.destroy(); g_free(this); return NULL; } #ifdef USE_WEBOS - dbg(1,"Calling PDL_Init(0)\n"); + dbg(lvl_debug,"Calling PDL_Init(0)\n"); ret = PDL_Init(0); if(ret < 0) { - dbg(0,"PDL_Init failed %d\n", ret); + dbg(lvl_error,"PDL_Init failed %d\n", ret); this->freetype_methods.destroy(); g_free(this); return NULL; @@ -1463,7 +1456,7 @@ #else if (! event_request_system("glib","graphics_sdl_new")) { #endif - dbg(0,"event_request_system failed"); + dbg(lvl_error,"event_request_system failed"); this->freetype_methods.destroy(); g_free(this); return NULL; @@ -1496,7 +1489,7 @@ if(this->screen == NULL) { - dbg(0,"SDL_SetVideoMode failed\n"); + dbg(lvl_error,"SDL_SetVideoMode failed\n"); this->freetype_methods.destroy(); g_free(this); #ifdef USE_WEBOS @@ -1510,7 +1503,7 @@ w = this->screen->w; h = this->screen->h; - dbg(0, "using screen %ix%i@%i\n", + dbg(lvl_debug, "using screen %ix%i@%i\n", this->screen->w, this->screen->h, this->screen->format->BytesPerPixel * 8); #ifdef USE_WEBOS_ACCELEROMETER @@ -1537,7 +1530,7 @@ #ifdef USE_WEBOS if(the_graphics!=NULL) { - dbg(0,"graphics_sdl_new: graphics struct already set: %d!\n", the_graphics_count); + dbg(lvl_debug,"graphics_sdl_new: graphics struct already set: %d!\n", the_graphics_count); } the_graphics = this; the_graphics_count++; @@ -1563,7 +1556,7 @@ { struct event_timeout *timeout=(struct event_timeout*)param; - dbg(1,"timer(%p) multi(%d) interval(%d) fired\n", param, timeout->multi, interval); + dbg(lvl_debug,"timer(%p) multi(%d) interval(%d) fired\n", param, timeout->multi, interval); SDL_Event event; SDL_UserEvent userevent; @@ -1620,7 +1613,7 @@ for (idx = 0; idx < watch_list->len; idx++ ) { if (pfds[idx].revents == pfds[idx].events) { /* The requested event happened, notify mainloop! */ ew = g_ptr_array_index (watch_list, idx); - dbg(1,"watch(%p) event(%d) encountered\n", ew, pfds[idx].revents); + dbg(lvl_debug,"watch(%p) event(%d) encountered\n", ew, pfds[idx].revents); SDL_Event event; SDL_UserEvent userevent; @@ -1646,7 +1639,7 @@ static void event_sdl_watch_startthread(GPtrArray *watch_list) { - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); if (sdl_watch_thread) event_sdl_watch_stopthread(); @@ -1659,7 +1652,7 @@ static void event_sdl_watch_stopthread() { - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); if (sdl_watch_thread) { /* Notify the watch thread that the list of FDs will change */ pthread_kill(sdl_watch_thread, SIGUSR1); @@ -1671,7 +1664,7 @@ static struct event_watch * event_sdl_add_watch(int fd, enum event_watch_cond cond, struct callback *cb) { - dbg(1,"fd(%d) cond(%x) cb(%x)\n", fd, cond, cb); + dbg(lvl_debug,"fd(%d) cond(%x) cb(%x)\n", fd, cond, cb); event_sdl_watch_stopthread(); @@ -1709,7 +1702,7 @@ static void event_sdl_remove_watch(struct event_watch *ew) { - dbg(1,"enter %p\n",ew); + dbg(lvl_debug,"enter %p\n",ew); event_sdl_watch_stopthread(); @@ -1728,10 +1721,10 @@ { struct event_timeout * ret = g_new0(struct event_timeout, 1); if(!ret) { - dbg (0,"g_new0 failed\n"); + dbg(lvl_error,"g_new0 failed\n"); return ret; } - dbg(1,"timer(%p) multi(%d) interval(%d) cb(%p) added\n",ret, multi, timeout, cb); + dbg(lvl_debug,"timer(%p) multi(%d) interval(%d) cb(%p) added\n",ret, multi, timeout, cb); ret->multi = multi; ret->cb = cb; ret->id = SDL_AddTimer(timeout, sdl_timer_callback, ret); @@ -1742,17 +1735,17 @@ static void event_sdl_remove_timeout(struct event_timeout *to) { - dbg(2,"enter %p\n", to); + dbg(lvl_info,"enter %p\n", to); if(to) { /* do not SDL_RemoveTimer if oneshot timer has already fired */ int ret = to->id == 0 ? SDL_TRUE : SDL_RemoveTimer(to->id); if (ret == SDL_FALSE) - dbg(0,"SDL_RemoveTimer (%p) failed\n", to->id); + dbg(lvl_error,"SDL_RemoveTimer (%p) failed\n", to->id); g_free(to); - dbg(1,"timer(%p) removed\n", to); + dbg(lvl_debug,"timer(%p) removed\n", to); } } @@ -1774,7 +1767,7 @@ static struct event_idle * event_sdl_add_idle(int priority, struct callback *cb) { - dbg(1,"add idle priority(%d) cb(%p)\n", priority, cb); + dbg(lvl_debug,"add idle priority(%d) cb(%p)\n", priority, cb); struct idle_task *task = g_new0(struct idle_task, 1); task->priority = priority; @@ -1787,7 +1780,7 @@ SDL_Event event; SDL_UserEvent userevent; - dbg(1,"poking eventloop because of new idle_events\n"); + dbg(lvl_debug,"poking eventloop because of new idle_events\n"); userevent.type = SDL_USEREVENT; userevent.code = SDL_USEREVENT_CODE_IDLE_EVENT; @@ -1808,7 +1801,7 @@ static void event_sdl_remove_idle(struct event_idle *task) { - dbg(1,"remove task(%p)\n", task); + dbg(lvl_debug,"remove task(%p)\n", task); g_ptr_array_remove(idle_tasks, (gpointer)task); } @@ -1817,7 +1810,7 @@ static void event_sdl_call_callback(struct callback_list *cbl) { - dbg(1,"call_callback cbl(%p)\n",cbl); + dbg(lvl_debug,"call_callback cbl(%p)\n",cbl); SDL_Event event; SDL_UserEvent userevent; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics.c navit-0.5.0+dfsg.1/navit/graphics.c --- navit-0.5.0~svn5900+dfsg.1/navit/graphics.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics.c 2016-01-02 22:29:50.000000000 +0000 @@ -58,6 +58,15 @@ //# Comment: //# Authors: Martin Schaller (04/2008) //############################################################################################################## +/** + * @brief graphics object + * A graphics object serves as the target for drawing operations. + * It encapsulates various settings, and a drawing target, such as an image buffer or a window. + * Currently, in Navit, there is always one main graphics object, which is used to draw the + * map, and optionally additional graphics objects for overlays. + * @see graphics_overlay_new() + * @see struct graphics_gc + */ struct graphics { struct graphics* parent; @@ -176,6 +185,20 @@ return NULL; } +/** + * @brief Sets a generic attribute of the graphics instance + * + * This will only set one of the supported generic graphics attributes (currently {@code gamma}, + * {@code brightness}, {@code contrast} or {@code font_size}) and fail for other attribute types. + * + * To set an attribute provided by a graphics plugin, use {@link graphics_set_attr(struct graphics *, struct attr *)} + * instead. + * + * @param gra The graphics instance + * @param attr The attribute to set + * + * @return True if the attribute was set, false if not + */ static int graphics_set_attr_do(struct graphics *gra, struct attr *attr) { @@ -200,11 +223,26 @@ return 1; } +/** + * @brief Sets an attribute of the graphics instance + * + * This method first tries to set one of the private attributes implemented by the current graphics + * plugin. If this fails, it tries to set one of the generic attributes. + * + * If the graphics plugin does not supply a {@code set_attr} method, this method currently does nothing + * and returns true, even if the attribute is a generic one. + * + * @param gra The graphics instance + * @param attr The attribute to set + * + * @return True if the attribute was successfully set, false otherwise. + */ int graphics_set_attr(struct graphics *gra, struct attr *attr) { int ret=1; - dbg(0,"enter\n"); + /* FIXME if gra->meth doesn't have a setter, we don't even try the generic attrs - is that what we want? */ + dbg(lvl_debug,"enter\n"); if (gra->meth.set_attr) ret=gra->meth.set_attr(gra->priv, attr); if (!ret) @@ -228,20 +266,26 @@ struct graphics * graphics_new(struct attr *parent, struct attr **attrs) { struct graphics *this_; - struct attr *type_attr; + struct attr *type_attr, cbl_attr; struct graphics_priv * (*graphicstype_new)(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl); if (! (type_attr=attr_search(attrs, NULL, attr_type))) { + dbg(lvl_error,"Graphics plugin type is not set.\n"); return NULL; } graphicstype_new=plugin_get_graphics_type(type_attr->u.str); - if (! graphicstype_new) + if (! graphicstype_new) { + dbg(lvl_error,"Failed to load graphics plugin %s.\n", type_attr->u.str); return NULL; + } this_=g_new0(struct graphics, 1); - this_->cbl=callback_list_new(); - this_->priv=(*graphicstype_new)(parent->u.navit, &this_->meth, attrs, this_->cbl); this_->attrs=attr_list_dup(attrs); + this_->cbl=callback_list_new(); + cbl_attr.type=attr_callback_list; + cbl_attr.u.callback_list=this_->cbl; + this_->attrs=attr_generic_add_attr(this_->attrs, &cbl_attr); + this_->priv=(*graphicstype_new)(parent->u.navit, &this_->meth, this_->attrs, this_->cbl); this_->brightness=0; this_->contrast=65536; this_->gamma=65536; @@ -255,9 +299,29 @@ } /** - * FIXME - * @param <> - * @returns <> + * @brief Gets an attribute of the graphics instance + * + * This function searches the attribute list of the graphics object for an attribute of a given type and + * stores it in the attr parameter. + *

+ * Searching for attr_any or attr_any_xml is supported. + *

+ * An iterator can be specified to get multiple attributes of the same type: + * The first call will return the first match from attr; each subsequent call + * with the same iterator will return the next match. If no more matching + * attributes are found in either of them, false is returned. + *

+ * Note that currently this will only return the generic attributes which can be set with + * {@link graphics_set_attr_do(struct graphics *, struct attr *)}. Attributes implemented by a graphics + * plugin cannot be retrieved with this method. + * + * @param this The graphics instance + * @param type The attribute type to search for + * @param attr Points to a {@code struct attr} which will receive the attribute + * @param iter An iterator. This parameter may be NULL. + * + * @return True if a matching attribute was found, false if not. + * * @author Martin Schaller (04/2008) */ int graphics_get_attr(struct graphics *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter) @@ -266,19 +330,31 @@ } /** - * FIXME - * @param <> - * @returns <> + * @brief Create a new graphics overlay. + * An overlay is a graphics object that is independent of the main graphics object. When + * drawing everything to a window, the overlay will be shown on top of the main graphics + * object. Navit uses overlays for OSD elements and for the vehicle on the map. + * This allows updating OSD elements and the vehicle without redrawing the map. + * + * @param parent parent graphics context (should be the main graphics context as returned by + * graphics_new) + * @param p drawing position for the overlay + * @param w width of overlay + * @param h height of overlay + * @param wraparound use wraparound (0/1). If set, position, width and height "wrap around": + * negative position coordinates wrap around the window, negative width/height specify + * difference to window width/height. + * @returns new overlay * @author Martin Schaller (04/2008) */ -struct graphics * graphics_overlay_new(struct graphics *parent, struct point *p, int w, int h, int alpha, int wraparound) +struct graphics * graphics_overlay_new(struct graphics *parent, struct point *p, int w, int h, int wraparound) { struct graphics *this_; struct point_rect pr; if (!parent->meth.overlay_new) return NULL; this_=g_new0(struct graphics, 1); - this_->priv=parent->meth.overlay_new(parent->priv, &this_->meth, p, w, h, alpha, wraparound); + this_->priv=parent->meth.overlay_new(parent->priv, &this_->meth, p, w, h, wraparound); this_->image_cache_hash = parent->image_cache_hash; this_->parent = parent; pr.lu.x=0; @@ -295,23 +371,22 @@ } /** - * @brief Alters the size, position, alpha and wraparound for an overlay + * @brief Alters the size, position and wraparound for an overlay * * @param this_ The overlay's graphics struct * @param p The new position of the overlay * @param w The new width of the overlay * @param h The new height of the overlay - * @param alpha The new alpha of the overlay * @param wraparound The new wraparound of the overlay */ void -graphics_overlay_resize(struct graphics *this_, struct point *p, int w, int h, int alpha, int wraparound) +graphics_overlay_resize(struct graphics *this_, struct point *p, int w, int h, int wraparound) { if (! this_->meth.overlay_resize) { return; } - this_->meth.overlay_resize(this_->priv, p, w, h, alpha, wraparound); + this_->meth.overlay_resize(this_->priv, p, w, h, wraparound); } static void @@ -461,9 +536,9 @@ } /** - * FIXME - * @param <> - * @returns <> + * Create a new graphics context. + * @param gra associated graphics object for the new context + * @returns new graphics context * @author Martin Schaller (04/2008) */ struct graphics_gc * graphics_gc_new(struct graphics *gra) @@ -477,9 +552,8 @@ } /** - * FIXME - * @param <> - * @returns <> + * Destroy a graphics context, freeing associated resources. + * @param gc context to destroy * @author Martin Schaller (04/2008) */ void graphics_gc_destroy(struct graphics_gc *gc) @@ -524,9 +598,9 @@ } /** - * FIXME - * @param <> - * @returns <> + * Set foreground color. + * @param gc graphics context to set color for + * @param c color to set * @author Martin Schaller (04/2008) */ void graphics_gc_set_foreground(struct graphics_gc *gc, struct color *c) @@ -562,18 +636,6 @@ * @returns <> * @author Martin Schaller (04/2008) */ -void graphics_gc_set_stipple(struct graphics_gc *gc, struct graphics_image *img) -{ - gc->meth.gc_set_stipple(gc->priv, img ? img->priv : NULL); -} - - -/** - * FIXME - * @param <> - * @returns <> - * @author Martin Schaller (04/2008) -*/ void graphics_gc_set_linewidth(struct graphics_gc *gc, int width) { gc->meth.gc_set_linewidth(gc->priv, width); @@ -608,36 +670,85 @@ static void image_new_helper(struct graphics *gra, struct graphics_image *this_, char *path, char *name, int width, int height, int rotate, int zip) { - int i; - for (i = 1 ; i <= 6 ; i++) { + int i=0; + int stdsizes[]={8,12,16,22,24,32,36,48,64,72,96,128,192,256}; + const int numstdsizes=sizeof(stdsizes)/sizeof(int); + int sz; + int mode=1; + int bmstd=0; + sz=width>0?width:height; + while (mode<=8) { char *new_name=NULL; - switch (i) { + int n; + switch (mode) { case 1: /* The best variant both for cpu usage and quality would be prescaled png of a needed size */ + mode++; if (width != -1 && height != -1) { new_name=g_strdup_printf("%s_%d_%d.png", name, width, height); } break; case 2: + mode++; /* Try to load image by the exact name given by user. For example, if she wants to scale some prescaled png variant to a new size given as function params, or have default png image to be displayed unscaled. */ new_name=g_strdup(path); break; case 3: + mode++; /* Next, try uncompressed and compressed svgs as they should give best quality but rendering might take more cpu resources when the image is displayed for the first time */ new_name=g_strdup_printf("%s.svg", name); break; case 4: + mode++; new_name=g_strdup_printf("%s.svgz", name); break; case 5: - /* Scaling the default png to the needed size may give some quality loss */ + mode++; + i=0; + /* If we have no size specifiers, try the default png now */ + if(sz<=0) { + new_name=g_strdup_printf("%s.png", name); + break; + } + /* Find best matching size from standard row */ + for(bmstd=0;bmstdsz) + break; + i=1; + /* Fall through */ + case 6: + /* Select best matching image from standard row */ + if(sz>0) { + /* If size were specified, start with bmstd and then try standard sizes in row + * bmstd, bmstd+1, bmstd+2, .. numstdsizes-1, bmstd-1, bmstd-2, .., 0 */ + n=bmstd+i; + if((bmstd+i)>=numstdsizes) + n=numstdsizes-i-1; + + if(++i==numstdsizes) + mode++; + } else { + /* If no size were specified, start with the smallest standard size and then try following ones */ + n=i++; + if(i==numstdsizes) + mode+=2; + } + if(n<0||n>=numstdsizes) + break; + new_name=g_strdup_printf("%s_%d_%d.png", name, stdsizes[n],stdsizes[n]); + break; + + case 7: + /* Scaling the default prescaled png of unknown size to the needed size will give random quality loss */ + mode++; new_name=g_strdup_printf("%s.png", name); break; - case 6: + case 8: /* xpm format is used as a last resort, because its not widely supported and we are moving to svg and png formats */ + mode++; new_name=g_strdup_printf("%s.xpm", name); break; } @@ -646,7 +757,7 @@ this_->width=width; this_->height=height; - dbg(2,"Trying to load image '%s' for '%s' at %dx%d\n", new_name, path, width, height); + dbg(lvl_debug,"Trying to load image '%s' for '%s' at %dx%d\n", new_name, path, width, height); if (zip) { unsigned char *start; int len; @@ -662,7 +773,7 @@ this_->priv=gra->meth.image_new(gra->priv, &this_->meth, new_name, &this_->width, &this_->height, &this_->hot, rotate); } if (this_->priv) { - dbg(1,"Using image '%s' for '%s' at %dx%d\n", new_name, path, width, height); + dbg(lvl_info,"Using image '%s' for '%s' at %dx%d\n", new_name, path, width, height); g_free(new_name); break; } @@ -684,10 +795,13 @@ { struct graphics_image *this_; char* hash_key = g_strdup_printf("%s*%d*%d*%d",path,w,h,rotate); + struct file_wordexp *we; + int i; + char **paths; if ( g_hash_table_lookup_extended( gra->image_cache_hash, hash_key, NULL, (gpointer)&this_) ) { g_free(hash_key); - dbg(3,"Found cached image%sfor '%s'\n",this_?" ":" miss ",path); + dbg(lvl_debug,"Found cached image%sfor '%s'\n",this_?" ":" miss ",path); return this_; } @@ -695,15 +809,19 @@ this_->height=h; this_->width=w; - if(!this_->priv) { + we=file_wordexp_new(path); + paths=file_wordexp_get_array(we); + + for(i=0;ipriv;i++) { char *ext; char *s, *name; - int len=strlen(path); + char *pathi=paths[i]; + int len=strlen(pathi); int i,k; int newwidth=-1, newheight=-1; - ext=g_utf8_strrchr(path,-1,'.'); - i=path-ext+len; + ext=g_utf8_strrchr(pathi,-1,'.'); + i=pathi-ext+len; /* Dont allow too long or too short file name extensions*/ if(ext && ((i>5) || (i<1))) @@ -713,10 +831,10 @@ if(ext) s=ext-1; else - s=path+len; + s=pathi+len; k=1; - while(s>path && g_ascii_isdigit(*s)) { + while(s>pathi && g_ascii_isdigit(*s)) { if(newheight<0) newheight=0; newheight+=(*s-'0')*k; @@ -724,10 +842,10 @@ s--; } - if(k>1 && s>path && *s=='_') { + if(k>1 && s>pathi && *s=='_') { k=1; s--; - while(s>path && g_ascii_isdigit(*s)) { + while(s>pathi && g_ascii_isdigit(*s)) { if(newwidth<0) newwidth=0; newwidth+=(*s-'0')*k;; @@ -736,13 +854,13 @@ } } - if(k==1 || s<=path || *s!='_') { + if(k==1 || s<=pathi || *s!='_') { newwidth=-1; newheight=-1; if(ext) s=ext; else - s=path+len; + s=pathi+len; } @@ -752,18 +870,20 @@ if(h!=-1) newheight=h; - name=g_strndup(path,s-path); + name=g_strndup(pathi,s-pathi); #if 0 if (!strstr(name,"test.zip")) #endif - image_new_helper(gra, this_, path, name, newwidth, newheight, rotate, 0); - if (!this_->priv && strstr(path, ".zip/")) - image_new_helper(gra, this_, path, name, newwidth, newheight, rotate, 1); + image_new_helper(gra, this_, pathi, name, newwidth, newheight, rotate, 0); + if (!this_->priv && strstr(pathi, ".zip/")) + image_new_helper(gra, this_, pathi, name, newwidth, newheight, rotate, 1); g_free(name); } + file_wordexp_destroy(we); + if (! this_->priv) { - dbg(0,"No image for '%s'\n", path); + dbg(lvl_error,"No image for '%s'\n", path); g_free(this_); this_=NULL; } @@ -797,20 +917,14 @@ } /** - * FIXME - * @param <> - * @returns <> - * @author Martin Schaller (04/2008) -*/ -void graphics_draw_restore(struct graphics *this_, struct point *p, int w, int h) -{ - this_->meth.draw_restore(this_->priv, p, w, h); -} - -/** - * FIXME - * @param <> - * @returns <> + * @brief Start or finish a set of drawing operations. + * + * graphics_draw_mode(draw_mode_begin) must be invoked before performing any drawing + * operations; this allows the graphics driver to perform any necessary setup. + * graphics_draw_mode(draw_mode_end) must be invoked to finish a set of drawing operations; + * this will typically clean up drawing resources and display the drawing result. + * @param this_ graphics object that is being drawn to + * @param mode specify beginning or end of drawing * @author Martin Schaller (04/2008) */ void graphics_draw_mode(struct graphics *this_, enum draw_mode_num mode) @@ -1139,7 +1253,7 @@ p_t.x=x; p_t.y=y; #if 0 - dbg(0,"display_text: '%s', %d, %d, %d, %d %d\n", label, x, y, dx*0x10000/l, dy*0x10000/l, l); + dbg(lvl_debug,"display_text: '%s', %d, %d, %d, %d %d\n", label, x, y, dx*0x10000/l, dy*0x10000/l, l); #endif if (x < gra->r.rl.x && x + tl > gra->r.lu.x && y + tl > gra->r.lu.y && y - tl < gra->r.rl.y) gra->meth.draw_text(gra->priv, fg->priv, bg?bg->priv:NULL, font->priv, label, &p_t, dx*0x10000/l, dy*0x10000/l); @@ -1186,11 +1300,11 @@ struct point * res) { int n, a, b; - dbg(1,"%d,%d - %d,%d x %d,%d-%d,%d\n",a1->x,a1->y,a1->x+adx,a1->y+ady,b1->x,b1->y,b1->x+bdx,b1->y+bdy); + dbg(lvl_debug,"%d,%d - %d,%d x %d,%d-%d,%d\n",a1->x,a1->y,a1->x+adx,a1->y+ady,b1->x,b1->y,b1->x+bdx,b1->y+bdy); n = bdy * adx - bdx * ady; a = bdx * (a1->y - b1->y) - bdy * (a1->x - b1->x); b = adx * (a1->y - b1->y) - ady * (a1->x - b1->x); - dbg(1,"a %d b %d n %d\n",a,b,n); + dbg(lvl_debug,"a %d b %d n %d\n",a,b,n); if (n < 0) { n = -n; a = -a; @@ -1206,7 +1320,7 @@ return 0; res->x = a1->x + a * adx / n; res->y = a1->y + a * ady / n; - dbg(1,"%d,%d\n",res->x,res->y); + dbg(lvl_debug,"%d,%d\n",res->x,res->y); return 1; } @@ -1285,7 +1399,7 @@ struct circle *c; #if 0 - dbg(0,"diameter=%d start=%d len=%d pos=%d dir=%d\n", diameter, start, len, *pos, dir); + dbg(lvl_debug,"diameter=%d start=%d len=%d pos=%d dir=%d\n", diameter, start, len, *pos, dir); #endif int count=64; int end=start+len; @@ -1466,7 +1580,7 @@ struct draw_polyline_shape *prev=&ctx->prev_shape; #if 0 - dbg(0,"enter %d,%d - %d,%d %d\n",pnt[0].x,pnt[0].y,pnt[1].x,pnt[1].y,wi); + dbg(lvl_debug,"enter %d,%d - %d,%d %d\n",pnt[0].x,pnt[0].y,pnt[1].x,pnt[1].y,wi); #endif *prev=*shape; @@ -1495,7 +1609,7 @@ l = int_sqrt((dxs+dys)*lscales); #endif shape->fow=fowler(-shape->dy, shape->dx); - dbg(1,"fow=%d\n",shape->fow); + dbg(lvl_debug,"fow=%d\n",shape->fow); if (! l) l=1; if (wi*lscale > 10000) @@ -1544,7 +1658,7 @@ draw_point(&ctx->shape, p, &ctx->res[ctx->ppos++], 1); return 1; } - dbg(1,"delta %d\n",delta); + dbg(lvl_debug,"delta %d\n",delta); if (delta > 0) { struct point pos,poso; draw_point(&ctx->shape, p, &pos, 1); @@ -1604,9 +1718,9 @@ if (count < 2) return; #if 0 - dbg(0,"count=%d\n",count); + dbg(lvl_debug,"count=%d\n",count); for (i = 0 ; i < count ; i++) - dbg(0,"%d,%d width %d\n",pnt[i].x,pnt[i].y,width[i]); + dbg(lvl_debug,"%d,%d width %d\n",pnt[i].x,pnt[i].y,width[i]); #endif ctx.shape.l=0; ctx.res=g_alloca(sizeof(struct point)*maxpoints); @@ -1753,10 +1867,10 @@ segment_end.x=pa[i].x; segment_end.y=pa[i].y; segment_end.w=width[i]; - dbg(3, "Segment: [%d, %d] - [%d, %d]...\n", segment_start.x, segment_start.y, segment_end.x, segment_end.y); + dbg(lvl_debug, "Segment: [%d, %d] - [%d, %d]...\n", segment_start.x, segment_start.y, segment_end.x, segment_end.y); clip_result=clip_line(&segment_start, &segment_end, &r); if (clip_result != CLIPRES_INVISIBLE) { - dbg(3, "....clipped to [%d, %d] - [%d, %d]\n", segment_start.x, segment_start.y, segment_end.x, segment_end.y); + dbg(lvl_debug, "....clipped to [%d, %d] - [%d, %d]\n", segment_start.x, segment_start.y, segment_end.x, segment_end.y); if ((i == 1) || (clip_result & CLIPRES_START_CLIPPED)) { points_to_draw[points_to_draw_cnt].x=segment_start.x; points_to_draw[points_to_draw_cnt].y=segment_start.y; @@ -1939,7 +2053,7 @@ static char *navit_sharedir; char *ret=NULL; struct file_wordexp *wordexp=NULL; - dbg(1,"enter %s\n",icon); + dbg(lvl_debug,"enter %s\n",icon); if (strchr(icon, '$')) { wordexp=file_wordexp_new(icon); if (file_wordexp_get_count(wordexp)) @@ -1952,7 +2066,7 @@ // get resources for the correct screen density // // this part not needed, android unpacks only the correct version into res/drawable dir! - // dbg(1,"android icon_path %s\n",icon); + // dbg(lvl_debug,"android icon_path %s\n",icon); // static char *android_density; // android_density = getenv("ANDROID_DENSITY"); // ret=g_strdup_printf("res/drawable-%s/%s",android_density ,icon); @@ -2061,7 +2175,7 @@ if (font) gra->meth.draw_text(gra->priv, gc->priv, gc_background?gc_background->priv:NULL, font->priv, di->label, &p, 0x10000, 0); else - dbg(0,"Failed to get font with size %d\n",e->text_size); + dbg(lvl_error,"Failed to get font with size %d\n",e->text_size); } } break; @@ -2077,7 +2191,7 @@ if (font) label_line(gra, gc, gc_background, font, pa, count, di->label); else - dbg(0,"Failed to get font with size %d\n",e->text_size); + dbg(lvl_error,"Failed to get font with size %d\n",e->text_size); } break; case element_icon: @@ -2100,7 +2214,7 @@ if (img) dc->img=img; else - dbg(0,"failed to load icon '%s'\n", path); + dbg(lvl_debug,"failed to load icon '%s'\n", path); g_free(path); } if (img) { @@ -2116,19 +2230,19 @@ } break; case element_image: - dbg(1,"image: '%s'\n", di->label); + dbg(lvl_debug,"image: '%s'\n", di->label); if (gra->meth.draw_image_warp) { img=graphics_image_new_scaled_rotated(gra, di->label, -1, -1, 0); if (img) gra->meth.draw_image_warp(gra->priv, gra->gc[0]->priv, pa, count, img->priv); } else - dbg(0,"draw_image_warp not supported by graphics driver drawing '%s'\n", di->label); + dbg(lvl_error,"draw_image_warp not supported by graphics driver drawing '%s'\n", di->label); break; case element_arrows: display_draw_arrows(gra,gc,pa,count); break; default: - dbg(0, "Unhandled element type %d\n", e->type); + dbg(lvl_error, "Unhandled element type %d\n", e->type); } di=di->next; @@ -2193,7 +2307,7 @@ struct element *e=es->data; if (e->coord_count) { if (e->coord_count > max_coord) { - dbg(0,"maximum number of coords reached: %d > %d\n",e->coord_count,max_coord); + dbg(lvl_error,"maximum number of coords reached: %d > %d\n",e->coord_count,max_coord); di->count=max_coord; } else di->count=e->coord_count; @@ -2295,7 +2409,7 @@ displaylist->max_offset=0; clear_hash(displaylist); displaylist_update_layers(displaylist, displaylist->layout->layers, displaylist->order); - dbg(1,"max offset %d\n",displaylist->max_offset); + dbg(lvl_debug,"max offset %d\n",displaylist->max_offset); } @@ -2400,12 +2514,12 @@ if (! count) continue; #if 0 - dbg(0,"%s 0x%x 0x%x\n",item_to_name(item->type), item->id_hi, item->id_lo); + dbg(lvl_debug,"%s 0x%x 0x%x\n",item_to_name(item->type), item->id_hi, item->id_lo); #endif if (displaylist->dc.pro != pro) transform_from_to_count(ca, displaylist->dc.pro, ca, pro, count); if (count == max) { - dbg(0,"point count overflow %d for %s "ITEM_ID_FMT"\n", count,item_to_name(item->type),ITEM_ID_ARGS(*item)); + dbg(lvl_error,"point count overflow %d for %s "ITEM_ID_FMT"\n", count,item_to_name(item->type),ITEM_ID_ARGS(*item)); displaylist->dc.maxlen=max*2; } if (item_is_custom_poi(*item)) { @@ -2493,7 +2607,7 @@ graphics_background_gc(gra, gra->gc[0]); if (flags & 1) callback_list_call_attr_0(gra->cbl, attr_predraw); - gra->meth.draw_mode(gra->priv, (flags & 8)?draw_mode_begin_clear:draw_mode_begin); + gra->meth.draw_mode(gra->priv, draw_mode_begin); if (!(flags & 2)) gra->meth.draw_rectangle(gra->priv, gra->gc[0]->priv, &gra->r.lu, gra->r.rl.x-gra->r.lu.x, gra->r.rl.y-gra->r.lu.y); if (l) { @@ -2510,14 +2624,14 @@ { int order=transform_get_order(trans); - dbg(1,"enter"); + dbg(lvl_debug,"enter"); if (displaylist->busy) { if (async == 1) return; do_draw(displaylist, 1, flags); } xdisplay_free(displaylist); - dbg(1,"order=%d\n", order); + dbg(lvl_debug,"order=%d\n", order); displaylist->dc.gra=gra; displaylist->ms=mapset; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/graphics.h navit-0.5.0+dfsg.1/navit/graphics.h --- navit-0.5.0~svn5900+dfsg.1/navit/graphics.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/graphics.h 2016-01-02 22:29:50.000000000 +0000 @@ -35,8 +35,9 @@ struct display_list; struct mapset; +/* This enum must be synchronized with the constants in NavitGraphics.java. */ enum draw_mode_num { - draw_mode_begin, draw_mode_begin_clear, draw_mode_end, draw_mode_cursor, draw_mode_end_lazy + draw_mode_begin, draw_mode_end }; struct graphics_priv; @@ -68,18 +69,17 @@ void (*draw_text)(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, struct graphics_font_priv *font, char *text, struct point *p, int dx, int dy); void (*draw_image)(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img); void (*draw_image_warp)(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, int count, struct graphics_image_priv *img); - void (*draw_restore)(struct graphics_priv *gr, struct point *p, int w, int h); void (*draw_drag)(struct graphics_priv *gr, struct point *p); struct graphics_font_priv *(*font_new)(struct graphics_priv *gr, struct graphics_font_methods *meth, char *font, int size, int flags); struct graphics_gc_priv *(*gc_new)(struct graphics_priv *gr, struct graphics_gc_methods *meth); void (*background_gc)(struct graphics_priv *gr, struct graphics_gc_priv *gc); - struct graphics_priv *(*overlay_new)(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int alpha, int wraparound); + struct graphics_priv *(*overlay_new)(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound); struct graphics_image_priv *(*image_new)(struct graphics_priv *gr, struct graphics_image_methods *meth, char *path, int *w, int *h, struct point *hot, int rotation); void *(*get_data)(struct graphics_priv *gr, const char *type); void (*image_free)(struct graphics_priv *gr, struct graphics_image_priv *priv); void (*get_text_bbox)(struct graphics_priv *gr, struct graphics_font_priv *font, char *text, int dx, int dy, struct point *ret, int estimate); void (*overlay_disable)(struct graphics_priv *gr, int disable); - void (*overlay_resize)(struct graphics_priv *gr, struct point *p, int w, int h, int alpha, int wraparound); + void (*overlay_resize)(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound); int (*set_attr)(struct graphics_priv *gr, struct attr *attr); }; @@ -99,9 +99,13 @@ void (*gc_set_dashes)(struct graphics_gc_priv *gc, int width, int offset, unsigned char dash_list[], int n); void (*gc_set_foreground)(struct graphics_gc_priv *gc, struct color *c); void (*gc_set_background)(struct graphics_gc_priv *gc, struct color *c); - void (*gc_set_stipple)(struct graphics_gc_priv *gc, struct graphics_image_priv *img); }; +/** + * @brief graphics context + * A graphics context encapsulates a set of drawing parameters, such as + * linewidth and drawing color. + */ struct graphics_gc { struct graphics_gc_priv *priv; struct graphics_gc_methods meth; @@ -151,8 +155,8 @@ void graphics_set_rect(struct graphics *gra, struct point_rect *pr); struct graphics *graphics_new(struct attr *parent, struct attr **attrs); int graphics_get_attr(struct graphics *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter); -struct graphics *graphics_overlay_new(struct graphics *parent, struct point *p, int w, int h, int alpha, int wraparound); -void graphics_overlay_resize(struct graphics *this_, struct point *p, int w, int h, int alpha, int wraparound); +struct graphics *graphics_overlay_new(struct graphics *parent, struct point *p, int w, int h, int wraparound); +void graphics_overlay_resize(struct graphics *this_, struct point *p, int w, int h, int wraparound); void graphics_init(struct graphics *this_); void *graphics_get_data(struct graphics *this_, const char *type); void graphics_add_callback(struct graphics *this_, struct callback *cb); @@ -166,14 +170,12 @@ void graphics_gc_destroy(struct graphics_gc *gc); void graphics_gc_set_foreground(struct graphics_gc *gc, struct color *c); void graphics_gc_set_background(struct graphics_gc *gc, struct color *c); -void graphics_gc_set_stipple(struct graphics_gc *gc, struct graphics_image *img); void graphics_gc_set_linewidth(struct graphics_gc *gc, int width); void graphics_gc_set_dashes(struct graphics_gc *gc, int width, int offset, unsigned char dash_list[], int n); struct graphics_image *graphics_image_new_scaled(struct graphics *gra, char *path, int w, int h); struct graphics_image *graphics_image_new_scaled_rotated(struct graphics *gra, char *path, int w, int h, int rotate); struct graphics_image *graphics_image_new(struct graphics *gra, char *path); void graphics_image_free(struct graphics *gra, struct graphics_image *img); -void graphics_draw_restore(struct graphics *this_, struct point *p, int w, int h); void graphics_draw_mode(struct graphics *this_, enum draw_mode_num mode); void graphics_draw_lines(struct graphics *this_, struct graphics_gc *gc, struct point *p, int count); void graphics_draw_circle(struct graphics *this_, struct graphics_gc *gc, struct point *p, int r); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/datawindow.c navit-0.5.0+dfsg.1/navit/gui/gtk/datawindow.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/datawindow.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/gtk/datawindow.c 2016-01-02 22:29:50.000000000 +0000 @@ -48,7 +48,7 @@ GtkTreeModel *model; int i; - dbg(0,"win=%p\n", win); + dbg(lvl_debug,"win=%p\n", win); model=gtk_tree_view_get_model(tree); gtk_tree_model_get_iter(model, &iter, path); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/destination.c navit-0.5.0+dfsg.1/navit/gui/gtk/destination.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/destination.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/gtk/destination.c 2016-01-02 22:29:50.000000000 +0000 @@ -164,7 +164,7 @@ char *str; int column; - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview), &path, &focus_column); if(!path) return; @@ -184,11 +184,11 @@ column=4; break; default: - dbg(0,"Unknown mode\n"); + dbg(lvl_debug,"Unknown mode\n"); return; } gtk_tree_model_get(search->liststore2, &iter, column, &str, -1); - dbg(0,"str=%s\n", str); + dbg(lvl_debug,"str=%s\n", str); search->partial=0; gtk_entry_set_text(GTK_ENTRY(entry_widget), str); } @@ -222,13 +222,13 @@ printf("changed %s partial %d\n", search->attr.u.str, search->partial); if (widget == search->entry_country) { gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (search->liststore2), 3, GTK_SORT_ASCENDING); - dbg(0,"country\n"); + dbg(lvl_debug,"country\n"); search->attr.type=attr_country_all; set_columns(search, 0); } if (widget == search->entry_postal) { gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (search->liststore2), 1, GTK_SORT_ASCENDING); - dbg(0,"postal\n"); + dbg(lvl_debug,"postal\n"); search->attr.type=attr_town_postal; if (strlen(search->attr.u.str) < 2) return; @@ -236,14 +236,14 @@ } if (widget == search->entry_city) { gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (search->liststore2), 2, GTK_SORT_ASCENDING); - dbg(0,"town\n"); + dbg(lvl_debug,"town\n"); search->attr.type=attr_town_name; if (strlen(search->attr.u.str) < 3) return; set_columns(search, 1); } if (widget == search->entry_street) { - dbg(0,"street\n"); + dbg(lvl_debug,"street\n"); search->attr.type=attr_street_name; // Searching for a street by just its first letter generates too many hits to be useful, // plus it causes the GUI to become unresponsive because the search is single-threaded. @@ -575,7 +575,7 @@ gtk_entry_set_text(GTK_ENTRY(search->entry_country), country_name.u.str); country_search_destroy(cs); } else { - dbg(0,"warning: no default country found\n"); + dbg(lvl_error,"warning: no default country found\n"); } search->partial=1; return 0; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/gui_gtk_action.c navit-0.5.0+dfsg.1/navit/gui/gtk/gui_gtk_action.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/gui_gtk_action.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/gtk/gui_gtk_action.c 2016-01-02 22:29:50.000000000 +0000 @@ -110,7 +110,7 @@ attr.type=attr_cursor; attr.u.num=gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w)); if(!navit_set_attr(gui->nav, &attr)) { - dbg(0, "Failed to set attr_cursor\n"); + dbg(lvl_error, "Failed to set attr_cursor\n"); } } @@ -122,7 +122,7 @@ attr.type=attr_tracking; attr.u.num=gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w)); if(!navit_set_attr(gui->nav, &attr)) { - dbg(0, "Failed to set attr_tracking\n"); + dbg(lvl_error, "Failed to set attr_tracking\n"); } } @@ -134,7 +134,7 @@ attr.type=attr_orientation; attr.u.num=gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w)) ? 0:-1; if(!navit_set_attr(gui->nav, &attr)) { - dbg(0, "Failed to set attr_orientation\n"); + dbg(lvl_error, "Failed to set attr_orientation\n"); } } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/gui_gtk_poi.c navit-0.5.0+dfsg.1/navit/gui/gtk/gui_gtk_poi.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/gui_gtk_poi.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/gtk/gui_gtk_poi.c 2016-01-02 22:29:50.000000000 +0000 @@ -55,7 +55,7 @@ GError *error=NULL; icon=gdk_pixbuf_new_from_file(graphics_icon_path(name),&error); if (error) { - dbg(0, "failed to load icon '%s': %s\n", name, error->message); + dbg(lvl_error, "failed to load icon '%s': %s\n", name, error->message); } return icon; } @@ -228,7 +228,7 @@ dest.y=lon; dest.pro=1; navit_set_destination(search->nav, &dest, buffer, 1); - dbg(1,_("Set destination to %ld, %ld \n"),lat,lon); + dbg(lvl_debug,_("Set destination to %ld, %ld \n"),lat,lon); } /* Show the POI's position in the map. */ @@ -251,7 +251,7 @@ dest.y=lon; dest.pro=1; navit_set_center(search->nav, &dest,1); - dbg(1,_("Set map to %ld, %ld \n"),lat,lon); + dbg(lvl_debug,_("Set map to %ld, %ld \n"),lat,lon); } /** Set POI as the first "visit before". */ @@ -268,7 +268,7 @@ if(!gtk_tree_model_get_iter(GTK_TREE_MODEL(search->store_poi_sorted), &iter, path)) return; gtk_tree_model_get(GTK_TREE_MODEL(search->store_poi_sorted), &iter, 3, &lat, -1); gtk_tree_model_get(GTK_TREE_MODEL(search->store_poi_sorted), &iter, 4, &lon, -1); - dbg(1,_("Set next visit to %ld, %ld \n"),lat,lon); + dbg(lvl_debug,_("Set next visit to %ld, %ld \n"),lat,lon); struct pcoord dest; dest.x=lat; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/gui_gtk_window.c navit-0.5.0+dfsg.1/navit/gui/gtk/gui_gtk_window.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/gtk/gui_gtk_window.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/gtk/gui_gtk_window.c 2016-01-02 22:29:50.000000000 +0000 @@ -85,7 +85,7 @@ struct point p; if (event->type != GDK_KEY_PRESS) return FALSE; - dbg(1,"keypress 0x%x\n", event->keyval); + dbg(lvl_debug,"keypress 0x%x\n", event->keyval); transform_get_size(navit_get_trans(this->nav), &w, &h); switch (event->keyval) { case GDK_KP_Enter: @@ -313,19 +313,19 @@ toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "CursorAction")); gtk_toggle_action_set_active(toggle_action, attr.u.num); } else { - dbg(1, "Unable to locate CursorAction\n"); + dbg(lvl_warning, "Unable to locate CursorAction\n"); } if (navit_get_attr(this->nav, attr_orientation, &attr, NULL)) { toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "OrientationAction")); gtk_toggle_action_set_active(toggle_action, attr.u.num != -1); } else { - dbg(0, "Unable to locate OrientationAction\n"); + dbg(lvl_error, "Unable to locate OrientationAction\n"); } if (navit_get_attr(this->nav, attr_tracking, &attr, NULL)) { toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "TrackingAction")); gtk_toggle_action_set_active(toggle_action, attr.u.num); } else { - dbg(0, "Unable to locate TrackingAction\n"); + dbg(lvl_error, "Unable to locate TrackingAction\n"); } } @@ -478,7 +478,7 @@ char *name; GList *curr; struct gui_menu_info *meninfo; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); curr = g_list_first(this->vehicle_menuitems); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_bookmark.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_bookmark.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_bookmark.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_bookmark.c 2016-01-02 22:29:50.000000000 +0000 @@ -21,7 +21,7 @@ { GList *l; struct attr attr; - dbg(1,"text='%s'\n", widget->text); + dbg(lvl_debug,"text='%s'\n", widget->text); if (widget->text && strlen(widget->text)){ navit_get_attr(this->nav, attr_bookmarks, &attr, NULL); bookmarks_add_bookmark(attr.u.bookmarks, &widget->c, widget->text); @@ -37,7 +37,7 @@ { GList *l; struct attr attr; - dbg(1,"text='%s'\n", widget->text); + dbg(lvl_debug,"text='%s'\n", widget->text); if (widget->text && strlen(widget->text)){ navit_get_attr(this->nav, attr_bookmarks, &attr, NULL); bookmarks_add_bookmark(attr.u.bookmarks, NULL, widget->text); @@ -66,7 +66,7 @@ struct widget *w=(struct widget*)widget->data; GList *l; struct attr attr; - dbg(1,"text='%s'\n", w->text); + dbg(lvl_debug,"text='%s'\n", w->text); if (w->text && strlen(w->text)){ navit_get_attr(this->nav, attr_bookmarks, &attr, NULL); bookmarks_rename_bookmark(attr.u.bookmarks, w->name, w->text); @@ -103,7 +103,7 @@ wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(w, wl); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this,2+gui_internal_keyboard_init_mode(getenv("LANG")))); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); gui_internal_menu_render(this); } @@ -131,7 +131,7 @@ wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(w, wl); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this,2+gui_internal_keyboard_init_mode(getenv("LANG")))); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); gui_internal_menu_render(this); } @@ -160,7 +160,7 @@ wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(w, wl); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this,2+gui_internal_keyboard_init_mode(getenv("LANG")))); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); gui_internal_menu_render(this); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal.c 2016-01-02 22:29:50.000000000 +0000 @@ -114,15 +114,18 @@ static int gui_internal_is_active_vehicle(struct gui_priv *this, struct vehicle *vehicle); -/* - * * Display image scaled to specific size - * * searches for scaleable and pre-scaled image - * * @param this Our gui context - * * @param name image name - * * @param w desired width of image - * * @param h desired height of image - * * @returns image_struct Ptr to scaled image struct or NULL if not scaled or found - * */ +/** + * @brief Displays an image scaled to a specific size + * + * Searches for scaleable and pre-scaled image + * + * @param this Our gui context + * @param name image name + * @param w desired width of image + * @param h desired height of image + * + * @return image_struct Ptr to scaled image struct or NULL if not scaled or found + */ static struct graphics_image * image_new_scaled(struct gui_priv *this, const char *name, int w, int h) { @@ -130,10 +133,10 @@ char *full_path=NULL; full_path=graphics_icon_path(name); ret=graphics_image_new_scaled(this->gra, full_path, w, h); - dbg(1,"Trying to load image '%s' (w=%d, h=%d): %s\n", name, w, h, ret ? "OK" : "NOT FOUND"); + dbg(lvl_debug,"Trying to load image '%s' (w=%d, h=%d): %s\n", name, w, h, ret ? "OK" : "NOT FOUND"); g_free(full_path); if (!ret) { - dbg(0,"Failed to load image for '%s' (w=%d, h=%d)\n", name, w, h); + dbg(lvl_error,"Failed to load image for '%s' (w=%d, h=%d)\n", name, w, h); full_path=graphics_icon_path("unknown"); ret=graphics_image_new_scaled(this->gra, full_path, w, h); g_free(full_path); @@ -149,38 +152,43 @@ } #endif -/* - * * Display image scaled to xs (extra small) size - * * This image size can be too small to click it on some devices. - * * @param this Our gui context - * * @param name image name - * * @returns image_struct Ptr to scaled image struct or NULL if not scaled or found - * */ +/** + * @brief Displays an image scaled to xs (extra small) size + * + * This image size can be too small to click it on some devices. + * + * @param this Our gui context + * @param name image name + * + * @return image_struct Ptr to scaled image struct or NULL if not scaled or found + */ struct graphics_image * image_new_xs(struct gui_priv *this, const char *name) { return image_new_scaled(this, name, this->icon_xs, this->icon_xs); } -/* - * * Display image scaled to s (small) size - * * @param this Our gui context - * * @param name image name - * * @returns image_struct Ptr to scaled image struct or NULL if not scaled or found - * */ - +/** + * @brief Displays an image scaled to s (small) size + * + * @param this Our gui context + * @param name image name + * + * @return image_struct Ptr to scaled image struct or NULL if not scaled or found + */ struct graphics_image * image_new_s(struct gui_priv *this, const char *name) { return image_new_scaled(this, name, this->icon_s, this->icon_s); } -/* - * * Display image scaled to l (large) size - * * @param this Our gui context - * * @param name image name - * * @returns image_struct Ptr to scaled image struct or NULL if not scaled or found - * */ +/** + * @brief Displays an image scaled to l (large) size + * @param this Our gui context + * @param name image name + * + * @return image_struct Ptr to scaled image struct or NULL if not scaled or found + */ struct graphics_image * image_new_l(struct gui_priv *this, const char *name) { @@ -298,8 +306,9 @@ * @param out p0 pointer to the point object, where gesture starting point coordinates should be placed. Can be NULL. * @param out dx pointer to variable to store horizontal movement of the gesture. * @param out dy pointer to variable to store vertical movement of the gesture. - * @returns amount of time the actual movement took. + * @return amount of time the actual movement took. */ +/* FIXME where is the implementation? */ static void gui_internal_motion_cb(struct gui_priv *this) @@ -484,22 +493,22 @@ /** - * Applys the configuration values to this based on the settings + * Applies the configuration values to this based on the settings * specified in the configuration file (this->config) and * the most approriate default profile based on screen resolution. * * This function should be run after this->root is setup and could * be rerun after the window is resized. * - * @authors Steve Singer (09/2008) + * @author Steve Singer (09/2008) */ void gui_internal_apply_config(struct gui_priv *this) { struct gui_config_settings * current_config=0; - dbg(1,"w=%d h=%d\n", this->root.w, this->root.h); - /** + dbg(lvl_debug,"w=%d h=%d\n", this->root.w, this->root.h); + /* * Select default values from profile based on the screen. */ if((this->root.w > 320 || this->root.h > 320) && this->root.w > 240 && this->root.h > 240) @@ -518,7 +527,7 @@ current_config = &config_profiles[SMALL_PROFILE]; } - /** + /* * Apply override values from config file */ if(this->config.font_size == -1 ) @@ -583,7 +592,7 @@ gui_internal_cmd_set_destination(struct gui_priv *this, struct widget *wm, void *data) { char *name=data; - dbg(2,"c=%d:0x%x,0x%x\n", wm->c.pro, wm->c.x, wm->c.y); + dbg(lvl_info,"c=%d:0x%x,0x%x\n", wm->c.pro, wm->c.x, wm->c.y); navit_set_destination(this->nav, &wm->c, name, 1); if (this->flags & 512) { struct attr follow; @@ -618,17 +627,21 @@ } /* - * @brief Display waypoint list to the user and let she choose one for the action specified as cmd parameter. - * Widget passed as wm parameter of the called cmd function will have item set to user choosen waypoint item. Its datai will be set + * @brief Displays a waypoint list to the user. + * + * This display a waypoint list to the user. When the user chooses an item from the list, the callback + * function passed as {@code cmd} will be called. + * + * Widget passed as wm parameter of the called cmd function will have item set to user chosen waypoint item. Its data will be set * to zero-based choosen waypoint number, counting from the route end. Coordinates to wm->c will be copied from wm_->c if wm_ is not null. Otherwise, * waypoint coordinates will be copied to wm->c. - * @param in this gui context + * + * @param this gui context * @param title Menu title - * @param hint Text to dispaly above the waypoint list describing the action to be performed, can be NULL - * @param wm The called widget pointer. Can be NULL. - * @param cmd Function to call on item selection - * @param data data argument to be passed to the cmd function - * @returns nothing + * @param hint Text to display above the waypoint list describing the action to be performed, can be NULL + * @param wm_ The called widget pointer. Can be NULL. + * @param cmd Callback function which will be called on item selection + * @param data data argument to be passed to the callback function */ void gui_internal_select_waypoint(struct gui_priv *this, const char *title, const char *hint, struct widget *wm_, void(*cmd)(struct gui_priv *priv, struct widget *widget, void *data),void *data) @@ -749,10 +762,9 @@ -/* - * Get a utf-8 string, return the same prepared for case insensetive search. Result shoud be g_free()d after use. +/** + * Get a utf-8 string, return the same prepared for case insensitive search. Result should be g_free()d after use. */ - char * removecase(char *s) { @@ -837,13 +849,13 @@ char *text; int count=0; - dbg(2,"item=%p 0x%x 0x%x\n", wm->item.map,wm->item.id_hi, wm->item.id_lo); + dbg(lvl_info,"item=%p 0x%x 0x%x\n", wm->item.map,wm->item.id_hi, wm->item.id_lo); wb=gui_internal_menu(this, "Attributes"); w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(wb, w); mr=map_rect_new(wm->item.map, NULL); item = map_rect_get_item_byid(mr, wm->item.id_hi, wm->item.id_lo); - dbg(2,"item=%p\n", item); + dbg(lvl_info,"item=%p\n", item); if (item) { text=g_strdup_printf("%s:%s", _("Item type"), item_to_name(item->type)); gui_internal_widget_append(w, @@ -885,10 +897,10 @@ char *cmd=NULL; if (!wm->name) { - dbg(2,"item=%p 0x%x 0x%x\n", wm->item.map,wm->item.id_hi, wm->item.id_lo); + dbg(lvl_info,"item=%p 0x%x 0x%x\n", wm->item.map,wm->item.id_hi, wm->item.id_lo); mr=map_rect_new(wm->item.map, NULL); item = map_rect_get_item_byid(mr, wm->item.id_hi, wm->item.id_lo); - dbg(2,"item=%p\n", item); + dbg(lvl_info,"item=%p\n", item); if (item) { while(item_attr_get(item, attr_url_local, &attr)) { if (! cmd) @@ -903,7 +915,7 @@ #ifdef HAVE_SYSTEM system(cmd); #else - dbg(0,"Error: External commands were disabled during compilation, cannot call '%s'.\n",cmd); + dbg(lvl_error,"Error: External commands were disabled during compilation, cannot call '%s'.\n",cmd); #endif g_free(cmd); } @@ -911,11 +923,11 @@ /* - * @brief Event to transfer search results to a map. + * @brief Transfers search results to a map. * * @param this The graphics context. * @param wm called widget. - * @param data event data (pointer to the table widget containing results, or NULL if results map is only have to be cleaned). + * @param data event data (pointer to the table widget containing results, or NULL to clean the result map without adding any new data). */ static void gui_internal_cmd_results_to_map(struct gui_priv *this, struct widget *wm, void *data) @@ -993,7 +1005,7 @@ if(!w) { map_rect_destroy(mr); - dbg(1,"Can't find the results table - only map clean up is done.\n"); + dbg(lvl_warning,"Can't find the results table - only map clean up is done.\n"); return; } @@ -1005,7 +1017,7 @@ struct item* it; if(wi->name==NULL) continue; - dbg(2,"%s\n",wi->name); + dbg(lvl_info,"%s\n",wi->name); it=map_rect_create_item(mr,type_found_item); if(it) { struct coord c; @@ -1035,7 +1047,7 @@ } /* - * @brief Event to remove search results from the a map. + * @brief Removes search results from a map. * * @param this The graphics context. * @param wm called widget. @@ -1078,6 +1090,21 @@ } +/** + * @brief Displays the commands available for a location. + * + * This displays the available commands for the given location in a dialog from which the user can + * choose an action. The location can be supplied either in projected coordinates via the {@code pc_in} + * argument or in WGS84 coordinates (i.e. latitude and longitude in degrees) via the {@code g_in} + * argument. One of these must be supplied, the other should be {@code NULL}. + * + * @param this The internal GUI instance + * @param pc_in Projected coordinates of the position + * @param g_in WGS84 coordinates of the position + * @param wm + * @param name The display name for the position + * @param flags Flags specifying the operations available from the GUI + */ /* meaning of the bits in "flags": * 1: "Streets" * 2: "House numbers" @@ -1106,7 +1133,7 @@ pc=*pc_in; c.x=pc.x; c.y=pc.y; - dbg(2,"x=0x%x y=0x%x\n", c.x, c.y); + dbg(lvl_info,"x=0x%x y=0x%x\n", c.x, c.y); transform_to_geo(pc.pro, &c, &g); } else if (g_in) { struct attr attr; @@ -1441,7 +1468,6 @@ * The "Bookmarks" section of the OSD * */ - void gui_internal_cmd_bookmarks(struct gui_priv *this, struct widget *wm, void *data) { @@ -1551,7 +1577,7 @@ while ((item=bookmarks_get_item(mattr.u.bookmarks))) { if (!item_attr_get(item, attr_label, &attr)) continue; label_full=map_convert_string_tmp(item->map,attr.u.str); - dbg(2,"full_labled: %s\n",label_full); + dbg(lvl_info,"full_labled: %s\n",label_full); // hassub == 1 if the item type is a sub-folder if (item->type == type_bookmark_folder) { @@ -1595,7 +1621,16 @@ static void -gui_internal_keynav_highlight_next(struct gui_priv *this, int dx, int dy); +gui_internal_keynav_highlight_next(struct gui_priv *this, int dx, int dy, int rotary); + +static int +gui_internal_keynav_find_next(struct widget *wi, struct widget *current_highlight, struct widget **result); + +static int +gui_internal_keynav_find_prev(struct widget *wi, struct widget *current_highlight, struct widget **result); + +static struct widget* +gui_internal_keynav_find_next_sensitive_child(struct widget *wi); void gui_internal_keypress_do(struct gui_priv *this, char *key) @@ -1624,7 +1659,7 @@ } return; } else if (*key == NAVIT_KEY_BACKSPACE) { - dbg(1,"backspace\n"); + dbg(lvl_debug,"backspace\n"); if (wi->text && wi->text[0]) { len=g_utf8_prev_char(wi->text+strlen(wi->text))-wi->text; wi->text[len]='\0'; @@ -1632,11 +1667,11 @@ } } else { if (wi->state & STATE_CLEAR) { - dbg(2,"wi->state=0x%x\n", wi->state); + dbg(lvl_info,"wi->state=0x%x\n", wi->state); g_free(wi->text); wi->text=NULL; wi->state &= ~STATE_CLEAR; - dbg(2,"wi->state=0x%x\n", wi->state); + dbg(lvl_info,"wi->state=0x%x\n", wi->state); } text=g_strdup_printf("%s%s", wi->text ? wi->text : "", key); } @@ -1720,7 +1755,7 @@ int len=strlen(line); if (len > 0 && line[len-1] == '\n') line[len-1]='\0'; - dbg(1,"line=%s\n",line); + dbg(lvl_debug,"line=%s\n",line); if (!gui_internal_match(remove, line)) fprintf(fo,"%s\n",line); } @@ -1779,12 +1814,12 @@ sel.range.max=type_last; mr=map_rect_new(map, &sel); while ((item=map_rect_get_item(mr))) { - dbg(2,"item\n"); + dbg(lvl_info,"item\n"); } map_rect_destroy(mr); } - dbg(2,"bbox=%s\n",wm->prefix); + dbg(lvl_info,"bbox=%s\n",wm->prefix); gui_internal_menu_render(this); } @@ -1798,7 +1833,7 @@ char *search,buffer[256]; int found,sp_match=0; - dbg(1,"wm=%p prefix=%s\n",wm,wm->prefix); + dbg(lvl_debug,"wm=%p prefix=%s\n",wm,wm->prefix); search=wm->prefix; if (search) { @@ -2007,14 +2042,14 @@ vehicle_get_attr(v, attr_name, &vehicle_name_attr, NULL); vehicle_name = vehicle_name_attr.u.str; - dbg(1, "Changing vehicle %s to profile %s\n", vehicle_name, + dbg(lvl_debug, "Changing vehicle %s to profile %s\n", vehicle_name, profilename); // Change the profile name profilename_attr.type = attr_profilename; profilename_attr.u.str = profilename; if(!vehicle_set_attr(v, &profilename_attr)) { - dbg(0, "Unable to set the vehicle's profile name\n"); + dbg(lvl_error, "Unable to set the vehicle's profile name\n"); } // Notify Navit that the routing should be re-done if this is the @@ -2056,7 +2091,7 @@ // Figure out the profile name attr = attr_search(profile->attrs, NULL, attr_name); if (!attr) { - dbg(0, "Adding vehicle profile failed. attr==NULL"); + dbg(lvl_error, "Adding vehicle profile failed. attr==NULL"); return; } name = attr->u.str; @@ -2066,7 +2101,7 @@ active_profile = profile_attr.u.str; active = active_profile != NULL && !strcmp(name, active_profile); - dbg(1, "Adding vehicle profile %s, active=%s/%i\n", name, + dbg(lvl_debug, "Adding vehicle profile %s, active=%s/%i\n", name, active_profile, active); // Build a translatable label. @@ -2213,7 +2248,7 @@ if (p) { trans=navit_get_trans(this->nav); transform_reverse(trans, p, &c); - dbg(1,"x=0x%x y=0x%x\n", c.x, c.y); + dbg(lvl_debug,"x=0x%x y=0x%x\n", c.x, c.y); this->clickp.pro=transform_get_projection(trans); this->clickp.x=c.x; this->clickp.y=c.y; @@ -2254,7 +2289,7 @@ void gui_internal_cmd_menu(struct gui_priv *this, int ignore, char *href) { - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); gui_internal_enter(this, ignore); gui_internal_enter_setup(this); // draw menu @@ -2374,7 +2409,7 @@ this->on_map_click=g_strdup(attr->u.str); return 1; default: - dbg(0,"Unknown attribute: %s\n",attr_to_name(attr->type)); + dbg(lvl_error,"Unknown attribute: %s\n",attr_to_name(attr->type)); return 1; } } @@ -2407,11 +2442,11 @@ attr_list_free(attr_list); } -//############################################################################################################## -//# Description: Convert one geo coordinate in human readable form to double value. -//# Comment: -//# Authors: Martin Bruns (05/2012), mdankov -//############################################################################################################## +/** + * @brief Converts one geo coordinate in human readable form to double value. + * + * @author Martin Bruns (05/2012), mdankov + */ static int gui_internal_coordinate_parse(char *s, char plus, char minus, double *x) { @@ -2442,7 +2477,7 @@ sscanf(degree, "%lf", x); if(strchr(degree, plus) || strchr(degree, minus)) { - dbg(3,"degree %c/%c found\n",plus,minus); + dbg(lvl_debug,"degree %c/%c found\n",plus,minus); } else {/* DEGREES_MINUTES */ if(!minute) return 0; @@ -2450,7 +2485,7 @@ sscanf(minute, "%lf", &tmp); *x+=tmp/60; if(strchr(minute, plus) || strchr(minute, minus)) { - dbg(3,"minute %c/%c found\n",plus,minus); + dbg(lvl_debug,"minute %c/%c found\n",plus,minus); } else { /* DEGREES_MINUTES_SECONDS */ second=strtok(NULL,""); if(!second) @@ -2474,7 +2509,7 @@ char *lat, *lng; char *widgettext; double latitude, longitude; - dbg(1,"text entered:%s\n", widget->text); + dbg(lvl_debug,"text entered:%s\n", widget->text); /* possible entry can be identical to coord_format output but only space between lat and lng is allowed */ widgettext=g_ascii_strup(widget->text,-1); @@ -2507,38 +2542,32 @@ void gui_internal_cmd_enter_coord_clicked(struct gui_priv *this, struct widget *widget, void *data) { - dbg(1,"entered\n"); + dbg(lvl_debug,"entered\n"); gui_internal_cmd_enter_coord_do(this, widget->data); } -//############################################################################################################## -//# Description: -//# Comment: -//# Authors: Martin Bruns (05/2012) -//############################################################################################################## - -//############################################################################################################## -//# Description: Function to handle mouse clicks and scroll wheel movement -//# Comment: -//# Authors: Martin Schaller (04/2008), Stefan Klumpp (04/2008) -//############################################################################################################## +/** + * @brief Handles mouse clicks and scroll wheel movement + * + * @author Martin Schaller (04/2008), Stefan Klumpp (04/2008) + */ static void gui_internal_button(void *data, int pressed, int button, struct point *p) { struct gui_priv *this=data; struct graphics *gra=this->gra; - dbg(1,"enter %d %d\n", pressed, button); + dbg(lvl_debug,"enter %d %d\n", pressed, button); // if still on the map (not in the menu, yet): - dbg(1,"children=%p ignore_button=%d\n",this->root.children,this->ignore_button); + dbg(lvl_debug,"children=%p ignore_button=%d\n",this->root.children,this->ignore_button); if (!this->root.children || this->ignore_button) { this->ignore_button=0; // check whether the position of the mouse changed during press/release OR if it is the scrollwheel if (!navit_handle_button(this->nav, pressed, button, p, NULL)) { - dbg(1,"navit has handled button\n"); + dbg(lvl_debug,"navit has handled button\n"); return; } - dbg(1,"menu_on_map_click=%d\n",this->menu_on_map_click); + dbg(lvl_debug,"menu_on_map_click=%d\n",this->menu_on_map_click); if (button != 1) return; if (this->on_map_click || this->menu_on_map_click) { @@ -2639,7 +2668,7 @@ this->root.h=h; changed=1; } - dbg(1,"w=%d h=%d children=%p\n", w, h, this->root.children); + dbg(lvl_debug,"w=%d h=%d children=%p\n", w, h, this->root.children); navit_handle_resize(this->nav, w, h); if (this->root.children) { if (changed) { @@ -2665,6 +2694,69 @@ p->y=w->p.y+w->h; } +static struct widget* +gui_internal_keynav_find_next_sensitive_child(struct widget *wi) { + GList *l=wi->children; + if (wi && wi->state & STATE_SENSITIVE) + return wi; + while (l) { + struct widget* tmp = gui_internal_keynav_find_next_sensitive_child(l->data); + if (tmp) + return tmp; + l=g_list_next(l); + } + return NULL; +} + +static int +gui_internal_keynav_find_next(struct widget *wi, struct widget *current_highlight, struct widget **result) { + GList *l=wi->children; + if (wi == current_highlight) + return 1; + while (l) { + struct widget *child=l->data; + l=g_list_next(l); + if (gui_internal_keynav_find_next(child, current_highlight, result)) { + while (l) { + struct widget *new = gui_internal_keynav_find_next_sensitive_child(l->data); + if (new) { + *result = new; + /* Found one! */ + return 0; + } + l=g_list_next(l); + } + /* Try parent */ + return 1; + } + } + return 0; +} + +#define RESULT_FOUND 1 +#define NO_RESULT_YET 0 + +static int +gui_internal_keynav_find_prev(struct widget *wi, struct widget *current_highlight, struct widget **result) { + if (wi == current_highlight && *result) { + // Reached current widget; last widget found is the result. + return RESULT_FOUND; + } + if (wi->state & STATE_SENSITIVE) + *result= wi; + GList *l=wi->children; + while (l) { + struct widget *child=l->data; + if (gui_internal_keynav_find_prev(child, current_highlight, result) == RESULT_FOUND) { + return RESULT_FOUND; + } + l=g_list_next(l); + } + // If no sensitive widget is found before "current_highlight", return the last sensitive widget when + // recursion terminates. + return NO_RESULT_YET; +} + static void gui_internal_keynav_find_closest(struct widget *wi, struct point *p, int dx, int dy, int *distance, struct widget **result) { @@ -2688,7 +2780,7 @@ if (dist1 < 0) dist1=-dist1; } - dbg(1,"checking %d,%d %d %d against %d,%d-%d,%d result %d,%d\n", p->x, p->y, dx, dy, wi->p.x, wi->p.y, wi->p.x+wi->w, wi->p.y+wi->h, dist1, dist2); + dbg(lvl_debug,"checking %d,%d %d %d against %d,%d-%d,%d result %d,%d\n", p->x, p->y, dx, dy, wi->p.x, wi->p.y, wi->p.x+wi->w, wi->p.y+wi->h, dist1, dist2); if (dist1 >= 0) { if (dist2 < 0) dist1-=dist2; @@ -2707,14 +2799,29 @@ } } +/** + * @brief Move keyboard focus to the next widget. + * + * Move keyboard focus to the appropriate next widget, depending on the direction of focus + * movement. + * + * @param this GUI context + * @param this dx horizontal movement (-1=left, +1=right), unless rotary==1 + * @param this dy vertical movement (+1=up, -1=down) + * @param rotary (0/1) input from rotary encoder - dx indicates forwards/backwards movement + * through all widgets + */ static void -gui_internal_keynav_highlight_next(struct gui_priv *this, int dx, int dy) +gui_internal_keynav_highlight_next(struct gui_priv *this, int dx, int dy, int rotary) { struct widget *result,*menu=g_list_last(this->root.children)->data; + struct widget *current_highlight = NULL; struct point p; int distance; - if (this->highlighted && this->highlighted_menu == g_list_last(this->root.children)->data) + if (this->highlighted && this->highlighted_menu == menu) { gui_internal_keynav_point(this->highlighted, dx, dy, &p); + current_highlight = this->highlighted; + } else { p.x=0; p.y=0; @@ -2723,18 +2830,28 @@ gui_internal_keynav_find_closest(menu, &p, 0, 0, &distance, &result); if (result) { gui_internal_keynav_point(result, dx, dy, &p); - dbg(1,"result origin=%p p=%d,%d\n", result, p.x, p.y); + dbg(lvl_debug,"result origin=%p p=%d,%d\n", result, p.x, p.y); + current_highlight = result; } } result=NULL; distance=INT_MAX; - gui_internal_keynav_find_closest(menu, &p, dx, dy, &distance, &result); - dbg(1,"result=%p\n", result); + if (rotary && dx > 0) + gui_internal_keynav_find_next(menu, current_highlight, &result); + else if (rotary && dx < 0) + gui_internal_keynav_find_prev(menu, current_highlight, &result); + else + gui_internal_keynav_find_closest(menu, &p, dx, dy, &distance, &result); + dbg(lvl_debug,"result=%p\n", result); if (! result) { - if (dx < 0) + if (dx < 0) { p.x=this->root.w; - if (dx > 0) + if (rotary) p.y = this->root.h; + } + if (dx > 0) { p.x=0; + if (rotary) p.y = 0; + } if (dy < 0) p.y=this->root.h; if (dy > 0) @@ -2742,7 +2859,7 @@ result=NULL; distance=INT_MAX; gui_internal_keynav_find_closest(menu, &p, dx, dy, &distance, &result); - dbg(1,"wraparound result=%p\n", result); + dbg(lvl_debug,"wraparound result=%p\n", result); } gui_internal_highlight_do(this, result); if (result) @@ -2798,17 +2915,23 @@ } graphics_draw_mode(this->gra, draw_mode_begin); switch (*key) { + case NAVIT_KEY_PAGE_DOWN: + gui_internal_keynav_highlight_next(this,1,0,1); + break; + case NAVIT_KEY_PAGE_UP: + gui_internal_keynav_highlight_next(this,-1,0,1); + break; case NAVIT_KEY_LEFT: - gui_internal_keynav_highlight_next(this,-1,0); + gui_internal_keynav_highlight_next(this,-1,0,0); break; case NAVIT_KEY_RIGHT: - gui_internal_keynav_highlight_next(this,1,0); + gui_internal_keynav_highlight_next(this,1,0,0); break; case NAVIT_KEY_UP: - gui_internal_keynav_highlight_next(this,0,-1); + gui_internal_keynav_highlight_next(this,0,-1,0); break; case NAVIT_KEY_DOWN: - gui_internal_keynav_highlight_next(this,0,1); + gui_internal_keynav_highlight_next(this,0,1,0); break; case NAVIT_KEY_BACK: if (g_list_length(this->root.children) > 1) @@ -2843,8 +2966,10 @@ struct transformation *trans=navit_get_trans(this->nav); win=graphics_get_data(gra, "window"); - if (! win) + if (! win) { + dbg(lvl_error, "failed to obtain window from graphics plugin, cannot set graphics\n"); return 1; + } navit_ignore_graphics_events(this->nav, 1); this->gra=gra; this->win=win; @@ -2978,9 +3103,10 @@ }; -/** +/* * @brief Displays Route information */ +/* FIXME where is the implementation? */ int line_intersection(struct coord* a1, struct coord *a2, struct coord * b1, struct coord *b2, struct coord *res) @@ -3003,9 +3129,9 @@ if (a > n || b > n) return 0; if (n == 0) { - dbg(2,"a=%d b=%d n=%d\n", a, b, n); - dbg(2,"a1=0x%x,0x%x ad %d,%d\n", a1->x, a1->y, adx, ady); - dbg(2,"b1=0x%x,0x%x bd %d,%d\n", b1->x, b1->y, bdx, bdy); + dbg(lvl_info,"a=%d b=%d n=%d\n", a, b, n); + dbg(lvl_info,"a1=0x%x,0x%x ad %d,%d\n", a1->x, a1->y, adx, ady); + dbg(lvl_info,"b1=0x%x,0x%x bd %d,%d\n", b1->x, b1->y, bdx, bdy); dbg_assert(n != 0); } res->x = a1->x + a * adx / n; @@ -3041,14 +3167,14 @@ } -/** +/* * @brief Displays Route Height Profile * * @li The name of the active vehicle * @param wm The button that was pressed. * @param v Unused */ - +/* FIXME where is the implementation? */ @@ -3088,7 +3214,7 @@ } /** - * @brief Populates the route table with route information + * @brief Populates the route table with route information * * @param this The gui context * @param navit The navit object diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_command.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_command.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_command.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_command.c 2016-01-02 22:29:50.000000000 +0000 @@ -39,6 +39,17 @@ extern char *version; +/** + * @brief Converts a WGS84 coordinate pair to its string representation. + * + * This function takes a coordinate pair with latitude and longitude in degrees and converts them to a + * string of the form {@code 45°28'0" N 9°11'26" E}. + * + * @param gc A WGS84 coordinate pair + * @param sep The separator character to insert between latitude and longitude + * + * @return The coordinates as a formatted string + */ static char * coordinates_geo(const struct coord_geo *gc, char sep) { @@ -61,9 +72,21 @@ lng_sec=fmod(g.lng*3600+0.5,60); lng_min=fmod(g.lng*60-lng_sec/60.0+0.5,60); lng_deg=g.lng-lng_min/60.0-lng_sec/3600.0+0.5;; + return g_strdup_printf("%d°%d'%d\" %c%c%d°%d'%d\" %c",lat_deg,lat_min,lat_sec,latc,sep,lng_deg,lng_min,lng_sec,lngc); } +/** + * @brief Converts a coordinate pair to its WGS84 string representation. + * + * This function takes a coordinate pair, transforms it to WGS84 and converts it to a string of the form + * {@code 45°28'0" N 9°11'26" E}. + * + * @param gc A coordinate pair + * @param sep The separator character to insert between latitude and longitude + * + * @return The coordinates as a formatted string + */ char * gui_internal_coordinates(struct pcoord *pc, char sep) { @@ -134,11 +157,11 @@ { struct attr escaped; if (!in || !in[0]) { - dbg(0,"first parameter missing or wrong type\n"); + dbg(lvl_error,"first parameter missing or wrong type\n"); return; } if (!out) { - dbg(0,"output missing\n"); + dbg(lvl_error,"output missing\n"); return; } if (ATTR_IS_STRING(in[0]->type)) { @@ -148,10 +171,10 @@ escaped.type=attr_type_string_begin; escaped.u.str=g_strdup_printf("%ld",in[0]->u.num); } else { - dbg(0,"first parameter wrong type\n"); + dbg(lvl_error,"first parameter wrong type\n"); return; } - dbg(1,"in %s result %s\n",in[0]->u.str,escaped.u.str); + dbg(lvl_debug,"in %s result %s\n",in[0]->u.str,escaped.u.str); *out=attr_generic_add_attr(*out, attr_dup(&escaped)); g_free(escaped.u.str); } @@ -270,8 +293,8 @@ gui_internal_widget_append(wr,row); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this,56)); - gui_internal_menu_render(this); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_DEGREE)); + gui_internal_menu_render(this); } static void @@ -514,7 +537,7 @@ diagram_point->c.y=heightline->height; diagram_point->next=diagram_points; diagram_points=diagram_point; - dbg(2,"%d %d\n", diagram_point->c.x, diagram_point->c.y); + dbg(lvl_info,"%d %d\n", diagram_point->c.x, diagram_point->c.y); } } } @@ -548,12 +571,12 @@ coord_rect_extend(&dbbox, &diagram_point->c); diagram_point=diagram_point->next; } - dbg(2,"%d %d %d %d\n", dbbox.lu.x, dbbox.lu.y, dbbox.rl.x, dbbox.rl.y); + dbg(lvl_info,"%d %d %d %d\n", dbbox.lu.x, dbbox.lu.y, dbbox.rl.x, dbbox.rl.y); if (dbbox.rl.x > dbbox.lu.x && dbbox.lu.x*100/(dbbox.rl.x-dbbox.lu.x) <= 25) dbbox.lu.x=0; if (dbbox.lu.y > dbbox.rl.y && dbbox.rl.y*100/(dbbox.lu.y-dbbox.rl.y) <= 25) dbbox.rl.y=0; - dbg(2,"%d,%d %dx%d\n", box->p.x, box->p.y, box->w, box->h); + dbg(lvl_info,"%d,%d %dx%d\n", box->p.x, box->p.y, box->w, box->h); x=dbbox.lu.x; first=1; for (;;) { @@ -569,7 +592,7 @@ break; p[1].x=(min->c.x-dbbox.lu.x)*(box->w-10)/(dbbox.rl.x-dbbox.lu.x)+box->p.x+5; p[1].y=(min->c.y-dbbox.rl.y)*(box->h-10)/(dbbox.lu.y-dbbox.rl.y)+box->p.y+5; - dbg(2,"%d,%d=%d,%d\n",min->c.x, min->c.y, p[1].x,p[1].y); + dbg(lvl_info,"%d,%d=%d,%d\n",min->c.x, min->c.y, p[1].x,p[1].y); graphics_draw_circle(this->gra, this->foreground, &p[1], 2); if (first) first=0; @@ -630,7 +653,7 @@ struct attr pro; struct coord c; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); if (!in || !in[0]) return; if (!ATTR_IS_COORD_GEO(in[0]->type)) @@ -642,7 +665,7 @@ if (in[1] && ATTR_IS_STRING(in[1]->type)) { gui_internal_poi_param_set_filter(param, in[1]->u.str); if (in[2] && ATTR_IS_INT(in[2]->type)) - param->isAddressFilter=in[2]->u.num; + param->AddressFilterType=in[2]->u.num; } transform_from_geo(pro.u.projection,in[0]->u.coord_geo,&c); @@ -836,7 +859,7 @@ wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(w, wl); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this,2+gui_internal_keyboard_init_mode(getenv("LANG")))); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); gui_internal_menu_render(this); gui_internal_leave(this); } @@ -871,7 +894,7 @@ const char *name=_("Position"); int flags=-1; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); if (!in || !in[0]) return; if (!ATTR_IS_COORD_GEO(in[0]->type)) @@ -881,7 +904,7 @@ if (in[2] && ATTR_IS_INT(in[2]->type)) flags=in[2]->u.num; } - dbg(1,"flags=0x%x\n",flags); + dbg(lvl_debug,"flags=0x%x\n",flags); gui_internal_cmd_position_do(this, NULL, in[0]->u.coord_geo, NULL, name, flags); } @@ -904,14 +927,14 @@ { char *pattern,*command=NULL; if (!in || !in[0] || !ATTR_IS_STRING(in[0]->type)) { - dbg(0,"first parameter missing or wrong type\n"); + dbg(lvl_error,"first parameter missing or wrong type\n"); return; } pattern=in[0]->u.str; - dbg(1,"pattern %s\n",pattern); + dbg(lvl_debug,"pattern %s\n",pattern); if (in[1]) { command=gui_internal_cmd_match_expand(pattern, in+1); - dbg(1,"expand %s\n",command); + dbg(lvl_debug,"expand %s\n",command); gui_internal_set(pattern, command); command_evaluate(&this->self, command); g_free(command); @@ -955,7 +978,7 @@ gui_internal_cmd_write(struct gui_priv * this, char *function, struct attr **in, struct attr ***out, int *valid) { char *str=NULL; - dbg(1,"enter %s %p %p %p\n",function,in,out,valid); + dbg(lvl_debug,"enter %s %p %p %p\n",function,in,out,valid); if (!in) return; while (*in) { @@ -965,7 +988,7 @@ if (str) { str=g_strdup_printf("%s\n",str); #if 0 - dbg(0,"%s\n",str); + dbg(lvl_debug,"%s\n",str); #endif gui_internal_html_parse_text(this, str); } @@ -988,11 +1011,11 @@ char format[4],*end=strchr(c+2,'}'),*replacement=NULL,*new_str; int is_arg; if (!end) { - dbg(0,"Missing closing brace in format string %s\n",c); + dbg(lvl_error,"Missing closing brace in format string %s\n",c); goto error; } if (end-c > sizeof(format)) { - dbg(0,"Invalid format string %s\n",c); + dbg(lvl_error,"Invalid format string %s\n",c); goto error; } strncpy(format, c+2, end-c-2); @@ -1019,7 +1042,7 @@ } } if (!replacement) { - dbg(0,"Unsupported format string %s\n",format); + dbg(lvl_error,"Unsupported format string %s\n",format); goto error; } new_str=g_strconcat(str, replacement, end+1, NULL); @@ -1063,7 +1086,7 @@ str=gui_internal_append_attr(str, escape_mode_string|escape_mode_html, " class=", *in, ""); in++; } else { - dbg(0,"argument error: class argument not string\n"); + dbg(lvl_error,"argument error: class argument not string\n"); goto error; } if (ATTR_IS_STRING((*in)->type) && (*in)->u.str) { @@ -1072,7 +1095,7 @@ } in++; } else { - dbg(0,"argument error: image argument not string\n"); + dbg(lvl_error,"argument error: image argument not string\n"); goto error; } if (ATTR_IS_STRING((*in)->type) && (*in)->u.str) { @@ -1083,7 +1106,7 @@ } in++; } else { - dbg(0,"argument error: text argument not string\n"); + dbg(lvl_error,"argument error: text argument not string\n"); goto error; } gui_internal_onclick(&in,&onclick,NULL); @@ -1096,7 +1119,7 @@ } g_free(onclick); html=g_strdup_printf("%s%s\n",str,suffix); - dbg(1,"return %s",html); + dbg(lvl_debug,"return %s",html); gui_internal_html_parse_text(this, html); g_free(html); error: @@ -1109,16 +1132,16 @@ gui_internal_cmd_debug(struct gui_priv * this, char *function, struct attr **in, struct attr ***out, int *valid) { char *str; - dbg(0,"begin\n"); + dbg(lvl_debug,"begin\n"); if (in) { while (*in) { str=attr_to_text(*in, NULL, 0); - dbg(0,"%s:%s\n",attr_to_name((*in)->type),str); + dbg(lvl_debug,"%s:%s\n",attr_to_name((*in)->type),str); in++; g_free(str); } } - dbg(0,"done\n"); + dbg(lvl_debug,"done\n"); } static void diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_gesture.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_gesture.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_gesture.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_gesture.c 2016-01-02 22:29:50.000000000 +0000 @@ -61,7 +61,7 @@ } this->gesture_ring[this->gesture_ring_last].p=*p; this->gesture_ring[this->gesture_ring_last].msec=msec; - dbg(2,"msec="LONGLONG_FMT" x=%d y=%d\n",msec,p->x,p->y); + dbg(lvl_info,"msec="LONGLONG_FMT" x=%d y=%d\n",msec,p->x,p->y); }; int @@ -89,7 +89,7 @@ *p0=g->p; } msec=g->msec; - dbg(2,LONGLONG_FMT" %d %d\n",g->msec, g->p.x, g->p.y); + dbg(lvl_info,LONGLONG_FMT" %d %d\n",g->msec, g->p.x, g->p.y); for(i=1;(g=gui_internal_gesture_ring_get(this,i))!=NULL;i++) { if( msec-g->msec > 1000 ) break; @@ -99,7 +99,7 @@ if(p0) { *p0=g->p; } - dbg(2,LONGLONG_FMT" %d %d\n",g->msec, g->p.x, g->p.y); + dbg(lvl_info,LONGLONG_FMT" %d %d\n",g->msec, g->p.x, g->p.y); } return dt; } @@ -114,7 +114,7 @@ if( abs(dx) > this->icon_s*3 && abs(dy) < this->icon_s ) { struct widget *wt; - dbg(1,"horizontal dx=%d dy=%d\n",dx,dy); + dbg(lvl_debug,"horizontal dx=%d dy=%d\n",dx,dy); /* Prevent swiping if widget was scrolled beforehand */ if(this->pressed==2) @@ -133,11 +133,11 @@ gui_internal_table_button_prev(this,NULL,wt); return 1; } else if( abs(dy) > this->icon_s*3 && abs(dx) < this->icon_s ) { - dbg(1,"vertical dx=%d dy=%d\n",dx,dy); + dbg(lvl_debug,"vertical dx=%d dy=%d\n",dx,dy); } else if (dt>300 && abs(dx) icon_s && abs(dy) icon_s ) { - dbg(1,"longtap dx=%d dy=%d\n",dx,dy); + dbg(lvl_debug,"longtap dx=%d dy=%d\n",dx,dy); } else { - dbg(1,"none dx=%d dy=%d\n",dx,dy); + dbg(lvl_debug,"none dx=%d dy=%d\n",dx,dy); } return 0; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal.h navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal.h 2016-01-02 22:29:50.000000000 +0000 @@ -10,7 +10,6 @@ #define STATE_CLEAR 32 #define STATE_EDITABLE 64 #define STATE_SCROLLABLE 128 -#define STATE_OFFSCREEN 256 #define GESTURE_RINGSIZE 100 diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_html.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_html.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_html.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_html.c 2016-01-02 22:29:50.000000000 +0000 @@ -96,7 +96,7 @@ struct widget *menu; GList *l; - dbg(1,"enter form %p %s\n",w->form,w->form->onsubmit); + dbg(lvl_debug,"enter form %p %s\n",w->form,w->form->onsubmit); l=g_list_last(this->root.children); menu=l->data; graphics_draw_mode(this->gra, draw_mode_begin); @@ -113,7 +113,7 @@ if (replace) gui_internal_prune_menu_count(this, 1, 0); if (href && href[0] == '#') { - dbg(1,"href=%s\n",href); + dbg(lvl_debug,"href=%s\n",href); g_free(this->href); this->href=g_strdup(href); gui_internal_html_menu(this, this->html_text, href+1); @@ -376,22 +376,22 @@ static void gui_internal_set_refresh_callback(struct gui_priv *this, char *cond) { - dbg(2,"cond=%s\n",cond); + dbg(lvl_info,"cond=%s\n",cond); if (cond) { enum attr_type type; struct object_func *func; struct menu_data *menu_data=gui_internal_menu_data(this); - dbg(2,"navit=%p\n",this->nav); + dbg(lvl_info,"navit=%p\n",this->nav); type=command_evaluate_to_attr(&this->self, cond, NULL, &menu_data->refresh_callback_obj); if (type == attr_none) { - dbg(0,"can't get type of '%s'\n",cond); + dbg(lvl_error,"can't get type of '%s'\n",cond); return; } func=object_func_lookup(menu_data->refresh_callback_obj.type); if (!func) - dbg(0,"'%s' has no functions\n",cond); + dbg(lvl_error,"'%s' has no functions\n",cond); if (func && !func->add_attr) - dbg(0,"'%s' has no add_attr function\n",cond); + dbg(lvl_error,"'%s' has no add_attr function\n",cond); if (!func || !func->add_attr) return; menu_data->refresh_callback.type=attr_callback; @@ -461,7 +461,7 @@ } break; case html_tag_script: - dbg(1,"execute %s\n",text_stripped); + dbg(lvl_debug,"execute %s\n",text_stripped); gui_internal_evaluate(this,text_stripped); break; default: @@ -493,7 +493,7 @@ g_free(doc); if (this->keyboard_required && this->keyboard) { this->html_container->flags=gravity_center|orientation_vertical|flags_expand|flags_fill; - gui_internal_widget_append(this->html_container, gui_internal_keyboard(this,2+gui_internal_keyboard_init_mode(getenv("LANG")))); + gui_internal_widget_append(this->html_container, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); } gui_internal_menu_render(this); graphics_draw_mode(this->gra, draw_mode_end); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_keyboard.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_keyboard.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_keyboard.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_keyboard.c 2016-01-02 22:29:50.000000000 +0000 @@ -12,20 +12,48 @@ #include "gui_internal_menu.h" #include "gui_internal_keyboard.h" +void +gui_internal_keyboard_to_upper_case(struct gui_priv *this) +{ + struct menu_data *md; + md=gui_internal_menu_data(this); + // Switch to lowercase after the first key is pressed + if (md->keyboard_mode == 10) // Latin + gui_internal_keyboard_do(this, md->keyboard, 2); + if (md->keyboard_mode == 34) // Umlaut + gui_internal_keyboard_do(this, md->keyboard, 26); + if (md->keyboard_mode == 50) // Russian/Ukrainian/Belorussian + gui_internal_keyboard_do(this, md->keyboard, 42); +} -static void -gui_internal_cmd_keypress(struct gui_priv *this, struct widget *wm, void *data) +void +gui_internal_keyboard_to_lower_case(struct gui_priv *this) { struct menu_data *md; - gui_internal_keypress_do(this, (char *) wm->data); md=gui_internal_menu_data(this); // Switch to lowercase after the first key is pressed - if (md->keyboard_mode == 2) // Latin - gui_internal_keyboard_do(this, md->keyboard, 10); - if (md->keyboard_mode == 26) // Umlaut - gui_internal_keyboard_do(this, md->keyboard, 34); - if (md->keyboard_mode == 42) // Russian/Ukrainian/Belorussian - gui_internal_keyboard_do(this, md->keyboard, 50); + if (md->keyboard_mode == (VKBD_LATIN_UPPER | VKBD_FLAG_2)) // Latin + gui_internal_keyboard_do(this, md->keyboard, VKBD_LATIN_LOWER | VKBD_FLAG_2); + if (md->keyboard_mode == (VKBD_UMLAUT_UPPER | VKBD_FLAG_2)) // Umlaut + gui_internal_keyboard_do(this, md->keyboard, VKBD_UMLAUT_LOWER | VKBD_FLAG_2); + if (md->keyboard_mode == (VKBD_CYRILLIC_UPPER | VKBD_FLAG_2)) // Russian/Ukrainian/Belorussian + gui_internal_keyboard_do(this, md->keyboard, VKBD_CYRILLIC_LOWER | VKBD_FLAG_2); +} + +/** + * @brief Processes a key press on the internal GUI keyboard + * + * If the keyboard is currently in uppercase mode and {@code VKBD_MODE_2} is set, it is then switched to + * the corresponding lowercase mode. + * + * @param this The internal GUI instance + * @param wm + * @param data Not used + */ +static void +gui_internal_cmd_keypress(struct gui_priv *this, struct widget *wm, void *data) +{ + gui_internal_keypress_do(this, (char *) wm->data); } static struct widget * @@ -54,21 +82,28 @@ static void gui_internal_keyboard_change(struct gui_priv *this, struct widget *key, void *data); -// A list of availiable keyboard modes. +/** + * @struct gui_internal_keyb_mode + * @brief Describes a keyboard mode + */ +/** + * @var gui_internal_keyb_modes + * @brief A list of all available keyboard modes + */ struct gui_internal_keyb_mode { - char title[16]; // Label to be displayed on keys that switch to it - int font; // Font size of label - int case_mode; // Mode to switch to when case CHANGE() key is pressed. - int umlaut_mode; // Mode to switch to when UMLAUT() key is pressed. + char title[16]; /**< Label to be displayed on keys that switch to it */ + int font; /**< Font size of label */ + int case_mode; /**< Mode to switch to when case CHANGE() key is pressed. */ + int umlaut_mode; /**< Mode to switch to when UMLAUT() key is pressed. */ } gui_internal_keyb_modes[]= { - /* 0*/ {"ABC", 2, 8, 24}, - /* 8*/ {"abc", 2, 0, 32}, - /*16*/ {"123", 2, 0, 24}, - /*24*/ {"ÄÖÜ", 2, 40, 0}, - /*32*/ {"äöü", 2, 32, 8}, - /*40*/ {"АБВ", 2, 48, 0}, - /*48*/ {"абв", 2, 40, 8}, - /*56*/ {"DEG", 2, 2, 2} + /* 0: VKBD_LATIN_UPPER */ {"ABC", 2, VKBD_LATIN_LOWER, VKBD_UMLAUT_UPPER}, + /* 8: VKBD_LATIN_LOWER */ {"abc", 2, VKBD_LATIN_UPPER, VKBD_UMLAUT_LOWER}, + /*16: VKBD_NUMERIC */ {"123", 2, VKBD_LATIN_UPPER, VKBD_UMLAUT_UPPER}, + /*24: VKBD_UMLAUT_UPPER */ {"ÄÖÜ", 2, VKBD_UMLAUT_LOWER, VKBD_LATIN_UPPER}, + /*32: VKBD_UMLAUT_LOWER */ {"äöü", 2, VKBD_UMLAUT_UPPER, VKBD_LATIN_LOWER}, + /*40: VKBD_CYRILLIC_UPPER*/ {"АБВ", 2, VKBD_CYRILLIC_UPPER, VKBD_LATIN_UPPER}, + /*48: VKBD_CYRILLIC_LOWER*/ {"абв", 2, VKBD_CYRILLIC_UPPER, VKBD_LATIN_LOWER}, + /*56: VKBD_DEGREE */ {"DEG", 2, VKBD_FLAG_2, VKBD_FLAG_2} }; @@ -80,9 +115,23 @@ gui_internal_keyb_modes[(x)/8].title, \ gui_internal_keyb_modes[(x)/8].font, \ gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h) \ - -> datai=(mode&7)+((x)&~7) + -> datai = (mode & VKBD_MASK_7) | ((x) & VKBD_LAYOUT_MASK) #define SWCASE() MODE(gui_internal_keyb_modes[mode/8].case_mode) #define UMLAUT() MODE(gui_internal_keyb_modes[mode/8].umlaut_mode) +/** + * @brief Creates a new keyboard widget or switches the layout of an existing widget + * + * This is an internal helper function that is not normally called directly. To create a new keyboard + * widget, GUI widgets should call {@link gui_internal_keyboard(struct gui_priv *, struct widget *, int)}. + * + * @param this The internal GUI instance + * @param wkbdb The existing keyboard widget whose layout is to be switched, or {@code NULL} to create a + * new keyboard widget + * @param mode The new keyboard mode, see {@link gui_internal_keyboard(struct gui_priv *, struct widget *, int)} + * for a description of possible values + * + * @return {@code wkbdb} if a non-NULL value was passed, else a new keyboard widget will be returned. + */ struct widget * gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode) { @@ -99,7 +148,7 @@ this->current.x=-1; this->current.y=-1; gui_internal_highlight(this); - if (md->keyboard_mode >= 1024) + if (md->keyboard_mode & VKBD_FLAG_1024) render=2; else render=1; @@ -116,55 +165,55 @@ max_w=max_w/8; max_h=max_h/8; // Allows 3 results in the list when searching for Towns wkbd->p.y=max_h*2; - if(mode>=40&&mode<56) { // Russian/Ukrainian/Belarussian layout needs more space... + if (((mode & VKBD_LAYOUT_MASK) == VKBD_CYRILLIC_UPPER) || ((mode & VKBD_LAYOUT_MASK) == VKBD_CYRILLIC_LOWER)) { // Russian/Ukrainian/Belarussian layout needs more space... max_h=max_h*4/5; max_w=max_w*8/9; wkbd->cols=9; } - if (mode >= 0 && mode < 8) { + if ((mode & VKBD_LAYOUT_MASK) == VKBD_LATIN_UPPER) { for (i = 0 ; i < 26 ; i++) { char text[]={'A'+i,'\0'}; KEY(text); } gui_internal_keyboard_key(this, wkbd, space," ",max_w,max_h); - if (mode == 0) { + if (!(mode & VKBD_MASK_7)) { KEY("-"); KEY("'"); wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h); - wk->datai=mode+1024; + wk->datai = mode | VKBD_FLAG_1024; } else { wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h); - wk->datai=mode+1024; + wk->datai = mode | VKBD_FLAG_1024; SWCASE(); - MODE(16); + MODE(VKBD_NUMERIC); } UMLAUT(); gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h); } - if (mode >= 8 && mode < 16) { + if ((mode & VKBD_LAYOUT_MASK) == VKBD_LATIN_LOWER) { for (i = 0 ; i < 26 ; i++) { char text[]={'a'+i,'\0'}; KEY(text); } gui_internal_keyboard_key(this, wkbd, space," ",max_w,max_h); - if (mode == 8) { + if (!(mode & VKBD_MASK_7)) { KEY("-"); KEY("'"); wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h); - wk->datai=mode+1024; + wk->datai = mode | VKBD_FLAG_1024; } else { wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h); - wk->datai=mode+1024; + wk->datai = mode | VKBD_FLAG_1024; SWCASE(); - MODE(16); + MODE(VKBD_NUMERIC); } UMLAUT(); gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h); } - if (mode >= 16 && mode < 24) { + if ((mode & VKBD_LAYOUT_MASK) == VKBD_NUMERIC) { for (i = 0 ; i < 10 ; i++) { char text[]={'0'+i,'\0'}; KEY(text); @@ -174,27 +223,27 @@ - if (mode == 16) { + if (!(mode & VKBD_MASK_7)) { SPACER(); KEY("-"); KEY("'"); wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h); - wk->datai=mode+1024; + wk->datai = mode | VKBD_FLAG_1024; SPACER(); SPACER(); } else { SPACER(); - MODE(40); - MODE(48); + MODE(VKBD_CYRILLIC_UPPER); + MODE(VKBD_CYRILLIC_LOWER); wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h); - wk->datai=mode+1024; - MODE(0); - MODE(8); + wk->datai = mode | VKBD_FLAG_1024; + MODE(VKBD_LATIN_UPPER); + MODE(VKBD_LATIN_LOWER); } UMLAUT(); gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h); } - if (mode >= 24 && mode < 32) { + if ((mode & VKBD_LAYOUT_MASK) == VKBD_UMLAUT_UPPER) { KEY("Ä"); KEY("Ë"); KEY("Ï"); KEY("Ö"); KEY("Ü"); KEY("Æ"); KEY("Ø"); KEY("Å"); KEY("Á"); KEY("É"); KEY("Í"); KEY("Ó"); KEY("Ú"); KEY("Š"); KEY("Č"); KEY("Ž"); KEY("À"); KEY("È"); KEY("Ì"); KEY("Ò"); KEY("Ù"); KEY("Ś"); KEY("Ć"); KEY("Ź"); @@ -204,7 +253,7 @@ gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h); } - if (mode >= 32 && mode < 40) { + if ((mode & VKBD_LAYOUT_MASK) == VKBD_UMLAUT_LOWER) { KEY("ä"); KEY("ë"); KEY("ï"); KEY("ö"); KEY("ü"); KEY("æ"); KEY("ø"); KEY("å"); KEY("á"); KEY("é"); KEY("í"); KEY("ó"); KEY("ú"); KEY("š"); KEY("č"); KEY("ž"); KEY("à"); KEY("è"); KEY("ì"); KEY("ò"); KEY("ù"); KEY("ś"); KEY("ć"); KEY("ź"); @@ -214,7 +263,7 @@ gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h); } - if (mode >= 40 && mode < 48) { + if ((mode & VKBD_LAYOUT_MASK) == VKBD_CYRILLIC_UPPER) { KEY("А"); KEY("Б"); KEY("В"); KEY("Г"); KEY("Д"); KEY("Е"); KEY("Ж"); KEY("З"); KEY("И"); KEY("Й"); KEY("К"); KEY("Л"); KEY("М"); KEY("Н"); KEY("О"); KEY("П"); KEY("Р"); KEY("С"); KEY("Т"); KEY("У"); KEY("Ф"); KEY("Х"); KEY("Ц"); KEY("Ч"); KEY("Ш"); KEY("Щ"); KEY("Ъ"); @@ -223,17 +272,17 @@ gui_internal_keyboard_key(this, wkbd, space," ",max_w,max_h); wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h); - wk->datai=mode+1024; + wk->datai = mode | VKBD_FLAG_1024; SWCASE(); - MODE(16); + MODE(VKBD_NUMERIC); SPACER(); gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h); } - if (mode >= 48 && mode < 56) { + if ((mode & VKBD_LAYOUT_MASK) == VKBD_CYRILLIC_LOWER) { KEY("а"); KEY("б"); KEY("в"); KEY("г"); KEY("д"); KEY("е"); KEY("ж"); KEY("з"); KEY("и"); KEY("й"); KEY("к"); KEY("л"); KEY("м"); KEY("н"); KEY("о"); KEY("п"); KEY("р"); KEY("с"); KEY("т"); KEY("у"); KEY("ф"); KEY("х"); KEY("ц"); KEY("ч"); KEY("ш"); KEY("щ"); KEY("ъ"); @@ -242,11 +291,11 @@ gui_internal_keyboard_key(this, wkbd, space," ",max_w,max_h); wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h); - wk->datai=mode+1024; + wk->datai = mode | VKBD_FLAG_1024; SWCASE(); - MODE(16); + MODE(VKBD_NUMERIC); SPACER(); @@ -256,10 +305,10 @@ if(md->search_list && md->search_list->type==widget_table) { struct table_data *td=(struct table_data*)(md->search_list->data); - td->scroll_buttons.button_box_hide=mode<1024; + td->scroll_buttons.button_box_hide = !(mode & VKBD_FLAG_1024); } - if (mode >= 56 && mode < 64) { /* special case for coordinates input screen (enter_coord) */ + if ((mode & VKBD_LAYOUT_MASK) == VKBD_DEGREE) { /* special case for coordinates input screen (enter_coord) */ KEY("0"); KEY("1"); KEY("2"); KEY("3"); KEY("4"); SPACER(); KEY("N"); KEY("S"); KEY("5"); KEY("6"); KEY("7"); KEY("8"); KEY("9"); SPACER(); KEY("E"); KEY("W"); KEY("°"); KEY("."); KEY("'"); @@ -267,17 +316,17 @@ SPACER(); wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h); - wk->datai=mode+1024; + wk->datai = mode | VKBD_FLAG_1024; SPACER(); gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h); } - if (mode >= 1024) { + if (mode & VKBD_FLAG_1024) { char *text=NULL; int font=0; struct widget *wkl; - mode -= 1024; + mode &= ~VKBD_FLAG_1024; text=gui_internal_keyb_modes[mode/8].title; font=gui_internal_keyb_modes[mode/8].font; wk=gui_internal_box_new(this, gravity_center|orientation_horizontal|flags_fill); @@ -316,6 +365,19 @@ #undef UMLAUT #undef MODE +/** + * @brief Creates a keyboard widget. + * + * This function creates a widget to display the internal GUI keyboard. + * + * The {@code mode} argument specifies the type of keyboard which should initially be displayed. Refer + * to {@link enum vkbd_mode} for a list of possible modes and their meaning. + * + * @param this The internal GUI instance + * @param mode The mode for the keyboard + * + * @return A new keyboard widget + */ struct widget * gui_internal_keyboard(struct gui_priv *this, int mode) { @@ -329,6 +391,18 @@ { gui_internal_keyboard_do(this, key->data, key->datai); } + +/** + * @brief Returns the default keyboard mode for a country. + * + * The return value can be passed to {@link gui_internal_keyboard(struct gui_priv *, int)} and related + * functions. + * + * @param lang The two-letter country code + * + * @return {@code VKBD_CYRILLIC_UPPER} for countries using the Cyrillic alphabet, + * {@code VKBD_LATIN_UPPER} otherwise + */ int gui_internal_keyboard_init_mode(char *lang) { @@ -339,25 +413,25 @@ * Set cyrillic keyboard for countries using Cyrillic alphabet */ if (strstr(lang,"RU")) - ret = 40; - if (strstr(lang,"UA")) - ret = 40; - if (strstr(lang,"BY")) - ret = 40; - if (strstr(lang,"RS")) - ret = 40; - if (strstr(lang,"BG")) - ret = 40; - if (strstr(lang,"MK")) - ret = 40; - if (strstr(lang,"KZ")) - ret = 40; - if (strstr(lang,"KG")) - ret = 40; - if (strstr(lang,"TJ")) - ret = 40; - if (strstr(lang,"MN")) - ret = 40; + ret = VKBD_CYRILLIC_UPPER; + else if (strstr(lang,"UA")) + ret = VKBD_CYRILLIC_UPPER; + else if (strstr(lang,"BY")) + ret = VKBD_CYRILLIC_UPPER; + else if (strstr(lang,"RS")) + ret = VKBD_CYRILLIC_UPPER; + else if (strstr(lang,"BG")) + ret = VKBD_CYRILLIC_UPPER; + else if (strstr(lang,"MK")) + ret = VKBD_CYRILLIC_UPPER; + else if (strstr(lang,"KZ")) + ret = VKBD_CYRILLIC_UPPER; + else if (strstr(lang,"KG")) + ret = VKBD_CYRILLIC_UPPER; + else if (strstr(lang,"TJ")) + ret = VKBD_CYRILLIC_UPPER; + else if (strstr(lang,"MN")) + ret = VKBD_CYRILLIC_UPPER; g_free(lang); return ret; } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_keyboard.h navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_keyboard.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_keyboard.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_keyboard.h 2016-01-02 22:29:50.000000000 +0000 @@ -1,7 +1,30 @@ +/** + * Modes for the on-screen keyboard + */ +enum vkbd_mode { + /* layouts */ + VKBD_LATIN_UPPER = 0, /*!< Latin uppercase characters */ + VKBD_LATIN_LOWER = 8, /*!< Latin lowercase characters */ + VKBD_NUMERIC = 16, /*!< Numeric keyboard */ + VKBD_UMLAUT_UPPER = 24, /*!< Extended Latin uppercase characters */ + VKBD_UMLAUT_LOWER = 32, /*!< Extended Latin lowercase characters */ + VKBD_CYRILLIC_UPPER = 40, /*!< Cyrillic uppercase characters */ + VKBD_CYRILLIC_LOWER = 48, /*!< Cyrillic lowercase characters */ + VKBD_DEGREE = 56, /*!< Numeric keyboard with extra characters (NESW, degree, minute) for coordinate input */ + + /* modifiers and masks */ + VKBD_FLAG_2 = 2, /* FIXME seems to show alpha/num switch (VKBD_NUMERIC and VKBD_LATIN_* only) and switches to lowercase after first character */ + VKBD_MASK_7 = 7, /* FIXME modifiers for layout? */ + VKBD_FLAG_1024 = 1024, /* FIXME what is this for? Seems to have to do something with scroll box visibility */ + VKBD_LAYOUT_MASK = ~7, /* when XORed with the mode, preserves only the layout FIXME document properly */ +}; + /* prototypes */ struct gui_priv; struct widget; struct widget *gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode); struct widget *gui_internal_keyboard(struct gui_priv *this, int mode); int gui_internal_keyboard_init_mode(char *lang); +void gui_internal_keyboard_to_upper_case(struct gui_priv *this); +void gui_internal_keyboard_to_lower_case(struct gui_priv *this); /* end of prototypes */ diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_menu.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_menu.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_menu.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_menu.c 2016-01-02 22:29:50.000000000 +0000 @@ -118,7 +118,7 @@ struct widget *wlb,*wb,*wm=w; wm->flags=gravity_center|orientation_vertical|flags_expand|flags_fill; w=gui_internal_box_new(this, gravity_center|orientation_horizontal|flags_expand|flags_fill); - dbg(2,"topbox->menu_data=%p\n", topbox->menu_data); + dbg(lvl_info,"topbox->menu_data=%p\n", topbox->menu_data); gui_internal_widget_append(wm, w); wb=gui_internal_box_new(this, gravity_right_center|orientation_horizontal|flags_fill); wb->bl=6; @@ -260,7 +260,7 @@ use_sep=1; else use_sep=0; - dbg(1,"%d (%s) + %d + %d + %d > %d\n", wcn->w, wc->text, width_used, w->spx, use_sep ? sep_len : 0, width); + dbg(lvl_debug,"%d (%s) + %d + %d + %d > %d\n", wcn->w, wc->text, width_used, w->spx, use_sep ? sep_len : 0, width); if (wcn->w + width_used + w->spx + (use_sep ? sep_len : 0) + (g_list_previous(l) ? dots_len : 0) > width) { incomplete=1; gui_internal_widget_destroy(this, wcn); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_poi.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_poi.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_poi.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_poi.c 2016-01-02 22:29:50.000000000 +0000 @@ -122,7 +122,7 @@ icon=g_strdup(el->u.icon.src); } char *dot=g_strrstr(icon,"."); - dbg(2,"%s %s\n", item_to_name(item->type),icon); + dbg(lvl_debug,"%s %s\n", item_to_name(item->type),icon); if(dot) *dot=0; img=image_new_xs(this,icon); @@ -301,6 +301,8 @@ type=item_to_name(item->type); icon=gui_internal_poi_icon(this,item); + if(!icon && item->type==type_house_number) + icon=image_new_xs(this,"post"); if(!icon) { icon=image_new_xs(this,"gui_inactive"); text=g_strdup_printf("%s%s%s%s %s", distbuf, dirbuf, routedistbuf, type, name); @@ -332,10 +334,12 @@ */ char * -gui_internal_compose_item_address_string(struct item *item) +gui_internal_compose_item_address_string(struct item *item, int prependPostal) { char *s=g_strdup(""); struct attr attr; + if(prependPostal && item_attr_get(item, attr_postal, &attr)) + s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL); if(item_attr_get(item, attr_house_number, &attr)) s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL); if(item_attr_get(item, attr_street_name, &attr)) @@ -383,8 +387,8 @@ char *long_name, *s; GList *f; int i; - if (param->isAddressFilter) { - s=gui_internal_compose_item_address_string(item); + if (param->AddressFilterType>0) { + s=gui_internal_compose_item_address_string(item,param->AddressFilterType==2?1:0); } else if (item_attr_get(item, attr_label, &attr)) { s=g_strdup_printf("%s %s", item_to_name(item->type), map_convert_string_tmp(item->map,attr.u.str)); } else { @@ -455,7 +459,12 @@ } else { param=g_new0(struct poi_param,1); } - param->isAddressFilter=strcmp(wm->name,"AddressFilter")==0; + if(!strcmp(wm->name,"AddressFilter")) + param->AddressFilterType=1; + else if(!strcmp(wm->name,"AddressFilterZip")) + param->AddressFilterType=2; + else + param->AddressFilterType=0; gui_internal_poi_param_set_filter(param, w->text); @@ -490,7 +499,7 @@ { struct widget *wb, *w, *wr, *wk, *we; int keyboard_mode; - keyboard_mode=2+gui_internal_keyboard_init_mode(getenv("LANG")); + keyboard_mode = VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")); wb=gui_internal_menu(this,"Filter"); w=gui_internal_box_new(this, gravity_center|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(wb, w); @@ -516,9 +525,14 @@ wb->name=g_strdup("AddressFilter"); wb->func = gui_internal_cmd_pois_filter_do; wb->data=wk; + gui_internal_widget_append(we, wb=gui_internal_image_new(this, image_new_xs(this, "zipcode"))); + wb->state |= STATE_SENSITIVE; + wb->name=g_strdup("AddressFilterZip"); + wb->func = gui_internal_cmd_pois_filter_do; + wb->data=wk; if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this,keyboard_mode)); + gui_internal_widget_append(w, gui_internal_keyboard(this, keyboard_mode)); gui_internal_menu_render(this); @@ -559,7 +573,7 @@ char buffer[32]; struct poi_param *paramnew; struct attr route; - +dbg(lvl_debug,"POIs..."); if(data) { param = data; } else { @@ -582,8 +596,8 @@ items= g_new0( struct item_data, maxitem); - dbg(2, "Params: sel = %i, selnb = %i, pagenb = %i, dist = %i, filterstr = %s, isAddressFilter= %d\n", - param->sel, param->selnb, param->pagenb, param->dist, param->filterstr, param->isAddressFilter); + dbg(lvl_debug, "Params: sel = %i, selnb = %i, pagenb = %i, dist = %i, filterstr = %s, AddressFilterType= %d\n", + param->sel, param->selnb, param->pagenb, param->dist, param->filterstr, param->AddressFilterType); wb=gui_internal_menu(this, isel ? isel->name : _("POIs")); w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill); @@ -600,7 +614,7 @@ while ((m=mapset_next(h, 1))) { selm=map_selection_dup_pro(sel, pro, map_projection(m)); mr=map_rect_new(m, selm); - dbg(2,"mr=%p\n", mr); + dbg(lvl_debug,"mr=%p\n", mr); if (mr) { while ((item=map_rect_get_item(mr))) { if (gui_internal_cmd_pois_item_selected(param, item) && @@ -612,7 +626,7 @@ char *label; item_attr_rewind(item); if (item->type==type_house_number) { - label=gui_internal_compose_item_address_string(item); + label=gui_internal_compose_item_address_string(item,1); } else if (item_attr_get(item, attr_label, &attr)) { label=map_convert_string(item->map,attr.u.str); // Buildings which label is equal to addr:housenumber value @@ -671,10 +685,10 @@ struct item_data *data = fh_extractmin(fh); if (data == NULL) { - dbg(2, "Empty heap: maxitem = %i, it = %i, dist = %i\n", maxitem, it, dist); + dbg(lvl_debug, "Empty heap: maxitem = %i, it = %i, dist = %i\n", maxitem, it, dist); break; } - dbg(2, "dist1: %i, dist2: %i\n", data->dist, (-key)>>10); + dbg(lvl_debug, "dist1: %i, dist2: %i\n", data->dist, (-key)>>10); if(i==(it-pagesize*pagenb) && data->dist>prevdist) prevdist=data->dist; wi=gui_internal_cmd_pois_item(this, ¢er, &data->item, &data->c, route.u.route, data->dist, data->label); @@ -753,13 +767,13 @@ while(firstrow>=0) { int currow=g_list_index(wtable->children, td->bottom_row->data) - firstrow; if(currow<0) { - dbg(0,"Can't find bottom row in children list. Stop paging.\n"); + dbg(lvl_debug,"Can't find bottom row in children list. Stop paging.\n"); break; } if(currow>=param->count) break; if(!(td->scroll_buttons.next_button->state & STATE_SENSITIVE)) { - dbg(0,"Reached last page but item %i not found. Stop paging.\n",param->count); + dbg(lvl_debug,"Reached last page but item %i not found. Stop paging.\n",param->count); break; } gui_internal_table_button_next(this, td->scroll_buttons.next_button, NULL); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_poi.h navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_poi.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_poi.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_poi.h 2016-01-02 22:29:50.000000000 +0000 @@ -25,9 +25,9 @@ unsigned char dist; /** * Should filter phrase be compared to postal address of the POI. - * =1 - address filter, =0 - name filter + * =0 - name filter, =1 - address filter, =2 - address filter, including postal code */ - unsigned char isAddressFilter; + unsigned char AddressFilterType; /** * Filter string, casefold()ed and divided into substrings at the spaces, which are replaced by ASCII 0*. */ @@ -51,7 +51,7 @@ void gui_internal_poi_param_free(void *p); void gui_internal_poi_param_set_filter(struct poi_param *param, char *text); struct widget *gui_internal_cmd_pois_item(struct gui_priv *this, struct coord *center, struct item *item, struct coord *c, struct route *route, int dist, char *name); -char *gui_internal_compose_item_address_string(struct item *item); +char *gui_internal_compose_item_address_string(struct item *item, int prependPostal); void gui_internal_cmd_pois_filter(struct gui_priv *this, struct widget *wm, void *data); void gui_internal_cmd_pois(struct gui_priv *this, struct widget *wm, void *data); /* end of prototypes */ diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_priv.h navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_priv.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_priv.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_priv.h 2016-01-02 22:29:50.000000000 +0000 @@ -35,11 +35,11 @@ int route_showing; }; -//############################################################################################################## -//# Description: -//# Comment: -//# Authors: Martin Schaller (04/2008) -//############################################################################################################## +/** + * Private data for the internal GUI. + * + * @author Martin Schaller (04/2008) + */ struct gui_priv { struct navit *nav; struct attr self; @@ -57,19 +57,11 @@ char *font_name; int fullscreen; struct graphics_font *fonts[3]; - /** - * The size (in pixels) that xs style icons should be scaled to. - * This icon size can be too small to click it on some devices. - */ - int icon_xs; - /** - * The size (in pixels) that s style icons (small) should be scaled to - */ - int icon_s; - /** - * The size (in pixels) that l style icons should be scaled to - */ - int icon_l; + int icon_xs; /**< The size (in pixels) that xs style icons should be scaled to. + * This icon size can be too small to click it on some devices. + */ + int icon_s; /**< The size (in pixels) that s style icons (small) should be scaled to */ + int icon_l; /**< The size (in pixels) that l style icons should be scaled to */ int pressed; struct widget *widgets; int widgets_count; @@ -86,30 +78,29 @@ int signal_on_map_click; char *country_iso2; int speech; - int keyboard; - int keyboard_required; - /** - * The setting information read from the configuration file. - * values of -1 indicate no value was specified in the config file. - */ - struct gui_config_settings config; + int keyboard; /**< Whether the internal GUI keyboard is enabled */ + int keyboard_required; /**< Whether keyboard input is needed. This is only used by the + * HTML menu, text entry dialogs do not use this member. + */ + struct gui_config_settings config; /**< The setting information read from the configuration file. + * values of -1 indicate no value was specified in the config file. + */ struct event_idle *idle; struct callback *motion_cb,*button_cb,*resize_cb,*keypress_cb,*window_closed_cb,*idle_cb, *motion_timeout_callback; struct event_timeout *motion_timeout_event; struct point current; struct callback * vehicle_cb; - /** - * Stores information about the route. - */ - struct route_data route_data; + struct route_data route_data; /**< Stores information about the route. */ struct gui_internal_data data; struct callback_list *cbl; int flags; int cols; - struct attr osd_configuration; - int pitch; + struct attr osd_configuration; /**< The OSD configuration, a set of flags controlling which OSD + * items will be visible. + */ + int pitch; /**< The pitch for the 3D map view. */ int flags_town,flags_street,flags_house_number; int radius; int mouse_button_clicked_on_map; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_search.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_search.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_search.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_search.c 2016-01-02 22:29:50.000000000 +0000 @@ -87,7 +87,7 @@ sa=removecase(a->text); sb=removecase(b->text); r=strcmp(sa,sb); - dbg(1,"%s %s %d\n",sa,sb,r); + dbg(lvl_debug,"%s %s %d\n",sa,sb,r); g_free(sa); g_free(sb); return r; @@ -154,14 +154,14 @@ char *postal_sep=" "; char *district_begin=" ("; char *district_end=")"; - char *county_sep = ", Co. "; + char *county_sep = ", "; char *county = res->town->common.county_name; if (!postal) postal_sep=postal=""; if (!district || (flags & 1)) district_begin=district_end=district=""; - if (!county) + if (!county || !strcmp(county, town)) county_sep=county=""; if(level==1 ) { @@ -202,7 +202,7 @@ possible_keys[len]=trunk_name[strlen(search_text)]; possible_keys[len+1]='\0'; } - dbg(2,"searching for %s, found: %s, currently possible_keys: %s \n", search_text, item_name, possible_keys); + dbg(lvl_info,"searching for %s, found: %s, currently possible_keys: %s \n", search_text, item_name, possible_keys); } } } @@ -260,7 +260,7 @@ if(!exp) continue; if(!strcmp(exp,folded_query)) { - dbg(1,"exact match for the whole string %s\n", exp); + dbg(lvl_debug,"exact match for the whole string %s\n", exp); match_quality=full_string_match; g_free(exp); break; @@ -268,7 +268,7 @@ if((p=strstr(exp,folded_query))!=NULL) { p+=strlen(folded_query); if(!*p||strchr(LINGUISTICS_WORD_SEPARATORS_ASCII,*p)) { - dbg(1,"exact matching word found inside string %s\n",exp); + dbg(lvl_debug,"exact matching word found inside string %s\n",exp); match_quality=word_match; } } @@ -313,21 +313,24 @@ return resultlist_entry; } +/** + * @brief List of possible next keys/characters given the current result list of the incremental search. + */ +char possible_keys_incremental_search[256]=""; + static void gui_internal_search_idle(struct gui_priv *this, char *wm_name, struct widget *search_list, void *param) { char *result_main_label=NULL,*result_sublabel=NULL,*item_name=NULL, *widget_name=NULL, *search_text; struct search_list_result *res; struct item *item=NULL; - static char possible_keys[256]=""; - struct widget *search_input=NULL; + struct widget *search_input=NULL; struct widget *menu, *resultlist_row, *resultlist_entry; res=search_list_get_result(this->sl); if (!res) { gui_internal_search_idle_end(this); - gui_internal_highlight_possible_keys(this, possible_keys); - possible_keys[0]='\0'; + gui_internal_highlight_possible_keys(this, possible_keys_incremental_search); return; } @@ -352,7 +355,7 @@ widget_name=g_strdup(result_main_label); } if(!item_name) { - dbg(0, "Skipping nameless item in search (search type: %s). Please report this as a bug.\n", wm_name); + dbg(lvl_error, "Skipping nameless item in search (search type: %s). Please report this as a bug.\n", wm_name); return; } @@ -364,7 +367,7 @@ dbg_assert(search_input); search_text=search_input->text; - gui_internal_find_next_possible_key(search_text, wm_name, possible_keys, item_name); + gui_internal_find_next_possible_key(search_text, wm_name, possible_keys_incremental_search, item_name); resultlist_row=gui_internal_widget_table_row_new(this, gravity_left|orientation_horizontal|flags_fill); if (!result_sublabel) @@ -401,9 +404,9 @@ GList *l; struct widget *search_list=gui_internal_menu_data(this)->search_list; void *param=(void *)3; - int minlen=1; gui_internal_widget_table_clear(this, search_list); + possible_keys_incremental_search[0]='\0'; if (! strcmp(wm->name,"Country")) param=(void *)4; @@ -411,13 +414,13 @@ param=(void *)5; if (! strcmp(wm->name,"House number")) param=(void *)6; - dbg(1,"%s now '%s'\n", wm->name, wm->text); + dbg(lvl_debug,"%s now '%s'\n", wm->name, wm->text); gui_internal_search_idle_end(this); - if (wm->text && g_utf8_strlen(wm->text, -1) >= minlen) { + if (wm->text && g_utf8_strlen(wm->text, -1) > 0) { struct attr search_attr; - dbg(1,"process\n"); + dbg(lvl_debug,"process\n"); if (! strcmp(wm->name,"Country")) search_attr.type=attr_country_all; if (! strcmp(wm->name,"Town")) @@ -428,7 +431,14 @@ search_attr.type=attr_house_number; search_attr.u.str=wm->text; search_list_search(this->sl, &search_attr, 1); + // Text is not necessarily entered via the on-screen keyboard, + // but we now switch it to lower case anyway. + gui_internal_keyboard_to_lower_case(this); gui_internal_search_idle_start(this, wm->name, search_list, param); + } else { + // If not enough content is entered, we highlight all keys. + gui_internal_keyboard_to_upper_case(this); + gui_internal_highlight_possible_keys(this, ""); } l=g_list_last(this->root.children); gui_internal_widget_render(this, l->data); @@ -452,7 +462,7 @@ item=country_search_get_item(cs); if (item && item_attr_get(item, attr_country_name, &country_name)) { search_attr.type=attr_country_all; - dbg(1,"country %s\n", country_name.u.str); + dbg(lvl_debug,"country %s\n", country_name.u.str); search_attr.u.str=country_name.u.str; search_list_search(this->sl, &search_attr, 0); while((res=search_list_get_result(this->sl))); @@ -465,9 +475,9 @@ } country_search_destroy(cs); } else { - dbg(0,"warning: no default country found\n"); + dbg(lvl_error,"warning: no default country found\n"); if (this->country_iso2) { - dbg(0,"attempting to use country '%s'\n",this->country_iso2); + dbg(lvl_debug,"attempting to use country '%s'\n",this->country_iso2); search_attr.type=attr_country_iso2; search_attr.u.str=this->country_iso2; search_list_search(this->sl, &search_attr, 0); @@ -502,7 +512,7 @@ char *country; int keyboard_mode; gui_internal_search_list_new(this); - keyboard_mode=2+gui_internal_keyboard_init_mode(this->country_iso2?this->country_iso2:getenv("LANG")); + keyboard_mode = VKBD_FLAG_2 | gui_internal_keyboard_init_mode(this->country_iso2 ? this->country_iso2 : getenv("LANG")); wb=gui_internal_menu(this, what); w=gui_internal_box_new(this, gravity_center|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(wb, w); @@ -543,7 +553,7 @@ gui_internal_widget_append(we, wb=gui_internal_image_new(this, image_new_xs(this, "gui_select_street"))); wb->state |= STATE_SENSITIVE; wb->func = gui_internal_back; - keyboard_mode=18; + keyboard_mode = VKBD_NUMERIC | VKBD_FLAG_2; } gui_internal_widget_append(we, wk=gui_internal_label_new(this, NULL)); if (wnext) { @@ -559,14 +569,14 @@ wk->func = gui_internal_search_changed; wk->name=g_strdup(type); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this,keyboard_mode)); + gui_internal_widget_append(w, gui_internal_keyboard(this, keyboard_mode)); gui_internal_menu_render(this); } void gui_internal_search_house_number_in_street(struct gui_priv *this, struct widget *widget, void *data) { - dbg(2,"id %d\n", widget->selection_id); + dbg(lvl_info,"id %d\n", widget->selection_id); search_list_select(this->sl, attr_street_name, 0, 0); search_list_select(this->sl, attr_street_name, widget->selection_id, 1); gui_internal_search(this,_("House number"),"House number",0); @@ -575,7 +585,7 @@ void gui_internal_search_street_in_town(struct gui_priv *this, struct widget *widget, void *data) { - dbg(2,"id %d\n", widget->selection_id); + dbg(lvl_info,"id %d\n", widget->selection_id); search_list_select(this->sl, attr_town_or_district_name, 0, 0); search_list_select(this->sl, attr_town_or_district_name, widget->selection_id, 1); gui_internal_search(this,_("Street"),"Street",0); @@ -585,7 +595,7 @@ gui_internal_search_town_in_country(struct gui_priv *this, struct widget *widget) { struct search_list_common *slc; - dbg(2,"id %d\n", widget->selection_id); + dbg(lvl_info,"id %d\n", widget->selection_id); search_list_select(this->sl, attr_country_all, 0, 0); slc=search_list_select(this->sl, attr_country_all, widget->selection_id, 1); if (slc) { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_widget.c navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_widget.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_widget.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_widget.c 2016-01-02 22:29:50.000000000 +0000 @@ -108,6 +108,12 @@ } } +/** + * @brief Renders a label. + * + * @param this The internal GUI instance + * @param w The widget to render + */ static void gui_internal_label_render(struct gui_priv *this, struct widget *w) { @@ -138,9 +144,15 @@ } /** - * @brief A text box is a widget that renders a text string containing newlines. + * @brief Creates a text box. + * + * A text box is a widget that renders a text string containing newlines. * The string will be broken up into label widgets at each newline with a vertical layout. * + * @param this The internal GUI instance + * @param text The text to be displayed in the text box + * @param font The font to use for the text + * @param flags */ struct widget * gui_internal_text_font_new(struct gui_priv *this, const char *text, int font, enum flags flags) @@ -248,7 +260,7 @@ this->highlighted_menu=g_list_last(this->root.children)->data; this->highlighted->state |= STATE_HIGHLIGHTED; gui_internal_widget_render(this, this->highlighted); - dbg(1,"%d,%d %dx%d\n", found->p.x, found->p.y, found->w, found->h); + dbg(lvl_debug,"%d,%d %dx%d\n", found->p.x, found->p.y, found->w, found->h); } graphics_draw_mode(this->gra, draw_mode_end); } @@ -308,11 +320,6 @@ GList *l; gui_internal_background_render(this, w); -#if 0 - w->border=1; - w->foreground=this->foreground; -#endif -#if 1 if (w->foreground && w->border) { struct point pnt[5]; pnt[0]=w->p; @@ -327,13 +334,11 @@ graphics_draw_lines(this->gra, w->foreground, pnt, 5); graphics_gc_set_linewidth(w->foreground, 1); } -#endif l=w->children; while (l) { wc=l->data; - if (!(wc->state & STATE_OFFSCREEN)) - gui_internal_widget_render(this, wc); + gui_internal_widget_render(this, wc); l=g_list_next(l); } if (w->scroll_buttons) @@ -342,9 +347,10 @@ /** - * @brief Compute the size and location for the widget. - * + * @brief Computes the size and location for the widget. * + * @param this The internal GUI instance + * @param w The widget to render */ static void gui_internal_box_pack(struct gui_priv *this, struct widget *w) { @@ -366,7 +372,7 @@ } - /** + /* * count the number of children */ l=w->children; @@ -378,7 +384,7 @@ orientation=orientation_horizontal; switch (orientation) { case orientation_horizontal: - /** + /* * For horizontal orientation: * pack each child and find the largest height and * compute the total width. x spacing (spx) is considered @@ -407,7 +413,7 @@ expandd=expand=1; break; case orientation_vertical: - /** + /* * For vertical layouts: * We pack each child and compute the largest width and * the total height. y spacing (spy) is considered @@ -436,7 +442,7 @@ expandd=expand=1; break; case orientation_horizontal_vertical: - /** + /* * For horizontal_vertical orientation * pack the children. * Compute the largest height and largest width. @@ -467,14 +473,14 @@ expandd=expand=1; break; default: - /** + /* * No orientation was specified. * width and height are both 0. * The width & height of this widget * will be used. */ if(!w->w && !w->h) - dbg(0,"Warning width and height of a widget are 0"); + dbg(lvl_error,"Warning width and height of a widget are 0"); break; } if (! w->w && ! w->h) { @@ -487,7 +493,7 @@ expand=100; #endif - /** + /* * At this stage the width and height of this * widget has been computed. * We now make a second pass assigning heights, @@ -548,14 +554,6 @@ wc->p.x=x-wc->w/2; if (w->flags & gravity_right) wc->p.x=x-wc->w; -#if 0 - if (w->flags & flags_scrolly) - dbg(0,"%d - %d vs %d - %d\n",y,y+wc->h,w->p.y,w->p.y+w->h-hb); - if (y+wc->h > w->p.y+w->h-hb || y+wc->h < w->p.y) - wc->state |= STATE_OFFSCREEN; - else - wc->state &= ~STATE_OFFSCREEN; -#endif y+=wc->h+w->spy; l=g_list_next(l); } @@ -605,11 +603,11 @@ w->scroll_buttons->button_box->p.x=w->p.x; w->scroll_buttons->button_box->p.y=w->p.y+w->h-w->scroll_buttons->button_box->h; gui_internal_widget_pack(this, w->scroll_buttons->button_box); - dbg(0,"needs buttons %d vs %d\n",y,w->h); + dbg(lvl_debug,"needs buttons %d vs %d\n",y,w->h); gui_internal_box_pack(this, w); return; } - /** + /* * Call pack again on each child, * the child has now had its size and coordinates * set so they can repack their children. @@ -640,6 +638,12 @@ } } +/** + * @brief Adds a child widget to a parent widget, making it the last child. + * + * @param parent The parent widget + * @param child The child widget + */ void gui_internal_widget_append(struct widget *parent, struct widget *child) { @@ -651,6 +655,12 @@ child->parent=parent; } +/** + * @brief Adds a child widget to a parent widget, making it the first child. + * + * @param parent The parent widget + * @param child The child widget + */ void gui_internal_widget_prepend(struct widget *parent, struct widget *child) { @@ -660,6 +670,15 @@ child->parent=parent; } +/** + * @brief Adds a child widget to a parent widget. + * + * Placement of the child widget among its siblings depends on the comparison function {@code func}. + * + * @param parent The parent widget + * @param child The child widget + * @param func The comparison function + */ void gui_internal_widget_insert_sorted(struct widget *parent, struct widget *child, GCompareFunc func) { @@ -671,6 +690,14 @@ } +/** + * @brief Destroys all child widgets. + * + * This function is recursive, destroying all widgets in the child hierarchy of {@code w}. + * + * @param this The internal GUI instance + * @param w The widget whose children are to be destroyed + */ void gui_internal_widget_children_destroy(struct gui_priv *this, struct widget *w) { @@ -688,6 +715,15 @@ } +/** + * @brief Destroys a widget. + * + * This function also takes care of recursively destroying the entire child widget hierarchy of + * {@code w} prior to destroying {@code w} itself. + * + * @param this The internal GUI instance + * @param w The widget to destroy + */ void gui_internal_widget_destroy(struct gui_priv *this, struct widget *w) { @@ -783,6 +819,9 @@ gravity_center|orientation_horizontal, gui_internal_table_button_prev, widget); sb->button_box=gui_internal_box_new(this, gravity_center|orientation_horizontal); + sb->button_box->background=this->background; + sb->prev_button->state &= ~STATE_SENSITIVE; + sb->next_button->state &= ~STATE_SENSITIVE; gui_internal_widget_append(sb->button_box, sb->prev_button); gui_internal_widget_append(sb->button_box, sb->next_button); @@ -798,7 +837,7 @@ * * @param this The graphics context. * @param flags widget sizing flags. - * @returns The newly created widget + * @return The newly created widget */ struct widget * gui_internal_widget_table_new(struct gui_priv * this, enum flags flags, int buttons) { @@ -828,8 +867,12 @@ /** * @brief Clears all the rows from the table. + * * This function removes all rows from a table. * New rows can later be added to the table. + * + * @param this The internal GUI instance + * @param table The table widget */ void gui_internal_widget_table_clear(struct gui_priv * this,struct widget * table) { @@ -858,9 +901,11 @@ } /** - * @brief Move GList pointer to the next table row, skipping other table children (button box, for example). - * @param row GList pointer into the children list - * @returns GList pointer to the next row in the children list, or NULL if there are no any rows left. + * @brief Moves GList pointer to the next table row, skipping other table children (button box, for example). + * + * @param row GList pointer into the children list + * + * @return GList pointer to the next row in the children list, or NULL if there are no any rows left. */ GList * gui_internal_widget_table_next_row(GList * row) @@ -873,9 +918,11 @@ } /** - * @brief Move GList pointer to the previous table row, skipping other table children (button box, for example). - * @param row GList pointer into the children list - * @returns GList pointer to the previous row in the children list, or NULL if there are no any rows left. + * @brief Moves GList pointer to the previous table row, skipping other table children (button box, for example). + * + * @param row GList pointer into the children list + * + * @return GList pointer to the previous row in the children list, or NULL if there are no any rows left. */ GList * gui_internal_widget_table_prev_row(GList * row) @@ -888,9 +935,11 @@ } /** - * @brief Move GList pointer to the first table row, skipping other table children (button box, for example). - * @param row GList pointer into the children list - * @returns GList pointer to the first row in the children list, or NULL if table is empty. + * @brief Moves GList pointer to the first table row, skipping other table children (button box, for example). + * + * @param row GList pointer into the children list + * + * @return GList pointer to the first row in the children list, or NULL if table is empty. */ GList * gui_internal_widget_table_first_row(GList * row) @@ -905,8 +954,9 @@ } /** - * @brief Get GList pointer to the table row drawn on the top of the screen. - * @returns GList pointer to the top row in the children list, or NULL. + * @brief Gets GList pointer to the table row drawn on the top of the screen. + * + * @return GList pointer to the top row in the children list, or NULL. */ GList * gui_internal_widget_table_top_row(struct gui_priv *this, struct widget * table) @@ -919,8 +969,9 @@ } /** - * @brief Set internal top row pointer of the table to point to a given row widget. - * @returns GList pointer to the top row in the children list of the table. + * @brief Sets internal top row pointer of the table to point to a given row widget. + * + * @return GList pointer to the top row in the children list of the table. */ GList * gui_internal_widget_table_set_top_row(struct gui_priv *this, struct widget * table, struct widget *row) @@ -939,10 +990,12 @@ /** - * Creates a new table_row widget. + * @brief Creates a new table_row widget. + * * @param this The graphics context * @param flags Sizing flags for the row - * @returns The new table_row widget. + * + * @return The new table_row widget. */ struct widget * gui_internal_widget_table_row_new(struct gui_priv * this, enum flags flags) @@ -958,6 +1011,7 @@ /** * @brief Computes the column dimensions for the table. * + * @param this The internal GUI instance * @param w The table widget to compute dimensions for. * * This function examines all of the rows and columns for the table w @@ -983,7 +1037,7 @@ int total_width=0; int column_count=0; - /** + /* * Scroll through the the table and * 1. Compute the maximum width + height of each column across all rows. */ @@ -1038,7 +1092,7 @@ } /*row loop */ - /** + /* * If the width of all columns is less than the width off * the table expand each cell proportionally. * @@ -1057,12 +1111,11 @@ /** * @brief Computes the height and width for the table. * - * The height and widht are computed to display all cells in the table + * The height and width are computed to display all cells in the table * at the requested height/width. * * @param this The graphics context * @param w The widget to pack. - * */ void gui_internal_table_pack(struct gui_priv * this, struct widget * w) @@ -1109,7 +1162,7 @@ if(w->h + w->c.y > this->root.h ) { - /** + /* * Do not allow the widget to exceed the screen. * */ @@ -1122,7 +1175,7 @@ } - /** + /* * Deallocate column descriptions. */ g_list_foreach(column_data,(GFunc)g_free,NULL); @@ -1133,7 +1186,7 @@ /** - * @brief Invalidates coordinates for previosly rendered table widget rows. + * @brief Invalidates coordinates for previously rendered table widget rows. * * @param table_data Data from the table object. */ @@ -1172,7 +1225,7 @@ GList * cur_row = NULL; GList * current_desc=NULL; struct table_data * table_data = (struct table_data*)w->data; - int is_skipped=0; + int drawing_space_left=1; int is_first_page=1; struct table_column_desc * dim=NULL; @@ -1182,7 +1235,7 @@ return; y=w->p.y; gui_internal_table_hide_rows(table_data); - /** + /* * Skip rows that are on previous pages. */ cur_row = w->children; @@ -1193,7 +1246,29 @@ } else { table_data->top_row=NULL; } - /** + + /* First, let's deactivate all columns that are in rows which are *before* + * our current page. + * */ + GList *row = w->children; + while (row != cur_row) { + struct widget * cur_row_widget = (struct widget*)row->data; + GList * cur_column=NULL; + if(cur_row_widget == table_data->scroll_buttons.button_box) + { + row = g_list_next(row); + continue; + } + for(cur_column = cur_row_widget->children; cur_column; + cur_column=g_list_next(cur_column)) + { + struct widget * cur_widget = (struct widget*) cur_column->data; + cur_widget->state &= ~STATE_SENSITIVE; + } + row = g_list_next(row); + } + + /* * Loop through each row. Drawing each cell with the proper sizes, * at the proper positions. */ @@ -1205,7 +1280,7 @@ current_desc = column_desc; cur_row_widget = (struct widget*)cur_row->data; x =w->p.x+this->spacing; - if(cur_row_widget == table_data->scroll_buttons.button_box ) + if(cur_row_widget == table_data->scroll_buttons.button_box) { continue; } @@ -1216,11 +1291,7 @@ if( y + dim->height + bbox_height + this->spacing >= w->p.y + w->h ) { - /* - * No more drawing space left. - */ - is_skipped=1; - break; + drawing_space_left=0; } for(cur_column = cur_row_widget->children; cur_column; cur_column=g_list_next(cur_column)) @@ -1228,36 +1299,49 @@ struct widget * cur_widget = (struct widget*) cur_column->data; dim = (struct table_column_desc*)current_desc->data; - cur_widget->p.x=x; - cur_widget->w=dim->width; - cur_widget->p.y=y; - cur_widget->h=dim->height; - x=x+cur_widget->w; - max_height = dim->height; - /* We pack the widget before rendering to ensure that the x and y - * coordinates get pushed down. - */ - gui_internal_widget_pack(this,cur_widget); - gui_internal_widget_render(this,cur_widget); - - if(dim->height > max_height) - { + if (drawing_space_left) { + cur_widget->p.x=x; + cur_widget->w=dim->width; + cur_widget->p.y=y; + cur_widget->h=dim->height; + x=x+cur_widget->w; max_height = dim->height; + /* We pack the widget before rendering to ensure that the x and y + * coordinates get pushed down. + */ + cur_widget->state |= STATE_SENSITIVE; + gui_internal_widget_pack(this,cur_widget); + gui_internal_widget_render(this,cur_widget); + + if(dim->height > max_height) + { + max_height = dim->height; + } + } else { + /* Deactivate contents that we don't have space for. */ + cur_widget->state &= ~STATE_SENSITIVE; } } - - /* Row object should have its coordinates in actual - * state to be able to pass mouse clicks to Column objects - */ - cur_row_widget->p.x=w->p.x; - cur_row_widget->w=w->w; - cur_row_widget->p.y=y; - cur_row_widget->h=max_height; - y = y + max_height; - table_data->bottom_row=cur_row; - current_desc = g_list_next(current_desc); + + if (drawing_space_left) { + /* Row object should have its coordinates in actual + * state to be able to pass mouse clicks to Column objects + */ + cur_row_widget->p.x=w->p.x; + cur_row_widget->w=w->w; + cur_row_widget->p.y=y; + cur_row_widget->h=max_height; + y = y + max_height; + table_data->bottom_row=cur_row; + current_desc = g_list_next(current_desc); + } } - if(table_data->scroll_buttons.button_box && (is_skipped || !is_first_page) && !table_data->scroll_buttons.button_box_hide ) + + /* By default, hide all scroll buttons. */ + table_data->scroll_buttons.next_button->state&= ~STATE_SENSITIVE; + table_data->scroll_buttons.prev_button->state&= ~STATE_SENSITIVE; + + if(table_data->scroll_buttons.button_box && (!drawing_space_left || !is_first_page) && !table_data->scroll_buttons.button_box_hide ) { table_data->scroll_buttons.button_box->p.y =w->p.y+w->h-table_data->scroll_buttons.button_box->h - this->spacing; @@ -1267,38 +1351,25 @@ } table_data->scroll_buttons.button_box->p.x = w->p.x; table_data->scroll_buttons.button_box->w = w->w; - // table_data->button_box->h = w->h - y; - // table_data->next_button->h=table_data->button_box->h; - // table_data->prev_button->h=table_data->button_box->h; - // table_data->next_button->c.y=table_data->button_box->c.y; - // table_data->prev_button->c.y=table_data->button_box->c.y; gui_internal_widget_pack(this,table_data->scroll_buttons.button_box); if(table_data->scroll_buttons.next_button->p.y > w->p.y + w->h + table_data->scroll_buttons.next_button->h) { table_data->scroll_buttons.button_box->p.y = w->p.y + w->h - table_data->scroll_buttons.button_box->h; } - if(is_skipped) + if(!drawing_space_left) { table_data->scroll_buttons.next_button->state|= STATE_SENSITIVE; } - else - { - table_data->scroll_buttons.next_button->state&= ~STATE_SENSITIVE; - } if(table_data->top_row != w->children) { table_data->scroll_buttons.prev_button->state|= STATE_SENSITIVE; } - else - { - table_data->scroll_buttons.prev_button->state&= ~STATE_SENSITIVE; - } gui_internal_widget_render(this,table_data->scroll_buttons.button_box); } - /** + /* * Deallocate column descriptions. */ g_list_foreach(column_desc,(GFunc)g_free,NULL); @@ -1306,12 +1377,14 @@ } /** - * @brief handles the 'next page' table event. + * @brief Handles the 'next page' table event. + * * A callback function that is invoked when the 'next page' button is pressed * to advance the contents of a table widget. * * @param this The graphics context. * @param wm The button widget that was pressed. + * @param data */ void gui_internal_table_button_next(struct gui_priv * this, struct widget * wm, void *data) @@ -1345,7 +1418,8 @@ /** - * @brief handles the 'previous page' table event. + * @brief Handles the 'previous page' table event. + * * A callback function that is invoked when the 'previous page' button is pressed * to go back in the contents of a table widget. * @@ -1386,18 +1460,14 @@ /** - * @brief deallocates a table_data structure. + * @brief Deallocates a table_data structure. + * + * @note button_box and its children (next_button,prev_button) + * have their memory managed by the table itself. * + * @param p The table_data structure */ void gui_internal_table_data_free(void * p) { - - - /** - * @note button_box and its children (next_button,prev_button) - * have their memory managed by the table itself. - */ g_free(p); - - } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_widget.h navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_widget.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/internal/gui_internal_widget.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/internal/gui_internal_widget.h 2016-01-02 22:29:50.000000000 +0000 @@ -97,7 +97,7 @@ struct widget * prev_button; /** * a pointer to the gui context. - * This is needed by the free function to destory the buttons. + * This is needed by the free function to destroy the buttons. */ struct gui_priv * this; }; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/bookmarksProxy.h navit-0.5.0+dfsg.1/navit/gui/qml/bookmarksProxy.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/bookmarksProxy.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/qml/bookmarksProxy.h 2016-01-02 22:29:50.000000000 +0000 @@ -72,7 +72,7 @@ entries.appendChild(entry); } - dbg(2,"%s\n",retDoc.toString().toLocal8Bit().constData()); + dbg(lvl_info,"%s\n",retDoc.toString().toLocal8Bit().constData()); return retDoc.toString(); } QString AddFolder(QString description) { @@ -144,7 +144,7 @@ if (!item_attr_get(item, attr_label, &attr)) continue; label=QString::fromLocal8Bit(attr.u.str); - dbg(0,"Bookmark is %s\n",bookmark.toStdString().c_str()); + dbg(lvl_debug,"Bookmark is %s\n",bookmark.toStdString().c_str()); if (label.compare(bookmark)) continue; item_coord_get(item, &c, 1); if (this->object->currentPoint!=NULL) { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/gui_qml.cpp navit-0.5.0+dfsg.1/navit/gui/qml/gui_qml.cpp --- navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/gui_qml.cpp 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/qml/gui_qml.cpp 2016-01-02 22:29:50.000000000 +0000 @@ -161,11 +161,11 @@ // check whether the position of the mouse changed during press/release OR if it is the scrollwheel if (!navit_handle_button(this_->nav, pressed, button, p, NULL)) { - dbg(1,"navit has handled button\n"); + dbg(lvl_debug,"navit has handled button\n"); return; } - dbg(1,"enter %d %d\n", pressed, button); + dbg(lvl_debug,"enter %d %d\n", pressed, button); if (this_->signal_on_map_click) { gui_qml_dbus_signal(this_, p); return; @@ -278,7 +278,7 @@ if (xid.length()>0) { _mainWindow->embedInto(xid.toULong(&ok,0)); }else{ - dbg(0, "\nFATAL: Environment variable NAVIT_XID not set.\n" + dbg(lvl_error, "\nFATAL: Environment variable NAVIT_XID not set.\n" " Please set NAVIT_XID to the window ID of the window to embed into.\n"); exit(1); } @@ -322,7 +322,7 @@ QString mainQml = QString(this_->source)+"/"+this_->skin+"/main.qml"; if (!QFile(mainQml).exists()){ - dbg(0, "FATAL: QML file %s not found. Navit is not installed correctly.\n", mainQml.toAscii().constData()); + dbg(lvl_error, "FATAL: QML file %s not found. Navit is not installed correctly.\n", mainQml.toAscii().constData()); exit(1); } this_->guiWidget->setSource(QUrl::fromLocalFile(mainQml)); @@ -380,7 +380,7 @@ this_->radius=attr->u.num; return 1; default: - dbg(0,"unknown attr: %s\n",attr_to_name(attr->type)); + dbg(lvl_error,"unknown attr: %s\n",attr_to_name(attr->type)); return 1; } } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/navitProxy.h navit-0.5.0+dfsg.1/navit/gui/qml/navitProxy.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/navitProxy.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/qml/navitProxy.h 2016-01-02 22:29:50.000000000 +0000 @@ -82,7 +82,7 @@ dropIterFunc(iter); - dbg(0,QString::number(_itemId).toStdString().c_str()); + dbg(lvl_debug,QString::number(_itemId).toStdString().c_str()); return retDoc.toString(); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/ngqpoint.h navit-0.5.0+dfsg.1/navit/gui/qml/ngqpoint.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/ngqpoint.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/qml/ngqpoint.h 2016-01-02 22:29:50.000000000 +0000 @@ -248,7 +248,7 @@ } map_selection_destroy(sel); mapset_close(h); - dbg(2,"%s\n",retDoc.toString().toLocal8Bit().constData()); + dbg(lvl_info,"%s\n",retDoc.toString().toLocal8Bit().constData()); return retDoc.toString(); } protected: diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/proxy.h navit-0.5.0+dfsg.1/navit/gui/qml/proxy.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/proxy.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/qml/proxy.h 2016-01-02 22:29:50.000000000 +0000 @@ -55,7 +55,7 @@ struct attr attr_value; double *helper; - dbg(1,"Setting %s to %s\n",attr_name.toStdString().c_str(),attr_string.toStdString().c_str()); + dbg(lvl_debug,"Setting %s to %s\n",attr_name.toStdString().c_str(),attr_string.toStdString().c_str()); getAttrFunc(attr_from_name(attr_name.toStdString().c_str()), &attr_value, NULL); if (ATTR_IS_INT(attr_value.type)) { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/routeProxy.h navit-0.5.0+dfsg.1/navit/gui/qml/routeProxy.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/routeProxy.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/qml/routeProxy.h 2016-01-02 22:29:50.000000000 +0000 @@ -30,10 +30,10 @@ QList destinations=this->_routeDestinations(); for (QList::const_iterator iter=destinations.begin();iter!=destinations.end();iter++) { NGQPoint helperPoint(this->object,iter->u.pcoord,MapPoint); - dbg(0,"Added destination %s\n",helperPoint.coordString().toLocal8Bit().constData()); + dbg(lvl_debug,"Added destination %s\n",helperPoint.coordString().toLocal8Bit().constData()); } - //dbg(0,QString::number(_itemId).toStdString().c_str()); + //dbg(lvl_debug,QString::number(_itemId).toStdString().c_str()); //return retDoc.toString(); return QString(); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/searchProxy.h navit-0.5.0+dfsg.1/navit/gui/qml/searchProxy.h --- navit-0.5.0~svn5900+dfsg.1/navit/gui/qml/searchProxy.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui/qml/searchProxy.h 2016-01-02 22:29:50.000000000 +0000 @@ -33,7 +33,7 @@ item=country_search_get_item(cs); if (item && item_attr_get(item, attr_country_name, &country_name)) { search_attr.type=attr_country_all; - dbg(0,"country %s\n", country_name.u.str); + dbg(lvl_debug,"country %s\n", country_name.u.str); this->country_name=QString::fromLocal8Bit(country_name.u.str); search_attr.u.str=country_name.u.str; search_list_search(this->sl, &search_attr, 0); @@ -44,9 +44,9 @@ } country_search_destroy(cs); } else { - dbg(0,"warning: no default country found\n"); + dbg(lvl_error,"warning: no default country found\n"); if (!this->country_iso2.isEmpty()) { - dbg(0,"attempting to use country '%s'\n",this->country_iso2.toStdString().c_str()); + dbg(lvl_debug,"attempting to use country '%s'\n",this->country_iso2.toStdString().c_str()); search_attr.type=attr_country_iso2; search_attr.u.str=(char*)this->country_iso2.toStdString().c_str(); search_list_search(this->sl, &search_attr, 0); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/gui.c navit-0.5.0+dfsg.1/navit/gui.c --- navit-0.5.0~svn5900+dfsg.1/navit/gui.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/gui.c 2016-01-02 22:29:50.000000000 +0000 @@ -145,20 +145,22 @@ gui_add_bookmark(struct gui *gui, struct pcoord *c, char *description) { int ret; - dbg(2,"enter\n"); + dbg(lvl_info,"enter\n"); if (! gui->meth.add_bookmark) return 0; ret=gui->meth.add_bookmark(gui->priv, c, description); - dbg(2,"ret=%d\n", ret); + dbg(lvl_info,"ret=%d\n", ret); return ret; } int gui_set_graphics(struct gui *this_, struct graphics *gra) { - if (! this_->meth.set_graphics) + if (! this_->meth.set_graphics) { + dbg(lvl_error, "cannot set graphics, method 'set_graphics' not available\n"); return 1; + } return this_->meth.set_graphics(this_->priv, gra); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/item.c navit-0.5.0+dfsg.1/navit/item.c --- navit-0.5.0~svn5900+dfsg.1/navit/item.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/item.c 2016-01-02 22:29:50.000000000 +0000 @@ -130,12 +130,40 @@ g_hash_table_destroy(default_flags_hash); } +/** + * @brief Resets the "coordinate pointer" of an item + * + * This function resets the "coordinate pointer" of an item to point to the first coordinate pair, + * so that at the next call to {@code item_coord_get()} the first coordinates will be returned. + * + * @param it The map item whose pointer is to be reset. This must be the active item, i.e. the last one retrieved from the + * {@code map_rect}. There can only be one active item per {@code map_rect}. + */ void item_coord_rewind(struct item *it) { it->meth->item_coord_rewind(it->priv_data); } +/** + * @brief Gets the next coordinates from an item + * + * This function returns a list of coordinates from an item and advances the "coordinate pointer" + * by the number of coordinates returned, so that at the next call the next coordinates will be returned. + * + * Coordinates are stored in the projection of the item's map. If you need them in a different projection, + * call {@code item_coord_get_pro()} instead. + * + * @param it The map item whose coordinates to retrieve. This must be the active item, i.e. the last one retrieved from the + * {@code map_rect}. There can only be one active item per {@code map_rect}. + * @param c Points to a buffer that will receive the coordinates. + * The buffer must be at least {@code count * sizeof(struct coord)} bytes in size. + * @param count The number of coordinates to retrieve. Attempts to read past the + * end are handled gracefully and only the available number of coordinates is + * returned. + * + * @return The number of coordinates actually retrieved and stored in {@code c} + */ int item_coord_get(struct item *it, struct coord *c, int count) { @@ -181,6 +209,23 @@ return 0; } +/** + * @brief Gets the next coordinates from an item and reprojects them + * + * This function returns a list of coordinates from an item and advances the "coordinate pointer" + * by the number of coordinates returned, so that at the next call the next coordinates will be returned. + * + * @param it The map item whose coordinates to retrieve. This must be the active item, i.e. the last one retrieved from the + * {@code map_rect}. There can only be one active item per {@code map_rect}. + * @param c Points to a buffer that will receive the coordinates. + * The buffer must be at least {@code count * sizeof(struct coord)} bytes in size. + * @param count The number of coordinates to retrieve. Attempts to read past the + * end are handled gracefully and only the available number of coordinates is + * returned. + * @param projection The projection into which the coordinates will be transformed + * + * @return The number of coordinates actually retrieved and stored in {@code c} + */ int item_coord_get_pro(struct item *it, struct coord *c, int count, enum projection to) { @@ -348,7 +393,7 @@ { struct item *hitem=g_new(struct item, 1); *hitem=*item; - dbg(2,"inserting (0x%x,0x%x) into %p\n", item->id_hi, item->id_lo, h->h); + dbg(lvl_info,"inserting (0x%x,0x%x) into %p\n", item->id_hi, item->id_lo, h->h); g_hash_table_insert(h->h, hitem, val); } @@ -357,9 +402,9 @@ { int ret; - dbg(2,"removing (0x%x,0x%x) from %p\n", item->id_hi, item->id_lo, h->h); + dbg(lvl_info,"removing (0x%x,0x%x) from %p\n", item->id_hi, item->id_lo, h->h); ret=g_hash_table_remove(h->h, item); - dbg(2,"ret=%d\n", ret); + dbg(lvl_info,"ret=%d\n", ret); return ret; } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/item_def.h navit-0.5.0+dfsg.1/navit/item_def.h --- navit-0.5.0~svn5900+dfsg.1/navit/item_def.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/item_def.h 2016-01-02 22:29:50.000000000 +0000 @@ -350,7 +350,31 @@ ITEM(poi_buddhist) ITEM(poi_bahai) ITEM(found_item) -ITEM2(0x7ffffff0,poi_custom0) +ITEM(nav_merge_left) +ITEM(nav_merge_right) +ITEM(nav_turnaround_left) +ITEM(nav_turnaround_right) +ITEM(nav_exit_left) +ITEM(nav_exit_right) +ITEM(nav_keep_left) +ITEM(nav_keep_right) +ITEM2(0x7fffffe0,poi_customg) +ITEM(poi_customh) +ITEM(poi_customi) +ITEM(poi_customj) +ITEM(poi_customk) +ITEM(poi_customl) +ITEM(poi_customm) +ITEM(poi_customn) +ITEM(poi_customo) +ITEM(poi_customp) +ITEM(poi_customq) +ITEM(poi_customr) +ITEM(poi_customs) +ITEM(poi_customt) +ITEM(poi_customu) +ITEM(poi_customv) +ITEM(poi_custom0) ITEM(poi_custom1) ITEM(poi_custom2) ITEM(poi_custom3) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/item.h navit-0.5.0+dfsg.1/navit/item.h --- navit-0.5.0~svn5900+dfsg.1/navit/item.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/item.h 2016-01-02 22:29:50.000000000 +0000 @@ -52,11 +52,15 @@ #define item_is_district(item) ((item).type >= type_district_label && (item).type <= type_district_label_1e7) #define item_is_poly_place(item) ((item).type >= type_poly_place1 && (item).type <= type_poly_place6) #define item_is_point(item) ((item).type < type_line) -#define item_is_custom_poi(item) ((item).type >= type_poi_custom0 && (item).type < type_line) -#define item_is_street(item) (((item).type >= type_street_0 && (item).type < type_street_1_land) \ - || (item).type == type_street_pedestrian \ +#define item_is_custom_poi(item) ((item).type >= type_poi_customg && (item).type < type_line) +#define item_is_street(item) (((item).type >= type_street_nopass && (item).type <= type_roundabout) \ + || (item).type == type_street_service \ + || ((item).type >= type_street_pedestrian && (item).type <= type_track_grass) \ || (item).type == type_living_street \ - || (item).type == type_footway) + || (item).type == type_street_construction \ + || (item).type == type_path \ + || (item).type == type_street_parking_lane \ + || (item).type == type_footway ) #define item_is_equal_id(a,b) ((a).id_hi == (b).id_hi && (a).id_lo == (b).id_lo) #define item_is_equal(a,b) (item_is_equal_id(a,b) && (a).map == (b).map) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/keys.h navit-0.5.0+dfsg.1/navit/keys.h --- navit-0.5.0~svn5900+dfsg.1/navit/keys.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/keys.h 2016-01-02 22:29:50.000000000 +0000 @@ -10,3 +10,6 @@ #define NAVIT_KEY_SEARCH 19 /* ^S */ #define NAVIT_KEY_BACK 27 /* Esc */ #define NAVIT_KEY_DELETE 127 +#define NAVIT_KEY_TAB 9 /* TAB */ +#define NAVIT_KEY_PAGE_UP 33 +#define NAVIT_KEY_PAGE_DOWN 34 diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/layout.c navit-0.5.0+dfsg.1/navit/layout.c --- navit-0.5.0~svn5900+dfsg.1/navit/layout.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/layout.c 2016-01-02 22:29:50.000000000 +0000 @@ -202,7 +202,7 @@ else { this->sequence_range=NULL; } - dbg(2,"ret=%p\n", this); + dbg(lvl_info,"ret=%p\n", this); return this; } @@ -252,7 +252,7 @@ l->ref=NULL; obj=(struct navit_object *)l->navit; if (obj==NULL){ - dbg(0, "Invalid layer reference '%s': Only layers inside a layout can use references.\n", attr->u.str); + dbg(lvl_error, "Invalid layer reference '%s': Only layers inside a layout can use references.\n", attr->u.str); return 0; } iter=obj->func->iter_new(obj); @@ -263,7 +263,7 @@ } } if (l->ref==NULL){ - dbg(0, "Ignoring reference to unknown layer '%s' in layer '%s'.\n", attr->u.str, l->name); + dbg(lvl_error, "Ignoring reference to unknown layer '%s' in layer '%s'.\n", attr->u.str, l->name); } obj->func->iter_destroy(iter); default: @@ -287,7 +287,7 @@ layer_set_attr_do(l, *attrs, 1); } if (l->name==NULL){ - dbg(0, "Ignoring layer without name.\n"); + dbg(lvl_error, "Ignoring layer without name.\n"); g_free(l); return NULL; } @@ -397,7 +397,7 @@ itemgra->elements = g_list_append(itemgra->elements, attr->u.element); return 1; default: - dbg(0,"unknown: %s\n", attr_to_name(attr->type)); + dbg(lvl_error,"unknown: %s\n", attr_to_name(attr->type)); return 0; } } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/linguistics.c navit-0.5.0+dfsg.1/navit/linguistics.c --- navit-0.5.0~svn5900+dfsg.1/navit/linguistics.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/linguistics.c 2016-01-02 22:29:50.000000000 +0000 @@ -317,7 +317,7 @@ } *dest=0; if(*src) - dbg(0,"Casefolded string for '%s' needs extra space, result is trucated to '%s'.\n",in,ret); + dbg(lvl_error,"Casefolded string for '%s' needs extra space, result is trucated to '%s'.\n",in,ret); return ret; } @@ -423,7 +423,7 @@ out=new_ret+(out-ret); ret=new_ret; } - dbg(1,"found %s %s %d %s %d\n",in,spc[0],len,replace,replace_len); + dbg(lvl_debug,"found %s %s %d %s %d\n",in,spc[0],len,replace,replace_len); strcpy(out, replace); out+=replace_len; match=1; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/log.c navit-0.5.0+dfsg.1/navit/log.c --- navit-0.5.0~svn5900+dfsg.1/navit/log.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/log.c 2016-01-02 22:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -/** +/* * Navit, a modular navigation system. * Copyright (C) 2005-2008 Navit Team * @@ -16,6 +16,15 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ + +/** @file log.c + * @brief The log object. + * + * This file implements everything needed for logging: the log object and its functions. + * + * @author Navit Team + * @date 2005-2014 + */ #include "config.h" #ifdef HAVE_UNISTD_H @@ -67,6 +76,17 @@ struct log_data trailer; }; +/** + * @brief Stores formatted time to a string. + * + * This function obtains local system time, formats it as specified in {@code fmt} and stores it in buffer. + * Format strings follow the same syntax as those for {@code strftime()}. + * + * @param buffer A preallocated buffer that will receive the formatted time + * @param size Size of the buffer, in bytes + * @param fmt The format string + * @return Nothing + */ static void strftime_localtime(char *buffer, int size, char *fmt) { @@ -75,9 +95,19 @@ t=time(NULL); tm=localtime(&t); - strftime(buffer, 4096, fmt, tm); + strftime(buffer, size - 1, fmt, tm); } +/** + * @brief Expands placeholders in a filename + * + * This function examines the {@code log->filename} and replaces any placeholders + * found in it with date, time or an incremental number. If an incremental number is specified, the function + * will ensure the filename is unique. The expanded filename will be stored {@code log->filename_ex2}. + * The function uses {@code log->filename_ex1} to store the partly-expanded filename. + * + * @param this_ The log object. + */ static void expand_filenames(struct log *this_) { @@ -102,6 +132,13 @@ this_->filename_ex2=g_strdup(this_->filename_ex1); } +/** + * @brief Sets the time at which the log buffer was last flushed. + * + * This function sets {@code log->last_flush} to current time. + * + * @param this_ The log object. + */ static void log_set_last_flush(struct log *this_) { @@ -110,6 +147,24 @@ #endif } +/** + * @brief Opens a log file. + * + * This function opens the log file for {@code log}. + * The file name must be specified by {@code log->filename_ex2} before this function is called. + *

+ * {@code log->overwrite} specifies the behavior if the file exists: if true, + * an existing file will be overwritten, else it will be appended to. + *

+ * If the directory specified in the filename does not exist and the {@code log->mkdir} + * is true, it will be created. + *

+ * After the function returns, {@code log->f} will contain the file handle (or NULL, if + * the operation failed) and {@code log->empty} will indicate if the file is empty. + * {@code log->last_flush} will be updated with the current time. + * + * @param this_ The log object. + */ static void log_open(struct log *this_) { @@ -131,6 +186,13 @@ log_set_last_flush(this_); } +/** + * @brief Closes a log file. + * + * This function writes the trailer to a log file, flushes it and closes the log file for {@code log}. + * + * @param this_ The log object. + */ static void log_close(struct log *this_) { @@ -143,6 +205,31 @@ this_->f=NULL; } +/** + * @brief Flushes the buffer of a log. + * + * This function writes buffered log data to the log file associated with {@code log} + * and updates {@code log->last_flush} with the current time. + *

+ * If {@code log->lazy} is true, this function will open the file if needed, else + * the file must be opened with {@code log_open()} prior to calling this function. + *

+ * If the file is empty, the header will be written first, followed by the buffer data. + * {@code log->empty} will be set to zero if header or data are written to the file. + * + * @param this_ The log object. + * @param flags Flags to control behavior of the function: + *
+ * {@code log_flag_replace_buffer}: ignored + *
+ * {@code log_flag_force_flush}: ignored + *
+ * {@code log_flag_keep_pointer}: keeps the file pointer at the start position of the new data + *
+ * {@code log_flag_keep_buffer}: prevents clearing of the buffer after a successful write (default is to clear the buffer). + *
+ * {@code log_flag_truncate}: truncates the log file at the current position. On the Win32 Base API, this flag has no effect. + */ static void log_flush(struct log *this_, enum log_flags flags) { @@ -185,13 +272,39 @@ log_set_last_flush(this_); } +/** + * @brief Determines if the maximum buffer size of a log has been exceeded. + * + * This function examines the size of the data buffer to determine if it exceeds + * the maximum size specified in {@code log->flush_size} and thus needs to be flushed. + * + * @param this_ The log object. + * @return True if the cache needs to be flushed, false otherwise. + */ static int log_flush_required(struct log *this_) { return this_->data.len > this_->flush_size; } - +/** + * @brief Rotates a log file. + * + * This function rotates a log by stopping and immediately restarting it. + * Stopping flushes the buffer and closes the file; restarting determines the + * new file name and opens the file as needed (depending on the lazy member). + *

+ * Depending on the file name format and how the function was called, a new log + * file will be created or the old log file will be reused (appended to or + * overwritten, depending on {@code log->overwrite}): if the file name includes an + * incremental number, the new file will always have a different name. If a + * previous call to {@code log_change_required()} returned true, the new file + * will also have a different name. In all other cases the new file will have + * the same name as the old one, causing the old file to be overwritten or + * appended to. + * + * @param this_ The log object. + */ static void log_change(struct log *this_) { @@ -202,6 +315,15 @@ log_open(this_); } +/** + * @brief Determines if the log must be rotated. + * + * This function expands the date and time placeholders in {@code log->filename} + * to determine if the resulting part of the filename has changed. + * + * @param this_ The log object. + * @return True if the date/time-dependent part of the filename has changed, false otherwise. + */ static int log_change_required(struct log *this_) { @@ -211,6 +333,14 @@ return (strcmp(this_->filename_ex1, buffer) != 0); } +/** + * @brief Determines if the flush interval of a log has elapsed and flushes the buffer if needed. + * + * This function calculates the difference between current time and {@code log->last_flush}. + * If it is greater than or equal to {@code log->flush_time}, the buffer is flushed. + * + * @param this_ The log object. + */ static void log_timer(struct log *this_) { @@ -219,12 +349,21 @@ int delta; gettimeofday(&tv, NULL); delta=(tv.tv_sec-this_->last_flush.tv_sec)*1000+(tv.tv_usec-this_->last_flush.tv_usec)/1000; - dbg(1,"delta=%d flush_time=%d\n", delta, this_->flush_time); + dbg(lvl_debug,"delta=%d flush_time=%d\n", delta, this_->flush_time); if (this_->flush_time && delta >= this_->flush_time*1000) log_flush(this_,0); #endif } +/** + * @brief Gets an attribute + * + * @param this_ The log object. + * @param attr_type The attribute type to return + * @param attr Points to a struct attr to store the attribute + * @param iter An attribute iterator + * @return True for success, false for failure + */ int log_get_attr(struct log *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter) { @@ -232,6 +371,13 @@ } +/** + * @brief Creates and initializes a new log object. + * + * @param parent The parent object. + * @param attrs Points to an array of pointers to attributes for the new log object + * @return The new log object, or NULL if creation fails. + */ struct log * log_new(struct attr * parent,struct attr **attrs) { @@ -240,7 +386,7 @@ struct file_wordexp *wexp; char *filename, **wexp_data; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); ret->func=&log_func; navit_object_ref((struct navit_object *)ret); data=attr_search(attrs, NULL, attr_data); @@ -272,7 +418,7 @@ if (flush_time) ret->flush_time=flush_time->u.num; if (ret->flush_time) { - dbg(1,"interval %d\n", ret->flush_time*1000); + dbg(lvl_debug,"interval %d\n", ret->flush_time*1000); ret->timer_callback=callback_new_1(callback_cast(log_timer), ret); ret->timer=event_add_timeout(ret->flush_time*1000, 1, ret->timer_callback); } @@ -285,6 +431,16 @@ return ret; } +/** + * @brief Sets the header for a log file. + * + * This function sets the header, which is to be inserted into any log file before + * the actual log data. + * + * @param this_ The log object. + * @param data The header data. + * @param len Size of the header data to be copied, in bytes. + */ void log_set_header(struct log *this_, char *data, int len) { @@ -293,6 +449,16 @@ memcpy(this_->header.data, data, len); } +/** + * @brief Sets the trailer for a log file. + * + * This function sets the trailer, which is to be added to any log file after + * the actual log data. + * + * @param this_ The log object. + * @param data The trailer data. + * @param len Size of the trailer data to be copied, in bytes. + */ void log_set_trailer(struct log *this_, char *data, int len) { @@ -301,19 +467,41 @@ memcpy(this_->trailer.data, data, len); } +/** + * @brief Writes to a log. + * + * This function appends data to a log. It rotates the log, if needed, before + * adding the new data. After adding, the log is flushed if the buffer exceeds + * its maximum size or if the {@code log_flag_force_flush} flag is set. + * + * @param this_ The log object. + * @param data Points to a buffer containing the data to be appended. + * @param len Length of the data to be appended, in bytes. + * @param flags Flags to control behavior of the function: + *
+ * {@code log_flag_replace_buffer}: discards any data in the buffer not yet written to the log file + *
+ * {@code log_flag_force_flush}: forces a flush of the log after appending the data + *
+ * {code log_flag_keep_pointer}: ignored + *
+ * {@code log_flag_keep_buffer}: ignored + *
+ * {@code log_flag_truncate}: ignored + */ void log_write(struct log *this_, char *data, int len, enum log_flags flags) { - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); if (log_change_required(this_)) { - dbg(1,"log_change"); + dbg(lvl_debug,"log_change"); log_change(this_); } if (flags & log_flag_replace_buffer) this_->data.len=0; if (this_->data.len + len > this_->data.max_len) { - dbg(2,"overflow\n"); - this_->data.max_len+=16384; + dbg(lvl_info,"overflow\n"); + this_->data.max_len+=16384; // FIXME: what if len exceeds this->data.max_len by more than 16384 bytes? this_->data.data=g_realloc(this_->data.data,this_->data.max_len); } memcpy(this_->data.data+this_->data.len, data, len); @@ -322,6 +510,14 @@ log_flush(this_, flags); } +/** + * @brief Returns the data buffer of a log object and its length. + * + * @param this_ The log object. + * @param len Points to an int which will receive the length of the buffer. + * This can be NULL, in which case no information on buffer length will be stored. + * @return Pointer to the data buffer. + */ void * log_get_buffer(struct log *this_, int *len) { @@ -331,6 +527,16 @@ } +/** + * @brief Writes a formatted string to a log. + * + * This function formats a string in a fashion similar to {@code printf()} and related functions + * and writes it to a log using {@code log_write()}. + * + * @param this_ The log object. + * @param fmt The format string. + * @param ... Additional arguments must be specified for each placeholder in the format string. + */ void log_printf(struct log *this_, char *fmt, ...) { @@ -347,10 +553,15 @@ va_end(ap); } +/** + * @brief Destroys a log object and frees up its memory. + * + * @param this_ The log object. + */ void log_destroy(struct log *this_) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); attr_list_free(this_->attrs); callback_destroy(this_->timer_callback); event_remove_timeout(this_->timer); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/main.c navit-0.5.0+dfsg.1/navit/main.c --- navit-0.5.0~svn5900+dfsg.1/navit/main.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/main.c 2016-01-02 22:29:50.000000000 +0000 @@ -315,13 +315,13 @@ #endif while (nls_table[i][0]) { if (!strcmp(nls_table[i][0], lang) && !(strcmp(nls_table[i][1], country))) { - dbg(1,"Setting LANG=%s for Lang %s Country %s\n",nls_table[i][2], lang, country); + dbg(lvl_info,"Setting LANG=%s for Lang %s Country %s\n",nls_table[i][2], lang, country); setenv("LANG",nls_table[i][2],0); return; } i++; } - dbg(1,"Lang %s Country %s not found\n",lang,country); + dbg(lvl_error,"Lang %s Country %s not found\n",lang,country); } #endif @@ -339,9 +339,11 @@ #ifdef HAVE_API_WIN32_BASE win_set_nls(); #endif +#ifndef HAVE_API_ANDROID setenv("LC_NUMERIC","C",1); setlocale(LC_ALL,""); setlocale(LC_NUMERIC,"C"); +#endif #if !defined _WIN32 && !defined _WIN32_WCE if (file_exists("navit.c") || file_exists("navit.o") || file_exists("navit.lo") || file_exists("version.h")) { char buffer[PATH_MAX]; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/Makefile.am navit-0.5.0+dfsg.1/navit/Makefile.am --- navit-0.5.0~svn5900+dfsg.1/navit/Makefile.am 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/Makefile.am 2016-01-02 22:29:50.000000000 +0000 @@ -51,7 +51,7 @@ lib@LIBNAVIT@_la_SOURCES = announcement.c atom.c attr.c cache.c callback.c command.c config_.c coord.c country.c data_window.c debug.c \ event.c event_glib.h file.c geom.c graphics.c gui.c item.c layout.c log.c main.c map.c maps.c \ linguistics.c mapset.c maptype.c menu.c messages.c bookmarks.c bookmarks.h navit.c navigation.c osd.c param.c phrase.c plugin.c popup.c \ - profile.c profile_option.c projection.c roadprofile.c route.c routech.c search.c search_houseno_interpol.c script.c speech.c start_real.c \ + profile.c profile_option.c projection.c roadprofile.c route.c search.c search_houseno_interpol.c script.c speech.c start_real.c \ transform.c track.c util.c vehicle.c vehicleprofile.c xmlconfig.c \ announcement.h atom.h attr.h attr_def.h cache.h callback.h color.h command.h config_.h coord.h country.h \ android.h data.h data_window.h data_window_int.h debug.h destination.h draw_info.h endianess.h event.h \ diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/binfile/binfile.c navit-0.5.0+dfsg.1/navit/map/binfile/binfile.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/binfile/binfile.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/binfile/binfile.c 2016-01-02 22:29:50.000000000 +0000 @@ -131,6 +131,8 @@ struct map_download *download; int redirect; long download_enabled; + int last_searched_town_id_hi; + int last_searched_town_id_lo; }; struct map_rect_priv { @@ -239,9 +241,9 @@ eoc=(struct zip_eoc *)file_data_read(fi,fi->size-sizeof(struct zip_eoc), sizeof(struct zip_eoc)); if (eoc) { eoc_to_cpu(eoc); - dbg(1,"sig 0x%x\n", eoc->zipesig); + dbg(lvl_debug,"sig 0x%x\n", eoc->zipesig); if (eoc->zipesig != zip_eoc_sig) { - dbg(0,"eoc signature check failed: 0x%x vs 0x%x\n",eoc->zipesig,zip_eoc_sig); + dbg(lvl_error,"map file %s: eoc signature check failed: 0x%x vs 0x%x\n", fi->name, eoc->zipesig,zip_eoc_sig); file_data_free(fi,(unsigned char *)eoc); eoc=NULL; } @@ -257,20 +259,20 @@ eocl=(struct zip64_eocl *)file_data_read(fi,fi->size-sizeof(struct zip_eoc)-sizeof(struct zip64_eocl), sizeof(struct zip64_eocl)); if (!eocl) return NULL; - dbg(1,"sig 0x%x\n", eocl->zip64lsig); + dbg(lvl_debug,"sig 0x%x\n", eocl->zip64lsig); if (eocl->zip64lsig != zip64_eocl_sig) { file_data_free(fi,(unsigned char *)eocl); - dbg(1,"eocl wrong\n"); + dbg(lvl_warning,"map file %s: eocl wrong\n", fi->name); return NULL; } eoc=(struct zip64_eoc *)file_data_read(fi,eocl->zip64lofst, sizeof(struct zip64_eoc)); if (eoc) { if (eoc->zip64esig != zip64_eoc_sig) { file_data_free(fi,(unsigned char *)eoc); - dbg(1,"eoc wrong\n"); + dbg(lvl_warning,"map file %s: eoc wrong\n", fi->name); eoc=NULL; } - dbg(1,"eoc64 ok 0x"LONGLONG_HEX_FMT " 0x"LONGLONG_HEX_FMT "\n",eoc->zip64eofst,eoc->zip64ecsz); + dbg(lvl_debug,"eoc64 ok 0x"LONGLONG_HEX_FMT " 0x"LONGLONG_HEX_FMT "\n",eoc->zip64eofst,eoc->zip64ecsz); } file_data_free(fi,(unsigned char *)eocl); return eoc; @@ -295,9 +297,9 @@ } cd=(struct zip_cd *)file_data_read(m->fi,cdoffset+offset, sizeof(*cd)+len); if (cd) { - dbg(1,"cd at "LONGLONG_FMT" %zu bytes\n",cdoffset+offset, sizeof(*cd)+len); + dbg(lvl_debug,"cd at "LONGLONG_FMT" %zu bytes\n",cdoffset+offset, sizeof(*cd)+len); cd_to_cpu(cd); - dbg(1,"sig 0x%x\n", cd->zipcensig); + dbg(lvl_debug,"sig 0x%x\n", cd->zipcensig); if (cd->zipcensig != zip_cd_sig) { file_data_free(m->fi,(unsigned char *)cd); cd=NULL; @@ -387,12 +389,12 @@ ret=file_data_read_encrypted(fi, offset, lfh->zipsize, lfh->zipuncmp, 1, m->passwd); break; default: - dbg(0,"Unknown encrypted compression method %d\n",enc->compress_method); + dbg(lvl_error,"map file %s: unknown encrypted compression method %d\n", fi->name, enc->compress_method); } file_data_free(fi, (unsigned char *)enc); break; default: - dbg(0,"Unknown compression method %d\n", lfh->zipmthd); + dbg(lvl_error,"map file %s: unknown compression method %d\n", fi->name, lfh->zipmthd); } return ret; } @@ -406,7 +408,7 @@ long long cdoffset=m->eoc64?m->eoc64->zip64eofst:m->eoc->zipeofst; struct zip_cd *cd; #if 0 - dbg(0,"end=%d\n",end); + dbg(lvl_debug,"end=%d\n",end); #endif while (offset < end) { cd=(struct zip_cd *)(m->search_data+offset-m->search_offset); @@ -416,7 +418,7 @@ offset-m->search_offset+sizeof(*cd)+cd->zipcfnl+cd->zipcxtl > m->search_size ) { #if 0 - dbg(0,"reload %p %d %d\n", m->search_data, m->search_offset, offset); + dbg(lvl_debug,"reload %p %d %d\n", m->search_data, m->search_offset, offset); #endif if (m->search_data) file_data_free(m->fi,m->search_data); @@ -428,8 +430,8 @@ cd=(struct zip_cd *)m->search_data; } #if 0 - dbg(0,"offset=%d search_offset=%d search_size=%d search_data=%p cd=%p\n", offset, m->search_offset, m->search_size, m->search_data, cd); - dbg(0,"offset=%d fn='%s'\n",offset,cd->zipcfn); + dbg(lvl_debug,"offset=%d search_offset=%d search_size=%d search_data=%p cd=%p\n", offset, m->search_offset, m->search_size, m->search_data, cd); + dbg(lvl_debug,"offset=%d fn='%s'\n",offset,cd->zipcfn); #endif if (!skip && (partial || cd->zipcfnl == len) && @@ -445,7 +447,7 @@ static void map_destroy_binfile(struct map_priv *m) { - dbg(1,"map_destroy_binfile\n"); + dbg(lvl_debug,"map_destroy_binfile\n"); if (m->fi) map_binfile_close(m); map_binfile_destroy(m); @@ -540,7 +542,7 @@ if (full[len-2] != '/') { lfh=binfile_read_lfh(m->fi, binfile_cd_offset(cd)); start=binfile_read_content(m, m->fi, binfile_cd_offset(cd), lfh); - dbg(0,"fopen '%s'\n", full); + dbg(lvl_debug,"fopen '%s'\n", full); f=fopen(full,"w"); fwrite(start, lfh->zipuncmp, 1, f); fclose(f); @@ -586,7 +588,7 @@ mr->label_attr[4]=t->pos_attr; if (type == attr_type || attr_type == attr_any) { if (attr_type == attr_any) { - dbg(1,"pos %p attr %s size %d\n", t->pos_attr-1, attr_to_name(type), size); + dbg(lvl_debug,"pos %p attr %s size %d\n", t->pos_attr-1, attr_to_name(type), size); } attr->type=type; if (ATTR_IS_GROUP(type)) { @@ -664,13 +666,13 @@ entry->id.id_hi=item->id_hi; entry->id.id_lo=item->id_lo; entry->flags=1; - dbg(0,"id 0x%x,0x%x\n",entry->id.id_hi,entry->id.id_lo); + dbg(lvl_debug,"id 0x%x,0x%x\n",entry->id.id_hi,entry->id.id_lo); memcpy(ret, t->pos, (size+1)*sizeof(int)); if (!m->changes) m->changes=g_hash_table_new_full(binfile_hash_entry_hash, binfile_hash_entry_equal, g_free, NULL); g_hash_table_replace(m->changes, entry, entry); - dbg(0,"ret %p\n",ret); + dbg(lvl_debug,"ret %p\n",ret); return ret; } @@ -685,15 +687,15 @@ { int *i=t->pos,j=0; - dbg(0,"Before: pos_coord=%td\n",t->pos_coord-i); + dbg(lvl_debug,"Before: pos_coord=%td\n",t->pos_coord-i); while (i < t->pos_next) - dbg(0,"%d:0x%x\n",j++,*i++); + dbg(lvl_debug,"%d:0x%x\n",j++,*i++); } aoffset=t->pos_attr-t->pos_attr_start; coffset=t->pos_coord-t->pos_coord_start-2; clen=t->pos_attr_start-t->pos_coord+2; - dbg(0,"coffset=%d clen=%d\n",coffset,clen); + dbg(lvl_debug,"coffset=%d clen=%d\n",coffset,clen); switch (mode) { case change_mode_delete: if (count*2 > clen) @@ -730,7 +732,7 @@ default: return 0; } - dbg(0,"delta %d\n",delta); + dbg(lvl_debug,"delta %d\n",delta); data=binfile_item_dup(mr->m, &mr->item, t, delta > 0 ? delta:0); data[0]=cpu_to_le32(le32_to_cpu(data[0])+delta); data[2]=cpu_to_le32(le32_to_cpu(data[2])+delta); @@ -742,18 +744,18 @@ tn=mr->t; tn->pos_coord=tn->pos_coord_start+coffset; tn->pos_attr=tn->pos_attr_start+aoffset; - dbg(0,"moving %d ints from offset %td to %td\n",move_len,tn->pos_coord_start+move_offset-data,tn->pos_coord_start+move_offset+delta-data); + dbg(lvl_debug,"moving %d ints from offset %td to %td\n",move_len,tn->pos_coord_start+move_offset-data,tn->pos_coord_start+move_offset+delta-data); memmove(tn->pos_coord_start+move_offset+delta, tn->pos_coord_start+move_offset, move_len*4); { int *i=tn->pos,j=0; - dbg(0,"After move: pos_coord=%td\n",tn->pos_coord-i); + dbg(lvl_debug,"After move: pos_coord=%td\n",tn->pos_coord-i); while (i < tn->pos_next) - dbg(0,"%d:0x%x\n",j++,*i++); + dbg(lvl_debug,"%d:0x%x\n",j++,*i++); } if (mode != change_mode_append) tn->pos_coord+=move_offset; if (mode != change_mode_delete) { - dbg(0,"writing %d ints at offset %td\n",count*2,write_offset+tn->pos_coord_start-data); + dbg(lvl_debug,"writing %d ints at offset %td\n",count*2,write_offset+tn->pos_coord_start-data); for (i = 0 ; i < count ; i++) { tn->pos_coord_start[write_offset++]=c[i].x; tn->pos_coord_start[write_offset++]=c[i].y; @@ -762,9 +764,9 @@ } { int *i=tn->pos,j=0; - dbg(0,"After: pos_coord=%td\n",tn->pos_coord-i); + dbg(lvl_debug,"After: pos_coord=%td\n",tn->pos_coord-i); while (i < tn->pos_next) - dbg(0,"%d:0x%x\n",j++,*i++); + dbg(lvl_debug,"%d:0x%x\n",j++,*i++); } return 1; } @@ -781,9 +783,9 @@ { int *i=t->pos,j=0; - dbg(0,"Before: pos_attr=%td\n",t->pos_attr-i); + dbg(lvl_debug,"Before: pos_attr=%td\n",t->pos_attr-i); while (i < t->pos_next) - dbg(0,"%d:0x%x\n",j++,*i++); + dbg(lvl_debug,"%d:0x%x\n",j++,*i++); } @@ -794,7 +796,7 @@ oattr_len=0; if (!naoffset) { if (mode == change_mode_delete || mode == change_mode_modify) { - dbg(0,"no attribute selected\n"); + dbg(lvl_error,"no attribute selected\n"); return 0; } if (mode == change_mode_append) @@ -802,7 +804,7 @@ } while (offset < naoffset) { oattr_len=le32_to_cpu(t->pos_attr_start[offset])+1; - dbg(0,"len %d\n",oattr_len); + dbg(lvl_debug,"len %d\n",oattr_len); write_offset=offset; offset+=oattr_len; } @@ -835,7 +837,7 @@ delta=nattr_len-oattr_len; else delta=nattr_len; - dbg(0,"delta %d oattr_len %d nattr_len %d\n",delta,oattr_len, nattr_len); + dbg(lvl_debug,"delta %d oattr_len %d nattr_len %d\n",delta,oattr_len, nattr_len); data=binfile_item_dup(mr->m, &mr->item, t, delta > 0 ? delta:0); data[0]=cpu_to_le32(le32_to_cpu(data[0])+delta); new.pos=new.start=data; @@ -846,20 +848,20 @@ tn=mr->t; tn->pos_coord=tn->pos_coord_start+coffset; tn->pos_attr=tn->pos_attr_start+offset; - dbg(0,"attr start %td offset %d\n",tn->pos_attr_start-data,offset); - dbg(0,"moving %d ints from offset %td to %td\n",move_len,tn->pos_attr_start+move_offset-data,tn->pos_attr_start+move_offset+delta-data); + dbg(lvl_debug,"attr start %td offset %d\n",tn->pos_attr_start-data,offset); + dbg(lvl_debug,"moving %d ints from offset %td to %td\n",move_len,tn->pos_attr_start+move_offset-data,tn->pos_attr_start+move_offset+delta-data); memmove(tn->pos_attr_start+move_offset+delta, tn->pos_attr_start+move_offset, move_len*4); if (mode != change_mode_append) tn->pos_attr+=delta; { int *i=tn->pos,j=0; - dbg(0,"After move: pos_attr=%td\n",tn->pos_attr-i); + dbg(lvl_debug,"After move: pos_attr=%td\n",tn->pos_attr-i); while (i < tn->pos_next) - dbg(0,"%d:0x%x\n",j++,*i++); + dbg(lvl_debug,"%d:0x%x\n",j++,*i++); } if (nattr_len) { int *nattr=tn->pos_attr_start+write_offset; - dbg(0,"writing %d ints at %td\n",nattr_len,nattr-data); + dbg(lvl_debug,"writing %d ints at %td\n",nattr_len,nattr-data); nattr[0]=cpu_to_le32(nattr_len-1); nattr[1]=cpu_to_le32(attr->type); memcpy(nattr+2, attr_data_get(attr), nattr_size); @@ -867,11 +869,11 @@ } { int *i=tn->pos,j=0; - dbg(0,"After: pos_attr=%td\n",tn->pos_attr-i); + dbg(lvl_debug,"After: pos_attr=%td\n",tn->pos_attr-i); while (i < tn->pos_next) - dbg(0,"After: pos_attr=%td\n",tn->pos_attr-i); + dbg(lvl_debug,"After: pos_attr=%td\n",tn->pos_attr-i); while (i < tn->pos_next) - dbg(0,"%d:0x%x\n",j++,*i++); + dbg(lvl_debug,"%d:0x%x\n",j++,*i++); } return 1; } @@ -908,7 +910,7 @@ file_data_free(mr->m->fi, (unsigned char *)(mr->t->start)); #ifdef DEBUG_SIZE #if DEBUG_SIZE > 0 - dbg(0,"leave %d\n",mr->t->zipfile_num); + dbg(lvl_debug,"leave %d\n",mr->t->zipfile_num); #endif #endif mr->t=&mr->tiles[--mr->tile_depth-1]; @@ -923,8 +925,8 @@ struct zip_lfh *lfh; char *zipfn; struct file *fi; - dbg(1,"enter %p %p %p\n", m, cd, t); - dbg(1,"cd->zipofst=0x"LONGLONG_HEX_FMT "\n", binfile_cd_offset(cd)); + dbg(lvl_debug,"enter %p %p %p\n", m, cd, t); + dbg(lvl_debug,"cd->zipofst=0x"LONGLONG_HEX_FMT "\n", binfile_cd_offset(cd)); t->start=NULL; t->mode=1; if (m->fis) @@ -955,7 +957,7 @@ if (m->redirect) return 0; m->redirect=1; - dbg(0,"redirected from %s to %s\n",m->url,location); + dbg(lvl_debug,"redirected from %s to %s\n",m->url,location); g_free(m->url); m->url=g_strdup(location); file_destroy(m->http); @@ -1004,7 +1006,7 @@ } while (map_binfile_handle_redirect(m)); ret=file_size(m->http); - dbg(1,"file size "LONGLONG_FMT"\n",ret); + dbg(lvl_debug,"file size "LONGLONG_FMT"\n",ret); return ret; } @@ -1050,7 +1052,7 @@ ret=file_data_read_special(http, size, &size_ret); if (size_ret != size) { - dbg(0,"size %d vs %d\n",size,size_ret); + dbg(lvl_debug,"size %d vs %d\n",size,size_ret); g_free(ret); return NULL; } @@ -1064,7 +1066,7 @@ struct zip64_eoc *zip64_eoc=(struct zip64_eoc *)file_data_read(m->fi, 0, sizeof(*zip64_eoc)); struct zip_cd *cd=(struct zip_cd *)map_binfile_download_range(m, zip64_eoc->zip64eofst+download->zipfile*m->cde_size,m->cde_size); file_data_free(m->fi, (unsigned char *)zip64_eoc); - dbg(0,"needed cd, result %p\n",cd); + dbg(lvl_debug,"needed cd, result %p\n",cd); return cd; } @@ -1078,7 +1080,7 @@ if(!download->m->download_enabled) { - dbg(0,"Tried downloading while it's not allowed\n"); + dbg(lvl_error,"Tried downloading while it's not allowed\n"); return 0; } attrs[0]=&url; @@ -1097,7 +1099,7 @@ attrs[3]=NULL; download->dl_size=size; } - dbg(0,"encountered missing tile %d %s(%s), Downloading %d bytes at "LONGLONG_FMT"\n",download->zipfile, url.u.str,(char *)(download->cd_copy+1), download->dl_size, download->offset); + dbg(lvl_debug,"encountered missing tile %d %s(%s), Downloading %d bytes at "LONGLONG_FMT"\n",download->zipfile, url.u.str,(char *)(download->cd_copy+1), download->dl_size, download->offset); map_binfile_http_request(download->m, attrs); g_free(url.u.str); download->http=download->m->http; @@ -1145,7 +1147,7 @@ return 0; } - dbg(1,"got %d bytes writing at offset "LONGLONG_FMT"\n",size_ret,download->offset); + dbg(lvl_debug,"got %d bytes writing at offset "LONGLONG_FMT"\n",size_ret,download->offset); if (size_ret <= 0) { g_free(data); return 1; @@ -1187,7 +1189,7 @@ g_free(download->cd_copy); download->cd=(struct zip_cd *)(file_data_read(download->file, download->m->eoc->zipeofst + download->zipfile*download->m->cde_size, download->m->cde_size)); cd_to_cpu(download->cd); - dbg(1,"Offset %d\n",download->cd->zipofst); + dbg(lvl_debug,"Offset %d\n",download->cd->zipofst); return 1; } @@ -1195,7 +1197,7 @@ download_planet_size(struct map_download *download) { download->size=map_binfile_download_size(download->m); - dbg(0,"Planet size "LONGLONG_FMT"\n",download->size); + dbg(lvl_debug,"Planet size "LONGLONG_FMT"\n",download->size); if (!download->size) return 0; return 1; @@ -1211,7 +1213,7 @@ download->zip_eoc=(struct zip_eoc *)(download->zip64_eocl+1); if (download->zip64_eoc->zip64esig != zip64_eoc_sig || download->zip64_eocl->zip64lsig != zip64_eocl_sig || download->zip_eoc->zipesig != zip_eoc_sig) { - dbg(0,"wrong signature on zip64_eoc downloaded from "LONGLONG_FMT"\n",download->size-98); + dbg(lvl_error,"wrong signature on zip64_eoc downloaded from "LONGLONG_FMT"\n",download->size-98); g_free(download->zip64_eoc); return 0; } @@ -1238,11 +1240,11 @@ struct zip_cd *cd; cd=(struct zip_cd *)file_data_read_special(download->http, sizeof(*cd), &size_ret); cd->zipcunc=0; - dbg(1,"size_ret=%d\n",size_ret); + dbg(lvl_debug,"size_ret=%d\n",size_ret); if (!size_ret) return 0; if (size_ret != sizeof(*cd) || cd->zipcensig != zip_cd_sig) { - dbg(0,"error1 size=%d vs %zu\n",size_ret, sizeof(*cd)); + dbg(lvl_error,"error1 size=%d vs %zu\n",size_ret, sizeof(*cd)); return 0; } file_data_write(download->file, download->offset, sizeof(*cd), (unsigned char *)cd); @@ -1250,7 +1252,7 @@ cd_xlen=cd->zipcfnl+cd->zipcxtl; cd_data=file_data_read_special(download->http, cd_xlen, &size_ret); if (size_ret != cd_xlen) { - dbg(0,"error2 size=%d vs %d\n",size_ret,cd_xlen); + dbg(lvl_error,"error2 size=%d vs %d\n",size_ret,cd_xlen); return 0; } file_data_write(download->file, download->offset, cd_xlen, cd_data); @@ -1295,14 +1297,14 @@ struct map_priv *m=mr->m; struct file *f=m->fi; - dbg(1,"enter %p %d\n", mr, zipfile); + dbg(lvl_debug,"enter %p %d\n", mr, zipfile); #ifdef DEBUG_SIZE #if DEBUG_SIZE > 0 { char filename[cd->zipcfnl+1]; memcpy(filename, cd+1, cd->zipcfnl); filename[cd->zipcfnl]='\0'; - dbg(0,"enter %d (%s) %d\n",zipfile, filename, cd->zipcunc); + dbg(lvl_debug,"enter %d (%s) %d\n",zipfile, filename, cd->zipcunc); } #endif mr->size+=cd->zipcunc; @@ -1358,10 +1360,10 @@ return NULL; } for (;;) { - dbg(0,"state=%d\n",download->state); + dbg(lvl_debug,"state=%d\n",download->state); switch (download->state) { case 0: - dbg(0,"error\n"); + dbg(lvl_error,"error\n"); break; case 1: if (download_start(download)) @@ -1411,7 +1413,7 @@ if (download_eoc(download)) download->state=6; else { - dbg(0,"download of eoc failed\n"); + dbg(lvl_error,"download of eoc failed\n"); download->state=0; } break; @@ -1460,7 +1462,7 @@ struct file *f=m->fi; long long cdoffset=m->eoc64?m->eoc64->zip64eofst:m->eoc->zipeofst; struct zip_cd *cd=(struct zip_cd *)(file_data_read(f, cdoffset + zipfile*m->cde_size, m->cde_size)); - dbg(1,"read from "LONGLONG_FMT" %d bytes\n",cdoffset + zipfile*m->cde_size, m->cde_size); + dbg(lvl_debug,"read from "LONGLONG_FMT" %d bytes\n",cdoffset + zipfile*m->cde_size, m->cde_size); cd_to_cpu(cd); if (!cd->zipcunc && m->url) { cd=download(m, mr, cd, zipfile, offset, length, async); @@ -1477,7 +1479,7 @@ struct map_rect_priv *mr; binfile_check_version(map); - dbg(1,"map_rect_new_binfile\n"); + dbg(lvl_debug,"map_rect_new_binfile\n"); if (!map->fi && !map->url) return NULL; map_binfile_http_close(map); @@ -1565,7 +1567,7 @@ { struct map_rect_priv *mr=map_rect_new_binfile_int(map, sel); struct tile t; - dbg(1,"zip_members=%d\n", map->zip_members); + dbg(lvl_debug,"zip_members=%d\n", map->zip_members); if (map->url && map->fi && sel && sel->order == 255) { map_download_selection(map, mr, sel); } @@ -1597,7 +1599,7 @@ if (entry->flags) { entry->flags=0; fwrite(entry, sizeof(*entry)+(le32_to_cpu(entry->data[0])+1)*4, 1, out); - dbg(0,"yes\n"); + dbg(lvl_debug,"yes\n"); } } @@ -1650,7 +1652,7 @@ write_changes(mr->m); while (pop_tile(mr)); #ifdef DEBUG_SIZE - dbg(0,"size=%d kb\n",mr->size/1024); + dbg(lvl_debug,"size=%d kb\n",mr->size/1024); #endif if (mr->tiles[0].fi && mr->tiles[0].start) file_data_free(mr->tiles[0].fi, (unsigned char *)(mr->tiles[0].start)); @@ -1666,11 +1668,11 @@ struct tile *t=mr->t; size=le32_to_cpu(t->pos[0]); if (size > 1024*1024 || size < 0) { - dbg(0,"size=0x%x\n", size); + dbg(lvl_debug,"size=0x%x\n", size); #if 0 fprintf(stderr,"offset=%d\n", (unsigned char *)(mr->pos)-mr->m->f->begin); #endif - dbg(0,"size error\n"); + dbg(lvl_debug,"size error\n"); } t->pos_next=t->pos+size+1; mr->item.type=le32_to_cpu(t->pos[1]); @@ -1688,7 +1690,7 @@ while (sel) { if (coord_rect_overlap(r, &sel->u.c_rect)) { order=sel->order; - dbg(1,"min %d max %d order %d\n", mima->min, mima->max, order); + dbg(lvl_debug,"min %d max %d order %d\n", mima->min, mima->max, order); if (!mima->min && !mima->max) return 1; if (order >= mima->min && order <= mima->max) @@ -1720,13 +1722,13 @@ struct attr af, al; if(binfile_attr_get(mr->item.priv_data, attr_first_key, &af)) { if(linguistics_compare(af.u.str,search->u.str,linguistics_cmp_partial)>0) { - dbg(1,"Skipping index item with first_key='%s'\n", af.u.str); + dbg(lvl_debug,"Skipping index item with first_key='%s'\n", af.u.str); return; } } if(binfile_attr_get(mr->item.priv_data, attr_last_key, &al)) { if(linguistics_compare(al.u.str,search->u.str,linguistics_cmp_partial)<0) { - dbg(1,"Skipping index item with first_key='%s', last_key='%s'\n", af.u.str, al.u.str); + dbg(lvl_debug,"Skipping index item with first_key='%s', last_key='%s'\n", af.u.str, al.u.str); return; } } @@ -1761,7 +1763,7 @@ return 0; if (!binfile_attr_get(mr->item.priv_data, attr_zipfile_ref, &at)) return 0; - dbg(1,"pushing zipfile %ld from %d\n", at.u.num, mr->t->zipfile_num); + dbg(lvl_debug,"pushing zipfile %ld from %d\n", at.u.num, mr->t->zipfile_num); return push_zipfile_tile(mr, at.u.num, 0, 0, async); } @@ -1932,25 +1934,11 @@ return NULL; } -static struct map_rect_priv * -binmap_search_street_by_estimate(struct map_priv *map, struct item *town, struct coord *c, struct map_selection *sel) +static int +binmap_get_estimated_town_size(struct item *town) { int size = 10000; switch (town->type) { - case type_town_label_1e7: - case type_town_label_5e6: - case type_town_label_2e6: - case type_town_label_1e6: - case type_town_label_5e5: - case type_town_label_2e5: - case type_district_label_1e7: - case type_district_label_5e6: - case type_district_label_2e6: - case type_district_label_1e6: - case type_district_label_5e5: - case type_district_label_2e5: - size = 10000; - break; case type_town_label_1e5: case type_town_label_5e4: case type_town_label_2e4: @@ -1994,6 +1982,14 @@ default: break; } + return size; +} + +static struct map_rect_priv * +binmap_search_street_by_estimate(struct map_priv *map, struct item *town, struct coord *c, struct map_selection *sel) +{ + int size = binmap_get_estimated_town_size(town); + sel->u.c_rect.lu.x = c->x-size; sel->u.c_rect.lu.y = c->y+size; sel->u.c_rect.rl.x = c->x+size; @@ -2016,6 +2012,38 @@ return map_rect_new_binfile(map, sel); } + +static int +binmap_get_estimated_boundaries (struct item *town, GList **boundaries) +{ + int size = binmap_get_estimated_town_size(town); + struct coord tc; + + if (item_coord_get(town, &tc, 1)) + { + struct geom_poly_segment *bnd; + struct coord *c; + c=g_new(struct coord,5); + bnd=g_new(struct geom_poly_segment,1); + c[0].x = tc.x + size; + c[0].y = tc.y - size; + c[1].x = tc.x - size; + c[1].y = tc.y - size; + c[2].x = tc.x - size; + c[2].y = tc.y + size; + c[3].x = tc.x + size; + c[3].y = tc.y + size; + c[4].x = c[0].x; + c[4].y = c[0].y; + bnd->first=&c[0]; + bnd->last=&c[4]; + bnd->type=geom_poly_segment_type_way_outer; + *boundaries=g_list_prepend(*boundaries,bnd); + return 1; + } + return 0; +} + static struct map_search_priv * binmap_search_new(struct map_priv *map, struct item *item, struct attr *search, int partial) { @@ -2061,6 +2089,8 @@ if (binmap_search_by_index(map, town, &msp->mr)) msp->mode = 1; else { + map->last_searched_town_id_hi = town->id_hi; + map->last_searched_town_id_lo = town->id_lo; if (item_coord_get(town, &c, 1)) { if ((msp->mr=binmap_search_street_by_place(map, town, &c, &msp->ms, &msp->boundaries))) msp->mode = 2; @@ -2078,7 +2108,7 @@ map_rect_destroy_binfile(map_rec); break; case attr_house_number: - dbg(1,"case house_number"); + dbg(lvl_debug,"case house_number"); if (! item->map) break; if (!map_priv_is(item->map, map)) @@ -2089,17 +2119,32 @@ idx=binmap_search_by_index(map, msp->item, &msp->mr); if (idx) msp->mode = 1; - else { + else + { struct coord c; if (item_coord_get(msp->item, &c, 1)) { struct attr attr; + map_rec = map_rect_new_binfile(map, NULL); + town = map_rect_get_item_byid_binfile(map_rec, map->last_searched_town_id_hi, map->last_searched_town_id_lo); + if (town) + msp->mr = binmap_search_street_by_place(map, town, &c, &msp->ms, &msp->boundaries); + if (msp->boundaries) + dbg(lvl_debug, "using map town boundaries\n"); + if (!msp->boundaries && town) + { + binmap_get_estimated_boundaries(town, &msp->boundaries); + if (msp->boundaries) + dbg(lvl_debug, "using estimated boundaries\n"); + } + map_rect_destroy_binfile(map_rec); + /* start searching in area around the street segment even if town boundaries are available */ msp->mr=binmap_search_housenumber_by_estimate(map, &c, &msp->ms); msp->mode = 2; msp->rect_new=msp->ms.u.c_rect; if(item_attr_get(msp->item, attr_street_name, &attr)) msp->parent_name=g_strdup(attr.u.str); - dbg(0,"pn=%s\n",msp->parent_name); + dbg(lvl_debug,"pn=%s\n",msp->parent_name); } } if (idx != 3) { @@ -2317,37 +2362,64 @@ break; case attr_house_number: has_house_number=binfile_attr_get(it->priv_data, attr_house_number, &at); - if (has_house_number || it->type == type_house_number + if ((has_house_number || it->type == type_house_number_interpolation_even || it->type == type_house_number_interpolation_odd || it->type == type_house_number_interpolation_all - || (map_search->mode == 1 && item_is_street(*it)) - ) + || (map_search->mode == 1 && item_is_street(*it))|| it->type == type_house_number) + && !(map_search->boundaries && !item_inside_poly_list(it,map_search->boundaries))) { if (has_house_number) { struct attr at2; - if ( (map_search->mode!=2 || binfile_attr_get(it->priv_data, attr_street_name, &at2)) && !linguistics_compare(at.u.str, map_search->search.u.str, mode)) + if ((binfile_attr_get(it->priv_data, attr_street_name, &at2) || map_search->mode!=2) && !linguistics_compare(at.u.str, map_search->search.u.str, mode) + && !strcmp(at2.u.str, map_search->parent_name)) + { + if (!duplicate(map_search, it, attr_house_number)) + { + binfile_attr_rewind(it->priv_data); + return it; + } + } + } + else + { + struct attr at2; + if ((binfile_attr_get(it->priv_data, attr_street_name, &at2) || map_search->mode!=2) && !strcmp(at2.u.str, map_search->parent_name)) { - if (!duplicate(map_search, it, attr_house_number)) + if (!duplicate(map_search, it, attr_house_number_interpolation_no_ends_incrmt_2)) { binfile_attr_rewind(it->priv_data); return it; } + else if (!duplicate(map_search, it, attr_house_number_interpolation_no_ends_incrmt_1)) + { + binfile_attr_rewind(it->priv_data); + return it; + } + } else { + if (!( it->type == type_house_number_interpolation_even || it->type == type_house_number_interpolation_odd + || it->type == type_house_number_interpolation_all)) + return it; } - } else - return it; - } else if(map_search->mode==2 && map_search->parent_name && item_is_street(*it) && binfile_attr_get(it->priv_data, attr_street_name, &at) && !strcmp(at.u.str, map_search->parent_name) ) { - /* If matching street segment found, prepare to expand house number search region +100m around each way point */ - struct coord c; - while(item_coord_get(it,&c,1)) { - c.x-=100; - c.y-=100; - coord_rect_extend(&map_search->rect_new,&c); - c.x+=200; - c.y+=200; - coord_rect_extend(&map_search->rect_new,&c); + } - } + } else if( item_is_street(*it) && map_search->mode==2 && map_search->parent_name && binfile_attr_get(it->priv_data, attr_street_name, &at) && !strcmp(at.u.str, map_search->parent_name) ) + { + /* If matching street segment found, prepare to expand house number search region +100m around each way point */ + if (!(map_search->boundaries && !item_inside_poly_list(it,map_search->boundaries))) + { + struct coord c; + while(item_coord_get(it,&c,1)) + { + c.x-=100; + c.y-=100; + coord_rect_extend(&map_search->rect_new,&c); + c.x+=200; + c.y+=200; + coord_rect_extend(&map_search->rect_new,&c); + } + } + } continue; default: return NULL; @@ -2360,7 +2432,7 @@ map_search->ms.u.c_rect=map_search->rect_new; map_rect_destroy_binfile(map_search->mr); map_search->mr=map_rect_new_binfile(map_search->map, &map_search->ms); - dbg(0,"Extended house number search region to %d x %d, restarting...\n",map_search->ms.u.c_rect.rl.x - map_search->ms.u.c_rect.lu.x, map_search->ms.u.c_rect.lu.y-map_search->ms.u.c_rect.rl.y); + dbg(lvl_debug,"Extended house number search region to %d x %d, restarting...\n",map_search->ms.u.c_rect.rl.x - map_search->ms.u.c_rect.lu.x, map_search->ms.u.c_rect.lu.y-map_search->ms.u.c_rect.rl.y); continue; } } @@ -2492,7 +2564,7 @@ struct zip_cd *first_cd; int i; if (!(m->eoc=binfile_read_eoc(m->fi))) { - dbg(0,"unable to read eoc\n"); + dbg(lvl_error,"map file %s: unable to read eoc\n", filename); return 0; } dbg_assert(m->eoc->zipedsk == m->eoc->zipecen); @@ -2508,20 +2580,20 @@ m->fis[m->eoc->zipedsk-1]=m->fi; g_free(tmpfilename); } - dbg(1,"num_disk %d\n",m->eoc->zipedsk); + dbg(lvl_debug,"num_disk %d\n",m->eoc->zipedsk); m->eoc64=binfile_read_eoc64(m->fi); if (!binfile_get_index(m)) { - dbg(0,"no index found\n"); + dbg(lvl_error,"map file %s: no index found\n", filename); return 0; } if (!(first_cd=binfile_read_cd(m, 0, 0))) { - dbg(0,"unable to get first cd\n"); + dbg(lvl_error,"map file %s: unable to get first cd\n", filename); return 0; } m->cde_size=sizeof(struct zip_cd)+first_cd->zipcfnl+first_cd->zipcxtl; m->zip_members=m->index_offset/m->cde_size+1; - dbg(1,"cde_size %d\n", m->cde_size); - dbg(1,"members %d\n",m->zip_members); + dbg(lvl_debug,"cde_size %d\n", m->cde_size); + dbg(lvl_debug,"members %d\n",m->zip_members); file_data_free(m->fi, (unsigned char *)first_cd); if (mmap) file_mmap(m->fi); @@ -2620,12 +2692,12 @@ struct attr readwrite={attr_readwrite, {(void *)1}}; struct attr *attrs[]={&readwrite, NULL}; - dbg(1,"file_create %s\n", m->filename); + dbg(lvl_debug,"file_create %s\n", m->filename); m->fi=file_create(m->filename, m->url?attrs:NULL); if (! m->fi && m->url) return 0; if (! m->fi) { - dbg(0,"Failed to load '%s'\n", m->filename); + dbg(lvl_error,"Failed to load '%s'\n", m->filename); return 0; } if (m->check_version) @@ -2639,13 +2711,13 @@ *magic = le32_to_cpu(*magic); if (*magic == zip_lfh_sig || *magic == zip_split_sig || *magic == zip_cd_sig || *magic == zip64_eoc_sig) { if (!map_binfile_zip_setup(m, m->filename, m->flags & 1)) { - dbg(0,"invalid file format for '%s'\n", m->filename); + dbg(lvl_error,"invalid file format for '%s'\n", m->filename); file_destroy(m->fi); m->fi=NULL; return 0; } } else if (*magic == zip_lfh_sig_rev || *magic == zip_split_sig_rev || *magic == zip_cd_sig_rev || *magic == zip64_eoc_sig_rev) { - dbg(0,"endianness mismatch\n"); + dbg(lvl_error,"endianness mismatch for '%s'\n", m->filename); file_destroy(m->fi); m->fi=NULL; return 0; @@ -2663,7 +2735,7 @@ if (binfile_attr_get(item->priv_data, attr_map_release, &attr)) m->map_release=g_strdup(attr.u.str); if (m->url && binfile_attr_get(item->priv_data, attr_url, &attr)) { - dbg(0,"url config %s map %s\n",m->url,attr.u.str); + dbg(lvl_debug,"url config %s map %s\n",m->url,attr.u.str); if (strcmp(m->url, attr.u.str)) m->update_available=1; g_free(m->url); @@ -2672,7 +2744,8 @@ } map_rect_destroy_binfile(mr); if (m->map_version >= 16) { - dbg(0,"Warning: This map is incompatible with your navit version. Please update navit.\n"); + dbg(lvl_error,"%s: This map is incompatible with your navit version. Please update navit. (map version %d)\n", + m->filename, m->map_version); return 0; } } @@ -2735,7 +2808,7 @@ wexp=file_wordexp_new(data->u.str); wexp_data=file_wordexp_get_array(wexp); - dbg(1,"map_new_binfile %s\n", data->u.str); + dbg(lvl_debug,"map_new_binfile %s\n", data->u.str); *meth=map_methods_binfile; m=g_new0(struct map_priv, 1); @@ -2771,9 +2844,9 @@ void plugin_init(void) { - dbg(1,"binfile: plugin_init\n"); + dbg(lvl_debug,"binfile: plugin_init\n"); if (sizeof(struct zip_cd) != 46) { - dbg(0,"error: sizeof(struct zip_cd)=%zu\n",sizeof(struct zip_cd)); + dbg(lvl_error,"error: sizeof(struct zip_cd)=%zu\n",sizeof(struct zip_cd)); } plugin_register_map_type("binfile", map_new_binfile); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/csv/csv.c navit-0.5.0+dfsg.1/navit/map/csv/csv.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/csv/csv.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/csv/csv.c 2016-01-02 22:29:50.000000000 +0000 @@ -88,7 +88,7 @@ struct quadtree_item *qitem; if( ! (fp=fopen(filename,"w+"))) { - dbg(0, "Error opening csv file to write new entries"); + dbg(lvl_error, "Error opening csv file to write new entries"); return; } /*query the world*/ @@ -126,11 +126,11 @@ } else if(ATTR_IS_STRING(*at)) { tmpstr = g_strdup(found_attr->u.str); } else { - dbg(0,"Cant represent attribute %s\n",attr_to_name(*at)); + dbg(lvl_error,"Cant represent attribute %s\n",attr_to_name(*at)); tmpstr=g_strdup(""); } } else { - dbg(0,"No value defined for the atribute %s, assuming empty string\n",attr_to_name(*at)); + dbg(lvl_debug,"No value defined for the atribute %s, assuming empty string\n",attr_to_name(*at)); tmpstr=g_strdup(""); } } @@ -149,7 +149,7 @@ if(m->charset) { tmpstr=g_convert(csv_line, -1,m->charset,"utf-8",NULL,NULL,NULL); if(!tmpstr) - dbg(0,"Error converting '%s' to %s\n",csv_line, m->charset); + dbg(lvl_error,"Error converting '%s' to %s\n",csv_line, m->charset); } else tmpstr=csv_line; @@ -181,7 +181,7 @@ static void map_destroy_csv(struct map_priv *m) { - dbg(1,"map_destroy_csv\n"); + dbg(lvl_debug,"map_destroy_csv\n"); /*save if changed */ save_map_csv(m); g_hash_table_destroy(m->qitem_hash); @@ -355,10 +355,10 @@ csv_type_set(void *priv_data, enum item_type type) { struct map_rect_priv* mr = (struct map_rect_priv*)priv_data; - dbg(1,"Enter %d\n", type); + dbg(lvl_debug,"Enter %d\n", type); if(!mr || !mr->qitem) { - dbg(1,"Nothing to do\n"); + dbg(lvl_debug,"Nothing to do\n"); return 0; } @@ -366,7 +366,7 @@ return 0; mr->qitem->deleted=1; - dbg(1,"Item %p is deleted\n",mr->qitem); + dbg(lvl_debug,"Item %p is deleted\n",mr->qitem); return 1; } @@ -395,7 +395,7 @@ struct map_priv* m; struct quadtree_item* qi; GList* new_it; - dbg(1,"Set coordinates %d %d\n", c->x, c->y); + dbg(lvl_debug,"Set coordinates %d %d\n", c->x, c->y); /* for now we only support coord modification only */ if( ! change_mode_modify) { @@ -430,7 +430,7 @@ qi->longitude = cg.lng; qi->latitude = cg.lat; quadtree_add( m->tree_root, qi, mr->qiter); - dbg(1,"Set coordinates %f %f\n", cg.lng, cg.lat); + dbg(lvl_debug,"Set coordinates %f %f\n", cg.lng, cg.lat); m->new_items = g_list_remove_link(m->new_items,new_it); m->dirty=1; save_map_csv(m); @@ -489,29 +489,28 @@ g_free(data); } +static void map_csv_debug_dump_hash_item(gpointer key, gpointer value, gpointer user_data) +{ + struct quadtree_item *qi=value; + GList *attrs; + dbg(lvl_debug,"%p del=%d ref=%d\n", qi,qi->deleted, qi->ref_count); + attrs=((struct quadtree_data *)qi->data)->attr_list; + while(attrs) { + if(((struct attr*)attrs->data)->type==attr_label) + dbg(lvl_debug,"... %s\n",((struct attr*)attrs->data)->u.str); + attrs=g_list_next(attrs); + } +} + /** * Dump all map data (including deleted items) to the log. */ static void map_csv_debug_dump(struct map_priv *map) { - GList *l=g_hash_table_get_values(map->qitem_hash); - GList *ll=l; - while(ll) { - struct quadtree_item *qi; - GList *attrs; - qi=ll->data; - dbg(0,"%p del=%d ref=%d\n", qi,qi->deleted, qi->ref_count); - attrs=((struct quadtree_data *)qi->data)->attr_list; - while(attrs) { - if(((struct attr*)attrs->data)->type==attr_label) - dbg(0,"... %s\n",((struct attr*)attrs->data)->u.str); - attrs=g_list_next(attrs); - } - ll=g_list_next(ll); - } - g_list_free(l); + g_hash_table_foreach(map->qitem_hash, map_csv_debug_dump_hash_item, NULL); } + static struct map_rect_priv * map_rect_new_csv(struct map_priv *map, struct map_selection *sel) { @@ -519,7 +518,7 @@ struct coord_geo lu; struct coord_geo rl; struct quadtree_iter *res = NULL; - dbg(1,"map_rect_new_csv\n"); + dbg(lvl_debug,"map_rect_new_csv\n"); if(debug_level_get("map_csv")>2) { map_csv_debug_dump(map); } @@ -726,7 +725,7 @@ charset = attr_search(attrs, NULL, attr_charset); if(charset) { - dbg(1,"charset:%s\n",charset->u.str); + dbg(lvl_debug,"charset:%s\n",charset->u.str); m->charset=g_strdup(charset->u.str); } else { m->charset=g_strdup(map_methods_csv.charset); @@ -758,7 +757,7 @@ FILE *fp; wexp=file_wordexp_new(data->u.str); wexp_data=file_wordexp_get_array(wexp); - dbg(1,"map_new_csv %s\n", data->u.str); + dbg(lvl_debug,"map_new_csv %s\n", data->u.str); m->filename=g_strdup(wexp_data[0]); file_wordexp_destroy(wexp); @@ -775,7 +774,7 @@ int col_cnt=0; char *tok; if(!line) { - dbg(0,"Error converting '%s' to utf-8 from %s\n",linebuf, m->charset); + dbg(lvl_error,"Error converting '%s' to utf-8 from %s\n",linebuf, m->charset); continue; } if(line[strlen(line)-1]=='\n' || line[strlen(line)-1]=='\r') { @@ -848,7 +847,7 @@ *pID = m->next_item_idx; g_hash_table_insert(m->qitem_hash, pID,qi); ++m->next_item_idx; - dbg(1,"%s\n",line); + dbg(lvl_debug,"%s\n",line); } else { g_free(curr_item); @@ -856,7 +855,7 @@ } else { - dbg(0,"ERROR: Non-matching attr count and column count: %d %d SKIPPING line: %s\n",col_cnt, attr_cnt,line); + dbg(lvl_error,"ERROR: Non-matching attr count and column count: %d %d SKIPPING line: %s\n",col_cnt, attr_cnt,line); } g_free(line); g_free(line2); @@ -865,20 +864,20 @@ fclose(fp); } else { - dbg(0,"Error opening csv map file %s, starting with empty map\n", m->filename); + dbg(lvl_error,"Error opening csv map file %s, starting with empty map\n", m->filename); } } else { - dbg(1,"No data attribute, starting with in-memory map\n"); + dbg(lvl_debug,"No data attribute, starting with in-memory map\n"); } - dbg(2,"%p\n",tree_root); + dbg(lvl_info,"%p\n",tree_root); return m; } void plugin_init(void) { - dbg(1,"csv: plugin_init\n"); + dbg(lvl_debug,"csv: plugin_init\n"); plugin_register_map_type("csv", map_new_csv); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/csv/quadtree.c navit-0.5.0+dfsg.1/navit/map/csv/quadtree.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/csv/quadtree.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/csv/quadtree.c 2016-01-02 22:29:50.000000000 +0000 @@ -379,7 +379,7 @@ { int i,j; int node_num=node->node_num; - dbg(1,"Processing unreferenced subnode children...\n"); + dbg(lvl_debug,"Processing unreferenced subnode children...\n"); for(i=0,j=0;iitems[i]->deleted && !node->items[i]->ref_count) { if(iter->item_free) { @@ -426,7 +426,7 @@ } if (bSame) { //FIXME: memleak and items thrown away if more than QUADTREE_NODE_CAPACITY-1 items with same coordinates added. - dbg(0,"Unable to add another item with same coordinates. Throwing item to the ground. Will leak %p.\n",item); + dbg(lvl_error,"Unable to add another item with same coordinates. Throwing item to the ground. Will leak %p.\n",item); return; } this_->items[this_->node_num++] = item; @@ -561,7 +561,7 @@ ret->xmax=dXMax; ret->ymin=dYMin; ret->ymax=dYMax; - dbg(1,"%f %f %f %f\n",dXMin,dXMax,dYMin,dYMax) + dbg(lvl_debug,"%f %f %f %f\n",dXMin,dXMax,dYMin,dYMax) ret->item_free=item_free; ret->item_free_context=item_free_context; n->node=this_; @@ -577,7 +577,7 @@ } this_->ref_count++; - dbg(1,"Query %p \n",this_) + dbg(lvl_debug,"Query %p \n",this_) return ret; } @@ -627,16 +627,16 @@ if(iter_node->is_leaf) { /* Try to find undeleted item in the current node */ - dbg(1,"find item %p %p ...\n",iter->iter_nodes,iter->iter_nodes->data); + dbg(lvl_debug,"find item %p %p ...\n",iter->iter_nodes,iter->iter_nodes->data); while(iter_node->itemnode_num) { - dbg(1,"%d %d\n",iter_node->item,iter_node->items[iter_node->item]->deleted); + dbg(lvl_debug,"%d %d\n",iter_node->item,iter_node->items[iter_node->item]->deleted); if(iter_node->items[iter_node->item]->deleted) { iter_node->item++; continue; } iter->item=iter_node->items[iter_node->item]; iter_node->item++; - dbg(1,"Returning %p\n",iter->item); + dbg(lvl_debug,"Returning %p\n",iter->item); iter->item->ref_count++; return iter->item; } @@ -654,13 +654,13 @@ i=iter_node->subnode; if(!nodes[i] || !rects_overlap(nodes[i]->xmin, nodes[i]->ymin, nodes[i]->xmax, nodes[i]->ymax, iter->xmin, iter->ymin, iter->xmax, iter->ymax)) continue; - dbg(1,"%f %f %f %f\n",nodes[i]->xmin, nodes[i]->xmax, nodes[i]->ymin, nodes[i]->ymax) + dbg(lvl_debug,"%f %f %f %f\n",nodes[i]->xmin, nodes[i]->xmax, nodes[i]->ymin, nodes[i]->ymax) subnode=nodes[i]; } if(subnode) { /* Go one level deeper */ - dbg(1,"Go one level deeper...\n"); + dbg(lvl_debug,"Go one level deeper...\n"); iter_node=g_new0(struct quadtree_iter_node, 1); iter_node->node=subnode; iter_node->is_leaf=subnode->is_leaf; @@ -692,7 +692,7 @@ /* 2. remove empty leaf subnode if it's unreferenced */ if(!subnode->ref_count && !subnode->node_num && subnode->is_leaf ) { - dbg(1,"Going to delete an empty unreferenced leaf subnode...\n"); + dbg(lvl_debug,"Going to delete an empty unreferenced leaf subnode...\n"); if(subnode->parent) { if(subnode->parent->aa==subnode) { @@ -704,19 +704,19 @@ } else if(subnode->parent->bb==subnode) { subnode->parent->bb=NULL; } else { - dbg(0,"Found Quadtree structure corruption while trying to free an empty node.\n"); + dbg(lvl_error,"Found Quadtree structure corruption while trying to free an empty node.\n"); } if(!subnode->parent->aa && !subnode->parent->ab && !subnode->parent->ba && !subnode->parent->bb ) subnode->parent->is_leaf=1; g_free(subnode); } else - dbg(1,"Quadtree is empty. NOT deleting the root subnode...\n"); + dbg(lvl_debug,"Quadtree is empty. NOT deleting the root subnode...\n"); } /* Go one step towards root */ - dbg(2,"Going towards root...\n"); + dbg(lvl_info,"Going towards root...\n"); g_free(iter->iter_nodes->data); iter->iter_nodes=g_list_delete_link(iter->iter_nodes,iter->iter_nodes); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/filter/filter.c navit-0.5.0+dfsg.1/navit/map/filter/filter.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/filter/filter.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/filter/filter.c 2016-01-02 22:29:50.000000000 +0000 @@ -319,7 +319,7 @@ static struct item * map_filter_rect_get_item_byid(struct map_rect_priv *mr, int id_hi, int id_lo) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); mr->parent_item=map_rect_get_item_byid(mr->parent, id_hi, id_lo); if (!mr->parent_item) return NULL; @@ -332,21 +332,21 @@ static struct map_search_priv * map_filter_search_new(struct map_priv *map, struct item *item, struct attr *search, int partial) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); return NULL; } static struct item * map_filter_search_get_item(struct map_search_priv *map_search) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); return NULL; } static void map_filter_search_destroy(struct map_search_priv *ms) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); } static void @@ -429,7 +429,7 @@ void plugin_init(void) { - dbg(1,"filter: plugin_init\n"); + dbg(lvl_debug,"filter: plugin_init\n"); plugin_register_map_type("filter", map_filter_new); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/mg/block.c navit-0.5.0+dfsg.1/navit/map/mg/block.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/mg/block.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/mg/block.c 2016-01-02 22:29:50.000000000 +0000 @@ -77,7 +77,7 @@ int block_get_byindex(struct file *file, int idx, struct block_priv *blk) { - dbg(1,"idx=%d\n", idx); + dbg(lvl_debug,"idx=%d\n", idx); blk->b=block_get_byid(file, idx, &blk->p); blk->block_start=(unsigned char *)(blk->b); blk->p_start=blk->p; @@ -177,7 +177,7 @@ else mr->b.p=mr->b.block_start+block_get_blocks(mr->b.b)*512; if (mr->b.p >= mr->file->end) { - dbg(1,"end of blocks %p vs %p\n", mr->b.p, mr->file->end); + dbg(lvl_debug,"end of blocks %p vs %p\n", mr->b.p, mr->file->end); return 0; } mr->b.block_start=mr->b.p; @@ -185,17 +185,17 @@ mr->b.p_start=mr->b.p; mr->b.end=mr->b.block_start+block_get_size(mr->b.b); if (block_get_count(mr->b.b) == -1) { - dbg(1,"empty blocks\n"); + dbg(lvl_warning,"empty blocks\n"); return 0; } block_get_r(mr->b.b, &r); if (!mr->cur_sel || coord_rect_overlap(&mr->cur_sel->u.c_rect, &r)) { block_active_count++; block_active_mem+=block_get_blocks(mr->b.b)*512-sizeof(struct block *); - dbg(1,"block ok\n"); + dbg(lvl_debug,"block ok\n"); return 1; } - dbg(2,"block not in cur_sel\n"); + dbg(lvl_info,"block not in cur_sel\n"); } } @@ -210,14 +210,14 @@ return block_next_lin(mr); for (;;) { if (! bt->p) { - dbg(1,"block 0x%x\n", bt->next); + dbg(lvl_debug,"block 0x%x\n", bt->next); if (bt->next == -1) return 0; bt->b=block_get_byid(mr->file, bt->next, &bt->p); bt->end=(unsigned char *)mr->b.bt.b+block_get_size(mr->b.bt.b); bt->next=block_get_next(bt->b); bt->order=0; - dbg(1,"size 0x%x next 0x%x\n", block_get_size(bt->b), block_get_next(bt->b)); + dbg(lvl_debug,"size 0x%x next 0x%x\n", block_get_size(bt->b), block_get_next(bt->b)); if (! mr->b.bt.block_count) { #if 0 if (debug) { @@ -238,8 +238,8 @@ blk_num=get_u32(&mr->b.bt.p); coord=get_u32(&mr->b.bt.p); block_mem+=8; - dbg(1,"%p vs %p coord 0x%x ", mr->b.bt.end, mr->b.bt.p, coord); - dbg(1,"block 0x%x", blk_num); + dbg(lvl_debug,"%p vs %p coord 0x%x ", mr->b.bt.end, mr->b.bt.p, coord); + dbg(lvl_debug,"block 0x%x", blk_num); r_w=bt->r_curr.rl.x-bt->r_curr.lu.x; r_h=bt->r_curr.lu.y-bt->r_curr.rl.y; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/mg/map.c navit-0.5.0+dfsg.1/navit/map/mg/map.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/mg/map.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/mg/map.c 2016-01-02 22:29:50.000000000 +0000 @@ -289,7 +289,7 @@ } if (file_next(mr)) continue; - dbg(1,"lin_count %d idx_count %d active_count %d %d kB (%d kB)\n", block_lin_count, block_idx_count, block_active_count, (block_mem+block_active_mem)/1024, block_active_mem/1024); + dbg(lvl_debug,"lin_count %d idx_count %d active_count %d %d kB (%d kB)\n", block_lin_count, block_idx_count, block_active_count, (block_mem+block_active_mem)/1024, block_active_mem/1024); return NULL; } } @@ -361,7 +361,7 @@ *c++='u'; break; default: - dbg(1,"0x%x\n", *str); + dbg(lvl_debug,"0x%x\n", *str); *c++=*str; break; } @@ -375,11 +375,11 @@ map_search_setup(struct map_rect_priv *mr) { char *prefix; - dbg(1,"%s\n", attr_to_name(mr->search_type)); + dbg(lvl_debug,"%s\n", attr_to_name(mr->search_type)); switch (mr->search_type) { case attr_town_postal: if (mr->search_item.type != type_country_label) { - dbg(0,"wrong parent type %s\n", item_to_name(mr->search_item.type)); + dbg(lvl_error,"wrong parent type %s\n", item_to_name(mr->search_item.type)); return 0; } prefix=mg_country_postal_prefix(mr->search_item.id_lo); @@ -388,12 +388,12 @@ tree_search_init(mr->m->dirname, "town.b1", &mr->ts, 0); mr->current_file=file_town_twn; mr->search_str=g_strdup_printf("%s%s",prefix,mr->search_attr->u.str); - dbg(0,"search_str='%s'\n",mr->search_str); + dbg(lvl_debug,"search_str='%s'\n",mr->search_str); mr->search_country=mg_country_from_isonum(mr->search_item.id_lo); break; case attr_town_name: if (mr->search_item.type != type_country_label) { - dbg(0,"wrong parent type %s\n", item_to_name(mr->search_item.type)); + dbg(lvl_error,"wrong parent type %s\n", item_to_name(mr->search_item.type)); return 0; } tree_search_init(mr->m->dirname, "town.b2", &mr->ts, 0x1000); @@ -403,7 +403,7 @@ break; case attr_district_name: if (mr->search_item.type != type_country_label) { - dbg(0,"wrong parent type %s\n", item_to_name(mr->search_item.type)); + dbg(lvl_error,"wrong parent type %s\n", item_to_name(mr->search_item.type)); return 0; } tree_search_init(mr->m->dirname, "town.b3", &mr->ts, 0x1000); @@ -434,11 +434,11 @@ return 0; } } else { - dbg(0,"wrong parent type %s %p 0x%x 0x%x\n", item_to_name(mr->search_item.type), item, mr->search_item.id_hi, mr->search_item.id_lo); + dbg(lvl_error,"wrong parent type %s %p 0x%x 0x%x\n", item_to_name(mr->search_item.type), item, mr->search_item.id_hi, mr->search_item.id_lo); return 0; } } - dbg(1,"street_assoc=0x%x\n", mr->search_item.id_lo); + dbg(lvl_debug,"street_assoc=0x%x\n", mr->search_item.id_lo); tree_search_init(mr->m->dirname, "strname.b1", &mr->ts, 0); mr->current_file=file_strname_stn; mr->search_str=g_strdup(mr->search_attr->u.str); @@ -447,12 +447,12 @@ if (!map_priv_is(mr->search_item.map, mr->m)) return 0; if (!housenumber_search_setup(mr)) { - dbg(0,"failed to search for attr_house_number\n"); + dbg(lvl_error,"failed to search for attr_house_number\n"); return 0; } break; default: - dbg(0,"unknown search %s\n",attr_to_name(mr->search_type)); + dbg(lvl_error,"unknown search %s\n",attr_to_name(mr->search_type)); return 0; } mr->file=mr->m->file[mr->current_file]; @@ -467,9 +467,9 @@ map_search_new_mg(struct map_priv *map, struct item *item, struct attr *search, int partial) { struct map_rect_priv *mr=g_new0(struct map_rect_priv, 1); - dbg(1,"searching for %s '%s'\n", attr_to_name(search->type), search->u.str); - dbg(1,"id_lo=0x%x\n", item->id_lo); - dbg(1,"search=%s\n", search->u.str); + dbg(lvl_debug,"searching for %s '%s'\n", attr_to_name(search->type), search->u.str); + dbg(lvl_debug,"id_lo=0x%x\n", item->id_lo); + dbg(lvl_debug,"search=%s\n", search->u.str); mr->m=map; mr->search_attr=attr_dup(search); mr->search_type=search->type; @@ -480,7 +480,7 @@ mr->search_type_next=attr_district_name; } if (!map_search_setup(mr)) { - dbg(1,"map_search_new_mg failed\n"); + dbg(lvl_warning,"map_search_new_mg failed\n"); g_free(mr); return NULL; } @@ -507,7 +507,7 @@ { struct map_rect_priv *mr=(struct map_rect_priv *)ms; - dbg(1,"mr=%p\n", mr); + dbg(lvl_debug,"mr=%p\n", mr); if (! mr) return; map_search_cleanup(mr); @@ -538,7 +538,7 @@ ret=housenumber_search_get_item(mr); break; default: - dbg(0,"unknown search %s\n",attr_to_name(mr->search_type)); + dbg(lvl_error,"unknown search %s\n",attr_to_name(mr->search_type)); break; } if (!ret && mr->search_type_next != attr_none) { @@ -595,7 +595,7 @@ if (! m->file[i]) { maybe_missing=(i == file_border_ply || i == file_height_ply || i == file_sea_ply); if (! maybe_missing) - dbg(0,"Failed to load %s\n", filename); + dbg(lvl_error,"Failed to load %s\n", filename); } else file_mmap(m->file[i]); g_free(filename); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/mg/poly.c navit-0.5.0+dfsg.1/navit/map/mg/poly.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/mg/poly.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/mg/poly.c 2016-01-02 22:29:50.000000000 +0000 @@ -225,7 +225,7 @@ item->type=type_rail; break; default: - dbg(0,"Unknown poly type 0x%x '%s' 0x%x,0x%x\n", poly->type,poly->name,r.lu.x,r.lu.y); + dbg(lvl_error,"Unknown poly type 0x%x '%s' 0x%x,0x%x\n", poly->type,poly->name,r.lu.x,r.lu.y); item->type=type_street_unkn; } if (!map_selection_contains_item(mr->cur_sel, 0, item->type)) { @@ -235,10 +235,10 @@ } } else mr->b.p=poly->subpoly_next; - dbg(1,"%d %d %s\n", poly->subpoly_num_all, mr->b.block_num, poly->name); + dbg(lvl_debug,"%d %d %s\n", poly->subpoly_num_all, mr->b.block_num, poly->name); item->id_lo=poly->subpoly_num_all | (mr->b.block_num << 16); item->id_hi=(mr->current_file << 16); - dbg(1,"0x%x 0x%x\n", item->id_lo, item->id_hi); + dbg(lvl_debug,"0x%x 0x%x\n", item->id_lo, item->id_hi); poly->subpoly_next=mr->b.p+L(poly->count[poly->subpoly_num])*sizeof(struct coord); poly->subpoly_num++; poly->subpoly_num_all++; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/mg/street.c navit-0.5.0+dfsg.1/navit/map/mg/street.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/mg/street.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/mg/street.c 2016-01-02 22:29:50.000000000 +0000 @@ -208,7 +208,7 @@ if (f) { f->x=ref->lu.x+x; f->y=ref->rl.y+y; - dbg(1,"0x%x,0x%x + 0x%x,0x%x = 0x%x,0x%x\n", x, y, ref->lu.x, ref->rl.y, f->x, f->y); + dbg(lvl_debug,"0x%x,0x%x + 0x%x,0x%x = 0x%x,0x%x\n", x, y, ref->lu.x, ref->rl.y, f->x, f->y); } *pos=p; return flags; @@ -282,14 +282,14 @@ if (segid == 0x15) debug=1; if (debug) { - dbg(0,"enter 0x%x\n",segid); + dbg(lvl_debug,"enter 0x%x\n",segid); } #endif while (count > 0) { if (street_coord_get_helper(street, c)) { #ifdef DEBUG_COORD_GET if (debug) { - dbg(0,"0x%x,0x%x\n", c->x, c->y); + dbg(lvl_debug,"0x%x,0x%x\n", c->x, c->y); } #endif c++; @@ -316,7 +316,7 @@ struct street_priv *street=priv_data; int nameid; - dbg(1,"segid 0x%x\n", street_str_get_segid(street->str)); + dbg(lvl_debug,"segid 0x%x\n", street_str_get_segid(street->str)); attr->type=attr_type; switch (attr_type) { case attr_any: @@ -516,7 +516,7 @@ break; default: item->type=type_street_unkn; - dbg(0,"unknown type 0x%x\n",street_str_get_type(street->str)); + dbg(lvl_error,"unknown type 0x%x\n",street_str_get_type(street->str)); } flags=item_get_default_flags(item->type); if (flags) @@ -557,12 +557,12 @@ int country=id_hi & 0xffff; int res; struct coord_rect r; - dbg(1,"enter(%p,%p,0x%x,0x%x,%p)\n", mr, street, id_hi, id_lo, item); + dbg(lvl_debug,"enter(%p,%p,0x%x,0x%x,%p)\n", mr, street, id_hi, id_lo, item); if (! country) return 0; if (! tree_search_hv(mr->m->dirname, "street", (id_lo >> 8) | (country << 24), id_lo & 0xff, &res)) return 0; - dbg(1,"res=0x%x (blk=0x%x)\n", res, res >> 12); + dbg(lvl_debug,"res=0x%x (blk=0x%x)\n", res, res >> 12); block_get_byindex(mr->m->file[mr->current_file], res >> 12, &mr->b); street_get_data(street, &mr->b.p); street->name_file=mr->m->file[file_strname_stn]; @@ -578,7 +578,7 @@ item->meth=&street_meth; item->priv_data=street; street->str+=(res & 0xfff)-1; - dbg(1,"segid 0x%x\n", street_str_get_segid(&street->str[1])); + dbg(lvl_debug,"segid 0x%x\n", street_str_get_segid(&street->str[1])); return street_get(mr, street, item); #if 0 mr->b.p=mr->b.block_start+(res & 0xffff); @@ -620,7 +620,7 @@ return 'u'; default: if (ret >= 0x80) - dbg(1,"ret=0x%x\n",c); + dbg(lvl_debug,"ret=0x%x\n",c); return ret; } } @@ -662,27 +662,27 @@ { int d,len; - dbg(1,"enter"); - dbg(1,"country 0x%x town_assoc 0x%x name '%s'\n", country, town_assoc, name); + dbg(lvl_debug,"enter"); + dbg(lvl_debug,"country 0x%x town_assoc 0x%x name '%s'\n", country, town_assoc, name); d=(mr->search_item.id_hi & 0xffff)-country; - dbg(1,"country %d (%d vs %d)\n", d, mr->search_item.id_hi & 0xffff, country); + dbg(lvl_debug,"country %d (%d vs %d)\n", d, mr->search_item.id_hi & 0xffff, country); if (!d) { if (mr->search_item.id_lo == town_assoc ) { - dbg(1,"town_assoc match (0x%x)\n", town_assoc); + dbg(lvl_debug,"town_assoc match (0x%x)\n", town_assoc); len=mr->search_partial ? strlen(mr->search_str):INT_MAX; d=strncasecmp_latin1(mr->search_str, name, len); if (!strncasecmp_latin1_ascii(mr->search_str, name, len)) d=0; - dbg(1,"string %d\n", d); + dbg(lvl_debug,"string %d\n", d); } else { if (town_assoc < mr->search_item.id_lo) d=1; else d=-1; - dbg(1,"assoc %d 0x%x-0x%x\n",d, mr->search_item.id_lo, town_assoc); + dbg(lvl_debug,"assoc %d 0x%x-0x%x\n",d, mr->search_item.id_lo, town_assoc); } } - dbg(1,"d=%d\n", d); + dbg(lvl_debug,"d=%d\n", d); return d; } @@ -692,11 +692,11 @@ struct street_name_index *i; int ret; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); i=(struct street_name_index *)(*p); *p+=sizeof(*i)+strlen(i->name)+1; - dbg(1,"block 0x%x\n", i->block); + dbg(lvl_debug,"block 0x%x\n", i->block); ret=street_search_compare_do(mr, i->country, i->town_assoc, i->name); if (ret <= 0) @@ -725,7 +725,7 @@ struct street_name_numbers snns; unsigned char *p=mr->street.name.aux_data; - dbg(1,"aux_data=%p\n", p); + dbg(lvl_debug,"aux_data=%p\n", p); if (count) { street_name_numbers_get(&snns, &p); street_name_numbers_get_coord(&snns, c); @@ -801,7 +801,7 @@ return 0; return item_attr_get(mr->search_item_tmp, attr_type, attr); default: - dbg(0,"unknown attr %s\n",attr_to_name(attr_type)); + dbg(lvl_error,"unknown attr %s\n",attr_to_name(attr_type)); return 0; } } @@ -830,7 +830,7 @@ item->map=NULL; item->priv_data=mr; mr->b.p=street->name_file->begin+item->id_lo; - dbg(1,"last %p map %p file %d begin %p\n", mr->b.p, mr->m, mr->current_file, mr->m->file[mr->current_file]->begin); + dbg(lvl_debug,"last %p map %p file %d begin %p\n", mr->b.p, mr->m, mr->current_file, mr->m->file[mr->current_file]->begin); street_name_get(&street->name, &mr->b.p); return 1; } @@ -841,30 +841,30 @@ int dir=1,leaf; unsigned char *last; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); if (! mr->search_blk_count) { - dbg(1,"partial 0x%x '%s' ***\n", mr->town.street_assoc, mr->search_str); + dbg(lvl_debug,"partial 0x%x '%s' ***\n", mr->town.street_assoc, mr->search_str); if (mr->search_linear) return NULL; - dbg(1,"tree_search_next\n"); + dbg(lvl_debug,"tree_search_next\n"); mr->search_block=-1; while ((leaf=tree_search_next(&mr->ts, &mr->search_p, dir)) != -1) { dir=street_search_compare(&mr->search_p, mr); } - dbg(1,"dir=%d mr->search_block=0x%x\n", dir, mr->search_block); + dbg(lvl_debug,"dir=%d mr->search_block=0x%x\n", dir, mr->search_block); if (mr->search_block == -1) return NULL; mr->search_blk_count=1; block_get_byindex(mr->m->file[file_strname_stn], mr->search_block, &mr->b); mr->b.p=mr->b.block_start+12; } - dbg(1,"name id %td\n", mr->b.p-mr->m->file[file_strname_stn]->begin); + dbg(lvl_debug,"name id %td\n", mr->b.p-mr->m->file[file_strname_stn]->begin); if (! mr->search_blk_count) return NULL; for (;;) { if (mr->b.p >= mr->b.end) { if (!block_next_lin(mr)) { - dbg(1,"end of blocks in %p, %p\n", mr->m->file[file_strname_stn]->begin, mr->m->file[file_strname_stn]->end); + dbg(lvl_debug,"end of blocks in %p, %p\n", mr->m->file[file_strname_stn]->begin, mr->m->file[file_strname_stn]->end); return NULL; } mr->b.p=mr->b.block_start+12; @@ -873,23 +873,23 @@ last=mr->b.p; street_name_get(&mr->street.name, &mr->b.p); dir=street_search_compare_do(mr, mr->street.name.country, mr->street.name.townassoc, mr->street.name.name2); - dbg(1,"country 0x%x assoc 0x%x name1 '%s' name2 '%s' dir=%d\n", mr->street.name.country, mr->street.name.townassoc, mr->street.name.name1, mr->street.name.name2, dir); + dbg(lvl_debug,"country 0x%x assoc 0x%x name1 '%s' name2 '%s' dir=%d\n", mr->street.name.country, mr->street.name.townassoc, mr->street.name.name1, mr->street.name.name2, dir); if (dir < 0) { - dbg(1,"end of data\n"); + dbg(lvl_debug,"end of data\n"); mr->search_blk_count=0; return NULL; } if (!dir) { - dbg(1,"result country 0x%x assoc 0x%x name1 '%s' name2 '%s' dir=%d aux_data=%p len=0x%x\n", mr->street.name.country, mr->street.name.townassoc, mr->street.name.name1, mr->street.name.name2, dir, mr->street.name.aux_data, mr->street.name.aux_len); + dbg(lvl_debug,"result country 0x%x assoc 0x%x name1 '%s' name2 '%s' dir=%d aux_data=%p len=0x%x\n", mr->street.name.country, mr->street.name.townassoc, mr->street.name.name1, mr->street.name.name2, dir, mr->street.name.aux_data, mr->street.name.aux_len); mr->item.type = type_street_name; mr->item.id_hi=(file_strname_stn << 16); mr->item.id_lo=last-mr->m->file[file_strname_stn]->begin; - dbg(1,"id 0x%x 0x%x last %p map %p file %d begin %p\n", mr->item.id_hi, mr->item.id_lo, last, mr->m, mr->current_file, mr->m->file[mr->current_file]->begin); + dbg(lvl_debug,"id 0x%x 0x%x last %p map %p file %d begin %p\n", mr->item.id_hi, mr->item.id_lo, last, mr->m, mr->current_file, mr->m->file[mr->current_file]->begin); mr->item.meth=&street_name_meth; mr->item.map=NULL; mr->item.priv_data=mr; /* debug(mr); */ - dbg(1,"last %p\n",last); + dbg(lvl_debug,"last %p\n",last); return &mr->item; } } @@ -920,7 +920,7 @@ { if (street_name_eod(&mr->street.name)) return 0; - dbg(1,"%p vs %p\n",mr->street.name.tmp_data, mr->street.name.aux_data); + dbg(lvl_debug,"%p vs %p\n",mr->street.name.tmp_data, mr->street.name.aux_data); street_name_numbers_get(&mr->street.name_numbers, &mr->street.name.tmp_data); return 1; } @@ -975,7 +975,7 @@ return 0; return item_attr_get(mr->search_item_tmp, attr_type, attr); default: - dbg(0,"unknown attr %s\n",attr_to_name(attr_type)); + dbg(lvl_error,"unknown attr %s\n",attr_to_name(attr_type)); return 0; } } @@ -991,20 +991,20 @@ int housenumber_search_setup(struct map_rect_priv *mr) { - dbg(1,"enter (0x%x,0x%x)\n",mr->search_item.id_hi,mr->search_item.id_lo); + dbg(lvl_debug,"enter (0x%x,0x%x)\n",mr->search_item.id_hi,mr->search_item.id_lo); int id=mr->search_item.id_hi & 0xff; mr->current_file=file_strname_stn; mr->street.name_file=mr->m->file[mr->current_file]; mr->b.p=mr->street.name_file->begin+mr->search_item.id_lo; mr->search_str=g_strdup(mr->search_attr->u.str); - dbg(1,"last %p\n",mr->b.p); + dbg(lvl_debug,"last %p\n",mr->b.p); street_name_get(&mr->street.name, &mr->b.p); #if 0 debug(mr); #endif while (id > 0) { id--; - dbg(1,"loop\n"); + dbg(lvl_debug,"loop\n"); if (!street_name_numbers_next(mr)) return 0; } @@ -1015,10 +1015,10 @@ if (!id) mr->item.id_hi+=1; mr->item.id_lo=mr->search_item.id_lo; - dbg(1,"getting name_number %p vs %p + %d\n",mr->street.name_numbers.tmp_data,mr->street.name_numbers.aux_data, mr->street.name_numbers.aux_len); + dbg(lvl_debug,"getting name_number %p vs %p + %d\n",mr->street.name_numbers.tmp_data,mr->street.name_numbers.aux_data, mr->street.name_numbers.aux_len); if (!street_name_number_next(mr)) return 0; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); // debug(mr); return 1; } @@ -1055,7 +1055,7 @@ housenumber_search_get_item(struct map_rect_priv *mr) { int d; - dbg(1,"enter %s %s\n",mr->street.first_number,mr->street.last_number); + dbg(lvl_debug,"enter %s %s\n",mr->street.first_number,mr->street.last_number); for (;;) { if (!house_number_next(mr->street.current_number, mr->street.first_number, mr->street.last_number, 0, NULL)) { if (!street_name_number_next(mr)) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/mg/town.c navit-0.5.0+dfsg.1/navit/map/mg/town.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/mg/town.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/mg/town.c 2016-01-02 22:29:50.000000000 +0000 @@ -105,7 +105,7 @@ twn->attr_next=attr_none; return 1; default: - dbg(1, "Don't know about attribute %d[%04X]=%s yet\n", + dbg(lvl_warning, "Don't know about attribute %d[%04X]=%s yet\n", attr_type, attr_type, attr_to_name(attr_type)); return 0; } @@ -222,12 +222,12 @@ d=0; } else { country=get_u16_unal(p); - dbg(1,"country 0x%x ", country); + dbg(lvl_debug,"country 0x%x ", country); name=get_string(p); - dbg(1,"name '%s' ",name); + dbg(lvl_debug,"name '%s' ",name); mr->search_blk_count=get_u32_unal(p); mr->search_blk_off=(struct block_offset *)(*p); - dbg(1,"len %d ", mr->search_blk_count); + dbg(lvl_debug,"len %d ", mr->search_blk_count); (*p)+=mr->search_blk_count*4; d=mr->search_country-country; } @@ -237,7 +237,7 @@ else d=strcasecmp(mr->search_str, name); } - dbg(1,"%d \n",d); + dbg(lvl_debug,"%d \n",d); return d; } @@ -250,7 +250,7 @@ int dir=1,leaf; if (! mr->search_blk_count) { - dbg(1,"partial %d 0x%x '%s' ***\n", mr->search_partial, mr->search_country, mr->search_str); + dbg(lvl_debug,"partial %d 0x%x '%s' ***\n", mr->search_partial, mr->search_country, mr->search_str); if (! mr->search_linear) { while ((leaf=tree_search_next(&mr->ts, &mr->search_p, dir)) != -1) { dir=town_search_compare(&mr->search_p, mr); @@ -261,23 +261,23 @@ } } if (! mr->search_linear) { - dbg(1,"not found\n"); + dbg(lvl_warning,"not found\n"); return NULL; } } if (! tree_search_next_lin(&mr->ts, &mr->search_p)) { - dbg(1,"linear not found\n"); + dbg(lvl_debug,"linear not found\n"); return NULL; } if (town_search_compare(&mr->search_p, mr)) { - dbg(1,"no match\n"); + dbg(lvl_debug,"no match\n"); return NULL; } - dbg(1,"found %d blocks\n",mr->search_blk_count); + dbg(lvl_debug,"found %d blocks\n",mr->search_blk_count); } if (! mr->search_blk_count) return NULL; - dbg(1,"block 0x%x offset 0x%x\n", block_offset_get_block(mr->search_blk_off), block_offset_get_offset(mr->search_blk_off)); + dbg(lvl_debug,"block 0x%x offset 0x%x\n", block_offset_get_block(mr->search_blk_off), block_offset_get_offset(mr->search_blk_off)); block_get_byindex(mr->m->file[mr->current_file], block_offset_get_block(mr->search_blk_off), &mr->b); mr->b.p=mr->b.block_start+block_offset_get_offset(mr->search_blk_off); town_get(mr, &mr->town, &mr->item); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/mg/tree.c navit-0.5.0+dfsg.1/navit/map/mg/tree.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/mg/tree.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/mg/tree.c 2016-01-02 22:29:50.000000000 +0000 @@ -78,22 +78,22 @@ struct tree_hdr_h *thdr; struct tree_leaf_h *tleaf; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); while (i++ < 1000) { thdr=(struct tree_hdr_h *)p; p+=sizeof(*thdr); end=p+tree_hdr_h_get_size(thdr); - dbg(1,"@%td\n", p-file->begin); + dbg(lvl_debug,"@%td\n", p-file->begin); last=0; while (p < end) { tleaf=(struct tree_leaf_h *)p; p+=sizeof(*tleaf); - dbg(1,"low:0x%x high:0x%x match:0x%x val:0x%x search:0x%x\n", tree_leaf_h_get_lower(tleaf), tree_leaf_h_get_higher(tleaf), tree_leaf_h_get_match(tleaf), tree_leaf_h_get_value(tleaf), search); + dbg(lvl_debug,"low:0x%x high:0x%x match:0x%x val:0x%x search:0x%x\n", tree_leaf_h_get_lower(tleaf), tree_leaf_h_get_higher(tleaf), tree_leaf_h_get_match(tleaf), tree_leaf_h_get_value(tleaf), search); value=tree_leaf_h_get_value(tleaf); if (value == search) return tree_leaf_h_get_match(tleaf); if (value > search) { - dbg(1,"lower\n"); + dbg(lvl_debug,"lower\n"); lower=tree_leaf_h_get_lower(tleaf); if (lower) last=lower; @@ -119,11 +119,11 @@ thdr=(struct tree_hdr_v *)p; p+=sizeof(*thdr); count=tree_hdr_v_get_count(thdr); - dbg(1,"offset=%td count=0x%x\n", p-file->begin, count); + dbg(lvl_debug,"offset=%td count=0x%x\n", p-file->begin, count); while (count--) { tleaf=(struct tree_leaf_v *)p; p+=sizeof(*tleaf); - dbg(1,"0x%x 0x%x\n", tleaf->key, search); + dbg(lvl_debug,"0x%x 0x%x\n", tleaf->key, search); if (tleaf->key == search) return tree_leaf_v_get_value(tleaf); } @@ -142,32 +142,32 @@ char buffer[4096]; int h,v; - dbg(1,"enter(%s, %s, 0x%x, 0x%x, %p)\n",dirname, filename, search_h, search_v, result); + dbg(lvl_debug,"enter(%s, %s, 0x%x, 0x%x, %p)\n",dirname, filename, search_h, search_v, result); sprintf(buffer, "%s/%s.h1", dirname, filename); f_idx_h=file_create_caseinsensitive(buffer, 0); if ((!f_idx_h) || (!file_mmap(f_idx_h))) return 0; sprintf(buffer, "%s/%s.v1", dirname, filename); f_idx_v=file_create_caseinsensitive(buffer, 0); - dbg(1,"%p %p\n", f_idx_h, f_idx_v); + dbg(lvl_debug,"%p %p\n", f_idx_h, f_idx_v); if ((!f_idx_v) || (!file_mmap(f_idx_v))) { file_destroy(f_idx_h); return 0; } if ((h=tree_search_h(f_idx_h, search_h))) { - dbg(1,"h=0x%x\n", h); + dbg(lvl_debug,"h=0x%x\n", h); if ((v=tree_search_v(f_idx_v, h, search_v))) { - dbg(1,"v=0x%x\n", v); + dbg(lvl_debug,"v=0x%x\n", v); *result=v; file_destroy(f_idx_v); file_destroy(f_idx_h); - dbg(1,"return 1\n"); + dbg(lvl_debug,"return 1\n"); return 1; } } file_destroy(f_idx_v); file_destroy(f_idx_h); - dbg(1,"return 0\n"); + dbg(lvl_debug,"return 0\n"); return 0; } @@ -183,7 +183,7 @@ tsn->end=p+tree_hdr_get_size(tsn->hdr); tsn->low=tree_hdr_get_low(tsn->hdr); tsn->high=tree_hdr_get_low(tsn->hdr); - dbg(1,"pos %td addr 0x%ux size 0x%ux low 0x%ux end %tu\n", p-ts->f->begin, tree_hdr_get_addr(tsn->hdr), tree_hdr_get_size(tsn->hdr), tree_hdr_get_low(tsn->hdr), tsn->end-ts->f->begin); + dbg(lvl_debug,"pos %td addr 0x%ux size 0x%ux low 0x%ux end %tu\n", p-ts->f->begin, tree_hdr_get_addr(tsn->hdr), tree_hdr_get_size(tsn->hdr), tree_hdr_get_low(tsn->hdr), tsn->end-ts->f->begin); return tsn; } @@ -193,17 +193,17 @@ if (! *p) *p=tsn->p; - dbg(1,"next *p=%p dir=%d\n", *p, dir); - dbg(1,"low1=0x%x high1=0x%x\n", tsn->low, tsn->high); + dbg(lvl_debug,"next *p=%p dir=%d\n", *p, dir); + dbg(lvl_debug,"low1=0x%x high1=0x%x\n", tsn->low, tsn->high); if (dir <= 0) { - dbg(1,"down 0x%x\n", tsn->low); + dbg(lvl_debug,"down 0x%x\n", tsn->low); if (tsn->low != 0xffffffff) { tsn=tree_search_enter(ts, tsn->low); *p=tsn->p; tsn->high=get_u32(p); ts->last_node=ts->curr_node; - dbg(1,"saving last2 %d %td\n", ts->curr_node, tsn->last-ts->f->begin); - dbg(1,"high2=0x%x\n", tsn->high); + dbg(lvl_debug,"saving last2 %d %td\n", ts->curr_node, tsn->last-ts->f->begin); + dbg(lvl_debug,"high2=0x%x\n", tsn->high); return 0; } return -1; @@ -211,18 +211,18 @@ tsn->low=tsn->high; tsn->last=*p; tsn->high=get_u32_unal(p); - dbg(1,"saving last3 %d %p\n", ts->curr_node, tsn->last); + dbg(lvl_debug,"saving last3 %d %p\n", ts->curr_node, tsn->last); if (*p < tsn->end) return (tsn->low == 0xffffffff ? 1 : 0); - dbg(1,"end reached high=0x%x\n",tsn->high); + dbg(lvl_debug,"end reached high=0x%x\n",tsn->high); if (tsn->low != 0xffffffff) { - dbg(1,"low 0x%x\n", tsn->low); + dbg(lvl_debug,"low 0x%x\n", tsn->low); tsn=tree_search_enter(ts, tsn->low); *p=tsn->p; tsn->high=get_u32_unal(p); ts->last_node=ts->curr_node; - dbg(1,"saving last4 %d %td\n", ts->curr_node, tsn->last-ts->f->begin); - dbg(1,"high4=0x%x\n", tsn->high); + dbg(lvl_debug,"saving last4 %d %td\n", ts->curr_node, tsn->last-ts->f->begin); + dbg(lvl_debug,"high4=0x%x\n", tsn->high); return 0; } return -1; @@ -233,7 +233,7 @@ struct tree_search_node *tsn=&ts->nodes[ts->curr_node]; int high; - dbg(1,"pos=%d %td\n", ts->curr_node, *p-ts->f->begin); + dbg(lvl_debug,"pos=%d %td\n", ts->curr_node, *p-ts->f->begin); if (*p) ts->nodes[ts->last_node].last=*p; *p=tsn->last; @@ -243,12 +243,12 @@ ts->last_node=ts->curr_node; while (high != 0xffffffff) { tsn=tree_search_enter(ts, high); - dbg(1,"reload %d\n",ts->curr_node); + dbg(lvl_debug,"reload %d\n",ts->curr_node); high=tsn->low; } return 1; } - dbg(1,"eon %d %td %td\n", ts->curr_node, *p-ts->f->begin, tsn->end-ts->f->begin); + dbg(lvl_debug,"eon %d %td %td\n", ts->curr_node, *p-ts->f->begin, tsn->end-ts->f->begin); if (! ts->curr_node) break; ts->curr_node--; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/shapefile/shapefile.c navit-0.5.0+dfsg.1/navit/map/shapefile/shapefile.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/shapefile/shapefile.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/shapefile/shapefile.c 2016-01-02 22:29:50.000000000 +0000 @@ -76,7 +76,7 @@ static void map_destroy_shapefile(struct map_priv *m) { - dbg(1,"map_destroy_shapefile\n"); + dbg(lvl_debug,"map_destroy_shapefile\n"); g_free(m); } @@ -328,7 +328,7 @@ { struct longest_match_list_item *lmli; char *kvl=NULL,*i=NULL,*p,*kv; - dbg(1,"line=%s\n",line); + dbg(lvl_debug,"line=%s\n",line); kvl=line; p=strchr(line,'\t'); if (p) { @@ -424,7 +424,7 @@ } if (!value[0]) return -1; - dbg(1,"name=%s value=%s\n",name,value); + dbg(lvl_debug,"name=%s value=%s\n",name,value); attr_free(mr->attr); mr->attr=attr_new_from_text(name,value); if (mr->attr) { @@ -524,14 +524,14 @@ } file_destroy(file); } else { - dbg(0,"Failed to open %s\n",dbfmapfile); + dbg(lvl_error,"Failed to open %s\n",dbfmapfile); if (map->dbfmap_data) { changed=1; g_free(map->dbfmap_data); map->dbfmap_data=NULL; } } - dbg(1,"%s changed %d old %p\n",dbfmapfile,changed,map->dbfmap_data); + dbg(lvl_debug,"%s changed %d old %p\n",dbfmapfile,changed,map->dbfmap_data); if (changed) { longest_match_destroy(map->lm,1); map->lm=NULL; @@ -539,7 +539,7 @@ build_matches(map,map->dbfmap_data); } } - dbg(1,"map_rect_new_shapefile\n"); + dbg(lvl_debug,"map_rect_new_shapefile\n"); mr=g_new0(struct map_rect_priv, 1); mr->m=map; mr->idx=0; @@ -595,12 +595,12 @@ if (count) { mr->line=lines[0]; if (attr_from_line(mr->line,"type",NULL,type,NULL)) { - dbg(1,"type='%s'\n", type); + dbg(lvl_debug,"type='%s'\n", type); mr->item.type=item_from_name(type); if (mr->item.type == type_none && strcmp(type,"none")) - dbg(0,"Warning: type '%s' unknown\n", type); + dbg(lvl_error,"Warning: type '%s' unknown\n", type); } else { - dbg(0,"failed to get attribute type\n"); + dbg(lvl_debug,"failed to get attribute type\n"); } } else mr->line=NULL; @@ -649,7 +649,7 @@ char *shapefile,*dbffile; if (! data) return NULL; - dbg(1,"map_new_shapefile %s\n", data->u.str); + dbg(lvl_debug,"map_new_shapefile %s\n", data->u.str); wdata=g_strdup(data->u.str); wexp=file_wordexp_new(wdata); wexp_data=file_wordexp_get_array(wexp); @@ -665,7 +665,7 @@ m->hDBF=DBFOpen(dbffile, "rb"); m->nFields=DBFGetFieldCount(m->hDBF); g_free(dbffile); - dbg(1,"map_new_shapefile %s %s\n", m->filename, wdata); + dbg(lvl_debug,"map_new_shapefile %s %s\n", m->filename, wdata); if (charset) { m->charset=g_strdup(charset->u.str); meth->charset=m->charset; @@ -681,7 +681,7 @@ void plugin_init(void) { - dbg(1,"shapefile: plugin_init\n"); + dbg(lvl_debug,"shapefile: plugin_init\n"); plugin_register_map_type("shapefile", map_new_shapefile); } @@ -759,7 +759,7 @@ static void VSI_SHP_Error( const char *message ) { - dbg(0,"error:%s\n", message); + dbg(lvl_error,"error:%s\n", message); } /************************************************************************/ diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map/textfile/textfile.c navit-0.5.0+dfsg.1/navit/map/textfile/textfile.c --- navit-0.5.0~svn5900+dfsg.1/navit/map/textfile/textfile.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map/textfile/textfile.c 2016-01-02 22:29:50.000000000 +0000 @@ -54,11 +54,11 @@ else mr->pos+=mr->lastlen; fgets(mr->line, TEXTFILE_LINE_SIZE, mr->f); - dbg(1,"read textfile line: %s\n", mr->line); + dbg(lvl_debug,"read textfile line: %s\n", mr->line); remove_comment_line(mr->line); mr->lastlen=strlen(mr->line)+1; if (strlen(mr->line) >= TEXTFILE_LINE_SIZE-1) - dbg(0, "line too long: %s\n", mr->line); + dbg(lvl_error, "line too long: %s\n", mr->line); } } @@ -94,12 +94,12 @@ { struct map_rect_priv *mr=priv_data; int ret=0; - dbg(1,"enter, count: %d\n",count); + dbg(lvl_warning,"enter, count: %d\n",count); while (count--) { if (mr->f && !feof(mr->f) && (!mr->item.id_hi || !mr->eoc) && parse_line(mr, mr->item.id_hi)) { if (c){ *c=mr->c; - dbg(1,"c=0x%x,0x%x\n", c->x, c->y); + dbg(lvl_debug,"c=0x%x,0x%x\n", c->x, c->y); c++; } ret++; @@ -136,31 +136,31 @@ { struct map_rect_priv *mr=priv_data; char *str=NULL; - dbg(1,"mr=%p attrs='%s' ", mr, mr->attrs); + dbg(lvl_debug,"mr=%p attrs='%s' ", mr, mr->attrs); if (attr_type != mr->attr_last) { - dbg(1,"reset attr_pos\n"); + dbg(lvl_debug,"reset attr_pos\n"); mr->attr_pos=0; mr->attr_last=attr_type; } if (attr_type == attr_any) { - dbg(1,"attr_any"); + dbg(lvl_debug,"attr_any"); if (attr_from_line(mr->attrs,NULL,&mr->attr_pos,mr->attr, mr->attr_name)) { attr_type=attr_from_name(mr->attr_name); - dbg(1,"found attr '%s' 0x%x\n", mr->attr_name, attr_type); + dbg(lvl_debug,"found attr '%s' 0x%x\n", mr->attr_name, attr_type); attr->type=attr_type; textfile_encode_attr(mr->attr, attr_type, attr); return 1; } } else { str=attr_to_name(attr_type); - dbg(1,"attr='%s' ",str); + dbg(lvl_debug,"attr='%s' ",str); if (attr_from_line(mr->attrs,str,&mr->attr_pos,mr->attr, NULL)) { textfile_encode_attr(mr->attr, attr_type, attr); - dbg(1,"found\n"); + dbg(lvl_debug,"found\n"); return 1; } } - dbg(1,"not found\n"); + dbg(lvl_debug,"not found\n"); return 0; } @@ -176,7 +176,7 @@ { struct map_rect_priv *mr; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); mr=g_new0(struct map_rect_priv, 1); mr->m=map; mr->sel=sel; @@ -204,20 +204,20 @@ } sel=sel->next; } - dbg(1,"popen args %s\n", args); + dbg(lvl_debug,"popen args %s\n", args); mr->args=args; mr->f=popen(mr->args, "r"); mr->pos=0; mr->lastlen=0; #else - dbg(0,"unable to work with pipes %s\n",map->filename); + dbg(lvl_error,"unable to work with pipes %s\n",map->filename); #endif } else { mr->f=fopen(map->filename, "r"); } if(!mr->f) { if (!(errno == ENOENT && map->no_warning_if_map_file_missing)) { - dbg(0, "error opening textfile %s: %s\n", map->filename, strerror(errno)); + dbg(lvl_error, "error opening textfile %s: %s\n", map->filename, strerror(errno)); } } get_line(mr); @@ -245,7 +245,7 @@ map_rect_get_item_textfile(struct map_rect_priv *mr) { char *p,type[TEXTFILE_LINE_SIZE]; - dbg(1,"map_rect_get_item_textfile id_hi=%d line=%s", mr->item.id_hi, mr->line); + dbg(lvl_debug,"map_rect_get_item_textfile id_hi=%d line=%s", mr->item.id_hi, mr->line); if (!mr->f) { return NULL; } @@ -255,7 +255,7 @@ } for(;;) { if (feof(mr->f)) { - dbg(1,"map_rect_get_item_textfile: eof %d\n",mr->item.id_hi); + dbg(lvl_debug,"map_rect_get_item_textfile: eof %d\n",mr->item.id_hi); if (mr->m->flags & 1) { if (!mr->item.id_hi) return NULL; @@ -286,7 +286,7 @@ get_line(mr); continue; } - dbg(1,"map_rect_get_item_textfile: point found\n"); + dbg(lvl_debug,"map_rect_get_item_textfile: point found\n"); mr->eoc=0; mr->item.id_lo=mr->pos; } else { @@ -294,7 +294,7 @@ get_line(mr); continue; } - dbg(1,"map_rect_get_item_textfile: line found\n"); + dbg(lvl_debug,"map_rect_get_item_textfile: line found\n"); if (! mr->line[0]) { get_line(mr); continue; @@ -302,21 +302,21 @@ mr->item.id_lo=mr->pos; strcpy(mr->attrs, mr->line); get_line(mr); - dbg(1,"mr=%p attrs=%s\n", mr, mr->attrs); + dbg(lvl_debug,"mr=%p attrs=%s\n", mr, mr->attrs); } - dbg(1,"get_attrs %s\n", mr->attrs); + dbg(lvl_debug,"get_attrs %s\n", mr->attrs); if (attr_from_line(mr->attrs,"type",NULL,type,NULL)) { - dbg(1,"type='%s'\n", type); + dbg(lvl_debug,"type='%s'\n", type); mr->item.type=item_from_name(type); if (mr->item.type == type_none) - dbg(0, "Warning: type '%s' unknown\n", type); + dbg(lvl_error, "Warning: type '%s' unknown\n", type); } else { get_line(mr); continue; } mr->attr_last=attr_none; mr->more=1; - dbg(1,"return attr='%s'\n", mr->attrs); + dbg(lvl_debug,"return attr='%s'\n", mr->attrs); return &mr->item; } } @@ -362,7 +362,7 @@ char **wexp_data; if (! data) return NULL; - dbg(1,"map_new_textfile %s\n", data->u.str); + dbg(lvl_debug,"map_new_textfile %s\n", data->u.str); wdata=g_strdup(data->u.str); len=strlen(wdata); if (len && wdata[len-1] == '|') { @@ -380,7 +380,7 @@ m->no_warning_if_map_file_missing=(no_warn!=NULL) && (no_warn->u.num); if (flags) m->flags=flags->u.num; - dbg(1,"map_new_textfile %s %s\n", m->filename, wdata); + dbg(lvl_debug,"map_new_textfile %s %s\n", m->filename, wdata); if (charset) { m->charset=g_strdup(charset->u.str); meth->charset=m->charset; @@ -393,7 +393,7 @@ void plugin_init(void) { - dbg(1,"textfile: plugin_init\n"); + dbg(lvl_debug,"textfile: plugin_init\n"); plugin_register_map_type("textfile", map_new_textfile); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/map.c navit-0.5.0+dfsg.1/navit/map.c --- navit-0.5.0~svn5900+dfsg.1/navit/map.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/map.c 2016-01-02 22:29:50.000000000 +0000 @@ -96,12 +96,12 @@ struct attr *type=attr_search(attrs, NULL, attr_type); if (! type) { - dbg(0,"missing type\n"); + dbg(lvl_error,"missing type\n"); return NULL; } maptype_new=plugin_get_map_type(type->u.str); if (! maptype_new) { - dbg(0,"invalid type '%s'\n", type->u.str); + dbg(lvl_error,"invalid type '%s'\n", type->u.str); return NULL; } @@ -227,7 +227,7 @@ return str; map_converted_string_tmp=g_convert(str, -1, "utf-8", this_->meth.charset, NULL, NULL, NULL); if(!map_converted_string_tmp) { - dbg(0,"Error converting '%s' from %s to utf-8\n", str, this_->meth.charset); + dbg(lvl_error,"Error converting '%s' from %s to utf-8\n", str, this_->meth.charset); return str; } return map_converted_string_tmp; @@ -442,8 +442,8 @@ map_search_new(struct map *m, struct item *item, struct attr *search_attr, int partial) { struct map_search *this_; - dbg(1,"enter(%p,%p,%p,%d)\n", m, item, search_attr, partial); - dbg(1,"0x%x 0x%x 0x%x\n", attr_country_all, search_attr->type, attr_country_name); + dbg(lvl_debug,"enter(%p,%p,%p,%d)\n", m, item, search_attr, partial); + dbg(lvl_debug,"0x%x 0x%x 0x%x\n", attr_country_all, search_attr->type, attr_country_name); this_=g_new0(struct map_search,1); this_->m=m; this_->search_attr=*search_attr; @@ -712,7 +712,7 @@ map_dump_filedesc(map, f); fclose(f); } else - dbg(0,"failed to open file '%s'\n",file); + dbg(lvl_error,"failed to open file '%s'\n",file); } void diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maps/CMakeLists.txt navit-0.5.0+dfsg.1/navit/maps/CMakeLists.txt --- navit-0.5.0~svn5900+dfsg.1/navit/maps/CMakeLists.txt 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maps/CMakeLists.txt 2016-01-02 22:29:50.000000000 +0000 @@ -38,4 +38,7 @@ VERBATIM ) endif() + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.bin + DESTINATION ${SHARE_DIR}/maps + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) endif() diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maps.c navit-0.5.0+dfsg.1/navit/maps.c --- navit-0.5.0~svn5900+dfsg.1/navit/maps.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maps.c 2016-01-02 22:29:50.000000000 +0000 @@ -32,14 +32,14 @@ { struct attr *data,**attrs_dup; if (!parent) { - dbg(0,"No parent\n"); + dbg(lvl_error,"No parent\n"); return NULL; } if (parent->type != attr_mapset) { - dbg(0,"Parent must be mapset\n"); + dbg(lvl_error,"Parent must be mapset\n"); return NULL; } - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); attrs_dup=attr_list_dup(attrs); data=attr_search(attrs_dup, NULL, attr_data); if (data) { @@ -79,7 +79,7 @@ } file_wordexp_destroy(wexp); } else { - dbg(0,"no data attribute\n"); + dbg(lvl_error,"no data attribute\n"); } attr_list_free(attrs_dup); return NULL; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/mapset.c navit-0.5.0+dfsg.1/navit/mapset.c --- navit-0.5.0~svn5900+dfsg.1/navit/mapset.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/mapset.c 2016-01-02 22:29:50.000000000 +0000 @@ -310,7 +310,7 @@ mapset_search_new(struct mapset *ms, struct item *item, struct attr *search_attr, int partial) { struct mapset_search *this; - dbg(1,"enter(%p,%p,%p,%d)\n", ms, item, search_attr, partial); + dbg(lvl_debug,"enter(%p,%p,%p,%d)\n", ms, item, search_attr, partial); this=g_new0(struct mapset_search,1); if(this != NULL && ms!=NULL ) { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/boundaries.c navit-0.5.0+dfsg.1/navit/maptool/boundaries.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/boundaries.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/boundaries.c 2016-01-02 22:29:50.000000000 +0000 @@ -83,6 +83,8 @@ int has_subrelations=0; int has_outer_ways=0; + processed_relations++; + if(!iso) iso=osm_tag_value(ib, "iso3166-1:alpha2"); @@ -272,6 +274,7 @@ if (f) { struct item_bin *ib=tmp_item_bin; item_bin_init(ib, type_selected_line); + /* FIXME check for overflow */ item_bin_add_coord(ib, gs->first, gs->last-gs->first+1); item_bin_write(ib, f); } @@ -352,8 +355,9 @@ } void -free_boundaries(GList *l) +free_boundaries(GList *bl) { + GList *l=bl; while (l) { struct boundary *boundary=l->data; GList *s=boundary->segments; @@ -378,5 +382,5 @@ g_free(boundary); l=g_list_next(l); } - g_list_free(l); + g_list_free(bl); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/buffer.c navit-0.5.0+dfsg.1/navit/maptool/buffer.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/buffer.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/buffer.c 2016-01-02 22:29:50.000000000 +0000 @@ -30,8 +30,8 @@ f=fopen(filename,"wb+"); dbg_assert(f != NULL); - fseeko(f, offset, SEEK_SET); - fwrite(b->base, b->size, 1, f); + dbg_assert(fseeko(f, offset, SEEK_SET)==0); + dbg_assert(fwrite(b->base, b->size, 1, f)==1); fclose(f); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/ch.c navit-0.5.0+dfsg.1/navit/maptool/ch.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/ch.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/ch.c 2016-01-02 22:29:50.000000000 +0000 @@ -252,7 +252,7 @@ item_bin=init_item(type_ch_node); oldnode=GPOINTER_TO_INT(g_hash_table_lookup(newnode_hash, GINT_TO_POINTER(node))); #if 0 - dbg(0,"0x%x,0x%x\n",node_index[oldnode].x,node_index[oldnode].y); + dbg(lvl_debug,"0x%x,0x%x\n",node_index[oldnode].x,node_index[oldnode].y); #endif item_bin_add_coord(item_bin, &node_index[oldnode], 1); fwd.first=oldnode; @@ -279,7 +279,7 @@ } else { ch_edge.middle=*id; #if 0 - dbg(0,"middle street id for is "ITEM_ID_FMT"\n",ITEM_ID_ARGS(*id)); + dbg(lvl_debug,"middle street id for is "ITEM_ID_FMT"\n",ITEM_ID_ARGS(*id)); #endif } } else { @@ -288,12 +288,12 @@ dbg_assert(id != NULL); ch_edge.middle=*id; #if 0 - dbg(0,"middle node id for is "ITEM_ID_FMT"\n",ITEM_ID_ARGS(*id)); + dbg(lvl_debug,"middle node id for is "ITEM_ID_FMT"\n",ITEM_ID_ARGS(*id)); #endif } id=g_hash_table_lookup(sgr_nodes_hash, GINT_TO_POINTER((int)edge->target)); #if 0 - dbg(0,"id for %d is "ITEM_ID_FMT"\n",edge->target,ITEM_ID_ARGS(*id)); + dbg(lvl_debug,"id for %d is "ITEM_ID_FMT"\n",edge->target,ITEM_ID_ARGS(*id)); #endif if (id == NULL) { fprintf(stderr,"Failed to look up target %d\n",edge->target); @@ -511,7 +511,7 @@ struct item_id *id2=g_slice_new(struct item_id); *id2=id; #if 0 - dbg(0,"%d is "ITEM_ID_FMT"\n",nodeid,ITEM_ID_ARGS(*id2)); + dbg(lvl_debug,"%d is "ITEM_ID_FMT"\n",nodeid,ITEM_ID_ARGS(*id2)); #endif g_hash_table_insert(sgr_nodes_hash, GINT_TO_POINTER(nodeid), id2); nodeid++; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/coastline.c navit-0.5.0+dfsg.1/navit/maptool/coastline.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/coastline.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/coastline.c 2016-01-02 22:29:50.000000000 +0000 @@ -49,15 +49,14 @@ GList *curr; int i; struct geom_poly_segment *ret=NULL; - int dbgl=1; for (i = 0 ; i < 2 ; i++) { curr=segments; - dbg(dbgl,"search distance %d\n",search); + dbg(lvl_debug,"search distance %d\n",search); while (curr) { struct geom_poly_segment *seg=curr->data; int dist=distance_from_ll(seg->first, bbox); - dbg(dbgl,"0x%x 0x%x dist %d\n",seg->first->x,seg->first->y,dist); + dbg(lvl_debug,"0x%x 0x%x dist %d\n",seg->first->x,seg->first->y,dist); if (dist != -1 && seg->first != seg->last && dist < min && (dist >= search)) { min=dist; ci[0]=*seg->first; @@ -177,7 +176,6 @@ struct geom_poly_segment *first; struct item_bin *ib=NULL; struct item_bin_sink *out=data->sink->priv_data[1]; - int dbgl=1; int edges=0,flags; GList *sorted_segments,*curr; struct item_bin *ibt=(struct item_bin *)(tile_data+1); @@ -257,7 +255,7 @@ for (;;) { search++; // item_bin_write_debug_point_to_sink(out, &end, "Search %d",search); - dbg(dbgl,"searching next polygon from 0x%x 0x%x\n",end.x,end.y); + dbg(lvl_debug,"searching next polygon from 0x%x 0x%x\n",end.x,end.y); first=find_next(&bbox, sorted_segments, &end, exclude, cn); exclude=1; if (!first) @@ -267,7 +265,7 @@ tile_start_valid=1; } else { if (cn[0].x == tile_start.x && cn[0].y == tile_start.y) { - dbg(dbgl,"end of tile reached\n"); + dbg(lvl_debug,"end of tile reached\n"); break; } } @@ -276,7 +274,7 @@ continue; } poly_start_valid=0; - dbg(dbgl,"start of polygon 0x%x 0x%x\n",cn[0].x,cn[0].y); + dbg(lvl_debug,"start of polygon 0x%x 0x%x\n",cn[0].x,cn[0].y); for (;;) { if (!poly_start_valid) { poly_start=cn[0]; @@ -285,7 +283,7 @@ } else { close_polygon(ib, &end, &cn[0], 1, &bbox, &edges); if (cn[0].x == poly_start.x && cn[0].y == poly_start.y) { - dbg(dbgl,"poly end reached\n"); + dbg(lvl_debug,"poly end reached\n"); item_bin_add_attr_longlong(ib, attr_osm_wayid, ct->wayid); item_bin_write_to_sink(ib, out, NULL); end=cn[0]; @@ -298,11 +296,11 @@ first->type=geom_poly_segment_type_none; end=cn[1]; if (distance_from_ll(&end, &bbox) == -1) { - dbg(dbgl,"incomplete\n"); + dbg(lvl_debug,"incomplete\n"); break; } first=find_next(&bbox, sorted_segments, &end, 1, cn); - dbg(dbgl,"next segment of polygon 0x%x 0x%x\n",cn[0].x,cn[0].y); + dbg(lvl_debug,"next segment of polygon 0x%x 0x%x\n",cn[0].x,cn[0].y); } if (search > 55) break; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/itembin_buffer.c navit-0.5.0+dfsg.1/navit/maptool/itembin_buffer.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/itembin_buffer.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/itembin_buffer.c 2016-01-02 22:29:50.000000000 +0000 @@ -23,7 +23,7 @@ /** Buffer for temporarily storing an item. */ -static char misc_item_buffer[2000000]; +static char misc_item_buffer[20000000]; /** An item_bin for temporary use. */ struct item_bin *tmp_item_bin=(struct item_bin *)(void *)misc_item_buffer; /** A node_item for temporary use. */ diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/itembin.c navit-0.5.0+dfsg.1/navit/maptool/itembin.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/itembin.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/itembin.c 2016-01-02 22:29:50.000000000 +0000 @@ -269,7 +269,7 @@ void item_bin_write(struct item_bin *ib, FILE *out) { - fwrite(ib, (ib->len+1)*4, 1, out); + dbg_assert(fwrite(ib, (ib->len+1)*4, 1, out)==1); } struct item_bin * @@ -587,7 +587,7 @@ for (j = 0 ; j < count ; j++) { ib=(struct item_bin *)(idx[j]); c=(struct coord *)(ib+1); - fwrite(ib, (ib->len+1)*4, 1, f); + dbg_assert(fwrite(ib, (ib->len+1)*4, 1, f)==1); if (r) { for (k = 0 ; k < ib->clen/2 ; k++) { if (rc) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/maptool.c navit-0.5.0+dfsg.1/navit/maptool/maptool.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/maptool.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/maptool.c 2016-01-02 22:29:50.000000000 +0000 @@ -57,7 +57,7 @@ int unknown_country; char ch_suffix[] ="r"; /* Used to make compiler happy due to Bug 35903 in gcc */ /** Textual description of available experimental features, or NULL (=none available). */ -char* experimental_feature_description = NULL; /* add description here */ +char* experimental_feature_description = "Move coastline data to order 6 tiles. Makes map look more smooth, but may affect drawing/searching performance."; /* add description here */ /** Indicates if experimental features (if available) were enabled. */ int experimental; @@ -72,16 +72,76 @@ int bytes_read; static long start_brk; -static struct timeval start_tv; +#ifdef _WIN32 +#define timespec timeval +#endif +static struct timespec start_ts; + +/* + Asynchronous signal safe lltoa function (note: no trailing \0 char!) +*/ +int assafe_lltoa(long long n, int maxlen, char *buf) +{ + int i; + int out_length; + + if(maxlen<1) + return 0; + + if(n<0) { + n=-n; + buf[0]='-'; + maxlen--; + buf++; + } else if(n==0) { + buf[0]='0'; + return 1; + } + + for(i=0; n>0 && i9?":":":0", buflen-pos, buf+pos); + pos+=assafe_lltoa(seconds, buflen-pos, buf+pos); + write(2,buf,pos); } static void @@ -89,24 +149,58 @@ { #ifdef HAVE_SBRK long mem=(long)sbrk(0)-start_brk; - fprintf(stderr," %ld MB",mem/1024/1024); + const int buflen=20; + char buf[buflen]; + int pos=1; + buf[0]=' '; + pos+=assafe_lltoa(mem/1024/1024, buflen-pos, buf+pos); + pos+=assafe_strcp2buf(" MB", buflen-pos, buf+pos); + write(2,buf,pos); #endif } void -sig_alrm(int sig) +sig_alrm_do(int sig) { + const int buflen=1024; + char buf[buflen]; + int pos=0; #ifndef _WIN32 - signal(SIGALRM, sig_alrm); + signal(SIGALRM, sig_alrm_do); alarm(30); #endif - fprintf(stderr,"PROGRESS%d: Processed %d nodes (%d out) %d ways %d relations %d tiles", phase, processed_nodes, processed_nodes_out, processed_ways, processed_relations, processed_tiles); + pos+=assafe_strcp2buf("PROGRESS", buflen-pos, buf+pos); + pos+=assafe_lltoa(phase, buflen-pos, buf+pos); + pos+=assafe_strcp2buf(": Processed ", buflen-pos, buf+pos); + pos+=assafe_lltoa(processed_nodes, buflen-pos, buf+pos); + pos+=assafe_strcp2buf(" nodes (", buflen-pos, buf+pos); + pos+=assafe_lltoa(processed_nodes_out, buflen-pos, buf+pos); + pos+=assafe_strcp2buf(" out) ", buflen-pos, buf+pos); + pos+=assafe_lltoa(processed_ways, buflen-pos, buf+pos); + pos+=assafe_strcp2buf(" ways ", buflen-pos, buf+pos); + pos+=assafe_lltoa(processed_relations, buflen-pos, buf+pos); + pos+=assafe_strcp2buf(" relations ", buflen-pos, buf+pos); + pos+=assafe_lltoa(processed_tiles, buflen-pos, buf+pos); + pos+=assafe_strcp2buf(" tiles", buflen-pos, buf+pos); + write(2,buf,pos); progress_time(); progress_memory(); - fprintf(stderr,"\n"); +#ifndef _WIN32 + write(2,"\r\n",2); +#else + write(2,"\n",1); +#endif +} + +void +sig_alrm(int sig) +{ + fflush(stderr); + sig_alrm_do(sig); } + void sig_alrm_end(void) { @@ -444,6 +538,7 @@ phase++; if (p->start <= phase && p->end >= phase) { fprintf(stderr,"PROGRESS: Phase %d: %s",phase,str); + fflush(stderr); progress_time(); progress_memory(); fprintf(stderr,"\n"); @@ -711,7 +806,10 @@ zip_set_compression_level(zip_info, p->compression_level); if (p->md5file) zip_set_md5(zip_info, 1); - zip_open(zip_info, p->result, zipdir, zipindex); + if(!zip_open(zip_info, p->result, zipdir, zipindex)) { + fprintf(stderr,"Fatal: Could not write output file.\n"); + exit(1); + } if (p->url) { map_information_attrs[1].type=attr_url; map_information_attrs[1].u.str=p->url; @@ -845,8 +943,11 @@ #ifdef HAVE_SBRK start_brk=(long)sbrk(0); #endif - gettimeofday(&start_tv, NULL); - +#ifdef _WIN32 + gettimeofday(&start_ts,NULL); +#else + clock_gettime(CLOCK_REALTIME, &start_ts); +#endif while (1) { int parse_result=parse_option(&p, argv, argc, &option_index); if (!parse_result) { @@ -913,11 +1014,10 @@ fclose(ways_split); } } - if (start_phase(&p,"generating coastlines")) { osm_process_coastlines(&p, suffix); } - if (start_phase(&p,"assinging towns to countries")) { + if (start_phase(&p,"assigning towns to countries")) { FILE *towns=tempfile(suffix,"towns",0),*boundaries=NULL,*ways=NULL; if (towns) { boundaries=tempfile(suffix,"boundaries",0); @@ -944,26 +1044,30 @@ if (p.process_relations && p.process_ways && p.process_nodes && start_phase(&p,"processing associated street relations")) { struct files_relation_processing *files_relproc = files_relation_processing_new(p.osm.line2poi, suffix); p.osm.associated_streets=tempfile(suffix,"associated_streets",0); + if (p.osm.associated_streets) { - process_associated_streets(p.osm.associated_streets, files_relproc); + process_associated_streets(p.osm.associated_streets, files_relproc); - fclose(p.osm.associated_streets); - files_relation_processing_destroy(files_relproc, suffix); - if(!p.keep_tmpfiles) { - tempfile_unlink(suffix,"associated_streets"); + fclose(p.osm.associated_streets); + files_relation_processing_destroy(files_relproc, suffix); + if(!p.keep_tmpfiles) { + tempfile_unlink(suffix,"associated_streets"); + } } } if (p.process_relations && p.process_ways && p.process_nodes && start_phase(&p,"processing house number interpolations")) { // OSM house number interpolations are handled like a relation. struct files_relation_processing *files_relproc = files_relation_processing_new(p.osm.line2poi, suffix); p.osm.house_number_interpolations=tempfile(suffix,"house_number_interpolations",0); + if (p.osm.house_number_interpolations) { - process_house_number_interpolations(p.osm.house_number_interpolations, files_relproc); + process_house_number_interpolations(p.osm.house_number_interpolations, files_relproc); - fclose(p.osm.house_number_interpolations); - files_relation_processing_destroy(files_relproc, suffix); - if(!p.keep_tmpfiles) { - tempfile_unlink(suffix,"house_number_interpolations"); + fclose(p.osm.house_number_interpolations); + files_relation_processing_destroy(files_relproc, suffix); + if(!p.keep_tmpfiles) { + tempfile_unlink(suffix,"house_number_interpolations"); + } } } if (p.output == 1 && start_phase(&p,"dumping")) { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/maptool.h navit-0.5.0+dfsg.1/navit/maptool/maptool.h --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/maptool.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/maptool.h 2016-01-02 22:29:50.000000000 +0000 @@ -412,7 +412,7 @@ int zip_get_maxnamelen(struct zip_info *info); int zip_add_member(struct zip_info *info); int zip_set_timestamp(struct zip_info *info, char *timestamp); -void zip_open(struct zip_info *info, char *out, char *dir, char *index); +int zip_open(struct zip_info *info, char *out, char *dir, char *index); FILE *zip_get_index(struct zip_info *info); int zip_get_zipnum(struct zip_info *info); void zip_set_zipnum(struct zip_info *info, int num); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/misc.c navit-0.5.0+dfsg.1/navit/maptool/misc.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/misc.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/misc.c 2016-01-02 22:29:50.000000000 +0000 @@ -173,8 +173,12 @@ switch (type) { case type_town_label_1e7: case type_town_label_5e6: + max=3; + break; case type_town_label_2e6: case type_town_label_1e6: + max=5; + break; case type_town_label_5e5: case type_district_label_1e7: case type_district_label_5e6: @@ -201,6 +205,10 @@ case type_district_label_1e4: max=9; break; + case type_poly_water_tiled: + if(experimental) + max=9; + break; case type_street_4_land: case type_street_4_city: max=10; @@ -343,20 +351,19 @@ info.tilesdir_out=NULL; phase34(&info, zip_info, in, reference, in_count, with_range); - th=tile_head_root; - while (th) { - if (th->process) { - if (th->name[0]) { - if (th->total_size != th->total_size_used) { - fprintf(stderr,"Size error '%s': %d vs %d\n", th->name, th->total_size, th->total_size_used); - exit(1); - } - write_zipmember(zip_info, th->name, zip_get_maxnamelen(zip_info), th->zip_data, th->total_size); - zipfiles++; - } else - fwrite(th->zip_data, th->total_size, 1, zip_get_index(zip_info)); + for (th=tile_head_root;th;th=th->next) { + if (!th->process) + continue; + if (th->name[0]) { + if (th->total_size != th->total_size_used) { + fprintf(stderr,"Size error '%s': %d vs %d\n", th->name, th->total_size, th->total_size_used); + exit(1); + } + write_zipmember(zip_info, th->name, zip_get_maxnamelen(zip_info), th->zip_data, th->total_size); + zipfiles++; + } else { + dbg_assert(fwrite(th->zip_data, th->total_size, 1, zip_get_index(zip_info))==1); } - th=th->next; } free(slice_data); @@ -416,7 +423,7 @@ { struct item_bin *ib; while ((ib=read_item(in))) { - fwrite(ib, (ib->len+1)*4, 1, out); + item_bin_write(ib, out); } } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/osm.c navit-0.5.0+dfsg.1/navit/maptool/osm.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/osm.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/osm.c 2016-01-02 22:29:50.000000000 +0000 @@ -101,6 +101,11 @@ attr_string_district_name, attr_string_street_name, attr_string_street_name_systematic, + attr_string_street_name_systematic_nat, + attr_string_street_name_systematic_int, + attr_string_ref, + attr_string_exit_to, + attr_string_street_destination, attr_string_house_number, attr_string_label, attr_string_postal, @@ -1158,11 +1163,32 @@ attr_strings_save(attr_string_population, v); level=5; } - if (! strcmp(k,"ref")) { + if ((! strcmp(k,"ref")) || (! strcmp(k,"destination:ref"))) { if (in_way) attr_strings_save(attr_string_street_name_systematic, v); + /* for exit number of highway_exit poi */ + else attr_strings_save(attr_string_ref, v); level=5; } + if (! strcmp(k,"nat_ref")) { + if (in_way) + attr_strings_save(attr_string_street_name_systematic_nat, v); + level=5; + } + if (! strcmp(k,"int_ref")) { + if (in_way) + attr_strings_save(attr_string_street_name_systematic_int, v); + level=5; + } + if (! strcmp(k,"destination")) { + if (in_way) + attr_strings_save(attr_string_street_destination, v); + level=5; + } + if (! strcmp(k,"exit_to")) { + attr_strings_save(attr_string_exit_to, v); + level=5; + } if (! strcmp(k,"openGeoDB:is_in")) { if (!is_in_buffer[0]) g_strlcpy(is_in_buffer, v, sizeof(is_in_buffer)); @@ -1750,6 +1776,8 @@ item_bin_add_attr_string(item_bin, def_flags ? attr_street_name : attr_label, attr_strings[attr_string_label]); item_bin_add_attr_string(item_bin, attr_district_name, attr_strings[attr_string_district_name]); item_bin_add_attr_string(item_bin, attr_street_name_systematic, attr_strings[attr_string_street_name_systematic]); + item_bin_add_attr_string(item_bin, attr_street_name_systematic_nat, attr_strings[attr_string_street_name_systematic_nat]); + item_bin_add_attr_string(item_bin, attr_street_destination, attr_strings[attr_string_street_destination]); item_bin_add_attr_longlong(item_bin, attr_osm_wayid, osmid_attr_value); if (debug_attr_buffer[0]) item_bin_add_attr_string(item_bin, attr_debug, debug_attr_buffer); @@ -1831,6 +1859,8 @@ item_bin_add_attr_string(item_bin, attr_county_name, attr_strings[attr_string_county_name]); item_bin_add_attr_string(item_bin, attr_url, attr_strings[attr_string_url]); item_bin_add_attr_longlong(item_bin, attr_osm_nodeid, osmid_attr_value); + item_bin_add_attr_string(item_bin, attr_ref, attr_strings[attr_string_ref]); + item_bin_add_attr_string(item_bin, attr_exit_to, attr_strings[attr_string_exit_to]); item_bin_add_attr_string(item_bin, attr_debug, debug_attr_buffer); postal=attr_strings[attr_string_postal]; if (postal) { @@ -1870,9 +1900,13 @@ { struct country_table *result=NULL, *lookup; char *tok,*dup=g_strdup(is_in),*buf=dup; + int conflict=0; int find_town_name = 0; + if(!is_in) + return NULL; + if (item_is_district(*ib)) find_town_name = 1; @@ -1887,8 +1921,7 @@ lookup=g_hash_table_lookup(country_table_hash,tok); if (lookup) { if (result && result->countryid != lookup->countryid) { - char *label=item_bin_get_attr(ib, attr_town_name, NULL); - osm_warning("node",item_bin_get_nodeid(ib),0,"conflict for %s is_in=%s country %d vs %d\n", label, is_in, lookup->countryid, result->countryid); + conflict=1; } result=lookup; } @@ -1896,6 +1929,11 @@ } g_free(dup); + if(conflict) { + char *label=item_bin_get_attr(ib, attr_town_name, NULL); + osm_warning("node",item_bin_get_nodeid(ib),0,"Country conflict for %s is_in=%s, choosen country %d (%s)\n", label, is_in, result->countryid, result->names); + } + return result; } @@ -1910,9 +1948,9 @@ struct boundary *b=l->data; if (b->country) { if (match && match->country->countryid!=b->country->countryid) { - osm_warning("node",item_bin_get_nodeid(ib),0,"node (0x%x,0x%x) conflict country ", c->x, c->y); - osm_warning("relation",boundary_relid(match),1,"country %d vs ",match->country->countryid); - osm_warning("relation",boundary_relid(b),1,"country %d\n",b->country->countryid); + osm_warning("node",item_bin_get_nodeid(ib),0,"node (0x%x,0x%x) country conflict: ", c->x, c->y); + osm_warning("relation",boundary_relid(match),1,"replacing country %d (%s) with ",match->country->countryid, match->country->names); + osm_warning("relation",boundary_relid(b),1,"country %d (%s)\n",b->country->countryid, b->country->names); } match=b; } @@ -2027,10 +2065,13 @@ struct attr attrs[11]; FILE *towns_poly; - profile(0,NULL); + processed_nodes=processed_nodes_out=processed_ways=processed_relations=processed_tiles=0; + bytes_read=0; + sig_alrm(0); + bl=process_boundaries(boundaries, ways); - profile(1,"processed boundraries\n"); + fprintf(stderr, "Processed boundaries\n"); town_hash=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); while ((ib=read_item(in))) { @@ -2042,13 +2083,15 @@ } fseek(in, 0, SEEK_SET); - profile(1, "Finished town table rebuild\n"); + fprintf(stderr, "Finished town table rebuild\n"); while ((ib=read_item(in))) { struct coord *c=(struct coord *)(ib+1); struct country_table *result=NULL; char *is_in=item_bin_get_attr(ib, attr_osm_is_in, NULL); int i; + + processed_nodes++; memset(attrs, 0, sizeof(attrs)); result=osm_process_town_by_boundary(bl, ib, c, attrs); @@ -2057,7 +2100,7 @@ else if (item_is_district(*ib)) // just for the town name osm_process_town_by_is_in(ib, is_in, attrs, town_hash); - // treat a district like a town, if we could not find the town it blongs to + // treat a district like a town, if we could not find the town it belongs to if (!item_bin_get_attr(ib, attr_town_name, NULL) && attrs[10].type != attr_town_name) { char *district_name = item_bin_get_attr(ib, attr_district_name, NULL); @@ -2110,7 +2153,10 @@ g_hash_table_destroy(town_hash); free_boundaries(bl); - profile(0, "Finished processing towns\n"); + sig_alrm(0); + sig_alrm_end(); + + fprintf(stderr, "Finished processing towns\n"); } void @@ -2592,7 +2638,7 @@ GList *l=tr; while (l) { struct turn_restriction *t=l->data; - struct coord *c[4]; + struct coord *c[4]={NULL,NULL,NULL,NULL}; struct item_bin *ib=tmp_item_bin; if (!t->c_count[0]) { @@ -2931,6 +2977,23 @@ } static void +write_item_way_subsection_index(FILE *out, FILE *out_index, FILE *out_graph, struct item_bin *orig, long long *last_id) +{ + osmid idx[2]; + idx[0]=item_bin_get_wayid(orig); + idx[1]=ftello(out); + if (way_hash) { + if (!(g_hash_table_lookup_extended(way_hash, (gpointer)(long)idx[0], NULL, NULL))) + g_hash_table_insert(way_hash, (gpointer)(long)idx[0], (gpointer)(long)idx[1]); + } else { + if (!last_id || *last_id != idx[0]) + dbg_assert(fwrite(idx, sizeof(idx), 1, out_index)==1); + if (last_id) + *last_id=idx[0]; + } +} + +static void write_item_way_subsection(FILE *out, FILE *out_index, FILE *out_graph, struct item_bin *orig, int first, int last, long long *last_id) { struct item_bin new; @@ -2941,27 +3004,14 @@ new.type=orig->type; new.clen=(last-first+1)*2; new.len=new.clen+attr_len+2; - if (out_index) { - osmid idx[2]; - idx[0]=item_bin_get_wayid(orig); - idx[1]=ftello(out); - if (way_hash) { - if (!(g_hash_table_lookup_extended(way_hash, (gpointer)(long)idx[0], NULL, NULL))) - g_hash_table_insert(way_hash, (gpointer)(long)idx[0], (gpointer)(long)idx[1]); - } else { - if (!last_id || *last_id != idx[0]) - fwrite(idx, sizeof(idx), 1, out_index); - if (last_id) - *last_id=idx[0]; - } - - } + if (out_index) + write_item_way_subsection_index(out, out_index, out_graph, orig, last_id); #if 0 fprintf(stderr,"first %d last %d type 0x%x len %d clen %d attr_len %d\n", first, last, new.type, new.len, new.clen, attr_len); #endif - fwrite(&new, sizeof(new), 1, out); - fwrite(c+first, new.clen*4, 1, out); - fwrite(attr, attr_len*4, 1, out); + dbg_assert(fwrite(&new, sizeof(new), 1, out)==1); + dbg_assert(fwrite(c+first, new.clen*4, 1, out)==1); + dbg_assert(fwrite(attr, attr_len*4, 1, out)==1); #if 0 fwrite(&new, sizeof(new), 1, out_graph); fwrite(c+first, new.clen*4, 1, out_graph); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/osm_o5m.c navit-0.5.0+dfsg.1/navit/maptool/osm_o5m.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/osm_o5m.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/osm_o5m.c 2016-01-02 22:29:50.000000000 +0000 @@ -8,7 +8,7 @@ static char *types[]={"node","way","relation"}; struct o5m { - unsigned char buffer[65536]; + unsigned char buffer[65536*2]; int buffer_size; unsigned char *buffer_start; unsigned char *buffer_end; @@ -208,7 +208,7 @@ return 0; } if (buffer_end(&o, len)) { - fprintf(stderr,"unexpected eof or buffer too small\n"); + fprintf(stderr,"unexpected eof or buffer too small, item type %d, item size %d\n", c, len); return 0; } end=o.buffer_start+len; @@ -335,7 +335,17 @@ break; default: fprintf(stderr,"Unknown tag 0x%x\n",c); - return 0; + /* Fall through */ + case 0xdc: /* File timestamp: silently ignore it */ + len=get_uval(&o.buffer_start); + if (o.buffer_start > o.buffer_end) { + return 0; + } + if (buffer_end(&o, len)) { + return 0; + } + o.buffer_start+=len; + break; } } return 0; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/tile.c navit-0.5.0+dfsg.1/navit/maptool/tile.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/tile.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/tile.c 2016-01-02 22:29:50.000000000 +0000 @@ -336,8 +336,8 @@ } if (reference) { int offset=th->total_size_used/4; - fwrite(&th->zipnum, sizeof(th->zipnum), 1, reference); - fwrite(&offset, sizeof(th->total_size_used), 1, reference); + dbg_assert(fwrite(&th->zipnum, sizeof(th->zipnum), 1, reference)==1); + dbg_assert(fwrite(&offset, sizeof(th->total_size_used), 1, reference)==1); } if (th->zip_data) memcpy(th->zip_data+th->total_size_used, ib, size); @@ -576,6 +576,7 @@ } len--; } + g_list_free(tiles_list); if (info->suffix[0] && info->write) { struct item_bin *item_bin=init_item(type_submap); item_bin_add_coord_rect(item_bin, &world_bbox); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/maptool/zip.c navit-0.5.0+dfsg.1/navit/maptool/zip.c --- navit-0.5.0~svn5900+dfsg.1/navit/maptool/zip.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/maptool/zip.c 2016-01-02 22:29:50.000000000 +0000 @@ -20,6 +20,7 @@ #include #include #include +#include "debug.h" #include "maptool.h" #include "config.h" #include "zipfile.h" @@ -261,16 +262,16 @@ zip_info->offset+=sizeof(mac); } #endif - fwrite(&cd, sizeof(cd), 1, zip_info->dir); - fwrite(filename, filelen, 1, zip_info->dir); + dbg_assert(fwrite(&cd, sizeof(cd), 1, zip_info->dir)==1); + dbg_assert(fwrite(filename, filelen, 1, zip_info->dir)==1); zip_info->dir_size+=sizeof(cd)+filelen; if (zip_info->zip64) { - fwrite(&cd_ext, sizeof(cd_ext), 1, zip_info->dir); + dbg_assert(fwrite(&cd_ext, sizeof(cd_ext), 1, zip_info->dir)==1); zip_info->dir_size+=sizeof(cd_ext); } #ifdef HAVE_LIBCRYPTO if (zip_info->passwd) { - fwrite(&enc, sizeof(enc), 1, zip_info->dir); + dbg_assert(fwrite(&enc, sizeof(enc), 1, zip_info->dir)==1); zip_info->dir_size+=sizeof(enc); } #endif @@ -428,12 +429,25 @@ return 0; } -void +int zip_open(struct zip_info *info, char *out, char *dir, char *index) { info->res2=fopen(out,"wb+"); + if(!info->res2) { + fprintf(stderr,"Could not open output zip file %s\n", out); + return 0; + } info->dir=fopen(dir,"wb+"); + if(!info->dir) { + fprintf(stderr,"Could not open zip directory %s\n", dir); + return 0; + } info->index=fopen(index,"wb+"); + if(!info->index) { + fprintf(stderr,"Could not open index %s\n", index); + return 0; + } + return 1; } FILE * diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/navigation.c navit-0.5.0+dfsg.1/navit/navigation.c --- navit-0.5.0~svn5900+dfsg.1/navit/navigation.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/navigation.c 2016-01-02 22:29:50.000000000 +0000 @@ -1,6 +1,6 @@ /** * Navit, a modular navigation system. - * Copyright (C) 2005-2008 Navit Team + * Copyright (C) 2005-2015 Navit Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -35,32 +35,125 @@ #include "projection.h" #include "map.h" #include "navit.h" +#include "event.h" #include "callback.h" #include "speech.h" #include "vehicleprofile.h" #include "plugin.h" #include "navit_nls.h" #include "util.h" +#include "linguistics.h" /* #define DEBUG */ static int roundabout_extra_length=50; +/* TODO: find out if this is being used elsewhere and, if so, move this definition somewhere more generic */ +static int invalid_angle = 361; + +/** Minimum absolute delta for a turn. + * Maneuvers whose absolute delta is less than this will be considered straight */ +static int min_turn_limit = 25; + +/* FIXME: revisit these limits. IMHO (mvglasow): + * + * 0 degrees = perfect straight road + * 90 degrees = perfect turn + * 180 degrees = perfect U turn + * + * Then, by interpolation: + * 45 degrees = perfect "light turn" + * 135 degrees = perfect "sharp turn" + * + * This also agrees with the angles depicted in the maneuver icons. + * + * Thresholds should be roughly halfway between them. + * 25 degrees for min_turn_limit is probably OK (would be 22.5 by the above definition), + * but maybe the rest should be somewhat closer to 67.5-117.5-157.5 instead of 45-105-165. + * + * robotaxi: + * suggested limits derived from 'simple turn rules' in bugfix/enhancement #1095: + * 25-45-110-165. + * taken over from here: 25 (straight limit) and 165 (u-turn-limit used for very strong turn) + */ + +/** Minimum absolute delta for a turn of "normal" strength (which is always just announced as "turn left/right" even when strength is required). + * Maneuvers whose absolute delta is less than this will be announced as "turn easily left/right" when strength is required. */ +static int turn_2_limit = 45; + +/** Minimum absolute delta for a sharp turn. + * Maneuvers whose absolute delta is equal to or greater than this will be announced as "turn sharply left/right" when strength is required. */ +static int sharp_turn_limit = 110; + +/** Minimum absolute delta for a U turn. + * Maneuvers whose absolute delta is less than this (but at least {@code min_turn_limit}) will always be announced as turns. + * Note that, depending on other conditions, even maneuvers whose delta exceeds the threshold may still be announced as (sharp) turns. */ +static int u_turn_limit = 165; + +/** Enum that defines the different states in announcing a turn. + * These states are dependent on the current distance to the turn; + * the distances are configured in navit.xml for every type of highway. */ +enum announcement_level { + level_connect = -2, + level_error = -1, + level_now = 0, + level_meters = 1, + level_soon = 2, + level_follow = 3 +}; + +enum gender {unknown, masculine, feminine, neuter}; struct suffix { char *fullname; char *abbrev; - int sex; + int gender; } suffixes[]= { - {"weg",NULL,1}, - {"platz","pl.",1}, - {"ring",NULL,1}, - {"allee",NULL,2}, - {"gasse",NULL,2}, - {"straße","str.",2}, - {"strasse",NULL,2}, + /* DE */ + {"weg", NULL, masculine}, +/* {"platz", "pl.", masculine}, collides with Lithuanian "plentas" (which is more frequent) */ + {"platz", NULL, masculine}, + {"ring", NULL, masculine}, + {"bogen", NULL, masculine}, + {"allee", NULL, feminine}, + {"gasse", NULL, feminine}, + {"straße", "str.", feminine}, + + /* EN */ + {"street", NULL, masculine}, + {"drive", NULL, masculine}, + + /* FR */ + {"boulevard", NULL, masculine}, + {"chemin", NULL, neuter}, + {"rue", NULL, feminine}, + + /* LT, as per http://wiki.openstreetmap.org/wiki/WikiProject_Lithuania */ + {"gatvė", "g.", feminine}, + {"plentas", "pl.", masculine}, + {"prospektas", "pr.", masculine}, + {"alėja", "al.", feminine}, + {"skersgatvis", "skg.", masculine}, + {"aikštė", "a.", feminine}, + + /* NL */ + {"straat", NULL, neuter}, +/* {"weg", NULL, neuter}, doubles-up with German */ + {"baan", NULL, neuter}, + {"laan", NULL, neuter}, + {"wegel", NULL, neuter}, + }; + +enum nav_status_int { + status_none = 0, + status_busy = 1, + status_has_ritem = 2, + status_has_sitem = 4 +}; + + struct navigation { NAVIT_OBJECT struct route *route; @@ -87,29 +180,178 @@ int curr_delay; int turn_around_count; int flags; + struct map_rect *route_mr; /**< Map rect on the route map, used for maneuver generation */ + enum nav_status_int status_int; /**< Internal status information used during maneuver generation */ + struct callback *idle_cb; /**< Idle callback to process the route map */ + struct event_idle *idle_ev; /**< The pointer to the idle event */ + int nav_status; /**< Status of the navigation engine */ }; +/** @brief Set of simplified distance values that are easy to be pronounced. +* Used for the 'vocabulary_distances' configuration. +*/ int distances[]={1,2,3,4,5,10,25,50,75,100,150,200,250,300,400,500,750,-1}; +/* Allowed values for navigation_maneuver.merge_or_exit + * The numeric values are chosen in such a way that they can be interpreted as flags: + * 1=merge, 2=exit, 4=interchange, 8=right, 16=left + * Identifiers were chosen over flags to enforce certain rules + * (merge/exit/interchange and left/right are mutually exclusive, left/right requires merge or exit). */ + +/** Not merging into or exiting from a motorway_like road */ +#define mex_none 0 + +/** Merging into a motorway-like road, direction undefined. + * This value is not intended to be set directly but can be used for + * comparisons, e.g. {@code merge_or_exit & mex_merge}. */ +#define mex_merge 1 + +/** Exiting from a motorway-like road, direction undefined. + * This should only be used for ramps leading to a non-motorway road. + * For interchanges, use {@code mex_interchange} instead. + * This value is not intended to be set directly but can be used for + * comparisons, e.g. {@code merge_or_exit & mex_exit}. */ +#define mex_exit 2 + +/** Motorway-like road splits in two. + * This should be used for all cases in which ramps lead to another motorway-like road. */ +#define mex_interchange 4 + +/** Merging into a motorway-like road to the right (coming from the left) */ +#define mex_merge_right 9 + +/** Exiting from a motorway-like road to the right. + * See {@code mex_exit} for usage. */ +#define mex_exit_right 10 + +/** Merging into a motorway-like road to the left (coming from the right) */ +#define mex_merge_left 17 + +/** Exiting from a motorway-like road to the left. + * See {@code mex_exit} for usage. */ +#define mex_exit_left 18 + +/** + * @brief Holds information about a navigation maneuver. + * + * This structure is populated when a navigation maneuver is first analyzed. Its members contain all information + * needed to decide whether or not to announce the maneuver, what type of maneuver it is and the information that + * was used to determine the former two. + */ +struct navigation_maneuver { + enum item_type type; /**< The type of maneuver to perform. Any {@code nav_*} item is permitted here, with one exception: + merge or exit maneuvers are indicated by the {@code merge_or_exit} member. The {@code item_type} + for such maneuvers should be a turn instruction in cases where the maneuver is ambiguous, or + {@code nav_none} for cases in which we would expect the driver to perform this maneuver even + without being instructed to do so. **/ + int delta; /**< Bearing difference (the angle the driver has to steer) for the maneuver */ + int merge_or_exit; /**< Whether we are merging into or exiting from a motorway_like road or we are at an interchange */ + int is_complex_t_junction; /**< Whether we are coming from the "stem" of a T junction whose "bar" is a dual-carriageway road and + crossing the opposite lane of the "bar" first (i.e. turning left in countries that drive on the + right, or turning right in countries that drive on the left). For these maneuvers + {@code num_options} is 1 (which means we normally wouldn't announce the maneuver) but drivers + would expect an announcement in such cases. */ + int num_options; /**< Number of permitted candidate ways, i.e. ways which we may enter (based on access flags of the + way but without considering turn restrictions). Permitted candidate ways include the route. */ + int num_new_motorways; /**< Number of permitted candidate ways that are motorway-like. + Numbers greater then one should be interpreted as "more than one", not as a precise number. */ + int num_other_ways; /**< Number of permitted candidate ways that are neither ramps nor motorway-like */ + int old_cat; /**< Maneuver category of the way leading to the maneuver */ + int new_cat; /**< Maneuver category of the selected way after the maneuver */ + int max_cat; /**< Highest maneuver category of any permitted candidate way other than the route */ + int num_similar_ways; /**< Number of candidate ways (including the route) that have a {@code maneuver_category()} similar + to {@code old_cat}. See {@code maneuver_required2()} for definition of "similar". */ + int left; /**< Minimum bearing delta of any candidate way left of the route, -180 for none */ + int right; /**< Minimum bearing delta of any candidate way right of the route, 180 for none */ + int is_unambiguous; /**< Whether the maneuver is unambiguous. A maneuver is unambiguous if, despite + multiple candidate way being available, we can reasonable expect the driver to + continue on the route without being told to do so. This is typically the case when + the route stays on the main road and goes straight, while all other candidate ways + are minor roads and involve a significant turn. */ + int is_same_street; /**< Whether the street keeps its name after the maneuver. */ +}; + +/** + * @brief Holds information about a command for a navigation maneuver. + * + * An instance of this structure is generated for each navigation maneuver that is to be announced. + */ struct navigation_command { - struct navigation_itm *itm; - struct navigation_command *next; - struct navigation_command *prev; - int delta; - int roundabout_delta; + struct navigation_itm *itm; /**< The navigation item following the maneuver */ + struct navigation_command *next; /**< next command in the list */ + struct navigation_command *prev; /**< previous command in the list */ + int delta; /**< bearing change at maneuver */ + int roundabout_delta; /**< if we are leaving a roundabout, effective bearing change (between entry and exit) with some corrections applied */ + int length; /**< if the maneuver is a roundabout, distance between entry and exit (plus penalty), else 0 */ + struct navigation_maneuver *maneuver; /**< Details on the maneuver to perform */ +}; + +/* + * @brief Holds a way that one could possibly drive from a navigation item + * + */ +struct navigation_way { + struct navigation_way *next; /**< Pointer to a linked-list of all navigation_ways from this navigation item */ + short dir; /**< The direction -1 or 1 of the way */ + short angle2; /**< The bearing at the start or the way (0 = north, 90 =east etc.) */ + int flags; /**< The flags of the way */ + struct item item; /**< The item of the way */ + char *name; /**< The street name ({@code street_name} attribute) */ + char *name_systematic; /**< The road number ({@code street_name_systematic} attribute, OSM: {@code ref}) */ + char *exit_ref; /**< Exit_ref if found on the first node of the way*/ + char *exit_label; /**< Exit_label if found on the first node of the way*/ + struct street_destination *destination; /**< The destination this way leads to (OSM: {@code destination}) */ +}; + +struct navigation_itm { + struct navigation_way way; + int angle_end; /**< The bearing at the end of {@code way} */ + struct coord start,end; + int time; int length; + int speed; + int dest_time; + int dest_length; + int told; /**< Indicates if this item's announcement has been told earlier and should not be told again*/ + int streetname_told; /**< Indicates if this item's streetname has been told in speech navigation*/ + int dest_count; + struct navigation_itm *next; + struct navigation_itm *prev; +}; + + +/** + * @brief A linked list containing the destination of the road + * + * Holds the destination info from the road, that is the place + * you drive to if you keep following the road as found on + * traffic sign's (ex. Paris, Senlis ...) + */ +struct street_destination { + struct street_destination *next; + char *destination; + int rank; }; + + static void navigation_flush(struct navigation *this_); /** * @brief Calculates the delta between two angles + * + * The return value is to be interpreted as follows: + *

    + *
  • -179..-1: {@code angle2} is left of {@code angle1}
  • + *
  • 0: Both angles are identical
  • + *
  • 1..179: {@code angle2} is right of {@code angle1}
  • + *
  • 180: {@code angle1} is opposite of {@code angle2}
  • + *
* @param angle1 The first angle * @param angle2 The second angle - * @return The difference between the angles: -179..-1=angle2 is left of angle1,0=same,1..179=angle2 is right of angle1,180=angle1 is opposite of angle2 - */ - + * @return The difference between the angles, see description + */ static int angle_delta(int angle1, int angle2) { @@ -139,12 +381,343 @@ return ((angle+180)%360); } + +/** + * @brief Checks if two navigation items are on the same street + * + * This function checks if two navigation items are on the same street. It returns + * true if either their name or their "systematic name" (e.g. "A6" or "B256") are the + * same. + * + * @param old_name The name of the first item to be checked + * @param old_name_systematic The systematic name of the first item to be checked + * @param new_name The name of the second item to be checked + * @param new_name_systematic The systematic name of the second item to be checked + * @return True if both old and new are on the same street + */ +static int +is_same_street2(char *old_name, char *old_name_systematic, char *new_name, char *new_name_systematic) +{ + if (old_name && new_name && !strcmp(old_name, new_name)) { + dbg(lvl_debug,"is_same_street: '%s' '%s' vs '%s' '%s' yes (1.)\n", old_name_systematic, new_name_systematic, old_name, new_name); + return 1; + } + if (old_name_systematic && new_name_systematic && !strcmp(old_name_systematic, new_name_systematic)) { + dbg(lvl_debug,"is_same_street: '%s' '%s' vs '%s' '%s' yes (2.)\n", old_name_systematic, new_name_systematic, old_name, new_name); + return 1; + } + dbg(lvl_debug,"is_same_street: '%s' '%s' vs '%s' '%s' no\n", old_name_systematic, new_name_systematic, old_name, new_name); + return 0; +} + + +/** + * @brief Checks if two ways are identical + * + * This function checks if two {@code navigation_way}s are likely to represent the same way on the ground. + * It does this by comparing the {@code name}, {@code name_systematic}, {@code angle2} and {@code item.type} + * members of both ways and returning {@code true} if all of them match. + * + * Names are compared by calling {@code is_same_street()}. + * + * ID attributes (such as OSM IDs) are not used for comparison, which allows the function to handle even + * overlapping maps for the same area created from different versions of OSM data, in which IDs may have + * changed as a result of ways being merged or split. As long as the above attributes match, the ways will + * still be considered equal. + * + * Note that way geometry (other than {@code angle2}) is not compared. If necessary, the caller needs to + * make geometry-related comparisons separately. + */ +static int +is_same_way(struct navigation_way * w1, struct navigation_way * w2) { + if (!is_same_street2(w1->name, w1->name_systematic, w2->name, w2->name_systematic)) + return 0; + if ((w1->angle2 == w2->angle2) && (w1->item.type == w2->item.type)) + return 1; + else + return 0; +} + + +/** + * @brief Frees a list as constructed with split_string_to_list() + * + * @param list the list to be freed + */ +static void +free_list(struct street_destination *list) { + + if (list){ + struct street_destination *clist; + while (list){ + clist = list->next; + g_free(list->destination); + g_free(list); + list = clist; + } + list = NULL; + } +} + +/** + * @brief Splits a string into a list, and sets their initial rank to 0 + * + * The separator to split on can be any character. Preceding whitespace + * characters will be removed. + * + * @param way a navigation_way holding the list to be filled up + * @param raw_string a string to split + * @param sep a char to be used as separator to split the raw_string + * @return the number of entries in the list + */ +static int +split_string_to_list(struct navigation_way *way, char* raw_string, char sep) +{ + + struct street_destination *new_street_destination = NULL; + struct street_destination *next_street_destination_remember = NULL; + char *pos1 = raw_string; + char *pos2; + int count = 0; + + free_list(way->destination); /*in case this is a retry with a different separator.*/ + dbg(lvl_debug,"raw_string=%s split with %c\n",raw_string, sep); + if (strlen(raw_string)>0) + { + count = 1; + while (pos1) + { + new_street_destination = g_new(struct street_destination, 1); + new_street_destination->next = next_street_destination_remember; + next_street_destination_remember = new_street_destination ; + if ((pos2 = strrchr(pos1, sep)) != NULL) + { + *pos2 = '\0' ; + while (isspace(pos2[1])) + pos2++; + new_street_destination->destination = g_strdup(pos2+1); + new_street_destination->rank=0; + dbg(lvl_debug,"splitted_off_string=%s\n",new_street_destination->destination); + count++; + } + else + { + while (isspace(pos1[0])) + pos1++; + new_street_destination->destination = g_strdup(pos1); + new_street_destination->rank=0; + pos1 = NULL; + dbg(lvl_debug,"head_of_string=%s\n",new_street_destination->destination); + } + way->destination = next_street_destination_remember; + } + } + return count; +} + + + +/** + * @brief Returns the first destination with a rank higher than zero. + * + * If all items in the list have a zero rank, the first one will be returned. + */ +static struct street_destination * +get_bestranked(struct street_destination *street_destination) +{ + struct street_destination *selected_street_destination; + + selected_street_destination = street_destination; + while (selected_street_destination) + { + if (selected_street_destination->rank > 0) + return selected_street_destination; + selected_street_destination = selected_street_destination->next; + } + return street_destination; +} + +/** + * @brief Assigns a high rank to a matching destination in the next + * command having destination info, and reset existing ranks to zero + * + * @param street destination to be given a high rank + * @param command + * @return 1 if successful, zero otherwise + */ +static int +set_highrank(struct street_destination *street_destination, struct navigation_command *command) +{ + struct street_destination *future_street_destination = NULL; + struct navigation_command *next_command; + char* destination_string; + int success = 0; + destination_string = street_destination->destination; + + if (command->next) + { + next_command=command->next; + while (next_command) + { + if (next_command->itm->way.destination) + break; + if (!next_command->next) + break; + next_command=next_command->next; + } + if (next_command->itm->way.destination) + future_street_destination = next_command->itm->way.destination; + else future_street_destination = NULL; + } + + while (future_street_destination) + { + if ((strcmp(destination_string,future_street_destination->destination)==0)) + { + future_street_destination->rank=99; + success =1; + } + else + future_street_destination->rank=0; + future_street_destination=future_street_destination->next; + } + return success; +} + + +/** @brief Selects the destination-names for the next announcement from the + * destination-names that are registered in the following command items. + * + * The aim of this function is to find the destination-name entry that has the most hits in the following + * command items so that the destination name has a relevance over several announcements. If there is no 'winner' + * the entry is selected that is at top of the destination. + */ +static char* +select_announced_destinations(struct navigation_command *current_command) +{ + struct street_destination *current_destination = NULL; /* the list pointer of the destination_names of the current command. */ + struct street_destination *search_destination = NULL; /* the list pointer of the destination_names of the respective search_command. */ + + struct navigation_command *search_command = NULL; + + #define MAX_LOOPS 10 /* limits the number of next command items to investigate over */ + #define MAX_DESTINATIONS 10 /* limits the number of destination entries to investigate */ + int destination_count[MAX_DESTINATIONS]; /* contains the hits of identical destinations over all */ + /* investigated command items - a 'high score' of destination names */ + int destination_index = 0; + int search_command_counter = 0; + int i, max_hits=0, max_hit_index; + + /* search over every following command for seeking identical destination_names */ + if (current_command->itm->way.destination) + { /* can we investigate over the following commands? */ + if (current_command->next) + { /* loop over every destination of the current command, as far as there are not more than MAX_DESTINATIONS entries. */ + destination_index = 0; /* start with the first destination */ + current_destination = current_command->itm->way.destination; + while (current_destination && (destination_index < MAX_DESTINATIONS)) + { /* initialize the search command */ + search_command = current_command->next; + search_command_counter = 0; + destination_count[destination_index]=0; + while (search_command && (search_command_counter < MAX_LOOPS)) + { + if (search_command->itm && search_command->itm->way.destination) + { /* has the search command any destinations ? */ + search_destination = search_command->itm->way.destination; + while (search_destination) + { /* Search this name in the destination list of the current command. */ + if (0 == strcmp(current_destination->destination, search_destination->destination)) + { /* enter the destination_name in the investigation list*/ + destination_count[destination_index]++; + search_destination = NULL; /* break condition */ + } + else search_destination = search_destination->next; + } + } + search_command_counter++; + search_command = search_command->next; + } + destination_index++; + current_destination = current_destination->next; + } + + /* search for the best candidate */ + max_hits = 0; + max_hit_index = 0; + for (i = 0; i < destination_index; i++) + { + if (destination_count[i] > max_hits) + { + max_hits = destination_count[i]; + max_hit_index = i; + } + } + /* jump to the corresponding destination_name */ + current_destination = current_command->itm->way.destination; + for (i = 0; i < max_hit_index; i++) + { + current_destination = current_destination->next; + } + + dbg(lvl_debug,"%s, max hits =%i\n",current_destination->destination,max_hits); + set_highrank(current_destination,current_command); + } + } + + /* return the best candidate, if there is any.*/ + if (max_hits) + return g_strdup(current_destination->destination); + return g_strdup(current_destination ? get_bestranked(current_destination)->destination:NULL); +} + + +/** + * @brief Converts navigation status to human-readable text. + * + * @param The status. This must be one of the values for {@code enum nav_status}. + * + * @return A string which corresponds to the constant value. The caller is responsible for calling + * {@code g_free()} when the result is no longer needed. + */ +char *nav_status_to_text(int status) { + char *ret; + + switch (status) { + case status_invalid: + ret = g_strdup("status_invalid"); + break; + case status_no_route: + ret = g_strdup("status_no_route"); + break; + case status_no_destination: + ret = g_strdup("status_no_destination"); + break; + case status_position_wait: + ret = g_strdup("status_position_wait"); + break; + case status_calculating: + ret = g_strdup("status_calculating"); + break; + case status_recalculating: + ret = g_strdup("status_recalculating"); + break; + case status_routing: + ret = g_strdup("status_routing"); + break; + default: + ret = g_strdup_printf("status_unknown_%d)", status); + } + return ret; +} + + int navigation_get_attr(struct navigation *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter) { struct map_rect *mr; struct item *item; - dbg(1,"enter %s\n", attr_to_name(type)); + dbg(lvl_debug,"enter %s\n", attr_to_name(type)); switch (type) { case attr_map: attr->u.map=this_->map; @@ -154,12 +727,14 @@ case attr_navigation_speech: case attr_street_name: case attr_street_name_systematic: + case attr_street_destination: + mr=map_rect_new(this_->map, NULL); while ((item=map_rect_get_item(mr))) { if (item->type != type_nav_none && item->type != type_nav_position) { - if (type == attr_item_type) + if (type == attr_item_type) attr->u.item_type=item->type; - else { + else { if (!item_attr_get(item, type, attr)) item=NULL; } @@ -173,6 +748,9 @@ case attr_turn_around_count: attr->u.num=this_->turn_around_count; break; + case attr_nav_status: + attr->u.num=this_->nav_status; + break; default: return navit_object_get_attr((struct navit_object *)this_, type, attr, iter); } @@ -197,6 +775,9 @@ case attr_speech: this_->speech=attr->u.speech; break; + case attr_nav_status: + this_->nav_status = attr->u.num; + break; default: break; } @@ -218,6 +799,7 @@ ret->turn_around_limit=3; ret->navit=parent->u.navit; ret->tell_street_name=1; + ret->route_mr = NULL; for (j = 0 ; j <= route_item_last-route_item_first ; j++) { for (i = 0 ; i < 3 ; i++) { @@ -234,7 +816,7 @@ if ((attr=attr_search(attrs, NULL, attr_flags))) { ret->flags = attr->u.num; } - return ret; + return ret; } int @@ -242,88 +824,71 @@ { int i; if (type < route_item_first || type > route_item_last) { - dbg(0,"street type %d out of range [%d,%d]", type, route_item_first, route_item_last); + dbg(lvl_debug,"street type %d out of range [%d,%d]", type, route_item_first, route_item_last); return 0; } - for (i = 0 ; i < 3 ; i++) + for (i = 0 ; i < 3 ; i++) this_->announce[type-route_item_first][i]=level[i]; return 1; } -static int +static enum announcement_level navigation_get_announce_level(struct navigation *this_, enum item_type type, int dist) { - int i; + enum announcement_level level; if (type < route_item_first || type > route_item_last) - return -1; - for (i = 0 ; i < 3 ; i++) { - if (dist <= this_->announce[type-route_item_first][i]) - return i; + { + dbg(lvl_error," item outside routable range\n"); + return level_error; + } + for (level = level_now ; level < level_follow ; level++) { + if (dist <= this_->announce[type-route_item_first][level]) + return level; } - return i; + return level; } - -/** - * @brief Holds a way that one could possibly drive from a navigation item - */ -struct navigation_way { - struct navigation_way *next; /**< Pointer to a linked-list of all navigation_ways from this navigation item */ - short dir; /**< The direction -1 or 1 of the way */ - short angle2; /**< The angle one has to steer to drive from the old item to this street */ - int flags; /**< The flags of the way */ - struct item item; /**< The item of the way */ - char *name1; - char *name2; -}; - -struct navigation_itm { - struct navigation_way way; - int angle_end; - struct coord start,end; - int time; - int length; - int speed; - int dest_time; - int dest_length; - int told; /**< Indicates if this item's announcement has been told earlier and should not be told again*/ - int streetname_told; /**< Indicates if this item's streetname has been told in speech navigation*/ - int dest_count; - struct navigation_itm *next; - struct navigation_itm *prev; -}; - static int is_way_allowed(struct navigation *nav, struct navigation_way *way, int mode); -static int +static enum announcement_level navigation_get_announce_level_cmd(struct navigation *this_, struct navigation_itm *itm, struct navigation_command *cmd, int distance) { - int level2,level=navigation_get_announce_level(this_, itm->way.item.type, distance); + enum announcement_level level2,level=navigation_get_announce_level(this_, itm->way.item.type, distance); if (this_->cmd_first->itm->prev) { level2=navigation_get_announce_level(this_, cmd->itm->prev->way.item.type, distance); - if (level2 > level) - level=level2; + if (level2 > level) { + level = level2; + } } return level; } /* 0=N,90=E */ +/** + * @brief Gets the bearing from one point to another + * + * @param c1 The first coordinate + * @param c2 The second coordinate + * @param dir The direction: if it is -1, the bearing from c2 to c1 is returned, else the bearing from c1 to c2 + * + * @return The bearing in degrees, {@code 0 <= result < 360}. + */ static int road_angle(struct coord *c1, struct coord *c2, int dir) { int ret=transform_get_angle_delta(c1, c2, dir); - dbg(1, "road_angle(0x%x,0x%x - 0x%x,0x%x)=%d\n", c1->x, c1->y, c2->x, c2->y, ret); + dbg(lvl_debug, "road_angle(0x%x,0x%x - 0x%x,0x%x)=%d\n", c1->x, c1->y, c2->x, c2->y, ret); return ret; } static const char -*get_count_str(int n) +*get_count_str(int n) { switch (n) { case 0: /* TRANSLATORS: the following counts refer to streets */ - return _("zeroth"); // Not sure if this exists, neither if it will ever be needed + return _("zeroth"); /* Not sure if this exists, neither if it will ever be needed */ case 1: return _("first"); case 2: @@ -336,18 +901,18 @@ return _("fifth"); case 6: return _("sixth"); - default: + default: return NULL; } } static const char -*get_exit_count_str(int n) +*get_exit_count_str(int n) { switch (n) { case 0: /* TRANSLATORS: the following counts refer to roundabout exits */ - return _("zeroth exit"); // Not sure if this exists, neither if it will ever be needed + return _("zeroth exit"); /* Not sure if this exists, neither if it will ever be needed */ case 1: return _("first exit"); case 2: @@ -360,10 +925,11 @@ return _("fifth exit"); case 6: return _("sixth exit"); - default: + default: return NULL; } } + static int round_distance(int dist) { @@ -395,174 +961,227 @@ return dist*10000; } +/** @brief Returns the last element of the simplified numbers containing a distance value. +* @return value with the highest distance. +*/ static int -round_for_vocabulary(int vocabulary, int dist, int factor) +distance_set_last() { - if (!(vocabulary & 256)) { - if (factor != 1) - dist=(dist+factor/2)/factor; - } else - factor=1; - if (!(vocabulary & 255)) { - int i=0,d=0,m=0; - while (distances[i] > 0) { - if (!i || abs(distances[i]-dist) <= d) { - d=abs(distances[i]-dist); - m=i; - } - if (distances[i] > dist) - break; + static int i=0; + if (i == 0) { + while (distances[i] > 0) i++; - } - dbg(0,"converted %d to %d with factor %d\n",dist,distances[m],factor); - dist=distances[m]; } - return dist*factor; + return distances[i-1]; } +/** @brief Restricts the distance value to a simple set of pronounceable numbers. +* @param dist The distance to be processed +* @return distance Simplified distance value +*/ static int -vocabulary_last(int vocabulary) +round_distance_reduced( int dist ) { - int i=0; - if (vocabulary == 65535) - return 1000; - while (distances[i] > 0) + int factor = 1; + if (dist > distance_set_last()) + { + dist=(dist+500)/1000; + factor = 1000; + } + + int i=0,d=0,m=0; + while (distances[i] > 0) { + if (!i || abs(distances[i]-dist) <= d) { + d=abs(distances[i]-dist); + m=i; + } + if (distances[i] > dist) + break; i++; - return distances[i-1]; + } + dbg(lvl_debug,"converted %d to %d with factor %d\n",dist,distances[m],factor); + return distances[m] * factor; + } + +/** @brief Generates the distance string. +* Considers the configuration of 'imperial' units and 'vocabulary_distances'. +* 'imperial' if set distinguishes the distance statement between miles and feet. Maximum distance in feet is 500. +* 'vocabulary_distances' if set constrains the distance values to a set of simple pronounceable numbers. +* +* @param nav The navigation object. +* @param dist Distance in meters. +* @param type The type of announcement precision. +* @param is_length 1 for length statement, 0 for distance statement. +* @return String with length/distance statement. +*/ static char * -get_distance(struct navigation *nav, int dist, enum attr_type type, int is_length) +get_distance_str(struct navigation *nav, int dist_meters, enum attr_type type, int is_length) { - int imperial=0,vocabulary=65535; + int imperial=0,vocabulary=1; /* default configuration */ + + /* Get configuration */ struct attr attr; - - if (type == attr_navigation_long) { - if (is_length) - return g_strdup_printf(_("%d m"), dist); - else - return g_strdup_printf(_("in %d m"), dist); - } if (navit_get_attr(nav->navit, attr_imperial, &attr, NULL)) imperial=attr.u.num; if (nav->speech && speech_get_attr(nav->speech, attr_vocabulary_distances, &attr, NULL)) vocabulary=attr.u.num; + /****************************/ + if (imperial) { - if (dist*FEET_PER_METER < vocabulary_last(vocabulary)) { - dist=round_for_vocabulary(vocabulary, dist*FEET_PER_METER, 1); + + int dist_feet = dist_meters * FEET_PER_METER; + + if (vocabulary > 0) + { + /* normal statement */ + if (type != attr_navigation_long_exact) + dist_feet = round_distance(dist_feet); + } + else + { + /* statement with reduced vocabularies */ + dist_feet = round_distance_reduced(dist_feet); + } + + /* check for statement in feet */ + if (dist_feet <= 500) + { if (is_length) - return g_strdup_printf(_("%d feet"), dist); + return g_strdup_printf(_("%d feet"), dist_feet); else - return g_strdup_printf(_("in %d feet"), dist); + return g_strdup_printf(_("in %d feet"), dist_feet); } + + int dist_miles = (double) dist_meters / (double)METERS_PER_MILE + 0.5; + + if (vocabulary == 0) + { + /* statement with reduced vocabularies */ + dist_miles = round_distance_reduced(dist_miles); + } + + if ((dist_meters < METERS_PER_MILE) && (vocabulary > 0)) + { + /* values smaller than one need extra treatment for one decimal place. For reduced vocabulary it shall remain 'one'. */ + int rem = (((double)dist_meters / (double)METERS_PER_MILE) + 0.05) * 10.0; + dist_miles= 0; + if (is_length) + return g_strdup_printf(_("%d.%d miles"), dist_miles, rem); + else + return g_strdup_printf(_("in %d.%d miles"), dist_miles, rem); + } + + if (is_length) + return g_strdup_printf(navit_nls_ngettext("one mile","%d miles", dist_miles), dist_miles); + else + return g_strdup_printf(navit_nls_ngettext("in one mile","in %d miles", dist_miles), dist_miles); + } else { - if (dist < vocabulary_last(vocabulary)) { - dist=round_for_vocabulary(vocabulary, dist, 1); + + if (vocabulary > 0) + { + /* normal statement */ + if (type != attr_navigation_long_exact) + dist_meters = round_distance(dist_meters); + } + else + { + /* statement with reduced vocabularies */ + dist_meters = round_distance_reduced(dist_meters); + } + + if (dist_meters < 1000) + { if (is_length) - return g_strdup_printf(_("%d meters"), dist); + return g_strdup_printf(_("%d meters"), dist_meters); else - return g_strdup_printf(_("in %d meters"), dist); + return g_strdup_printf(_("in %d meters"), dist_meters); } - } - if (imperial) - dist=round_for_vocabulary(vocabulary, dist*FEET_PER_METER*1000/FEET_PER_MILE, 1000); - else - dist=round_for_vocabulary(vocabulary, dist, 1000); - if (dist < 5000) { - int rem=(dist/100)%10; - if (rem) { - if (imperial) { - if (is_length) - return g_strdup_printf(_("%d.%d miles"), dist/1000, rem); - else - return g_strdup_printf(_("in %d.%d miles"), dist/1000, rem); - } else { + if (dist_meters < 5000) { + /* Distances below 5 km shall be announced with one decimal place. */ + int rem=(dist_meters/100)%10; + if (rem) { if (is_length) - return g_strdup_printf(_("%d.%d kilometers"), dist/1000, rem); + return g_strdup_printf(_("%d.%d kilometers"), dist_meters/1000, rem); else - return g_strdup_printf(_("in %d.%d kilometers"), dist/1000, rem); + return g_strdup_printf(_("in %d.%d kilometers"), dist_meters/1000, rem); } } - } - if (imperial) { - if (is_length) - return g_strdup_printf(navit_nls_ngettext("one mile","%d miles", dist/1000), dist/1000); - else - return g_strdup_printf(navit_nls_ngettext("in one mile","in %d miles", dist/1000), dist/1000); - } else { - if (is_length) - return g_strdup_printf(navit_nls_ngettext("one kilometer","%d kilometers", dist/1000), dist/1000); + if (is_length) + return g_strdup_printf(navit_nls_ngettext("one kilometer","%d kilometers", dist_meters/1000), dist_meters/1000); else - return g_strdup_printf(navit_nls_ngettext("in one kilometer","in %d kilometers", dist/1000), dist/1000); + return g_strdup_printf(navit_nls_ngettext("in one kilometer","in %d kilometers", dist_meters/1000), dist_meters/1000); } } - /** - * @brief This calculates the angle with which an item starts or ends + * @brief Initializes a navigation_way * - * This function can be used to get the angle an item (from a route graph map) - * starts or ends with. Note that the angle will point towards the inner of - * the item. + * This function analyzes the underlying map item and sets the entry bearing, names and flags for the way. * - * This is meant to be used with items from a route graph map - * With other items this will probably not be optimal... + * Note that entry bearing is expressed as bearing towards the opposite end of the item. * - * @param w The way which should be calculated - */ + * Note that this function is not suitable for ways on the route (created in {@code navigation_itm_new}) + * as it may return incorrect coordinates for these ways. + * + * @param w The way to initialize. The {@code item}, {@code id_hi}, {@code id_lo} and {@code dir} + * members of this struct must be set prior to calling this function. + */ static void -calculate_angle(struct navigation_way *w) +navigation_way_init(struct navigation_way *w) { struct coord cbuf[2]; - struct item *ritem; // the "real" item + struct item *realitem; struct coord c; struct map_rect *mr; struct attr attr; - w->angle2=361; + w->angle2 = invalid_angle; mr = map_rect_new(w->item.map, NULL); if (!mr) return; - ritem = map_rect_get_item_byid(mr, w->item.id_hi, w->item.id_lo); - if (!ritem) { - dbg(1,"Item from segment not found on map!\n"); + realitem = map_rect_get_item_byid(mr, w->item.id_hi, w->item.id_lo); + if (!realitem) { + dbg(lvl_warning,"Item from segment not found on map!\n"); map_rect_destroy(mr); return; } - if (ritem->type < type_line || ritem->type >= type_area) { + if (realitem->type < type_line || realitem->type >= type_area) { map_rect_destroy(mr); return; } - if (item_attr_get(ritem, attr_flags, &attr)) + if (item_attr_get(realitem, attr_flags, &attr)) w->flags=attr.u.num; else w->flags=0; - if (item_attr_get(ritem, attr_street_name, &attr)) - w->name1=map_convert_string(ritem->map,attr.u.str); + if (item_attr_get(realitem, attr_street_name, &attr)) + w->name=map_convert_string(realitem->map,attr.u.str); else - w->name1=NULL; - if (item_attr_get(ritem, attr_street_name_systematic, &attr)) - w->name2=map_convert_string(ritem->map,attr.u.str); + w->name=NULL; + if (item_attr_get(realitem, attr_street_name_systematic, &attr)) + w->name_systematic=map_convert_string(realitem->map,attr.u.str); else - w->name2=NULL; - + w->name_systematic=NULL; + if (w->dir < 0) { - if (item_coord_get(ritem, cbuf, 2) != 2) { - dbg(1,"Using calculate_angle() with a less-than-two-coords-item?\n"); + if (item_coord_get(realitem, cbuf, 2) != 2) { + dbg(lvl_warning,"Using calculate_angle() with a less-than-two-coords-item?\n"); map_rect_destroy(mr); return; } - - while (item_coord_get(ritem, &c, 1)) { + + while (item_coord_get(realitem, &c, 1)) { cbuf[0] = cbuf[1]; cbuf[1] = c; } - + } else { - if (item_coord_get(ritem, cbuf, 2) != 2) { - dbg(1,"Using calculate_angle() with a less-than-two-coords-item?\n"); + if (item_coord_get(realitem, cbuf, 2) != 2) { + dbg(lvl_warning,"Using calculate_angle() with a less-than-two-coords-item?\n"); map_rect_destroy(mr); return; } @@ -576,38 +1195,110 @@ w->angle2=road_angle(&cbuf[1],&cbuf[0],0); } + /** - * @brief Returns the time (in seconds) one will drive between two navigation items + * @brief Returns the maximum delta between a reference bearing and any segment of a given way, up to a given distance from its start + * + * The return value is the maximum delta (in terms of absolute value), but the sign is preserved. If the maximum delta is encountered + * more than once but with different signs, {@code dir} controls which of the two values is returned: + *
    + *
  • +1: Return the first maximum encountered when following the direction of the route
  • + *
  • -1: Return the first maximum encountered when going against the direction of the route
  • + *
+ * + * {@code invalid_angle} will be returned if one of the following errors occurs: + *
    + *
  • The item is not found on the map
  • + *
  • The item is not of the correct type
  • + *
  • The item has fewer than 2 points
  • + *
  • {@code dist} is zero
  • + *
* - * This function returns the time needed to drive between two items, including both of them, - * in seconds. + * If {@code dist} exceeds the length of the way, the entire way is examined. * - * @param from The first item - * @param to The last item - * @return The travel time in seconds, or -1 on error + * @param pro The projection used by the map + * @param w The way to examine + * @param angle The reference bearing + * @param dist The distance from the start of the way at which to determine bearing + * @param dir Controls how to handle when the same delta is encountered multiple times but with different signs, + * permissible values are either -1 or +1 + * + * @return The delta, {@code -180 < delta <= 180}, or {@code invalid_angle} if an error occurred. */ static int -navigation_time(struct navigation_itm *from, struct navigation_itm *to) -{ - struct navigation_itm *cur; - int time; +navigation_way_get_max_delta(struct navigation_way *w, enum projection pro, int angle, double dist, int dir) { + double dist_left = dist; /* distance from last examined point */ + int ret = invalid_angle; + int tmp_delta; + int eff_dir = dir * w->dir; /* effective direction: +1 to examine section from start of way, -1 from end of way */ + struct coord cbuf[2]; + struct item *realitem; + struct coord c; + struct map_rect *mr; - time = 0; - cur = from; - while (cur) { - time += cur->time; + mr = map_rect_new(w->item.map, NULL); + if (!mr) + return ret; - if (cur == to) { - break; + realitem = map_rect_get_item_byid(mr, w->item.id_hi, w->item.id_lo); + if (!realitem) { + dbg(lvl_warning,"Item from segment not found on map!\n"); + map_rect_destroy(mr); + return ret; + } + + if (realitem->type < type_line || realitem->type >= type_area) { + map_rect_destroy(mr); + return ret; + } + + if (item_coord_get(realitem, &cbuf[1], 1) != 1) { + dbg(lvl_warning,"item has no coords\n"); + map_rect_destroy(mr); + return ret; + } + + if (eff_dir < 0) { + /* we're going against the direction of the item: + * measure its total length and set dist_left to difference of total length and distance */ + dist_left = 0; + while (item_coord_get(realitem, &c, 1)) { + cbuf[0] = cbuf[1]; + cbuf[1] = c; + dist_left += transform_distance(pro, &cbuf[0], &cbuf[1]); + } + + /* if dist is less that the distance of the way, make dist_left the distance from the other end + * else set it to zero (so we'll examine the whole way) */ + if (dist_left > dist) + dist_left -= dist; + else + dist_left = 0; + + item_coord_rewind(realitem); + + if (item_coord_get(realitem, &cbuf[1], 1) != 1) { + dbg(lvl_warning,"item has no more coords after rewind\n"); + map_rect_destroy(mr); + return ret; } - cur = cur->next; } - if (!cur) { - return -1; + while (item_coord_get(realitem, &c, 1)) { + if ((eff_dir > 0) && (dist_left <= 0)) + break; + cbuf[0] = cbuf[1]; + cbuf[1] = c; + dist_left -= transform_distance(pro, &cbuf[0], &cbuf[1]); + if ((eff_dir < 0) && (dist_left > 0)) + continue; + tmp_delta = angle_delta(angle, road_angle(&cbuf[0], &cbuf[1], w->dir)); + if ((ret == invalid_angle) || (abs(ret) < abs(tmp_delta)) || ((abs(ret) == abs(tmp_delta)) && (eff_dir < 0))) + ret = tmp_delta; } - return time; + map_rect_destroy(mr); + return ret; } /** @@ -623,8 +1314,8 @@ c = itm->way.next; while (c) { n = c->next; - map_convert_free(c->name1); - map_convert_free(c->name2); + map_convert_free(c->name); + map_convert_free(c->name_systematic); g_free(c); c = n; } @@ -639,50 +1330,52 @@ * and the next navigation item are excluded. * * @param itm The item that should be updated - * @param graph_map The route graph's map that these items are on + * @param graph_map The route graph's map that these items are on */ static void -navigation_itm_ways_update(struct navigation_itm *itm, struct map *graph_map) +navigation_itm_ways_update(struct navigation_itm *itm, struct map *graph_map) { struct map_selection coord_sel; - struct map_rect *g_rect; // Contains a map rectangle from the route graph's map + struct map_rect *g_rect; /* Contains a map rectangle from the route graph's map */ struct item *i,*sitem; struct attr sitem_attr,direction_attr; - struct navigation_way *w,*l; + struct navigation_way *w, *l, *h; + + dbg(lvl_debug, "entering for item: %s %s %s\n", item_to_name(itm->way.item.type), itm->way.name_systematic, itm->way.name); navigation_itm_ways_clear(itm); - // These values cause the code in route.c to get us only the route graph point and connected segments + /* These values cause the code in route.c to get us only the route graph point and connected segments */ coord_sel.next = NULL; coord_sel.u.c_rect.lu = itm->start; coord_sel.u.c_rect.rl = itm->start; - // the selection's order is ignored - + /* the selection's order is ignored */ + g_rect = map_rect_new(graph_map, &coord_sel); - + i = map_rect_get_item(g_rect); - if (!i || i->type != type_rg_point) { // probably offroad? + if (!i || i->type != type_rg_point) { /* probably offroad? */ map_rect_destroy(g_rect); return ; } w = NULL; - + while (1) { i = map_rect_get_item(g_rect); if (!i) { break; } - + if (i->type != type_rg_segment) { continue; } - + if (!item_attr_get(i,attr_street_item,&sitem_attr)) { - dbg(1, "Got no street item for route graph item in entering_straight()\n"); + dbg(lvl_warning, "Got no street item for route graph item in entering_straight()\n"); continue; - } + } if (!item_attr_get(i,attr_direction,&direction_attr)) { continue; @@ -697,29 +1390,53 @@ } l = w; - w = g_new(struct navigation_way, 1); + w = g_new0(struct navigation_way, 1); w->dir = direction_attr.u.num; w->item = *sitem; w->next = l; - calculate_angle(w); + navigation_way_init(w); /* calculate and set w->angle2 */ + + dbg(lvl_debug, "- retrieved way: %s %s %s\n", item_to_name(w->item.type), w->name_systematic, w->name); + + /* check if w is already in the list */ + h = l; + while (h) { + if (is_same_way(w, h)) { + g_free(w); + w = l; + dbg(lvl_debug, " - way is already in list, discarding\n"); + } + h = h->next; + } } map_rect_destroy(g_rect); - + itm->way.next = w; } +/** + * @brief Destroys navigation items associated with a navigation object. + * + * This function destroys all or some of the {@code navigation_itm} instances associated with + * {@code this_}, starting with the first one. Data structures associated with the items will + * also be freed. + * + * @param this_ The navigation object whose command instances are to be destroyed + * @param end The first navigation item to keep. If it is NULL or not found in the list, all items + * will be destroyed. + */ static void navigation_destroy_itms_cmds(struct navigation *this_, struct navigation_itm *end) { struct navigation_itm *itm; struct navigation_command *cmd; - dbg(2,"enter this_=%p this_->first=%p this_->cmd_first=%p end=%p\n", this_, this_->first, this_->cmd_first, end); + dbg(lvl_info,"enter this_=%p this_->first=%p this_->cmd_first=%p end=%p\n", this_, this_->first, this_->cmd_first, end); if (this_->cmd_first) - dbg(2,"this_->cmd_first->itm=%p\n", this_->cmd_first->itm); + dbg(lvl_info,"this_->cmd_first->itm=%p\n", this_->cmd_first->itm); while (this_->first && this_->first != end) { itm=this_->first; - dbg(3,"destroying %p\n", itm); + dbg(lvl_debug,"destroying %p\n", itm); item_hash_remove(this_->hash, &itm->way.item); this_->first=itm->next; if (this_->first) @@ -730,18 +1447,24 @@ if (cmd->next) { cmd->next->prev = NULL; } + if (cmd->maneuver) + g_free(cmd->maneuver); g_free(cmd); } - map_convert_free(itm->way.name1); - map_convert_free(itm->way.name2); + + map_convert_free(itm->way.name); + map_convert_free(itm->way.name_systematic); + map_convert_free(itm->way.exit_ref); + map_convert_free(itm->way.exit_label); + free_list(itm->way.destination); navigation_itm_ways_clear(itm); g_free(itm); } if (! this_->first) this_->last=NULL; - if (! this_->first && end) - dbg(0,"end wrong\n"); - dbg(2,"ret this_->first=%p this_->cmd_first=%p\n",this_->first, this_->cmd_first); + if (! this_->first && end) + dbg(lvl_error,"end wrong\n"); + dbg(lvl_info,"ret this_->first=%p this_->cmd_first=%p\n",this_->first, this_->cmd_first); } static void @@ -750,146 +1473,230 @@ struct attr length, time, speed; if (! item_attr_get(ritem, attr_length, &length)) { - dbg(0,"no length\n"); + dbg(lvl_error,"no length\n"); return; } if (! item_attr_get(ritem, attr_time, &time)) { - dbg(0,"no time\n"); + dbg(lvl_error,"no time\n"); return; } if (! item_attr_get(ritem, attr_speed, &speed)) { - dbg(0,"no time\n"); + dbg(lvl_error,"no speed\n"); return; } - dbg(1,"length=%ld time=%ld speed=%ld\n", length.u.num, time.u.num, speed.u.num); + dbg(lvl_debug,"length=%ld time=%ld speed=%ld\n", length.u.num, time.u.num, speed.u.num); itm->length=length.u.num; itm->time=time.u.num; itm->speed=speed.u.num; } /** - * @brief This check if an item is part of a roundabout + * @brief Creates and adds a new navigation_itm to a linked list of such * - * @param itm The item to be checked - * @return True if the item is part of a roundabout - */ -static int -check_roundabout(struct navigation_itm *itm, struct map *graph_map) -{ - struct map_selection coord_sel; - struct map_rect *g_rect; // Contains a map rectangle from the route graph's map - struct item *i,*sitem; - struct attr sitem_attr,flags_attr; - - // These values cause the code in route.c to get us only the route graph point and connected segments - coord_sel.next = NULL; - coord_sel.u.c_rect.lu = itm->start; - coord_sel.u.c_rect.rl = itm->start; - // the selection's order is ignored - - g_rect = map_rect_new(graph_map, &coord_sel); - - i = map_rect_get_item(g_rect); - if (!i || i->type != type_rg_point) { // probably offroad? - map_rect_destroy(g_rect); - return 0; - } - - while (1) { - i = map_rect_get_item(g_rect); - - if (!i) { - break; - } - - if (i->type != type_rg_segment) { - continue; - } - - if (!item_attr_get(i,attr_street_item,&sitem_attr)) { - continue; - } - - sitem = sitem_attr.u.item; - if (item_is_equal(itm->way.item,*sitem)) { - if (item_attr_get(i,attr_flags,&flags_attr) && (flags_attr.u.num & AF_ROUNDABOUT)) { - map_rect_destroy(g_rect); - return 1; - } - } - } - - map_rect_destroy(g_rect); - return 0; -} - + * routeitem has an attr. streetitem, but that is only and id and a map, + * allowing to fetch the actual streetitem, that will live under the same name. + * + * Known issue: + * If a way splits in 2, exit_to info ends up on both continuations of the ramp, sometimes + * leading to wrong guidance. + * The case where a ramp itself splits in 2 is already covered by ignoring exit_to info + * in such cases. + * + * @param this_ the navigation object + * @param routeitem the routeitem from which to create a navigation item + * @return the new navigation_itm (used nowhere) + */ static struct navigation_itm * -navigation_itm_new(struct navigation *this_, struct item *ritem) +navigation_itm_new(struct navigation *this_, struct item *routeitem) { struct navigation_itm *ret=g_new0(struct navigation_itm, 1); int i=0; - struct item *sitem; + struct item *streetitem; struct map *graph_map = NULL; struct attr street_item,direction,route_attr; struct map_rect *mr; struct attr attr; struct coord c[5]; + struct coord exitcoord; - if (ritem) { + if (routeitem) { ret->streetname_told=0; - if (! item_attr_get(ritem, attr_street_item, &street_item)) { - dbg(1, "no street item\n"); + if (! item_attr_get(routeitem, attr_street_item, &street_item)) { + dbg(lvl_warning, "no street item\n"); g_free(ret); ret = NULL; return ret; } - if (item_attr_get(ritem, attr_direction, &direction)) + + if (item_attr_get(routeitem, attr_direction, &direction)) ret->way.dir=direction.u.num; else ret->way.dir=0; - sitem=street_item.u.item; - ret->way.item=*sitem; - item_hash_insert(this_->hash, sitem, ret); - mr=map_rect_new(sitem->map, NULL); - if (! (sitem=map_rect_get_item_byid(mr, sitem->id_hi, sitem->id_lo))) { + streetitem=street_item.u.item; + ret->way.item=*streetitem; + item_hash_insert(this_->hash, streetitem, ret); + + mr=map_rect_new(streetitem->map, NULL); + struct map *tmap = streetitem->map; + + if (! (streetitem=map_rect_get_item_byid(mr, streetitem->id_hi, streetitem->id_lo))) { g_free(ret); map_rect_destroy(mr); return NULL; } - if (item_attr_get(sitem, attr_street_name, &attr)) - ret->way.name1=map_convert_string(sitem->map,attr.u.str); - if (item_attr_get(sitem, attr_street_name_systematic, &attr)) - ret->way.name2=map_convert_string(sitem->map,attr.u.str); - navigation_itm_update(ret, ritem); - while (item_coord_get(ritem, &c[i], 1)) { - dbg(1, "coord %d 0x%x 0x%x\n", i, c[i].x ,c[i].y); + if (item_attr_get(streetitem, attr_flags, &attr)) + ret->way.flags=attr.u.num; - if (i < 4) + if (item_attr_get(streetitem, attr_street_name, &attr)) + ret->way.name=map_convert_string(streetitem->map,attr.u.str); + + if (item_attr_get(streetitem, attr_street_name_systematic, &attr)) + ret->way.name_systematic=map_convert_string(streetitem->map,attr.u.str); + + if (ret->way.flags && (ret->way.flags & AF_ONEWAY)) + { + if (item_attr_get(streetitem, attr_street_destination, &attr)) + { + char *destination_raw; + destination_raw=map_convert_string(streetitem->map,attr.u.str); + dbg(lvl_debug,"destination_raw =%s\n",destination_raw); + split_string_to_list(&(ret->way),destination_raw, ';'); + g_free(destination_raw); + } + } + else + { + if (ret->way.dir == 1) + { + if (item_attr_get(streetitem, attr_street_destination_forward, &attr)) + { + char *destination_raw; + destination_raw=map_convert_string(streetitem->map,attr.u.str); + dbg(lvl_debug,"destination_raw forward =%s\n",destination_raw); + split_string_to_list(&(ret->way),destination_raw, ';'); + g_free(destination_raw); + } + + } + if (ret->way.dir == -1) + { + if (item_attr_get(streetitem, attr_street_destination_backward, &attr)) + { + char *destination_raw; + destination_raw=map_convert_string(streetitem->map,attr.u.str); + dbg(lvl_debug,"destination_raw backward =%s\n",destination_raw); + split_string_to_list(&(ret->way),destination_raw, ';'); + g_free(destination_raw); + } + } + } + navigation_itm_update(ret, routeitem); + + while (item_coord_get(routeitem, &c[i], 1)) + { + dbg(lvl_debug, "coord %d 0x%x 0x%x\n", i, c[i].x ,c[i].y); + if (i < 4) i++; - else { + else + { c[2]=c[3]; c[3]=c[4]; } } - dbg(1,"count=%d\n", i); - i--; - - ret->way.angle2=road_angle(&c[0], &c[1], 0); - ret->angle_end=road_angle(&c[i-1], &c[i], 0); + i--; + if (i>=1) + { + ret->way.angle2=road_angle(&c[0], &c[1], 0); + ret->angle_end=road_angle(&c[i-1], &c[i], 0); + } ret->start=c[0]; ret->end=c[i]; - item_attr_get(ritem, attr_route, &route_attr); - graph_map = route_get_graph_map(route_attr.u.route); - if (check_roundabout(ret, graph_map)) { - ret->way.flags |= AF_ROUNDABOUT; + if(item_attr_get(routeitem, attr_route, &route_attr)) + graph_map = route_get_graph_map(route_attr.u.route); + if (graph_map ) + { + if (this_->last) + ret->prev=this_->last; + navigation_itm_ways_update(ret,graph_map); } - dbg(1,"i=%d start %d end %d '%s' '%s'\n", i, ret->way.angle2, ret->angle_end, ret->way.name1, ret->way.name2); + /* If we have a ramp, check the map for higway_exit info, + * but only on the first node of the ramp. + * We are doing the same for motorway-like roads because some + * interchanges use motorway types for the links between two + * motorways. + * Ramps with nodes in reverse order and oneway=-1 are not + * specifically handled, but no occurence known so far either. + * If present, obtain exit_ref, exit_label and exit_to + * from the map. + */ + if (ret->way.next && ((streetitem->type == type_ramp) || (streetitem->type == type_highway_land) + || (streetitem->type == type_highway_city) || (streetitem->type == type_street_n_lanes))) + { + struct map_selection mselexit; + struct item *rampitem; + dbg(lvl_debug,"test ramp\n"); + mselexit.next = NULL; + mselexit.u.c_rect.lu = c[0] ; + mselexit.u.c_rect.rl = c[0] ; + mselexit.range = item_range_all; + mselexit.order =18; + + map_rect_destroy(mr); + mr = map_rect_new(tmap, &mselexit); + + while ((rampitem=map_rect_get_item(mr))) + { + if (rampitem->type == type_highway_exit && item_coord_get(rampitem, &exitcoord, 1) + && exitcoord.x == c[0].x && exitcoord.y == c[0].y) + { + while (item_attr_get(rampitem, attr_any, &attr)) + { + if (attr.type && attr.type == attr_label) + { + dbg(lvl_debug,"exit_label=%s\n",attr.u.str); + ret->way.exit_label= map_convert_string(tmap,attr.u.str); + } + if (attr.type == attr_ref) + { + dbg(lvl_debug,"exit_ref=%s\n",attr.u.str); + ret->way.exit_ref= map_convert_string(tmap,attr.u.str); + } + if (attr.type == attr_exit_to) + { + /* use exit_to as a fall back in case : + * - there is no regular destination info + * - we are not coming from a ramp already + */ + if (attr.u.str + && !ret->way.destination + && (ret->way.item.type == type_ramp) + && (this_->last) + && (!(this_->last->way.item.type == type_ramp))) { + char *destination_raw; + destination_raw=map_convert_string(tmap,attr.u.str); + dbg(lvl_debug,"destination_raw from exit_to =%s\n",destination_raw); + if ((split_string_to_list(&(ret->way),destination_raw, ';')) < 2) + /* + * if a first try did not result in an actual splitting + * retry with ',' as a separator because in France a bad + * mapping practice exists to separate exit_to with ',' + * instead of ';' + */ + (split_string_to_list(&(ret->way),destination_raw, ',')); + g_free(destination_raw); + } + } + } + } + } + } + dbg(lvl_debug,"i=%d start %d end %d '%s' \n", i, ret->way.angle2, ret->angle_end, ret->way.name_systematic); map_rect_destroy(mr); } else { if (this_->last) @@ -900,17 +1707,14 @@ if (this_->last) { this_->last->next=ret; ret->prev=this_->last; - if (graph_map) { - navigation_itm_ways_update(ret,graph_map); - } } - dbg(1,"ret=%p\n", ret); + dbg(lvl_debug,"ret=%p\n", ret); this_->last=ret; return ret; } /** - * @brief Counts how many times a driver could turn right/left + * @brief Counts how many times a driver could turn right/left * * This function counts how many times the driver theoretically could * turn right/left between two navigation items, not counting the final @@ -944,7 +1748,7 @@ if (angle_delta(curr->prev->angle_end, w->angle2) > 0) { count++; break; - } + } } } w = w->next; @@ -952,7 +1756,7 @@ curr = curr->next; } - if (!curr) { // from does not lead to to? + if (!curr) { /* from does not lead to to? */ return -1; } @@ -975,21 +1779,21 @@ { int len=0, time=0, count=0; struct navigation_itm *next,*itm=this_->last; - dbg(1, "enter this_=%p, incr=%d\n", this_, incr); + dbg(lvl_debug, "enter this_=%p, incr=%d\n", this_, incr); if (incr) { if (itm) { - dbg(2, "old values: (%p) time=%d lenght=%d\n", itm, itm->dest_length, itm->dest_time); + dbg(lvl_info, "old values: (%p) time=%d lenght=%d\n", itm, itm->dest_length, itm->dest_time); } else { - dbg(2, "old values: itm is null\n"); + dbg(lvl_info, "old values: itm is null\n"); } itm=this_->first; next=itm->next; - dbg(2, "itm values: time=%d lenght=%d\n", itm->length, itm->time); - dbg(2, "next values: (%p) time=%d lenght=%d\n", next, next->dest_length, next->dest_time); + dbg(lvl_info, "itm values: time=%d lenght=%d\n", itm->length, itm->time); + dbg(lvl_info, "next values: (%p) time=%d lenght=%d\n", next, next->dest_length, next->dest_time); itm->dest_length=next->dest_length+itm->length; itm->dest_count=next->dest_count+1; itm->dest_time=next->dest_time+itm->time; - dbg(2, "new values: time=%d lenght=%d\n", itm->dest_length, itm->dest_time); + dbg(lvl_info, "new values: time=%d lenght=%d\n", itm->dest_length, itm->dest_time); return; } while (itm) { @@ -1000,113 +1804,10 @@ itm->dest_count=count++; itm=itm->prev; } - dbg(1,"len %d time %d\n", len, time); -} - -/** - * @brief Checks if two navigation items are on the same street - * - * This function checks if two navigation items are on the same street. It returns - * true if either their name or their "systematic name" (e.g. "A6" or "B256") are the - * same. - * - * @param old The first item to be checked - * @param new The second item to be checked - * @return True if both old and new are on the same street - */ -static int -is_same_street2(char *old_name1, char *old_name2, char *new_name1, char *new_name2) -{ - if (old_name1 && new_name1 && !strcmp(old_name1, new_name1)) { - dbg(1,"is_same_street: '%s' '%s' vs '%s' '%s' yes (1.)\n", old_name2, new_name2, old_name1, new_name1); - return 1; - } - if (old_name2 && new_name2 && !strcmp(old_name2, new_name2)) { - dbg(1,"is_same_street: '%s' '%s' vs '%s' '%s' yes (2.)\n", old_name2, new_name2, old_name1, new_name1); - return 1; - } - dbg(1,"is_same_street: '%s' '%s' vs '%s' '%s' no\n", old_name2, new_name2, old_name1, new_name1); - return 0; -} - -#if 0 -/** - * @brief Checks if two navigation items are on the same street - * - * This function checks if two navigation items are on the same street. It returns - * true if the first part of their "systematic name" is equal. If the "systematic name" is - * for example "A352/E3" (a german highway which at the same time is part of the international - * E-road network), it would only search for "A352" in the second item's systematic name. - * - * @param old The first item to be checked - * @param new The second item to be checked - * @return True if the "systematic name" of both items matches. See description. - */ -static int -is_same_street_systematic(struct navigation_itm *old, struct navigation_itm *new) -{ - int slashold,slashnew; - if (!old->name2 || !new->name2) - return 1; - slashold=strcspn(old->name2, "/"); - slashnew=strcspn(new->name2, "/"); - if (slashold != slashnew || strncmp(old->name2, new->name2, slashold)) - return 0; - return 1; + dbg(lvl_debug,"len %d time %d\n", len, time); } -/** - * @brief Check if there are multiple possibilities to drive from old - * - * This function checks, if there are multiple streets connected to the exit of "old". - * Sometimes it happens that an item on a map is just segmented, without any other streets - * being connected there, and it is not useful if navit creates a maneuver there. - * - * @param new The navigation item we're driving to - * @return True if there are multiple streets - */ -static int -maneuver_multiple_streets(struct navigation_itm *new) -{ - if (new->way.next) { - return 1; - } else { - return 0; - } -} - - -/** - * @brief Check if the new item is entered "straight" - * - * This function checks if the new item is entered "straight" from the old item, i.e. if there - * is no other street one could take from the old item on with less steering. - * - * @param new The navigation item we're driving to - * @param diff The absolute angle one needs to steer to drive to this item - * @return True if the new item is entered "straight" - */ -static int -maneuver_straight(struct navigation_itm *new, int diff) -{ - int curr_diff; - struct navigation_way *w; - - w = new->way.next; - dbg(1,"diff=%d\n", diff); - while (w) { - curr_diff=abs(angle_delta(new->prev->angle_end, w->angle2)); - dbg(1,"curr_diff=%d\n", curr_diff); - if (curr_diff < diff) { - return 0; - } - w = w->next; - } - return 1; -} -#endif - static int maneuver_category(enum item_type type) { switch (type) { @@ -1143,246 +1844,1001 @@ default: return 0; } - - + + } +/** + * @brief Checks whether a way is allowed + * + * This function checks whether a given vehicle is permitted to enter a given way by comparing the + * access and one-way restrictions of the way against the settings in {@code nav->vehicleprofile}. + * Turn restrictions are not taken into account. + * + * @param nav The navigation object + * @param way The way to examine + * @param mode If nonzero, oneway restrictions will be taken into account. If zero, only the vehicle type + * will be taken into account. + * + * @return True if entry is permitted, false otherwise. If {@code nav->vehicleprofile} is null, true is returned. + */ + + /* (jandegr) this gets called from within show_maneuver with mode=3 for roundabouts + * and with mode=4 from within count_possible_turns() for the use with + * 'take the manieth road to the left/right' + * However over here mode is ignored, so the 'manieth' road excludes unallowed oneway's, + * but IMHO it should count all drivable roads. For roundabouts it seems to be ok. + * + */ + static int is_way_allowed(struct navigation *nav, struct navigation_way *way, int mode) { - if (!nav->vehicleprofile) + if (!nav->vehicleprofile || !way->flags) + return 1; + if (mode) + return ((way->flags & (way->dir >= 0 ? nav->vehicleprofile->flags_forward_mask : nav->vehicleprofile->flags_reverse_mask)) == nav->vehicleprofile->flags); + else + return ((way->flags & nav->vehicleprofile->flags) == nav->vehicleprofile->flags); +} + +/** + * @brief Checks whether a way has motorway-like characteristics + * + * Motorway-like means one of the following: + * + * item type is highway_land or highway_city (OSM: highway=motorway) + * item type is street_n_lanes (OSM: highway=trunk) and way is one-way + * {@code extended} is true and item type is either ramp or street_service + * + * @param way The way to examine + * @param extended Whether to consider ramps and service roads to be motorway-like + * @return True for motorway-like, false otherwise + */ +static int +is_motorway_like(struct navigation_way *way, int extended) +{ + if ((way->item.type == type_highway_land) || (way->item.type == type_highway_city) || ((way->item.type == type_street_n_lanes) && (way->flags & AF_ONEWAYMASK))) return 1; - return !way->flags || ((way->flags & (way->dir >= 0 ? nav->vehicleprofile->flags_forward_mask : nav->vehicleprofile->flags_reverse_mask)) == nav->vehicleprofile->flags); + if ((extended) && ((way->item.type == type_ramp) || (way->item.type == type_street_service))) + return 1; + return 0; +} + +/** + * @brief Checks whether a way is a ramp + * + * @param way The way to be examined + * @return True for ramp, false otherwise + */ +static int +is_ramp(struct navigation_way *way) { + if (way->item.type == type_ramp) + return 1; + return 0; } /** * @brief Checks if navit has to create a maneuver to drive from old to new * - * This function checks if it has to create a "maneuver" - i.e. guide the user - to drive + * This function checks if it has to create a "maneuver" - i.e. guide the user - to drive * from "old" to "new". * * @param old The old navigation item, where we're coming from * @param new The new navigation item, where we're going to - * @param delta The angle the user has to steer to navigate from old to new - * @param reason A text string explaining how the return value resulted + * @param maneuver Pointer to a buffer that will receive a pointer to a {@code struct navigation_maneuver} + * in which detailed information on the maneuver will be stored. The buffer may receive a null pointer + * for some cases that do not require a maneuver. If a non-null pointer is returned, the caller is responsible + * for freeing up the buffer once it is no longer needed. * @return True if navit should guide the user, false otherwise */ static int -maneuver_required2(struct navigation *nav, struct navigation_itm *old, struct navigation_itm *new, int *delta, char **reason) +maneuver_required2 (struct navigation *nav, struct navigation_itm *old, struct navigation_itm *new, struct navigation_maneuver **maneuver) { - int ret=0,d,dw,dlim; - char *r=NULL; - struct navigation_way *w; - int cat,ncat,wcat,maxcat,left=-180,right=180,is_unambigous=0,is_same_street; - int curve_limit=25; + struct navigation_maneuver m; /* if the function returns true, this will be passed in the maneuver argument */ + struct navigation_itm *ni; /* temporary navigation item used for comparisons that examine previous or subsequent maneuvers */ + int ret=0; + int dw; /* temporary bearing difference between old and w (way being examined) */ + int dlim; /* if no other ways are within +/- dlim, the maneuver is unambiguous */ + int dc; /* if new and another way are within +/-min_turn_limit and on the same side, bearing difference for the other way; else d */ + char *r=NULL; /* human-legible reason for announcing or not announcing the maneuver */ + struct navigation_way *w; /* temporary way to examine */ + struct navigation_way *through_segment2 = NULL; /* off-route segment of through road at complex T junction */ + int wcat; + int junction_limit = 100; /* maximum distance between two carriageways at a junction */ + int motorways_left = 0, motorways_right = 0; /* number of motorway-like roads left or right of new->way */ + int coming_from_motorway = 0; /* when the maneuver changes from one ramp to another, + * whether the last non-ramp road was motorway-like */ + int route_leaves_motorway = 0; /* when the maneuver changes from a motorway-like road to a ramp, + * whether a subsequent maneuver leaves the motorway (changing direction + * is considered leaving the motorway) */ + + *maneuver = NULL; + + m.type = type_nav_none; + m.delta = angle_delta(old->angle_end, new->way.angle2); + m.merge_or_exit = mex_none; + m.is_complex_t_junction = 0; + m.num_options = 0; + m.num_new_motorways = 0; + m.num_other_ways = 0; + m.num_similar_ways = 0; + m.old_cat = maneuver_category(old->way.item.type); + m.new_cat = maneuver_category(new->way.item.type); + m.max_cat = -1; + m.left = -180; + m.right = 180; + m.is_unambiguous = 1; + /* Check whether the street keeps its name */ + m.is_same_street = is_same_street2(old->way.name, old->way.name_systematic, new->way.name, new->way.name_systematic); + + dc = m.delta; - dbg(1,"enter %p %p %p\n",old, new, delta); - d=angle_delta(old->angle_end, new->way.angle2); - if (!new->way.next) { - /* No announcement necessary */ + dbg(lvl_debug,"enter %p %p %p\n",old, new, maneuver); +#if 0 + dbg(lvl_debug, "old=%s %s, new=%s %s, angle old=%d, angle new=%d, d=%i\n ", old->way.name, old->way.name_systematic, new->way.name, new->way.name_systematic, old->angle_end, new->way.angle2, d); +#endif + if (!new->way.next || (new->way.next && (new->way.next->angle2 == new->way.angle2) && !new->way.next->next)) { + /* No announcement necessary (with extra magic to eliminate duplicate ways) */ r="no: Only one possibility"; } else if (!new->way.next->next && new->way.next->item.type == type_ramp && !is_way_allowed(nav,new->way.next,1)) { /* If the other way is only a ramp and it is one-way in the wrong direction, no announcement necessary */ - r="no: Only ramp"; + r="no: Only ramp and unallowed direction "; + ret=0; } if (! r) { + /* Announce exit from roundabout, but not entry or staying in it */ if ((old->way.flags & AF_ROUNDABOUT) && ! (new->way.flags & AF_ROUNDABOUT)) { r="yes: leaving roundabout"; ret=1; - } else if (!(old->way.flags & AF_ROUNDABOUT) && (new->way.flags & AF_ROUNDABOUT)) { + } else if (!new->way.next->next && !(old->way.flags & AF_ROUNDABOUT) && (new->way.flags & AF_ROUNDABOUT) && (new->way.next->flags & AF_ROUNDABOUT)) { + /* this rather complicated construct makes sure we suppress announcements + * only when we're entering a roundabout AND there are no other options */ r="no: entering roundabout"; - } else if ((old->way.flags & AF_ROUNDABOUT) && (new->way.flags & AF_ROUNDABOUT)) + } else if ((old->way.flags & AF_ROUNDABOUT) && (new->way.flags & AF_ROUNDABOUT)) { r="no: staying in roundabout"; + } + } + if (!r) { + /* Analyze all options (including new->way). + * Anything that iterates over the whole set of options should be done here. This avoids + * looping over the entire set of ways multiple times, which aims to improve performance + * and predictability (because the same filter is applied to the ways being analyzed). + */ + w = &(new->way); + int through_segments = 0; + while (w) { + /* in case of overlapping ways, avoid counting the way on the route twice */ + if ((w->angle2 != new->way.angle2) || (w == &(new->way))) { + dw=angle_delta(old->angle_end, w->angle2); + if (is_way_allowed(nav,w,1)) { + dbg(lvl_debug, "- Examining allowed way: %s %s %s, delta=%i\n", item_to_name(w->item.type), w->name_systematic, w->name, dw); + m.num_options++; + /* ways of similar category */ + if (maneuver_category(w->item.type) == m.old_cat) { + /* TODO: considering a maneuver_category difference of 1 to be similar, e.g. + * if (abs(maneuver_category(w->item.type) - m.old_cat) <= 1) + * will improve things in some cases but also introduce some junk maneuvers, + * e.g. at complex junctions. If we relax the maneuver_category requirement, + * we may need some extra requirements. */ + m.num_similar_ways++; + } + /* motorway-like ways */ + if ((m.num_new_motorways < 2) && is_motorway_like(w, 0)) { + /* Count all motorway-like segments: + * - always count new + * - if new or w have an exit_ref or exit_label, count w + * - if old, new and w have the same name_systematic, do not count w + * - if one of old, new and w has no name_systematic, count w + * This is for handling temporary splits (e.g. at toll booths), which should + * be counted as one motorway for the purpose of navigation. On the other hand, + * occasionally a motorway may split at an interchange with both segments + * retaining the name, in which case we want to count both motorways. */ + if ((w == &(new->way)) + || new->way.exit_ref + || new->way.exit_label + || w->exit_ref + || w->exit_label + || !old->way.name_systematic + || !new->way.name_systematic + || !w->name_systematic + || strcmp(old->way.name_systematic, new->way.name_systematic) + || strcmp(old->way.name_systematic, w->name_systematic)) + m.num_new_motorways++; + } else if (!is_motorway_like(w, 1)) { + m.num_other_ways++; + } + if (w != &(new->way)) { + /* if we're exiting from a motorway, check which side of the ramp the motorway is on */ + if (is_motorway_like(w, 0) && is_motorway_like(&(old->way), 0) && new->way.item.type == type_ramp) { + if (dw < m.delta) + motorways_left++; + else + motorways_right++; + } + + if (dw < m.delta) { + if (dw > m.left) + m.left=dw; + } else { + if (dw < m.right) + m.right=dw; + } + + /* If almost-straight ways are present, the maneuver is ambiguous. We are counting only ways having + * a nonzero maneuver category (street_0 or higher), excluding ramps, service roads and anything closed + * to motorized traffic. Exceptions apply when the new way itself has a maneuver category of 0. + * Note that this is in addition for the dlim calculations we do further below, as they fail to + * catch some ambiguous cases for very low deltas. */ + if ((dw > -min_turn_limit) && (dw < min_turn_limit) && ((maneuver_category(w->item.type) != 0) || (maneuver_category(new->way.item.type) == 0))) + m.is_unambiguous = 0; + + if (dw < 0) { + if (dw > -min_turn_limit && m.delta < 0 && m.delta > -min_turn_limit) + dc=dw; + } else { + if (dw < min_turn_limit && m.delta > 0 && m.delta < min_turn_limit) + dc=dw; + } + wcat=maneuver_category(w->item.type); + /* If any other street has the same name, we can't use the same name criterion. + * Exceptions apply if we're coming from a motorway-like road and: + * - the other road is motorway-like (a motorway might split up temporarily) or + * - the other road is a ramp or service road (they are sometimes tagged with the name of the motorway) + * The second one is really a workaround for bad tagging practice in OSM. Since entering + * a ramp always creates a maneuver, we don't expect the workaround to have any unwanted + * side effects. + */ + if (m.is_same_street && is_same_street2(old->way.name, old->way.name_systematic, w->name, w->name_systematic) && (!is_motorway_like(&(old->way), 0) || (!is_motorway_like(w, 0) && w->item.type != type_ramp)) && is_way_allowed(nav,w,2)) + m.is_same_street=0; + /* If the route category changes to a lower one but another road has the same route category as old, + * it is not clear which of the two the driver would perceive as the "same street", hence reset is_same_street */ + /* Mark if the street has a higher or the same category */ + if (wcat > m.max_cat) + m.max_cat=wcat; + } /* if w != new->way */ + /* if is_way_allowed */ + } else { + /* If we're merging onto a motorway, check which side of the ramp the motorway is on. + * This requires examining the candidate ways which are NOT allowed. */ + if (is_motorway_like(w, 0) && is_motorway_like(&(new->way), 0) && old->way.item.type == type_ramp) { + if (dw < 0) + motorways_left++; + else + motorways_right++; + } + /* if !is_way_allowed */ + } /* if is_way_allowed || !is_way_allowed */ + if (w->flags & AF_ONEWAYMASK) { + /* count through_segments (even if they are not allowed) to check if we are at a complex T junction */ + if (is_same_street2(new->way.name, new->way.name_systematic, w->name, w->name_systematic)) + /* count segments belonging to the same street */ + through_segments++; + else if ((!through_segment2 && (abs(angle_delta(angle_opposite(w->angle2), new->way.angle2)) < min_turn_limit)) + || (through_segment2 && (abs(angle_delta(angle_opposite(w->angle2), new->way.angle2)) < abs(angle_delta(angle_opposite(through_segment2->angle2), new->way.angle2))))) { + /* also count near-straight continuations of new (the through road may change names at the junction) */ + if (!through_segment2) + through_segments++; + through_segment2 = w; + } + } + } /* if w is not a duplicate of way->next */ + w = w->next; + } /* while w */ + if ((abs(m.delta) >= min_turn_limit) && (through_segments >= 2)) { + /* If we have to make a considerable turn (min_turn_limit or more), + * check whether we are approaching a complex T junction from the "stem" + * (which would need an announcement). + * Complex means that the through road is a dual-carriageway road. + * This is the case only if at least 2 segments (including new) are one-way + * (regardless of direction) and have the same name as new or through_segment2. + * More than 2 such segments are possible e.g. where two physically separated + * lanes join. + * To find out if there is another carriageway, we need to analyze the previous + * maneuvers. + */ + int hist_through_segments = 0; + int hist_dist = old->length; /* distance between previous and current maneuver */ + ni = old; + while (ni && (hist_through_segments == 0) && (hist_dist <= junction_limit)) { + /* TODO: shouldn't the condition be (hist_through_segments < 2) to catch through segments that are slightly offset?? */ + struct navigation_way *w = ni->way.next; + while (w) { + if (is_same_street2(new->way.name, new->way.name_systematic, w->name, w->name_systematic) + || (through_segment2 && is_same_street2(through_segment2->name, through_segment2->name_systematic, w->name, w->name_systematic))) + hist_through_segments++; + w = w->next; + } + ni = ni->prev; + if (ni) + hist_dist += ni->length; + } + if (hist_through_segments >= 2) { + /* Require at least 2 segments (there may be more than two in cases such as + * local-express lane systems or separate cycleways) */ + ret=1; + m.is_complex_t_junction = 1; + r="yes: turning into multi-carriageway through-road of T junction"; + } + } } - if (!r && abs(d) > 75) { + if (!r && abs(m.delta) > 75) { /* always make an announcement if you have to make a sharp turn */ r="yes: delta over 75"; ret=1; + } else if (!r && abs(m.delta) >= min_turn_limit) { + if ((m.new_cat >= maneuver_category(type_street_2_city)) && (m.num_similar_ways > 1)) { + /* When coming from street_2_* or higher category road, check if + * - we have multiple options of the same category and + * - we have to make a considerable turn (at least min_turn_limit) + * If both is the case, ANNOUNCE. + */ + ret=1; + r="yes: more than one similar road and delta >= min_turn_limit"; + } } - cat=maneuver_category(old->way.item.type); - ncat=maneuver_category(new->way.item.type); + if ((!r) && (m.num_options <= 1)) + r="no: only one option permitted"; if (!r) { - int dc=d; - /* Check whether the street keeps its name */ - is_same_street=is_same_street2(old->way.name1, old->way.name2, new->way.name1, new->way.name2); - w = new->way.next; - maxcat=-1; - while (w) { - dw=angle_delta(old->angle_end, w->angle2); - if (dw < 0) { - if (dw > left) - left=dw; - if (dw > -curve_limit && d < 0 && d > -curve_limit) - dc=dw; - } else { - if (dw < right) - right=dw; - if (dw < curve_limit && d > 0 && d < curve_limit) - dc=dw; - } - wcat=maneuver_category(w->item.type); - /* If any other street has the same name but isn't a highway (a highway might split up temporarily), then - we can't use the same name criterium */ - if (is_same_street && is_same_street2(old->way.name1, old->way.name2, w->name1, w->name2) && (cat != 7 || wcat != 7) && is_way_allowed(nav,w,2)) - is_same_street=0; - /* Even if the ramp has the same name, announce it */ - if (new->way.item.type == type_ramp && old->way.item.type != type_ramp) - is_same_street=0; - /* Mark if the street has a higher or the same category */ - if (wcat > maxcat) - maxcat=wcat; - w = w->next; + if (is_motorway_like(&(old->way), 0) && (m.num_other_ways == 0) && (m.num_new_motorways > 1) && ((m.left > -90) || (m.right < 90))) { + /* If we are at a motorway interchange, ANNOUNCE + * We are assuming a motorway interchange when old way and at least + * two possible ways are motorway-like and allowed. + * Additionally we require one way (other than the new way) within +/-90°. + * This prevents the rule from essentially announcing "don't do the U turn" + * at the beginning of a single-carriageway section, which is occasionally + * found on motorways. + * If any of the possible ways is neither motorway-like nor a ramp, + * we are probably on a trunk road with level crossings and not + * at a motorway interchange. + */ + r="yes: motorway interchange (multiple motorways)"; + m.merge_or_exit = mex_interchange; + ret=1; + } else if (is_motorway_like(&(old->way), 0) && is_motorway_like(&(new->way), 0) && (m.num_other_ways == 0) && (!m.is_same_street)) { + /* Another sign that we are at a motorway interchange is if the street name changes + */ + r="yes: motorway interchange (name changes)"; + m.merge_or_exit = mex_interchange; + ret=1; + } else if ((new->way.item.type == type_ramp) && ((m.num_other_ways == 0) || (abs(m.delta) >= min_turn_limit)) && ((m.left > -90) || (m.right < 90))) { + /* Motorway ramps can be confusing, therefore we need to lower the bar for announcing a maneuver. + * When the new way is a ramp, we check for the following criteria: + * - All available ways are either motorway-like or ramps. + * This prevents this rule from firing in non-motorway settings, which is needed to avoid + * superfluous maneuvers when the minor road of a complex T junction is a ramp. + * - If the above is not met, the maneuver must involve a turn (min_turn_limit or more) to enter the ramp. + * - Additionally, there must be one way (other than the new way) within +/-90°. + * This prevents the rule from essentially announcing "don't do the U turn" where the ramps for + * two opposite directions merge. + * If the criteria are satisfied, announce. + */ + r="yes: entering ramp"; + ret=1; } + } + if (!r) { /* get the delta limit for checking for other streets. It is lower if the street has no other streets of the same or higher category */ - if (ncat < cat) + if (m.new_cat < m.old_cat) dlim=80; else dlim=120; /* if the street is really straight, the others might be closer to straight */ - if (abs(d) < 20) + if (abs(m.delta) < 20) dlim/=2; - if ((maxcat == ncat && maxcat == cat) || (ncat == 0 && cat == 0)) - dlim=abs(d)*620/256; - else if (maxcat < ncat && maxcat < cat) - dlim=abs(d)*128/256; - if (left < -dlim && right > dlim) - is_unambigous=1; - if (dc != d) { - dbg(1,"d %d vs dc %d\n",d,dc); - d-=(dc+d+1)/2; - dbg(1,"result %d\n",d); - is_unambigous=0; + /* if both old and new way have a category of 0, or if both ways and at least one other way are + * in the same category and no other ways are higher, + * dlim is 620/256 (roughly 2.5) times the delta of the maneuver */ + if ((m.max_cat == m.new_cat && m.max_cat == m.old_cat) || (m.new_cat == 0 && m.old_cat == 0)) + dlim=abs(m.delta)*620/256; + /* if both old and new way are in higher than highest encountered category, + * dlim is 128/256 times (i.e. one half) the delta of the maneuver */ + else if (m.max_cat < m.new_cat && m.max_cat < m.old_cat) + dlim=abs(m.delta)*128/256; + /* if no other ways are within +/-dlim, the maneuver is unambiguous */ + if (m.left >= -dlim || m.right <= dlim) + m.is_unambiguous = 0; + /* if another way is within +/-min_turn_limit and on the same side as new, the maneuver is ambiguous */ + if (dc != m.delta) { + dbg(lvl_debug, "m.delta %d vs dc %d\n", m.delta, dc); + m.is_unambiguous=0; } - if (!is_same_street && is_unambigous < 1) { + if (!m.is_same_street && m.is_unambiguous < 1) { /* FIXME: why < 1? */ ret=1; - r="yes: not same street or ambigous"; - } else - r="no: same street and unambigous"; + r="yes: different street and ambiguous"; + } + /* we should have cat of the candidate within dlim + * instead of testing against max_cat. + * The highest cat road might be well outside dlim + */ + else if (m.max_cat >= m.new_cat && m.is_unambiguous < 1) + { + ret = 1; + r="yes: ambiguous because of other candidates within dlim"; + } + else + r="no: same street or unambiguous"; #ifdef DEBUG - r=g_strdup_printf("yes: d %d left %d right %d dlim=%d cat old:%d new:%d max:%d unambigous=%d same_street=%d", d, left, right, dlim, cat, ncat, maxcat, is_unambigous, is_same_street); + r=g_strdup_printf("%s: d %d left %d right %d dlim=%d cat old:%d new:%d max:%d unambiguous=%d same_street=%d", ret==1?"yes":"no", m.delta, m.left, m.right, dlim, m.old_cat, m.new_cat, m.max_cat, m.is_unambiguous, m.is_same_street); #endif } - *delta=d; - if (reason) - *reason=r; - return ret; - -#if 0 - if (new->item.type == old->item.type || (new->item.type != type_ramp && old->item.type != type_ramp)) { - if (is_same_street2(old, new)) { - if (! entering_straight(new, abs(*delta))) { - dbg(1, "maneuver_required: Not driving straight: yes\n"); - if (reason) - *reason="yes: Not driving straight"; - return 1; + if (m.merge_or_exit == mex_none) { + if (old->way.item.type == type_ramp && is_motorway_like(&(new->way), 0)) { + if (motorways_left) + m.merge_or_exit = mex_merge_left; + else if (motorways_right) + m.merge_or_exit = mex_merge_right; + /* if there are no motorways on either side, we are not merging + * (more likely the start of a motorway) */ + + if (m.merge_or_exit != mex_none) { + ret=1; + if (!r) + r = "yes: merging onto motorway-like road"; } - - if (check_multiple_streets(new)) { - if (entering_straight(new,abs(*delta)*2)) { - if (reason) - *reason="no: delta < ext_limit for same name"; - return 0; + } else if (is_motorway_like(&(old->way), 1) && (new->way.item.type == type_ramp)) { + /* Detect interchanges - if: + * - we're entering a ramp, + * - we're coming from a motorway-like road (directly or via ramps), + * - the route is taking us onto another motorway-like road and + * - none of the ways in between connects to any non-motorway roads, + * set m.merge_or_exit = mex_interchange. + * The last condition is to prevent direction changes (i.e. exit motorway and take + * access ramp for opposite direction) from being misinterpreted as interchanges. */ + ni = old; + coming_from_motorway = 1; + while (coming_from_motorway && ni && (ni->way.item.type == type_ramp)) { + w = &(ni->way); + while (coming_from_motorway && w) { + coming_from_motorway = is_motorway_like(w, 1); + w = w->next; } - if (reason) - *reason="yes: delta > ext_limit for same name"; - return 1; - } else { - dbg(1, "maneuver_required: Staying on the same street: no\n"); - if (reason) - *reason="no: Staying on same street"; - return 0; + ni = ni->prev; + } + if (ni && coming_from_motorway) + coming_from_motorway = is_motorway_like(&(ni->way), 0); + ni = new->next; + route_leaves_motorway = !coming_from_motorway; + while (!route_leaves_motorway && ni && (ni->way.item.type == type_ramp)) { + w = &(ni->way); + while (!route_leaves_motorway && w) { + route_leaves_motorway = !is_motorway_like(w, 1); + w = w->next; + } + ni = ni->next; + } + if (ni && !route_leaves_motorway && is_motorway_like(&(ni->way), 0)) + m.merge_or_exit = mex_interchange; + else if (is_motorway_like(&(old->way), 0) || (coming_from_motorway && new->way.exit_ref)) { + if (motorways_left && (m.left > -90)) + m.merge_or_exit = mex_exit_right; + else if (motorways_right && (m.right < 90)) + m.merge_or_exit = mex_exit_left; + /* if there are no motorways within +/-90 degrees on either side, this is not an exit + * (more likely the end of a motorway) */ + } + + if (is_motorway_like(&(old->way), 0) && (m.merge_or_exit != mex_none)) { + ret=1; + if (!r) + r = "yes: leaving motorway-like road"; } } - } else - dbg(1, "maneuver_required: old or new is ramp\n"); -#if 0 - if (old->item.type == type_ramp && (new->item.type == type_highway_city || new->item.type == type_highway_land)) { - dbg(1, "no_maneuver_required: old is ramp new is highway\n"); - if (reason) - *reason="no: old is ramp new is highway"; - return 0; } -#endif -#if 0 - if (old->crossings_end == 2) { - dbg(1, "maneuver_required: only 2 connections: no\n"); - return 0; - } -#endif - dbg(1,"delta=%d-%d=%d\n", new->way.angle2, old->angle_end, *delta); - if ((new->item.type == type_highway_land || new->item.type == type_highway_city || old->item.type == type_highway_land || old->item.type == type_highway_city) && (!is_same_street_systematic(old, new) || (old->name2 != NULL && new->name2 == NULL))) { - dbg(1, "maneuver_required: highway changed name\n"); - if (reason) - *reason="yes: highway changed name"; - return 1; + + if (ret) { + *maneuver = g_new(struct navigation_maneuver, 1); + memcpy(*maneuver, &m, sizeof(struct navigation_maneuver)); } - if (abs(*delta) < straight_limit) { - if (! entering_straight(new,abs(*delta))) { - if (reason) - *reason="yes: not straight"; - dbg(1, "maneuver_required: not driving straight: yes\n"); - return 1; - } + if (r) + dbg(lvl_debug, "%s %s %s -> %s %s %s: %s, delta=%i, merge_or_exit=%i\n", item_to_name(old->way.item.type), old->way.name_systematic, old->way.name, item_to_name(new->way.item.type), new->way.name_systematic, new->way.name, r, m.delta, m.merge_or_exit); + return ret; +} - dbg(1, "maneuver_required: delta(%d) < %d: no\n", *delta, straight_limit); - if (reason) - *reason="no: delta < limit"; - return 0; +/** + * @brief Adjusts a bearing delta to point in the same direction as a reference delta. + * + * Calculated delta results are constrained to -180 <= delta <= +180 degrees. Some heuristics, however, require values outside + * that range, e.g. -190 rather than 170 degrees. Given a reference with approximately correct orientation, this function corrects + * that delta to match the reference as closely as possible. This is done by adding or subtracting 360 degrees as needed. + * + * @param delta The delta to adjust. {@code abs(delta)} must be no greater than 180. + * @param reference The reference delta. {@code abs(reference)} must be no greater then 180. + * @return The adjusted delta, which is numerically within +/-180 degrees of the reference. If {@code delta} or {@code reference} + * are outside of their specified range, the result is undefined. + */ +int adjust_delta(int delta, int reference) { + if ((delta >= 0) && (delta - reference) > 180) { + dbg(lvl_debug,"adjusting delta from %d to %d\n", delta, delta - 360); + return delta - 360; + } + else if ((delta <= 0) && (reference - delta) > 180) { + dbg(lvl_debug,"adjusting delta from %d to %d\n", delta, delta + 360); + return delta + 360; } - if (abs(*delta) < ext_straight_limit) { - if (entering_straight(new,abs(*delta)*2)) { - if (reason) - *reason="no: delta < ext_limit"; - return 0; + else + return delta; +} + +/** + * @brief Analyzes a roundabout and sets maneuver information + * + * Exit from a roundabout requires a somewhat complex analysis of the ways involved in order to: + *
    + *
  • Calculate effective bearing change (between entry and exit) and store it in {@code cmd->roundabout_delta}
  • + *
  • Set {@code cmd->maneuver->type} to {@code nav_roundabout_{r|l}{1..8}}, based on bearing change
  • + *
  • Set {@code cmd->length}
  • + *
+ * + * Bearing change must be as close as possible to how drivers would perceive it. + * Builds prior to r2017 used the difference between the last way before and the first way after the roundabout, + * which tends to overestimate the angle when the ways leading towards and/or away from the roundabout split into + * separate carriageways in a Y-shape. This is referred to as {@code delta1} here. + * + * In r2017 a different approach was introduced, which essentially distorts the roads so they enter and leave + * the roundabout at a 90 degree angle. (To make calculations simpler, tangents of the roundabout at the entry + * and exit points are used, with one of them reversed in direction, instead of the approach roads.) + * However, this approach tends to underestimate the angle when the distance between approach roads is large. + * This is referred to as {@code delta2} here. + * + * Combining {@code delta1} and {@code delta2}, calculating error estimates for each and using a weighted average between the + * two delta estimates gives better results in many cases but fails for certain road layouts - namely, when corresponding + * approach roads are connected by more than one roundabout segment, or when additional ways connect to an approach road. + * These cases break error calculation and thus weight distribution. + * + * Project HighFive introduces a new approach, which compares bearings of ways leading towards and away from the + * roundabout not immediately at entry and exit but at a certain distance from the roundabout, which is roughly proportional + * to the circumference of the roundabout. Circumference is estimated using the arithmetic mean value of {@code delta1} and + * {@code delta2}. This approach has produced the best results in tests. In code it is referred to as {@code delta3}. + * + * @param this_ The navigation object + * @param cmd A {@code struct navigation_cmd}, whose {@code delta} and {@code maneuver} members must be set prior to calling + * this function + * @param itm The navigation item for the maneuver to exit the roundabout + */ +void navigation_analyze_roundabout(struct navigation *this_, struct navigation_command *cmd, struct navigation_itm *itm) { + enum item_type r = type_none, l = type_none; + int len = 0; /* length of roundabout segment */ + int roundabout_length; /* estimated total length of roundabout */ + int angle = 0; + int entry_tangent; /* tangent of the roundabout at entry point, against direction of route */ + int exit_tangent; /* tangent of the roundabout at exit point, in direction of route */ + int entry_road_angle, exit_road_angle; /* angles before and after approach segments */ + struct navigation_itm *itm2; /* items before itm to examine, up to first roundabout segment on route */ + struct navigation_itm *itm3; /* items before itm2 and after itm to examine */ + struct navigation_way *w; /* continuation of the roundabout after we leave it */ + struct navigation_way *w2; /* segment of the roundabout leading to the point at which we enter it */ + int dtsir = 0; /* delta to stay in roundabout */ + int d, dmax = 0; /* when examining deltas of roundabout approaches, current and maximum encountered */ + int delta1, delta2, delta3; /* for roundabout delta calculated with different approaches */ + int dist_left; /* when examining ways around the roundabout to a certain threshold, the distance we have left to go */ + int central_angle; /* approximate central angle for the roundabout arc that is part of the route */ + int abort; /* whether a (complex) criterion for aborting a loop has been met */ + + /* Find continuation of roundabout after the exit. Don't simply use itm->way.next here, it will break + * if a node in the roundabout is shared by more than one way */ + w = itm->way.next; + while (w && !(w->flags & AF_ROUNDABOUT)) + w = w->next; + if (w) { + /* When exiting a roundabout, w should never be null, thus this + * code will always be executed. Checking for the condition anyway ensures + * that botched map data (roundabout ending with nowhere else to go) will not + * cause a crash. For the same reason we're using dtsir with a default value of 0. + */ + + dtsir = angle_delta(itm->prev->angle_end, w->angle2); + dbg(lvl_debug,"delta to stay in roundabout %d\n", dtsir); + + exit_tangent = angle_median(itm->prev->angle_end, w->angle2); + dbg(lvl_debug,"exit %d median from %d, %d\n", exit_tangent, itm->prev->angle_end, w->angle2); + + /* Move back to where we enter the roundabout, calculate length in roundabout */ + itm2=itm; + while (itm2->prev && (itm2->prev->way.flags & AF_ROUNDABOUT)) { + itm2=itm2->prev; + len+=itm2->length; + angle=itm2->angle_end; } - } - if (! check_multiple_streets(new)) { - dbg(1, "maneuver_required: only one possibility: no\n"); - if (reason) - *reason="no: only one possibility"; - return 0; - } + /* Find the segment of the roundabout leading up to the point at which we enter it. Again, don't simply + * use itm2->way.next here, it will break if a node in the roundabout is shared by more than one way */ + w2 = itm2->way.next; + while (w2 && !(w2->flags & AF_ROUNDABOUT)) + w2 = w2->next; + + /* Calculate entry angle */ + if (itm2 && w2) { + entry_tangent = angle_median(angle_opposite(itm2->way.angle2), w2->angle2); + dbg(lvl_debug, "entry %d median from %d (%d), %d\n", entry_tangent, angle_opposite(itm2->way.angle2), itm2->way.angle2, itm2->way.next->angle2); + } else { + entry_tangent = angle_opposite(angle); + } /* endif itm2 && w2 */ + dbg(lvl_debug, "entry %d exit %d\n", entry_tangent, exit_tangent); + + delta2 = angle_delta(entry_tangent, exit_tangent); + dbg(lvl_debug, "delta2 %d\n", delta2); + + if (itm2->prev) { + /* If there are V-shaped approach segments and we are turning around or making a sharp turn, + * delta1 may point in the wrong direction, thus we need adjust_delta() to correct this. */ + delta1 = adjust_delta(angle_delta(itm2->prev->angle_end, itm->way.angle2), delta2); + + /* Now try to figure out the error range for delta1. Errors are caused by turns in the approach segments + * just before the roundabout. We use the last segment before the approach as a reference. + * We assume the approach to begin when one of the following is true: + * - a way turns into a ramp + * - a way turns into a one-way road + * - a certain distance from the roundabout, proportional to its circumference, is exceeded + * Simply comparing bearings at these points may cause confusion with certain road layouts (namely + * S-shaped dual-carriageway roads), hence we examine the entire approach segment and take the largest + * delta (relative to the end of the approach segment) which we encounter. + * This is done for both ends of the roundabout. + */ + + /* Approximate roundabout circumference based on len and approximate central angle of route segment. + * The central angle is approximated using the unweighted average of delta1 and delta2, + * which is somewhat crude but sufficient for our purposes. */ + central_angle = abs((delta1 + delta2) / 2 + ((cmd->delta < dtsir) ? 180 : -180)); + roundabout_length = len * 360 / central_angle; + dbg(lvl_debug,"roundabout_length = %dm (for central_angle = %d degrees)\n", roundabout_length, central_angle); + + /* in the case of separate carriageways, approach roads become hard to identify, thus we keep a cap on distance. + * Currently this is at most half the length of the roundabout, which has worked well in tests but can be tweaked + * to further improve results. */ + dist_left = roundabout_length / 2; + dbg(lvl_debug,"examining roads for up to %dm\n", dist_left); + + /* examine items before roundabout */ + itm3 = itm2->prev; /* last segment before roundabout */ + abort = 0; + while (itm3->prev) { + if ((itm3->next && is_ramp(&(itm3->next->way)) && !is_ramp(&(itm3->way))) || !(itm3->way.flags & AF_ONEWAYMASK)) { + dbg(lvl_debug,"items before roundabout: break because ramp or oneway ends, %dm left\n", dist_left); + dist_left = 0; /* to make sure we don't examine the following way in depth */ + break; + } + if (dist_left <= itm3->length) { + dbg(lvl_debug,"items before roundabout: maximum distance reached, %dm left, item length %dm\n", dist_left, itm3->length); + break; + } + d = navigation_way_get_max_delta(&(itm3->way), map_projection(this_->map), itm2->prev->angle_end, dist_left, -1); + if ((d != invalid_angle) && (abs(d) > abs(dmax))) + dmax = d; + w2 = itm3->way.next; + while (w2) { + /* Stop examining ways at a turn maneuver (more than one way allowed and route does not follow straightest path) */ + if (is_way_allowed(this_, w2, 0) + && (abs(angle_delta(angle_opposite(w2->angle2), itm3->way.angle2)) <= abs(angle_delta(itm3->prev->angle_end, itm3->way.angle2)))) { + /* FIXME: comparing angles probably does not work well for near-equal angles */ + abort = 1; + break; + } + w2 = w2->next; + } + if (abort) { + dbg(lvl_debug,"items before roundabout: break because of potential turn maneuver, %dm left\n", dist_left); + dist_left = itm3->length; + break; + } + dist_left -= itm3->length; + itm3 = itm3->prev; + } + if (dist_left == 0) { + d = angle_delta(itm2->prev->angle_end, itm3->angle_end); + } else if (dist_left < itm3->length) { + d = navigation_way_get_max_delta(&(itm3->way), map_projection(this_->map), itm2->prev->angle_end, dist_left, -1); + } else { + /* not enough objects in navigation map, use most distant one + * - or dist_left == itm3->length, this saves a few CPU cycles over the above */ + d = angle_delta(itm2->prev->angle_end, itm3->way.angle2); + } + if ((d != invalid_angle) && (abs(d) > abs(dmax))) + dmax = d; + entry_road_angle = (itm2->prev->angle_end + dmax) % 360; + dbg(lvl_debug,"entry_road_angle %d (%d + %d)\n", entry_road_angle, itm2->prev->angle_end, dmax); + + /* examine items after roundabout */ + dmax = 0; + dist_left = roundabout_length / 2; + itm3 = itm; /* first segment after roundabout */ + abort = 0; + while (itm3->next) { + if ((itm3->prev && is_ramp(&(itm3->prev->way)) && !is_ramp(&(itm3->way))) || !(itm3->way.flags & AF_ONEWAYMASK)) { + dbg(lvl_debug,"items after roundabout: break because ramp or oneway ends, %dm left\n", dist_left); + dist_left = 0; /* to make sure we don't examine the following way in depth */ + break; + } + if (dist_left <= itm3->length) { + dbg(lvl_debug,"items after roundabout: maximum distance reached, %dm left, item length %dm\n", dist_left, itm3->length); + break; + } + d = navigation_way_get_max_delta(&(itm3->way), map_projection(this_->map), itm->way.angle2, dist_left, 1); + if ((d != invalid_angle) && (abs(d) > abs(dmax))) + dmax = d; + w2 = itm3->next->way.next; + while (w2) { + /* Stop examining ways at a turn maneuver (more than one way allowed and route does not follow straightest path) */ + if (is_way_allowed(this_, w2, 0) + && (abs(angle_delta(itm3->angle_end, w2->angle2)) <= abs(angle_delta(itm3->angle_end, itm3->next->way.angle2)))) { + /* FIXME: comparing angles probably does not work well for near-equal angles */ + abort = 1; + break; + } + w2 = w2->next; + } + if (abort) { + dbg(lvl_debug,"items after roundabout: break because of potential turn maneuver, %dm left\n", dist_left); + dist_left = itm3->length; + break; + } + dist_left -= itm3->length; + itm3 = itm3->next; + } + if (dist_left == 0) { + d = angle_delta(itm->way.angle2, itm3->way.angle2); + } else if (dist_left < itm3->length) { + d = navigation_way_get_max_delta(&(itm3->way), map_projection(this_->map), itm->way.angle2, dist_left, 1); + } else { + /* not enough objects in navigation map, use most distant one + * - or dist_left == itm3->length, this saves a few CPU cycles over the above */ + d = angle_delta(itm->way.angle2, itm3->angle_end); + } + if ((d != invalid_angle) && (abs(d) > abs(dmax))) + dmax = d; - dbg(1, "maneuver_required: delta=%d: yes\n", *delta); - if (reason) - *reason="yes: delta >= limit"; - return 1; -#endif + exit_road_angle = (itm->way.angle2 + dmax) % 360; + dbg(lvl_debug,"exit_road_angle %d (%d + %d)\n", exit_road_angle, itm->way.angle2, dmax); + + dbg(lvl_debug,"delta1 %d\n", delta1); + + delta3 = adjust_delta(angle_delta(entry_road_angle, exit_road_angle), delta2); + dbg(lvl_debug,"delta3 %d\n", delta3); + + cmd->roundabout_delta = delta3; + dbg(lvl_debug,"roundabout_delta %d\n", cmd->roundabout_delta); + } else { + /* we don't know where we entered the roundabout, so we can't calculate delta1 */ + cmd->roundabout_delta = delta2; + } /* endif itm2->prev */ + cmd->length=len+roundabout_extra_length; + } /* if w */ + + /* set cmd->maneuver->type */ + switch (((180 + 22) - cmd->roundabout_delta) / 45) { + case 0: + case 1: + r = type_nav_roundabout_r1; + l = type_nav_roundabout_l7; + break; + case 2: + r = type_nav_roundabout_r2; + l = type_nav_roundabout_l6; + break; + case 3: + r = type_nav_roundabout_r3; + l = type_nav_roundabout_l5; + break; + case 4: + r = type_nav_roundabout_r4; + l = type_nav_roundabout_l4; + break; + case 5: + r = type_nav_roundabout_r5; + l = type_nav_roundabout_l3; + break; + case 6: + r = type_nav_roundabout_r6; + l = type_nav_roundabout_l2; + break; + case 7: + r = type_nav_roundabout_r7; + l = type_nav_roundabout_l1; + break; + case 8: + r = type_nav_roundabout_r8; + l = type_nav_roundabout_l8; + break; + } + dbg(lvl_debug,"delta %d\n", cmd->delta); + /* if delta to leave the roundabout (cmd->delta) is less than delta to stay in roundabout (dtsir), + * we're exiting to the left, so we're probably in a clockwise roundabout, and vice versa */ + if (cmd->delta < dtsir) + cmd->maneuver->type = l; + else + cmd->maneuver->type = r; + dbg(lvl_debug,"type %s\n", item_to_name(cmd->maneuver->type)); } + +/** + * @brief Creates a new {@code struct navigation_command} for a maneuver. + * + * This function creates a new command and inserts it into the command list of {@code this_}. + * It also parses {@code maneuver} and sets its {@code type} appropriately so that other + * functions can rely on that. + * + * @param this_ The navigation object + * @param itm The navigation item following the maneuver + * @param maneuver The {@code struct navigation_maneuver} returned by {@code maneuver_required2()}. For the destination, + * initialize a zeroed-out {@code struct navigation_maneuver} and set its {@code type} member to {@code type_nav_destination} + * prior to calling this function. + * + * @return The new command + */ static struct navigation_command * -command_new(struct navigation *this_, struct navigation_itm *itm, int delta) +command_new(struct navigation *this_, struct navigation_itm *itm, struct navigation_maneuver *maneuver) { struct navigation_command *ret=g_new0(struct navigation_command, 1); - dbg(1,"enter this_=%p itm=%p delta=%d\n", this_, itm, delta); - ret->delta=delta; + struct navigation_way *w; /* the way in which to turn. */ + int more_ways_for_strength = 0; /* Counts the number of ways of the current node that turn + to the same direction as the route way. Strengthening criterion. */ + int turn_no_of_route_way = 0; /* The number of the route way of all ways that turn to the same direction. + Count direction from abs(0 degree) up to abs(180 degree). Strengthening criterion. */ + + dbg(lvl_debug,"enter this_=%p itm=%p maneuver=%p delta=%d\n", this_, itm, maneuver, maneuver->delta); + ret->maneuver = maneuver; + ret->delta=maneuver->delta; ret->itm=itm; - if (itm && itm->prev && itm->way.next && itm->prev->way.next && !(itm->way.flags & AF_ROUNDABOUT) && (itm->prev->way.flags & AF_ROUNDABOUT)) { - int len=0; - int angle=0; - int entry_angle; - struct navigation_itm *itm2=itm->prev; - int exit_angle=angle_median(itm->prev->angle_end, itm->way.next->angle2); - dbg(1,"exit %d median from %d,%d\n", exit_angle,itm->prev->angle_end, itm->way.next->angle2); - while (itm2 && (itm2->way.flags & AF_ROUNDABOUT)) { - len+=itm2->length; - angle=itm2->angle_end; - itm2=itm2->prev; - } - if (itm2 && itm2->next && itm2->next->way.next) { - itm2=itm2->next; - entry_angle=angle_median(angle_opposite(itm2->way.angle2), itm2->way.next->angle2); - dbg(1,"entry %d median from %d(%d),%d\n", entry_angle,angle_opposite(itm2->way.angle2), itm2->way.angle2, itm2->way.next->angle2); + + /* Possible maneuver types: + * nav_none (default, change wherever we encounter it – unless the maneuver is a merge, which has only merge_or_exit) + * nav_straight (set below) + * nav_keep_{left|right} (set below) + * nav_{right|left}_{1..3} (set below) + * nav_turnaround (TODO: when we have a U turn without known direction? Needs full implementation!) + * nav_turnaround_{left|right} (set below) + * nav_roundabout_{r|l}{1..8} (set below, special handling) + * nav_exit_{left|right} (do not set here) + * nav_merge_{left|right} (do not set here) + * nav_destination (if this is set, leave it) + * nav_position (do not set here) + */ + + if (ret->maneuver->type != type_nav_destination) { + /* FIXME: this will not catch cases in which entry and exit share the same node and we just *touch* the roundabout */ + if (itm && itm->prev && !(itm->way.flags & AF_ROUNDABOUT) && (itm->prev->way.flags & AF_ROUNDABOUT)) { + navigation_analyze_roundabout(this_, ret, itm); } else { - entry_angle=angle_opposite(angle); + /* non-roundabout turn --> */ + + /* set ret->maneuver->type */ + if (abs(ret->delta) >= min_turn_limit) { + + /* Strengthening criterion: If there are more ways in the same direction, in which the vehicle can turn, + the announcement shall be more precise. I.e. the strengthening is dependent on which of the possible ways + the route turn shall be. So, with the selection of one of the possible ways a certain turn angle pattern + becomes active. + Second criterion: the turn angle of the route way defines the strengthening of the announcement according + to the pattern. */ + w = itm->next->way.next; + + if (angle_delta(itm->next->way.angle2,itm->angle_end) < 0) { /* next turns or bends left */ + while (w) { + if (angle_delta(w->angle2,itm->angle_end) < -min_turn_limit) { + more_ways_for_strength++; /* there is an additional way that also turns left. + Note: the route turn is not contained + Left means more than min_turn_limit, less is straight on */ + if (angle_delta(w->angle2,itm->angle_end) < ret->delta) + turn_no_of_route_way++; /* this way is on the left side of the route way */ + } + w = w->next; + } + } else { /* next turns or bends right. Same investigation, but mirrored. */ + while (w) { + if (angle_delta(w->angle2,itm->angle_end) > min_turn_limit) { + more_ways_for_strength++; + if (angle_delta(w->angle2,itm->angle_end) > ret->delta) + turn_no_of_route_way++; /* this way is on the right side of the route way */ + } + w = w->next; + } + } + + + /* Investigate the strengthening of announcement. */ + switch (more_ways_for_strength) { + case 0: + /* Only one possibility to turn to this direction */ + if (ret->delta < -sharp_turn_limit) { + ret->maneuver->type = type_nav_left_3; /* strongly left */ + } else if (ret->delta <= 0) { + ret->maneuver->type = type_nav_left_2; /* normally left */ + } else if (ret->delta <= sharp_turn_limit) { + ret->maneuver->type = type_nav_right_2;/* normally right */ + } else { + ret->maneuver->type = type_nav_right_3;/* strongly right */ + } + break; + case 1: + /* One additional possibility to turn to the same direction */ + if (turn_no_of_route_way == 0) { + /* the route is less strong to turn */ + if (ret->delta < -turn_2_limit) { + ret->maneuver->type = type_nav_left_2; /* normally left */ + } else if (ret->delta <= 0) { + ret->maneuver->type = type_nav_left_1; /* easily left */ + } else if (ret->delta <= turn_2_limit) { + ret->maneuver->type = type_nav_right_1; /* easily right */ + } else { + ret->maneuver->type = type_nav_right_2; /* normally right */ + } + } else { + if (ret->delta < -sharp_turn_limit) { + ret->maneuver->type = type_nav_left_3; /* strongly left */ + } else if (ret->delta <= 0) { + ret->maneuver->type = type_nav_left_2; /* normally left */ + } else if (ret->delta <= sharp_turn_limit) { + ret->maneuver->type = type_nav_right_2; /* normally right */ + } else { + ret->maneuver->type = type_nav_right_3; /* strongly right */ + } + } + break; + default: + /* Two or more additional possibilities to turn to the same direction. */ + if (turn_no_of_route_way == 0) { + if (ret->delta < -turn_2_limit) { + ret->maneuver->type = type_nav_left_2; /* normally left */ + } else if (ret->delta <= 0) { + ret->maneuver->type = type_nav_left_1; /* easily left */ + } else if (ret->delta <= turn_2_limit) { + ret->maneuver->type = type_nav_right_1; /* easily right */ + } else { + ret->maneuver->type = type_nav_right_2; /* normally right */ + } + } + else if (turn_no_of_route_way == 1) { + if (ret->delta < -sharp_turn_limit) { + ret->maneuver->type = type_nav_left_3; /* strongly left */ + } else if (ret->delta <= 0) { + ret->maneuver->type = type_nav_left_2; /* normally left */ + } else if (ret->delta <= sharp_turn_limit) { + ret->maneuver->type = type_nav_right_2; /* normally right */ + } else { + ret->maneuver->type = type_nav_right_3; /* strongly right */ + } + } + else if (turn_no_of_route_way > 1) { + /* if the route is the strongest of all possible turns here */ + if (ret->delta < -u_turn_limit) { + ret->maneuver->type = type_nav_turnaround_left; /* turn around left */ + } else if (ret->delta < -sharp_turn_limit) { + ret->maneuver->type = type_nav_left_3; /* strongly left */ + } else if (ret->delta <= 0) { + ret->maneuver->type = type_nav_left_2; /* normally left */ + } else if (ret->delta <= sharp_turn_limit) { + ret->maneuver->type = type_nav_right_2; /* normally right */ + } else if (ret->delta <= u_turn_limit) { + ret->maneuver->type = type_nav_right_3; /* strongly right */ + } else { + ret->maneuver->type = type_nav_turnaround_right; /* turn around right */ + } + } + break; + } + } else { + /* if the route goes straight: + * If there's another way on one side of the route within 2 * min_turn_limit (not both - the expression below is a logical XOR), + * the maneuver is "keep left" or "keep right", else it is "go straight". + * Note that neighbors are not necessarily straight. + * The boundary may need some tweaking, (2 * min_turn_limit) may not be ideal but it's a first shot which ensures that other straight ways + * will always fulfill the neighbor criteria. */ + int has_left_neighbor = (ret->maneuver->left - ret->delta > 2 * -min_turn_limit); + int has_right_neighbor = (ret->maneuver->right - ret->delta < 2 * min_turn_limit); + if (!(has_left_neighbor) != !(has_right_neighbor)) { + if (has_left_neighbor) + ret->maneuver->type = type_nav_keep_right; + else + ret->maneuver->type = type_nav_keep_left; + } else + ret->maneuver->type = type_nav_straight; + } /* endif ret->delta */ } - dbg(0,"entry %d exit %d\n", entry_angle, exit_angle); - ret->roundabout_delta=angle_delta(entry_angle, exit_angle); - ret->length=len+roundabout_extra_length; } + if (this_->cmd_last) { this_->cmd_last->next=ret; ret->prev = this_->cmd_last; @@ -1394,25 +2850,34 @@ return ret; } + +/** + * @brief Creates turn instructions where needed + * + * @param this_ The navigation object for which to create turn instructions + * @param route Not used + */ static void make_maneuvers(struct navigation *this_, struct route *route) { struct navigation_itm *itm, *last=NULL, *last_itm=NULL; - int delta; + struct navigation_maneuver *maneuver; itm=this_->first; this_->cmd_last=NULL; this_->cmd_first=NULL; while (itm) { if (last) { - if (maneuver_required2(this_, last_itm, itm,&delta,NULL)) { - command_new(this_, itm, delta); + if (maneuver_required2(this_, last_itm, itm, &maneuver)) { + command_new(this_, itm, maneuver); } } else last=itm; last_itm=itm; itm=itm->next; } - command_new(this_, last_itm, 0); + maneuver = g_new0(struct navigation_maneuver, 1); + maneuver->type = type_nav_destination; + command_new(this_, last_itm, maneuver); } static int @@ -1425,6 +2890,8 @@ return !navit_utf8_strcasecmp(name+strlen(name)-strlen(suffix), suffix); } + + static char * replace_suffix(char *name, char *search, char *replace) { @@ -1439,86 +2906,132 @@ return ret; } + + +/** + * @brief Creates a text description for the destination of a maneuver, which can be used in announcements. + * + * @param nav The navigation object + * @param cmd The {@code navigation_command} for which to generate an announcement + * @param next The current navigation item. In speech mode this should be set to the navigation + * item starting at the vehicle's current position; in route description mode this should be set to + * the {@code navigation_item} associated with the previous {@code navigation_command} + * @param prefix A space will be added as a prefix to the string returned, or a null string for no prefix + */ static char * -navigation_item_destination(struct navigation *nav, struct navigation_itm *itm, struct navigation_itm *next, char *prefix) +navigation_item_destination(struct navigation *nav, struct navigation_command *cmd, struct navigation_itm *next, char *prefix) { - char *ret=NULL,*name1,*sep,*name2; - char *n1,*n2; - int i,sex; - int vocabulary1=65535; - int vocabulary2=65535; + char *ret = NULL, *name1 = NULL, *sep = "", *name2 = ""; + char *name = NULL, *name_systematic=NULL; + int i, gender = unknown; + int vocabulary1=1; + int vocabulary2=1; struct attr attr; + struct navigation_itm *itm = cmd->itm; + struct navigation_itm *itm_pre = NULL; + struct navigation_itm *itm_post = NULL; if (! prefix) prefix=""; + /* check the configuration of navit.xml */ if (nav->speech && speech_get_attr(nav->speech, attr_vocabulary_name, &attr, NULL)) - vocabulary1=attr.u.num; + vocabulary1=attr.u.num; /* shall the street name be announced? */ if (nav->speech && speech_get_attr(nav->speech, attr_vocabulary_name_systematic, &attr, NULL)) - vocabulary2=attr.u.num; - n1=itm->way.name1; - n2=itm->way.name2; - if (!vocabulary1) - n1=NULL; - if (!vocabulary2) - n2=NULL; - if(!n1 && !n2 && itm->way.item.type == type_ramp && vocabulary2) { - dbg(1,">> Next is ramp %x current is %x \n", itm->way.item.type, next->way.item.type); - - if(next->way.item.type == type_ramp) - return NULL; - if(itm->way.item.type == type_highway_city || itm->way.item.type == type_highway_land ) - return g_strdup_printf("%s%s",prefix,_("exit")); /* %FIXME Can this even be reached? */ - else - return g_strdup_printf("%s%s",prefix,_("into the ramp")); - - } - if (!n1 && !n2) - return NULL; - if (n1) { - sex=-1; - name1=NULL; - for (i = 0 ; i < sizeof(suffixes)/sizeof(suffixes[0]) ; i++) { - if (contains_suffix(n1,suffixes[i].fullname)) { - sex=suffixes[i].sex; - name1=g_strdup(n1); + vocabulary2=attr.u.num; /* shall the systematic name be announced? */ + + /* On motorway links don't announce the name of the ramp as this is done by name_systematic and the street_destination. */ + if (vocabulary1 && (itm->way.item.type != type_ramp)) + name=itm->way.name; + + if (vocabulary2) + name_systematic=itm->way.name_systematic; + + if (name) { + name1 = g_strdup(name); + for (i = 0; i < sizeof(suffixes)/sizeof(suffixes[0]); i++) { + if (contains_suffix(name, suffixes[i].fullname)) { + gender = suffixes[i].gender; + g_free(name1); + name1 = g_strdup(name); break; } - if (contains_suffix(n1,suffixes[i].abbrev)) { - sex=suffixes[i].sex; - name1=replace_suffix(n1, suffixes[i].abbrev, suffixes[i].fullname); + if (contains_suffix(name, suffixes[i].abbrev)) { + gender = suffixes[i].gender; + g_free(name1); + name1 = replace_suffix(name, suffixes[i].abbrev, suffixes[i].fullname); break; } } - if (n2) { - name2=n2; + if (name_systematic) { + name2 = name_systematic; sep=" "; - } else { - name2=""; - sep=""; } - switch (sex) { - case -1: + } else + name1 = g_strdup(""); + + if (cmd->maneuver && cmd->maneuver->type && (cmd->maneuver->merge_or_exit & mex_merge)) { + if (name_systematic) + /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name */ + ret = g_strdup_printf(_("%1$sonto the %2$s%3$s%4$s"), prefix, name_systematic, sep, name1); + else if (name) + switch (gender) { + case unknown: + /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name */ + ret = g_strdup_printf(_("%1$sonto %2$s"), prefix, name1); + break; + case masculine: + /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included */ + ret=g_strdup_printf(_("%1$sonto %2$s|masculine form"), prefix, name1); + break; + case feminine: + /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included */ + ret=g_strdup_printf(_("%1$sonto %2$s|feminine form"), prefix, name1); + break; + case neuter: + /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included */ + ret=g_strdup_printf(_("%1$sonto %2$s|neuter form"), prefix, name1); + break; + } + else ret = g_strdup(""); + } else if (!name && !name_systematic && itm->way.item.type == type_ramp && (!cmd->maneuver || (cmd->maneuver->merge_or_exit != mex_interchange))) { + itm_pre = itm->prev; + while (itm_pre && (itm_pre->way.item.type == type_ramp)) + itm_pre = itm_pre->prev; + itm_post = itm->next; + while (itm_post && (itm_post->way.item.type == type_ramp) && (!cmd->next || (itm_post != cmd->next->itm))) + itm_post = itm_post->next; + if (((itm_post) && is_motorway_like(&(itm_post->way), 0)) + && ((itm_pre) && !is_motorway_like(&(itm_pre->way), 0))) + /* TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. */ + ret = g_strdup_printf("%s%s",prefix,_("onto the motorway ramp")); /* This is only announced when there is no additional info about the ramp and the ramp leads to a motorway. */ + else + ret = g_strdup(""); + } else if (!name && !name_systematic) + ret = g_strdup(""); + else if (name) { + switch (gender) { + case unknown: /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name */ - ret=g_strdup_printf(_("%sinto the street %s%s%s"),prefix,n1, sep, name2); + ret=g_strdup_printf(_("%sinto %s%s%s"), prefix, name, sep, name2); break; - case 1: - /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included */ - ret=g_strdup_printf(_("%sinto the %s%s%s|male form"),prefix,name1, sep, name2); + case masculine: + /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included */ + ret=g_strdup_printf(_("%sinto %s%s%s|masculine form"), prefix, name1, sep, name2); break; - case 2: - /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included */ - ret=g_strdup_printf(_("%sinto the %s%s%s|female form"),prefix,name1, sep, name2); + case feminine: + /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included */ + ret=g_strdup_printf(_("%sinto %s%s%s|feminine form"), prefix, name1, sep, name2); break; - case 3: - /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included */ - ret=g_strdup_printf(_("%sinto the %s%s%s|neutral form"),prefix,name1, sep, name2); + case neuter: + /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included */ + ret=g_strdup_printf(_("%sinto %s%s%s|neuter form"), prefix, name1, sep, name2); break; } - g_free(name1); - + } else /* TRANSLATORS: gives the name of the next road to turn into (into the E17) */ - ret=g_strdup_printf(_("%sinto the %s"),prefix,n2); + ret=g_strdup_printf(_("%sinto the %s"),prefix,name_systematic); + g_free(name1); name1=ret; while (name1 && *name1) { switch (*name1) { @@ -1530,290 +3043,575 @@ break; default: name1++; + break; } } return ret; } + +/** + * @brief Formats the exit ref and name for display and speech output + * + * This function takes the navigation command for a motorway maneuver (exit or interchange) and + * returns a string describing the exit. + * + * If the exit has a name and ref and the name is different from {@code street_destination_announce}, + * a string of the form "ref name" is returned. If only one of the two is different from NULL, it + * is returned unchanged. + * + * If the name matches {@code street_destination_announce}, it is always treated as if it were NULL. + * This prevents redundancy in announcements. + * + * No checks are done that the maneuver actually has the appropriate merge_or_exit flags set. The + * caller is responsible for performing such checks prior to calling this function. + * + * @param this_ The navigation command + * @param street_destination_announce The name of the street following the maneuver. This argument + * may be NULL, in which case the exit name will not be suppressed. + */ static char * -show_maneuver(struct navigation *nav, struct navigation_itm *itm, struct navigation_command *cmd, enum attr_type type, int connect) +navigation_cmd_get_exit_announce(struct navigation_command *this_, char *street_destination_announce) { + char * ret = NULL; + char *folded_exit_label=NULL; + char *folded_street_destination_announce=NULL; + + if (this_->itm->way.exit_label) { + folded_exit_label = linguistics_casefold(this_->itm->way.exit_label); + if (street_destination_announce) + folded_street_destination_announce = linguistics_casefold(street_destination_announce); + else + folded_street_destination_announce = g_strdup(""); + + if (!strstr(folded_street_destination_announce, folded_exit_label)) { /* No redundancy? */ + if (this_->itm->way.exit_ref) + ret = g_strdup_printf("%1$s %2$s", this_->itm->way.exit_ref, this_->itm->way.exit_label); + else + ret = g_strdup_printf("%1$s", this_->itm->way.exit_label); + } else if (this_->itm->way.exit_ref) + ret = g_strdup_printf("%1$s", this_->itm->way.exit_ref); + + } else { + if (this_->itm->way.exit_ref) + ret = g_strdup_printf("%1$s", this_->itm->way.exit_ref); + } + + g_free(folded_exit_label); + g_free(folded_street_destination_announce); + + return ret; +} + + +/** + * @brief Creates turn by turn guidance sentences for the speech and for the route description + * + * @param nav The navigation object + * @param itm The current navigation item, which is used to determine the distance to the next + * maneuver. In speech mode this should be set to the navigation item starting at the vehicle's + * current position; in route description mode this should be set to the {@code navigation_item} + * associated with the previous {@code navigation_command} + * @param cmd The {@code navigation_command} for which to generate an announcement + * @param type The type of announcements to generate. Set to {@code attr_navigation_long_exact} + * to avoid rounding distances, or to {@code attr_navigation_speech} to avoid announcing street + * names more than once + * @param connect Whether this is the second of two connected announcements, as in "turn left + * in..., then turn right" + */ +static char * +show_maneuver(struct navigation *nav, struct navigation_itm *itm, struct navigation_command *cmd, enum attr_type type, enum announcement_level level) { - /* TRANSLATORS: right, as in 'Turn right' */ - const char *dir=_("right"),*strength=""; + int distance=itm->dest_length-cmd->itm->dest_length; - char *d,*ret=NULL; - int delta=cmd->delta; - int level; - int strength_needed; - int skip_roads; + char *d=NULL,*ret=NULL; + char *street_destination_announce=NULL; + int skip_roads = 0; int count_roundabout; struct navigation_itm *cur; - struct navigation_way *w; - - if (connect) { - level = -2; // level = -2 means "connect to another maneuver via 'then ...'" - } else { - level=1; - } + struct navigation_way *candidate_way; + int tellstreetname = 0; + char *at = NULL; /* Motorway junction name */ + char *direction = NULL; /* The direction-dependent part of the maneuver */ + char *destination = NULL; + char *street_destination = NULL; + char *instruction = NULL; + char *strength = NULL; /* Strength of turn like 'easily', 'strongly', etc. */ - w = itm->next->way.next; - strength_needed = 0; - if (angle_delta(itm->next->way.angle2,itm->angle_end) < 0) { - while (w) { - if (angle_delta(w->angle2,itm->angle_end) < 0) { - strength_needed = 1; - break; - } - w = w->next; - } - } else { - while (w) { - if (angle_delta(w->angle2,itm->angle_end) > 0) { - strength_needed = 1; - break; - } - w = w->next; - } - } - if (delta < 0) { - /* TRANSLATORS: left, as in 'Turn left' */ - dir=_("left"); - delta=-delta; - } - - if (strength_needed) { - if (delta < 45) { - /* TRANSLATORS: Don't forget the ending space */ - strength=_("easily "); - } else if (delta < 105) { - strength=""; - } else if (delta < 165) { - /* TRANSLATORS: Don't forget the ending space */ - strength=_("strongly "); - } else if (delta < 180) { - /* TRANSLATORS: Don't forget the ending space */ - strength=_("really strongly "); - } else { - dbg(1,"delta=%d\n", delta); - /* TRANSLATORS: Don't forget the ending space */ - strength=_("unknown "); - } - } - if (type != attr_navigation_long_exact) + if (type != attr_navigation_long_exact) distance=round_distance(distance); + if (type == attr_navigation_speech) { if (nav->turn_around && nav->turn_around == nav->turn_around_limit) { - navigation_set_turnaround(nav, nav->turn_around_count+1); - return g_strdup(_("When possible, please turn around")); + if (level == level_connect) { + return g_strdup(""); /* there is no ',then turn around' */ + } else { + navigation_set_turnaround(nav, nav->turn_around_count+1); + return g_strdup(_("When possible, please turn around")); + } } navigation_set_turnaround(nav, 0); - if (!connect) { - level=navigation_get_announce_level_cmd(nav, itm, cmd, distance-cmd->length); - } - dbg(1,"distance=%d level=%d type=0x%x\n", distance, level, itm->way.item.type); + dbg(lvl_debug,"distance=%d level=%d type=0x%x\n", distance, level, itm->way.item.type); } - if (cmd->itm->prev->way.flags & AF_ROUNDABOUT) { + + street_destination=select_announced_destinations(cmd); + if (street_destination) + if (level == level_connect) { + /* for the connected announcement suppress the destination, if this is the same as in the first part of the announcement */ + if (cmd->prev) { + char *street_destination_previous = select_announced_destinations(cmd->prev); + if (street_destination_previous && strstr(street_destination_previous, street_destination)) { /* doesn't have any new information? */ + street_destination_announce=g_strdup(""); + } else { + /* TRANSLATORS: the argument is the destination to follow */ + street_destination_announce=g_strdup_printf(_("towards %s"),street_destination); + } + g_free(street_destination_previous); + } else { + street_destination_announce=g_strdup_printf(_("towards %s"),street_destination); + } + } else { + street_destination_announce=g_strdup_printf(_("towards %s"),street_destination); + } + else street_destination_announce=g_strdup(""); + g_free(street_destination); + + if (cmd->itm->prev->way.flags & AF_ROUNDABOUT) + { cur = cmd->itm->prev; count_roundabout = 0; - while (cur && (cur->way.flags & AF_ROUNDABOUT)) { - if (cur->next->way.next && is_way_allowed(nav,cur->next->way.next,3)) { // If the next segment has no exit or the exit isn't allowed, don't count it - count_roundabout++; + while (cur && (cur->way.flags & AF_ROUNDABOUT)) + { + candidate_way=cur->next->way.next; + while (candidate_way) + { + if (candidate_way && is_way_allowed(nav,candidate_way,3)) + /* If the next segment has no exit or the exit isn't allowed, don't count it */ + { + count_roundabout++; + /* As soon as we have an allowed one on this node, + * stop further counting for this node. + */ + break; + } + candidate_way=candidate_way->next; } cur = cur->prev; } - switch (level) { - case 2: - return g_strdup(_("Enter the roundabout soon")); - case 1: - d = get_distance(nav, distance, type, 0); - /* TRANSLATORS: %s is the distance to the roundabout */ - ret = g_strdup_printf(_("Enter the roundabout %s"), d); - g_free(d); - return ret; - case -2: - return g_strdup_printf(_("then leave the roundabout at the %s"), get_exit_count_str(count_roundabout)); - case 0: - return g_strdup_printf(_("Leave the roundabout at the %s"), get_exit_count_str(count_roundabout)); - } - } - switch(level) { - case 3: - d=get_distance(nav, distance, type, 1); - ret=g_strdup_printf(_("Follow the road for the next %s"), d); - g_free(d); - return ret; - case 2: - d=g_strdup(_("soon")); - break; - case 1: - d=get_distance(nav, distance, attr_navigation_short, 0); - break; - case 0: - skip_roads = count_possible_turns(nav,cmd->prev?cmd->prev->itm:nav->first,cmd->itm,cmd->delta); - if (skip_roads > 0 && cmd->itm->next) { - if (get_count_str(skip_roads+1)) { - /* TRANSLATORS: First argument is the how manieth street to take, second the direction */ - ret = g_strdup_printf(_("Take the %1$s road to the %2$s"), get_count_str(skip_roads+1), dir); - return ret; - } else { - d = g_strdup_printf(_("after %i roads"), skip_roads); + /*try to figure out if the entry node has a usable exit as well + * + * this will fail for left-hand driving areas + */ + if (cur && cur->next) + { + candidate_way=cur->next->way.next; + while (candidate_way) + { + if (candidate_way && is_way_allowed(nav,candidate_way,3) + /*&& (angle_delta(cur->angle_end,candidate_way->angle2) > 0) && ( angle_delta(candidate_way->angle2,cur->next->way.angle2) < 0 )*/) + /*for right-hand traffic, exits should be to the right anyway to allow smooth turns, so leave this out until we find a counterexample :)*/ + { + count_roundabout++; + /* As soon as we have an allowed one on this node, + * stop further counting for this node. + */ + break; + } + candidate_way=candidate_way->next; } - } else { - d=g_strdup(_("now")); } - break; - case -2: - skip_roads = count_possible_turns(nav,cmd->prev->itm,cmd->itm,cmd->delta); - if (skip_roads > 0) { - /* TRANSLATORS: First argument is the how manieth street to take, second the direction */ - if (get_count_str(skip_roads+1)) { - ret = g_strdup_printf(_("then take the %1$s road to the %2$s"), get_count_str(skip_roads+1), dir); - return ret; - } else { - d = g_strdup_printf(_("after %i roads"), skip_roads); - } - } else { - d = g_strdup(""); + switch (level) + { + case level_follow: + d=get_distance_str(nav, distance, type, 1); + return g_strdup_printf(_("Follow the road for the next %s"), d); + case level_soon: + return g_strdup(_("Enter the roundabout soon")); + case level_meters: + d = get_distance_str(nav, distance, attr_navigation_short, 0); + /* TRANSLATORS: %s is the distance to the roundabout */ + ret = g_strdup_printf(_("Enter the roundabout %s"), d); + g_free(d); + return ret; + case level_connect: + return g_strdup(_("then enter the roundabout")); + case level_now: + /* TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow */ + return g_strdup_printf(_("Leave the roundabout at the %1$s %2$s"), get_exit_count_str(count_roundabout),street_destination_announce); + default : + dbg(lvl_error,"unexpected announcement level %d\n", level); + return g_strdup_printf("internal error"); } - break; - default: - d=g_strdup(_("error")); } - if (cmd->itm->next) { - int tellstreetname = 0; - char *destination = NULL; - - if(type == attr_navigation_speech) { // In voice mode - // In Voice Mode only tell the street name in level 1 or in level 0 if level 1 - // was skipped - - if (level == 1) { // we are close to the intersection - cmd->itm->streetname_told = 1; // remeber to be checked when we turn - tellstreetname = 1; // Ok so we tell the name of the street - } - - if (level == 0) { - if(cmd->itm->streetname_told == 0) // we are right at the intersection - tellstreetname = 1; - else - cmd->itm->streetname_told = 0; // reset just in case we come to the same street again + + if (cmd->maneuver && cmd->maneuver->type) + { + if (cmd->itm->next) + { + if(type == attr_navigation_speech) + { /* In voice mode */ + /* In Voice Mode only tell the street name in level_meters or in level_ if level 1 was skipped */ + if (level == level_meters) + { /* we are close to the intersection */ + cmd->itm->streetname_told = 1; /* remember to be checked when we turn */ + tellstreetname = 1; /* Ok, so we tell the name of the street */ + } + else if (level == level_now) + { + if(cmd->itm->streetname_told == 0) /* we are right at the intersection */ + tellstreetname = 1; + else + cmd->itm->streetname_told = 0; /* reset just in case we come to the same street again */ + } + else if (level == level_connect) + { + tellstreetname = 1; + } } + else + tellstreetname = 1; + } + + switch (level) + { + case level_soon : + d=g_strdup(_("soon")); + break; + case level_meters : + d=get_distance_str(nav, distance, attr_navigation_short, 0); + break; + case level_now : + d=g_strdup(_("now")); + break; + case level_connect : + d=g_strdup(_("then")); + break; + default : + d = g_strdup(""); + break; } - else - tellstreetname = 1; - if(nav->tell_street_name && tellstreetname) - destination=navigation_item_destination(nav, cmd->itm, itm, " "); + if (tellstreetname) + destination=navigation_item_destination(nav, cmd, itm, " "); + else destination = g_strdup(""); + + if (!(cmd->maneuver->merge_or_exit == mex_none )) + { + char *exit_announce=NULL; + + /* interchange or exit announcement shall be a long distance information only. + But if so, exit_label shall not be announced in case it is a substring + of destination info to avoid redundancy and not let the sentence become too long. + Otherwise, if there is no additional destination info, just say it at level_meters. */ + if ((level == level_soon) || ((level == level_meters) && (!street_destination_announce && !destination)) || (type != attr_navigation_speech)) { + exit_announce = navigation_cmd_get_exit_announce(cmd, street_destination_announce); + } - if (level != -2) { - /* TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' */ - ret=g_strdup_printf(_("Turn %1$s%2$s %3$s%4$s"), strength, dir, d, destination ? destination:""); - } else { - /* TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination */ - ret=g_strdup_printf(_("then turn %1$s%2$s %3$s%4$s"), strength, dir, d, destination ? destination:""); + switch (cmd->maneuver->merge_or_exit) + { + case mex_merge_left: + case mex_merge_right: + if (cmd->maneuver->merge_or_exit == mex_merge_right) { + if (level == level_connect) + /* TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. */ + instruction = g_strdup_printf(_("then merge%1$s|right"), destination); + else + /* TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. */ + instruction = g_strdup_printf(_("Merge %1$s%2$s|right"), d, destination); + } else { + if (level == level_connect) + /* TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. */ + instruction = g_strdup_printf(_("then merge%1$s|left"), destination); + else + /* TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. */ + instruction = g_strdup_printf(_("Merge %1$s%2$s|left"), d, destination); + } + break; + case mex_exit_left: + case mex_exit_right: + direction = (cmd->maneuver->merge_or_exit == mex_exit_left) ? + g_strdup(_("on your left")) : + g_strdup(_("on your right")); + if (exit_announce) + /* TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance */ + instruction = g_strdup_printf(_("Take exit %1$s %2$s %3$s"), exit_announce, direction, d); + else + /* TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination */ + instruction = g_strdup_printf(_("Take the exit %1$s %2$s%3$s"), direction, d, destination); + + break; + } + + if (!instruction && exit_announce) { + /* TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" */ + at = g_strdup_printf(" %1$s %2$s", cmd->maneuver->merge_or_exit == mex_interchange ? (_("at interchange")) : (_( "at exit")), + exit_announce ? exit_announce : ""); + } + g_free(exit_announce); } - g_free(destination); - } else { - if (!connect) { - ret=g_strdup_printf(_("You have reached your destination %s"), d); - } else { - ret=g_strdup(_("then you have reached your destination.")); + if (!instruction) { + if (!at) + at = g_strdup(""); + switch (cmd->maneuver->type) { + case type_nav_straight : + if (level == level_connect) + /* TRANSLATORS: the arg. is where to do the maneuver */ + instruction = g_strdup_printf(_("then continue straight%1$s"), at); + else + /* TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination */ + instruction = g_strdup_printf(_("Continue straight %1$s%2$s%3$s"), d, at, destination); + break; + case type_nav_keep_right : + if (level == level_connect) + /* TRANSLATORS: the arg. is where to do the maneuver */ + instruction = g_strdup_printf(_("then keep right%1$s"), at); + else + /* TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination */ + instruction = g_strdup_printf(_("Keep right %1$s%2$s%3$s"), d, at, destination); + break; + case type_nav_keep_left : + if (level == level_connect) + /* TRANSLATORS: the arg. is where to do the maneuver */ + instruction = g_strdup_printf(_("then keep left%1$s"), at); + else + /* TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination */ + instruction = g_strdup_printf(_("Keep left %1$s%2$s%3$s"), d, at, destination); + break; + case type_nav_right_1 : + case type_nav_right_2 : + case type_nav_right_3 : + case type_nav_left_1 : + case type_nav_left_2 : + case type_nav_left_3 : + /* generic turn case */ + switch (cmd->maneuver->type) { + case type_nav_right_1 : + case type_nav_right_2 : + case type_nav_right_3 : + /* TRANSLATORS: "right" as in "turn right" */ + direction = g_strdup(_("right")); + if (level == level_now) + skip_roads = count_possible_turns(nav, cmd->prev ? cmd->prev->itm : nav->first, cmd->itm, 90); + else if (level == level_connect) + /* Robotaxi: todo - must tidy up skip_roads == -1 issue */ + skip_roads = count_possible_turns(nav, itm->next ? itm->next : itm, cmd->itm, 90); + break; + case type_nav_left_1 : + case type_nav_left_2 : + case type_nav_left_3 : + /* TRANSLATORS: "left" as in "turn left" */ + direction = g_strdup(_("left")); + if (level == level_now) + skip_roads = count_possible_turns(nav, cmd->prev ? cmd->prev->itm : nav->first, cmd->itm, -90); + else if (level == level_connect) + skip_roads = count_possible_turns(nav, itm->next ? itm->next : itm, cmd->itm, -90); + break; + default: + direction = g_strdup(""); + break; + } + switch (cmd->maneuver->type) { + case type_nav_right_1 : + case type_nav_left_1 : + /* TRANSLATORS: as in "turn easily right" */ + strength = g_strdup(_("easily ")); + break; + case type_nav_right_3 : + case type_nav_left_3 : + /* TRANSLATORS: as in "turn strongly right" */ + strength = g_strdup(_("strongly ")); + break; + default: + strength = g_strdup(""); + break; + } + /* Robotaxi: todo - must tidy up skip_roads == -1 issue */ + if (skip_roads > 0) { + if (skip_roads < 6) { + if (level == level_connect) + instruction = g_strdup_printf(_("then take the %1$s road to the %2$s"), get_count_str(skip_roads+1), direction); + else + instruction = g_strdup_printf(_("Take the %1$s road to the %2$s"), get_count_str(skip_roads+1), direction); + /*and preserve skip_roads to signal that we already have an instruction*/ + } else { + g_free(d); + d=g_strdup_printf(_("after %i roads"),skip_roads); + skip_roads = 0; /*signal an instruction still has to be created*/ + } + } + /* cave: no else - may come from 'if (skip_roads)' above ! */ + if (skip_roads <= 0) { + /* TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination */ + instruction = g_strdup_printf(_("Turn %1$s%2$s %3$s%4$s"), strength, direction, d, destination); + } + break; + case type_nav_turnaround_left: + if (level == level_connect) + /* TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. */ + instruction = g_strdup(_("then make a U-turn|left")); + else + /* TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. */ + instruction = g_strdup_printf(_("Make a U-turn %1$s|left"), d); + break; + case type_nav_turnaround_right: + if (level == level_connect) + /* TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. */ + instruction = g_strdup(_("then make a U-turn|right")); + else + /* TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. */ + instruction = g_strdup_printf(_("Make a U-turn %1$s|right"), d); + break; + case type_nav_none: + /*An empty placeholder that we can use in the future for + * some motorway commands that are now suppressed but we + * can in some cases make it say here : + * 'follow destination blabla' without any further driving instructions, + * in cases where relevant destination info is available. + * Even if there is no driving command to be announced, in some cases + * there is an overhead roadsign in preparation of an upcoming road-split, + * and then we can give useful info to the driver. + * + * UNTESTED ! + * + */ + instruction = g_strdup(_("follow")); + break; + case type_nav_destination: + /* the old code used to clear the route destination when this was the only + * instruction left. Was that useful ? + * Should be tested with the old code what happens if the driver + * 'overshoots' the destination and the route destination is already cleared. + * I suppose it will now keep guiding the user to destination untill another one + * is set or a 'stop navigation' action is done using the gui. + */ + if (level == level_connect) + instruction=g_strdup(_("then you have reached your destination.")); + else + /* TRANSLATORS: the arg. is distance */ + instruction=g_strdup_printf(_("You have reached your destination %s"), d); + break; + default: + dbg(lvl_error,"unhandled instruction\n"); + break; + } } - if (type == attr_navigation_speech && (nav->flags & 1)) - route_set_destination(nav->route, NULL, 0); - } + switch (level) + { + case level_follow: + d=get_distance_str(nav, distance, type, 1); + ret=g_strdup_printf(_("Follow the road for the next %s"), d); + break; + case level_soon: + if (at) /* 'at' contains interchange or exit information that shall not be combined with street_destination_announce */ + ret= g_strdup_printf(("%1$s %2$s"),instruction,""); + else + ret= g_strdup_printf(("%1$s %2$s"),instruction,street_destination_announce); + break; + case level_meters: + case level_connect: + case level_now: + ret= g_strdup_printf(("%1$s %2$s"),instruction,street_destination_announce); + break; + default : + ret= g_strdup_printf(("%1$s %2$s"),instruction,street_destination_announce); + dbg(lvl_error,"unexpected announcement level %d\n", level); + break; + } + + g_free(at); g_free(d); + g_free(destination); + g_free(direction); + g_free(instruction); + g_free(street_destination_announce); + g_free(strength); return ret; + } + /** * @brief Creates announcements for maneuvers, plus maneuvers immediately following the next maneuver * - * This function does create an announcement for the current maneuver and for maneuvers - * immediately following that maneuver, if these are too close and we're in speech navigation. + * This function creates an announcement for the current maneuver and for maneuvers + * immediately following that maneuver, if these are very close and we're in speech navigation. + * The actual announcements are created by calling {@code show_maneuver()}. + * + * @param nav The navigation object + * @param itm The current navigation item, which is used to determine the distance to the next + * maneuver. In speech mode this should be set to the navigation item starting at the vehicle's + * current position; in route description mode this should be set to the {@code navigation_item} + * associated with the previous {@code navigation_command} + * @param cmd The {@code navigation_command} for which to generate an announcement + * @param type The type of announcements to generate. If set to {@code attr_navigation_speech}, + * maneuvers will be grouped ("turn left, then turn right") if we are close to the first maneuver + * and the second maneuver is within a short distance from the first. This parameter is passed to + * {@code show_maneuver()}, where it is evaluated again. See {@code show_maneuver()} for details. * * @return An announcement that should be made */ static char * show_next_maneuvers(struct navigation *nav, struct navigation_itm *itm, struct navigation_command *cmd, enum attr_type type) { - struct navigation_command *cur,*prev; - int distance=itm->dest_length-cmd->itm->dest_length; - int level, i, time; - int speech_time,time2nav; - char *ret,*old,*buf,*next; + int distance = itm->dest_length-cmd->itm->dest_length; /* distance from e.g. current GPS position to next announced turn position */ + enum announcement_level level; + char *ret,*buf,*next; + if (type != attr_navigation_speech) { - return show_maneuver(nav, itm, cmd, type, 0); // We accumulate maneuvers only in speech navigation + return show_maneuver(nav, itm, cmd, type, level_meters); /* We only accumulate maneuvers in speech navigation */ } - level=navigation_get_announce_level(nav, itm->way.item.type, distance-cmd->length); - if (level > 1) { - return show_maneuver(nav, itm, cmd, type, 0); // We accumulate maneuvers only if they are close - } + level = navigation_get_announce_level_cmd(nav, itm, cmd, distance-cmd->length); - if (cmd->itm->told) { + if (level > level_soon) { + /* suppress the 'follow the road..' announcement, if the next 'soon' announcement is just a few meters away, so just quit */ + if ((distance - cmd->length) < (nav->announce[itm->way.item.type - route_item_first][2] + 2 * nav->announce[itm->way.item.type - route_item_first][0])) { + /* a few meters away is defined by two times the distance of the 'now'-distance. */ + return g_strdup(""); + } + } + else if ((level == level_soon) && (itm->told == 1)) { + /* suppress the 'soon' announcement, if the last announcement already concatenated this, so just quit */ return g_strdup(""); } - - ret = show_maneuver(nav, itm, cmd, type, 0); - time2nav = navigation_time(itm,cmd->itm->prev); - old = NULL; - - cur = cmd->next; - prev = cmd; - i = 0; - while (cur && cur->itm) { - // We don't merge more than 3 announcements... - if (i > 1) { // if you change this, please also change the value below, that is used to terminate the loop - break; - } - - next = show_maneuver(nav,prev->itm, cur, type, 0); - if (nav->speech) - speech_time = speech_estimate_duration(nav->speech,next); - else - speech_time = -1; - g_free(next); - - if (speech_time == -1) { // user didn't set cps - speech_time = 30; // assume 3 seconds - } - - time = navigation_time(prev->itm,cur->itm->prev); - - if (time >= (speech_time + 30)) { // 3 seconds for understanding what has been said - break; + else if ((level == level_meters) && (itm->told == 1)) { + /* suppress the 'in xx meters..' announcement, if the 'soon' announcement is just a few meters away, so just quit */ + if ((distance - cmd->length) < (nav->announce[itm->way.item.type - route_item_first][1] + 2 * nav->announce[itm->way.item.type - route_item_first][0])) { + /* a few meters away is defined by two times the distance of the 'now'-distance. */ + return g_strdup(""); } + } - old = ret; - buf = show_maneuver(nav, prev->itm, cur, type, 1); - ret = g_strdup_printf("%s, %s", old, buf); - g_free(buf); - if (nav->speech && speech_estimate_duration(nav->speech,ret) > time2nav) { - g_free(ret); - ret = old; - i = 2; // This will terminate the loop - } else { - g_free(old); - } + ret = show_maneuver(nav, itm, cmd, type, level); + + if (level > level_meters) { + return ret; /* We only concatenate maneuvers that are close each other, so quit here */ + } - // If the two maneuvers are *really* close, we shouldn't tell the second one again, because TTS won't be fast enough - if (time <= speech_time) { - cur->itm->told = 1; + if (cmd->next && cmd->itm) { + /* determine the level of the command that comes immediately after that. */ + enum announcement_level nextlevel = navigation_get_announce_level(nav, cmd->itm->way.item.type, cmd->itm->dest_length - cmd->next->itm->dest_length); + + /* If this level starts with 1 or 0 concatenate the following announcement to the current: */ + if (nextlevel <= level_soon) { + next = show_maneuver(nav, cmd->itm, cmd->next, type, level_connect); + if (*next != '\0') /* is the second announcement not an empty string? */ + { + cmd->itm->told = 1; + buf = ret; + ret = g_strdup_printf("%s, %s", buf, next); /* concatenate both announcements */ + g_free(buf); + } + g_free(next); } - - prev = cur; - cur = cur->next; - i++; - } + } return ret; } @@ -1826,10 +3624,10 @@ if (!this_->cmd_first) return; callback_list_call(this_->callback, 1, &p); - dbg(1,"force_speech=%d turn_around=%d turn_around_limit=%d\n", force_speech, this_->turn_around, this_->turn_around_limit); - distance=round_distance(this_->first->dest_length-this_->cmd_first->itm->dest_length); + dbg(lvl_debug,"force_speech=%d turn_around=%d turn_around_limit=%d\n", force_speech, this_->turn_around, this_->turn_around_limit); + distance=this_->first->dest_length-this_->cmd_first->itm->dest_length; if (this_->turn_around_limit && this_->turn_around == this_->turn_around_limit) { - dbg(1,"distance=%d distance_turn=%d\n", distance, this_->distance_turn); + dbg(lvl_debug,"distance=%d distance_turn=%d\n", distance, this_->distance_turn); while (distance > this_->distance_turn) { this_->level_last=4; level=4; @@ -1847,8 +3645,8 @@ /* only tell if the level is valid for more than 3 seconds */ int speed_distance=this_->first->speed*30/36; if (distance < speed_distance || navigation_get_announce_level_cmd(this_, this_->first, this_->cmd_first, distance-speed_distance) == level) { - dbg(1,"distance %d speed_distance %d\n",distance,speed_distance); - dbg(1,"level %d < %d\n", level, this_->level_last); + dbg(lvl_debug,"distance %d speed_distance %d\n",distance,speed_distance); + dbg(lvl_debug,"level %d < %d\n", level, this_->level_last); this_->level_last=level; force_speech=3; } @@ -1870,85 +3668,208 @@ if (force_speech) { this_->level_last=level; this_->curr_delay=0; - dbg(1,"force_speech=%d distance=%d level=%d type=0x%x\n", force_speech, distance, level, this_->first->way.item.type); + dbg(lvl_debug,"force_speech=%d distance=%d level=%d type=0x%x\n", force_speech, distance, level, this_->first->way.item.type); callback_list_call(this_->callback_speech, 1, &p); } } +/** + * @brief Cleans up and initiates maneuver creation. + * + * This function is called by {@link navigation_update_idle(struct navigation *)} + * after it has retrieved all objects from the route map. + * + * It will reset the navigation object's idle event/callback, deallocate some temporary objects and + * reset the {@code busy} flag. Arguments correspond to those of + * {@link navigation_update_idle(struct navigation *)}. + * + * @param this_ Points to the navigation object. After the function returns, its {@code map_rect} + * member will no longer be valid. + * @param cancel If true, only cleanup (deallocation of objects) will be done and no maneuvers will be generated. + * If false, maneuvers will be generated. + */ +static void +navigation_update_done(struct navigation *this_, int cancel) { + int incr = 0; + struct map_rect *mr = this_->route_mr; + struct attr nav_status; + + if (this_->idle_ev) + event_remove_idle(this_->idle_ev); + if (this_->idle_cb) + callback_destroy(this_->idle_cb); + this_->idle_ev=NULL; + this_->idle_cb=NULL; + + if (!cancel) { + nav_status.type = attr_nav_status; + nav_status.u.num = status_routing; + if (!(this_->status_int & status_has_sitem)) + navigation_destroy_itms_cmds(this_, NULL); + else { + if (!(this_->status_int & status_has_ritem)) { + navigation_itm_new(this_, NULL); + make_maneuvers(this_,this_->route); + } + calculate_dest_distance(this_, incr); + profile(0,"end"); + navigation_call_callbacks(this_, FALSE); + } + navigation_set_attr(this_, &nav_status); + } + /* + * In order to ensure that route_mr holds either NULL or a valid pointer at any given time, + * always pass a copy of it to map_rect_destroy() and set route_mr to NULL prior to calling + * map_rect_destroy(). The reason is that map_rect_destroy() for a route map may indirectly + * call navigation_update(), which will modify the same members. For the same reason, + * status_int must be reset before the call to map_rect_destroy(). + */ + this_->status_int = status_none; + this_->route_mr = NULL; + map_rect_destroy(mr); +} + +/** + * @brief Idle callback function to retrieve items from the route map. + * + * @param this_ Points to the navigation object. The caller is responsible for initializing its + * {@code route_mr} member. After processing completes, the {@code route_mr} member will no longer + * be valid. + */ +static void +navigation_update_idle(struct navigation *this_) { + int count = 100; /* Maximum number of items retrieved in one run of this function. + * This should be set low enough for each pass to complete in less + * than a second even on low-performance devices. */ + struct item *ritem; /* Holds an item from the route map */ + struct item *sitem; /* Holds the item from the actual map which corresponds to ritem */ + struct attr street_item, street_direction; + struct navigation_itm *itm; + + /* Do not use the route_path_flag_cancel flag here because it is also used whenever + * destinations or waypoints change, not just when the user stops navigation altogether + */ + if (!route_has_graph(this_->route)) { + navigation_update_done(this_, 1); + return; + } + + while (count > 0) { + if (!(ritem = map_rect_get_item(this_->route_mr))) { + this_->status_int &= ~(status_has_ritem); + break; + } + this_->status_int |= status_has_ritem; + if ((ritem)->type == type_route_start && this_->turn_around > -this_->turn_around_limit+1) + this_->turn_around--; + if ((ritem)->type == type_route_start_reverse && this_->turn_around < this_->turn_around_limit) + this_->turn_around++; + if ((ritem)->type != type_street_route) + continue; + if ((!(this_->status_int & status_has_sitem)) && item_attr_get(ritem, attr_street_item, &street_item)) { + this_->status_int |= status_has_sitem; + if (!item_attr_get(ritem, attr_direction, &street_direction)) + street_direction.u.num = 0; + sitem = street_item.u.item; + dbg(lvl_debug,"sitem=%p\n", sitem); + itm = item_hash_lookup(this_->hash, sitem); + dbg(lvl_info,"itm for item with id (0x%x,0x%x) is %p\n", sitem->id_hi, sitem->id_lo, itm); + if (itm && itm->way.dir != street_direction.u.num) { + dbg(lvl_info,"wrong direction\n"); + itm = NULL; + } + navigation_destroy_itms_cmds(this_, itm); + if (itm) { + navigation_itm_update(itm, ritem); + break; + } + dbg(lvl_debug,"not on track\n"); + } + navigation_itm_new(this_, ritem); + count--; + } + if (count > 0) { + /* if count > 0, one of the break conditions in the loop was true and we're done */ + navigation_update_done(this_, 0); + return; + } +} + +/** + * @brief Event handler for changes to the route. + * + * This function is added to the callback list of the current route. It is called whenever the + * status of the route changes and will either discard the current list of maneuvers or build a new + * list. + * + * @param this_ The navigation object + * @param route The route + * @param attr The route status attribute + */ static void navigation_update(struct navigation *this_, struct route *route, struct attr *attr) { struct map *map; - struct map_rect *mr; - struct item *ritem; /* Holds an item from the route map */ - struct item *sitem; /* Holds the corresponding item from the actual map */ - struct attr street_item,street_direction; - struct navigation_itm *itm; struct attr vehicleprofile; - int mode=0, incr=0, first=1; + struct attr nav_status; + if (attr->type != attr_route_status) return; - dbg(1,"enter %d\n", mode); - if (attr->u.num == route_status_no_destination || attr->u.num == route_status_not_found || attr->u.num == route_status_path_done_new) + dbg(lvl_debug,"enter\n"); + + nav_status.type = attr_nav_status; + switch(attr->u.num) { + case route_status_not_found: + nav_status.u.num = status_no_route; + break; + case route_status_no_destination: + nav_status.u.num = status_no_destination; + break; + case route_status_destination_set: + nav_status.u.num = status_position_wait; + break; + case route_status_building_path: + case route_status_building_graph: + case route_status_path_done_new: + case route_status_path_done_incremental: + nav_status.u.num = (this_->nav_status >= status_recalculating) ? status_recalculating : status_calculating; + } + navigation_set_attr(this_, &nav_status); + + if (attr->u.num == route_status_no_destination || attr->u.num == route_status_not_found || attr->u.num == route_status_path_done_new) navigation_flush(this_); - if (attr->u.num != route_status_path_done_new && attr->u.num != route_status_path_done_incremental) + if (attr->u.num != route_status_path_done_new && attr->u.num != route_status_path_done_incremental) { + if (this_->status_int & status_busy) { + navigation_update_done(this_, 1); + } return; - + } + if (! this_->route) return; map=route_get_map(this_->route); if (! map) return; - mr=map_rect_new(map, NULL); - if (! mr) + this_->route_mr = map_rect_new(map, NULL); + if (! this_->route_mr) return; if (route_get_attr(route, attr_vehicleprofile, &vehicleprofile, NULL)) this_->vehicleprofile=vehicleprofile.u.vehicleprofile; else this_->vehicleprofile=NULL; - dbg(1,"enter\n"); - while ((ritem=map_rect_get_item(mr))) { - if (ritem->type == type_route_start && this_->turn_around > -this_->turn_around_limit+1) - this_->turn_around--; - if (ritem->type == type_route_start_reverse && this_->turn_around < this_->turn_around_limit) - this_->turn_around++; - if (ritem->type != type_street_route) - continue; - if (first && item_attr_get(ritem, attr_street_item, &street_item)) { - first=0; - if (!item_attr_get(ritem, attr_direction, &street_direction)) - street_direction.u.num=0; - sitem=street_item.u.item; - dbg(1,"sitem=%p\n", sitem); - itm=item_hash_lookup(this_->hash, sitem); - dbg(2,"itm for item with id (0x%x,0x%x) is %p\n", sitem->id_hi, sitem->id_lo, itm); - if (itm && itm->way.dir != street_direction.u.num) { - dbg(2,"wrong direction\n"); - itm=NULL; - } - navigation_destroy_itms_cmds(this_, itm); - if (itm) { - navigation_itm_update(itm, ritem); - break; - } - dbg(1,"not on track\n"); - } - navigation_itm_new(this_, ritem); - } - dbg(2,"turn_around=%d\n", this_->turn_around); - if (first) - navigation_destroy_itms_cmds(this_, NULL); - else { - if (! ritem) { - navigation_itm_new(this_, NULL); - make_maneuvers(this_,this_->route); - } - calculate_dest_distance(this_, incr); - profile(0,"end"); - navigation_call_callbacks(this_, FALSE); + dbg(lvl_debug,"enter\n"); + + this_->status_int = status_busy; + if (route_get_flags(this_->route) & route_path_flag_async) { + this_->idle_cb = callback_new_1(callback_cast(navigation_update_idle), this_); + this_->idle_ev = event_add_idle(50, this_->idle_cb); + } else { + this_->idle_ev = NULL; + this_->idle_cb = NULL; + while (this_->status_int & status_busy) + navigation_update_idle(this_); } - map_rect_destroy(mr); } static void @@ -1968,23 +3889,71 @@ g_free(this_); } +/** + * @brief Registers a new callback function. + * + * Callback functions are called whenever the attribute for which they are registered changes. + * It is possible to register callbacks for {@code attr_any}, which will fire on any change. + * + * The {@code navigation} object has three callback lists. They differ by the arguments which are + * passed to the callback function and are selected based on the attribute type: + *
    + *
  • Callbacks for the {@code navigation_speech} attribute are added to the + * {@code callback_speech} list.
  • + *
  • Callbacks for the {@code navigation_long} attribute are added to the {@code callback} list. + *
  • + *
  • Callbacks for any other attribute, including {@code attr_any}, are added to the list stored + * in the {@code callback_list} attribute. This functionality is inherited from + * {@code navit_object}.
  • + *
+ * + * @param this_ The navigation object. + * @param type The attribute type + * @param cb The callback function + * + * @return true on success, false on failure + */ int navigation_register_callback(struct navigation *this_, enum attr_type type, struct callback *cb) { + struct attr attr_cbl; + if (type == attr_navigation_speech) callback_list_add(this_->callback_speech, cb); - else + else if (type == attr_navigation_long) callback_list_add(this_->callback, cb); + else { + if (navigation_get_attr(this_, attr_callback_list, &attr_cbl, NULL)) + callback_list_add(attr_cbl.u.callback_list, cb); + else + return 0; + } return 1; } +/** + * @brief Unregisters a callback function. + * + * This function removes a previously registered callback function from the callback list to which + * it was added. See the documentation on + * {@link navigation_register_callback(struct navigation *, enum attr_type, struct callback *)} for + * details on callback lists. + * + * @param this_ The navigation object. + * @param type The attribute type + * @param cb The callback function + */ void navigation_unregister_callback(struct navigation *this_, enum attr_type type, struct callback *cb) { + struct attr attr_cbl; + if (type == attr_navigation_speech) callback_list_remove(this_->callback_speech, cb); - else + else if (type == attr_navigation_long) callback_list_remove(this_->callback, cb); + else if (navigation_get_attr(this_, attr_callback_list, &attr_cbl, NULL)) + callback_list_remove(attr_cbl.u.callback_list, cb); } struct map * @@ -2000,7 +3969,7 @@ data.u.str=""; description.type=attr_description; description.u.str="Navigation"; - + attrs[0]=&type; attrs[1]=&navigation; attrs[2]=&data; @@ -2050,13 +4019,16 @@ this->ccount=0; } + static int navigation_map_item_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr) { struct map_rect_priv *this_=priv_data; struct navigation_command *cmd=this_->cmd; + struct navigation_maneuver *maneuver = NULL; struct navigation_itm *itm=this_->itm; struct navigation_itm *prev=itm->prev; + char *exit_announce=NULL; attr->type=attr_type; if (this_->str) { @@ -2066,8 +4038,10 @@ if (cmd) { if (cmd->itm != itm) - cmd=NULL; + cmd=NULL; } + if (cmd && cmd->maneuver) + maneuver = cmd->maneuver; switch(attr_type) { case attr_level: if (cmd) { @@ -2128,16 +4102,46 @@ this_->attr_next=attr_street_name; return 1; case attr_street_name: - attr->u.str=itm->way.name1; + attr->u.str=itm->way.name; this_->attr_next=attr_street_name_systematic; - if (attr->u.str) - return 1; + if (attr->u.str){ + return 1;} return 0; case attr_street_name_systematic: - attr->u.str=itm->way.name2; + attr->u.str=itm->way.name_systematic; + this_->attr_next=attr_street_destination; + if (attr->u.str){ + return 1;} + return 0; + case attr_street_destination: + this_->attr_next=attr_name; + if (cmd && itm->way.destination && itm->way.destination->destination) + this_->str=attr->u.str=select_announced_destinations(cmd); + else attr->u.str=NULL; + if (attr->u.str){ + return 1;} + return 0; + + case attr_name: + /* attr_name returns exit_ref and exit_label if available, + * preceded by the word 'exit' or 'interchange'. + * + * Otherwise it returns street name and name_systematic, if available + * + * FIXME should a new attr. be defined for this, and if yes, which ? + */ this_->attr_next=attr_debug; - if (attr->u.str) - return 1; + attr->u.str=NULL; + exit_announce = navigation_cmd_get_exit_announce(cmd, NULL); + if (exit_announce && maneuver) + /* TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" */ + this_->str=attr->u.str=g_strdup_printf("%s %s", maneuver->merge_or_exit & mex_interchange ? (_("Interchange")) : (_("Exit")), + exit_announce ? exit_announce : ""); + else if (itm->way.name || itm->way.name_systematic) + this_->str=attr->u.str=g_strdup_printf("%s %s", + itm->way.name ? itm->way.name : "",itm->way.name_systematic ? itm->way.name_systematic : ""); + if (attr->u.str){ + return 1;} return 0; case attr_debug: switch(this_->debug_idx) { @@ -2158,13 +4162,13 @@ case 3: this_->debug_idx++; if (prev) { - this_->str=attr->u.str=g_strdup_printf("prev street_name:%s", prev->way.name1); + this_->str=attr->u.str=g_strdup_printf("prev street_name:%s", prev->way.name); return 1; } case 4: this_->debug_idx++; if (prev) { - this_->str=attr->u.str=g_strdup_printf("prev street_name_systematic:%s", prev->way.name2); + this_->str=attr->u.str=g_strdup_printf("prev street_name_systematic:%s", prev->way.name_systematic); return 1; } case 5: @@ -2190,13 +4194,27 @@ case 8: this_->debug_idx++; if (prev) { - int delta=0; - char *reason=NULL; - maneuver_required2(this_->nav, prev, itm, &delta, &reason); - this_->str=attr->u.str=g_strdup_printf("reason:%s",reason); + struct navigation_maneuver *maneuver = NULL; + maneuver_required2(this_->nav, prev, itm, &maneuver); + this_->str=attr->u.str=g_strdup_printf("type: %s, is_complex_t_junction: %d, is_same_street: %d, is_unambiguous: %d, merge_or_exit: %d, old_cat: %d, new_cat: %d, max_cat: %d, num_options: %d, num_similar_ways: %d, num_new_motorways: %d, num_other_ways: %d, left: %d, right: %d, delta: %d", + item_to_name(maneuver->type), + maneuver->is_complex_t_junction, + maneuver->is_same_street, + maneuver->is_unambiguous, + maneuver->merge_or_exit, + maneuver->old_cat, + maneuver->new_cat, + maneuver->max_cat, + maneuver->num_options, + maneuver->num_similar_ways, + maneuver->num_new_motorways, + maneuver->num_other_ways, + maneuver->left, + maneuver->right, + maneuver->delta); return 1; } - + default: this_->attr_next=attr_none; return 0; @@ -2264,11 +4282,30 @@ g_free(priv); } +/** + * @brief Gets the next item from the navigation map. + * + * This function returns an item from a map rectangle on the navigation map and advances the item pointer, + * so that at the next call the next item will be returned. + * + * The {@code type} member of the result, which indicates the type of maneuver, is generally copied over from + * {@code maneuver->type}, though some exceptions apply: The first item in the map will have a type of + * {@code nav_position} and the last one will have a type of {@code nav_destination}. + * If {@code maneuver->merge_or_exit} indicates a merge or exit, the result will be of the corresponding + * merge or exit type. + * + * Earlier versions of Navit had the entire logic for setting the maneuver type in this function, but this has + * been moved to {@code command_new()} so that other functions can use the same results. + * + * @param priv The {@code struct map_rect_priv} of the map rect on the navigation map from which an item + * is to be retrieved. + * + * @return The item, or NULL if there are no more items in the map rectangle + */ static struct item * navigation_map_get_item(struct map_rect_priv *priv) { struct item *ret=&priv->item; - int delta; if (!priv->itm_next) return NULL; priv->itm=priv->itm_next; @@ -2276,7 +4313,7 @@ priv->cmd_itm=priv->cmd_itm_next; if (!priv->cmd) return NULL; - if (!priv->show_all && priv->itm->prev != NULL) + if (!priv->show_all && priv->itm->prev != NULL) priv->itm=priv->cmd->itm; priv->itm_next=priv->itm->next; if (priv->itm->prev) @@ -2287,90 +4324,66 @@ priv->cmd_itm_next=priv->cmd->itm; priv->cmd_next=priv->cmd->next; if (priv->cmd_itm_next && !priv->cmd_itm_next->next) - ret->type=type_nav_destination; - else { - if (priv->itm && priv->itm->prev && !(priv->itm->way.flags & AF_ROUNDABOUT) && (priv->itm->prev->way.flags & AF_ROUNDABOUT)) { - enum item_type r=type_none,l=type_none; - switch (((180+22)-priv->cmd->roundabout_delta)/45) { - case 0: - case 1: - r=type_nav_roundabout_r1; - l=type_nav_roundabout_l7; - break; - case 2: - r=type_nav_roundabout_r2; - l=type_nav_roundabout_l6; - break; - case 3: - r=type_nav_roundabout_r3; - l=type_nav_roundabout_l5; - break; - case 4: - r=type_nav_roundabout_r4; - l=type_nav_roundabout_l4; - break; - case 5: - r=type_nav_roundabout_r5; - l=type_nav_roundabout_l3; - break; - case 6: - r=type_nav_roundabout_r6; - l=type_nav_roundabout_l2; - break; - case 7: - r=type_nav_roundabout_r7; - l=type_nav_roundabout_l1; - break; - case 8: - r=type_nav_roundabout_r8; - l=type_nav_roundabout_l8; - break; - } - dbg(1,"delta %d\n",priv->cmd->delta); - if (priv->cmd->delta < 0) - ret->type=l; - else - ret->type=r; - } else { - delta=priv->cmd->delta; - if (delta < 0) { - delta=-delta; - if (delta < 45) - ret->type=type_nav_left_1; - else if (delta < 105) - ret->type=type_nav_left_2; - else if (delta < 165) - ret->type=type_nav_left_3; - else - ret->type=type_none; - } else { - if (delta < 45) - ret->type=type_nav_right_1; - else if (delta < 105) - ret->type=type_nav_right_2; - else if (delta < 165) - ret->type=type_nav_right_3; - else - ret->type=type_none; - } + ret->type=type_nav_destination; /* FIXME: do we need to set that here? The generic case should catch that now... */ + else if (priv->cmd->maneuver && ((priv->cmd->maneuver->type != type_nav_none) || (priv->cmd->maneuver->merge_or_exit & (mex_merge | mex_exit)))) { + /* if maneuver type or merge_or_exit is set, use these values */ + /* FIXME: make decision to use merge_or_exit context-dependent */ + switch (priv->cmd->maneuver->merge_or_exit) { + case mex_merge_left: + ret->type=type_nav_merge_left; + break; + case mex_merge_right: + ret->type=type_nav_merge_right; + break; + case mex_exit_left: + ret->type=type_nav_exit_left; + break; + case mex_exit_right: + ret->type=type_nav_exit_right; + break; + default: + /* exit or merge without a direction should never happen, + * mex_intersection results in a regular instruction, + * thus all these are handled by the default case, + * which is to return the type field */ + ret->type = priv->cmd->maneuver->type; } - } - } + } /* else if priv->cmd->maneuver ... */ + } /* if priv->cmd->itm == priv->itm */ navigation_map_item_coord_rewind(priv); navigation_map_item_attr_rewind(priv); ret->id_lo=priv->itm->dest_count; - dbg(1,"type=%d\n", ret->type); + dbg(lvl_debug,"type=%d\n", ret->type); return ret; } +/** + * @brief Gets the item with the specified ID from the navigation map. + * + * This function returns the item with the ID specified in the arguments from a map rectangle on the + * navigation map. + * + * Internally the function calls {@code navigation_map_get_item()}, thus the same logic applies for the + * data of the item that is returned. See {@code navigation_map_get_item()} for details. + * + * The item pointer of the map rectangle will be moved so that a subsequent call to {@code navigation_map_get_item()} + * will return the next item following the one returned by this function. + * + * @param priv The {@code struct map_rect_priv} of the map rect on the navigation map from which an item + * is to be retrieved. + * @param id_hi The high part of the ID + * @param id_lo The low part of the ID + * + * @return The item, or NULL if an item with the ID specified was not found in the map rectangle + */ static struct item * navigation_map_get_item_byid(struct map_rect_priv *priv, int id_hi, int id_lo) { struct item *ret; navigation_map_rect_init(priv); while ((ret=navigation_map_get_item(priv))) { - if (ret->id_hi == id_hi && ret->id_lo == id_lo) + if (ret->id_hi == id_hi && ret->id_lo == id_lo) return ret; } return NULL; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/navigation.h navit-0.5.0+dfsg.1/navit/navigation.h --- navit-0.5.0~svn5900+dfsg.1/navit/navigation.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/navigation.h 2016-01-02 22:29:50.000000000 +0000 @@ -20,12 +20,35 @@ #ifndef NAVIT_NAVIGATION_H #define NAVIT_NAVIGATION_H -#define FEET_PER_METER 3.2808399 -#define FEET_PER_MILE 5280 +#define FEET_PER_METER 3.2808399 +#define FEET_PER_MILE 5280 +#define METERS_PER_MILE 1609 #ifdef __cplusplus extern "C" { #endif + + +/** + * Values for the {@code nav_status} attribute + */ +enum nav_status { + status_invalid = -2, /*!< Status is unknown. The {@code nav_status} attribute will never return this + value but code that listens to changes to this attribute may use this value + as a placeholder until the first actual status has been obtained. */ + status_no_route = -1, /*!< No route was found */ + status_no_destination = 0, /*!< No destination set, not routing */ + status_position_wait = 1, /*!< Destination is set but current position is unknown */ + status_calculating = 2, /*!< A new route is being calculated and turn instructions are being generated */ + status_recalculating = 3, /*!< The existing route is being recalculated, along with its turn instructions. + Note that as the vehicle follows a route, status will flip between + {@code status_routing} and {@code status_recalculating} with every position + update. */ + status_routing = 4, /*!< A route with turn instructions has been calculated and the user is being + guided along it */ +}; + + /* prototypes */ enum attr_type; enum item_type; @@ -35,6 +58,7 @@ struct map; struct navigation; struct route; +char *nav_status_to_text(int status); int navigation_get_attr(struct navigation *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter); int navigation_set_attr(struct navigation *this_, struct attr *attr); struct navigation *navigation_new(struct attr *parent, struct attr **attrs); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/navit.c navit-0.5.0+dfsg.1/navit/navit.c --- navit-0.5.0~svn5900+dfsg.1/navit/navit.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/navit.c 2016-01-02 22:29:50.000000000 +0000 @@ -80,11 +80,20 @@ #define TEXTFILE_COMMENT_NAVI_STOPPED "# navigation stopped\n" /** - * @defgroup navit the navit core instance. navit is the object containing nearly everything: A set of maps, one or more vehicle, a graphics object for rendering the map, a gui object for displaying the user interface, a route object, a navigation object and so on. Be warned that it is theoretically possible to have more than one navit object + * @defgroup navit The navit core instance + * @brief navit is the object containing most global data structures. + * + * Among others: + * - a set of maps + * - one or more vehicles + * - a graphics object for rendering the map + * - a gui object for displaying the user interface + * - a route object + * - a navigation object * @{ */ -//! The navit_vehicule +//! The vehicle used for navigation. struct navit_vehicle { int follow; /*! Limit of the follow counter. See navit_add_vehicle */ @@ -142,7 +151,10 @@ struct log *textfile_debug_log; struct pcoord destination; int destination_valid; - int blocked; + int blocked; /**< Whether draw operations are currently blocked. This can be a combination of the + following flags: + 1: draw operations are blocked + 2: draw operations are pending, requiring a redraw once draw operations are unblocked */ int w,h; int drag_bitmap; int use_mousewheel; @@ -176,7 +188,7 @@ } u; }; -static void navit_vehicle_update(struct navit *this_, struct navit_vehicle *nv); +static void navit_vehicle_update_position(struct navit *this_, struct navit_vehicle *nv); static void navit_vehicle_draw(struct navit *this_, struct navit_vehicle *nv, struct point *pnt); static int navit_add_vehicle(struct navit *this_, struct vehicle *v); static int navit_set_attr_do(struct navit *this_, struct attr *attr, int init); @@ -203,7 +215,7 @@ if(this_->mapsets){ return this_->mapsets->data; } else { - dbg(0,"No mapsets enabled! Is it on purpose? Navit can't draw a map. Please check your navit.xml\n"); + dbg(lvl_error,"No mapsets enabled! Is it on purpose? Navit can't draw a map. Please check your navit.xml\n"); } return NULL; } @@ -229,14 +241,14 @@ char *dir; dir = getenv("NAVIT_USER_DATADIR"); if (create && !file_exists(dir)) { - dbg(0,"creating dir %s\n", dir); + dbg(lvl_debug,"creating dir %s\n", dir); if (file_mkdir(dir,0)) { - dbg(0,"failed creating dir %s\n", dir); + dbg(lvl_error,"failed creating dir %s\n", dir); return NULL; } } return dir; -} /* end: navit_get_user_data_directory(gboolean create) */ +} void @@ -372,6 +384,20 @@ } +/** + * @brief Sets a flag indicating that the current button event should be ignored by subsequent handlers. + * + * Calling this function will set the {@code ignore_button} member to {@code true} and return its previous state. + * The default handler, {@link navit_handle_button(navit *, int, int, point *, callback *)} calls this function + * just before the actual event handling core and aborts if the result is {@code true}. In order to prevent + * multiple handlers from firing on a single event, custom button click handlers should implement the same logic + * for events they wish to handle. + * + * If a handler wishes to pass down an event to other handlers, it must abort without calling this function. + * + * @param this_ The navit instance + * @return {@code true} if the caller should ignore the button event, {@code false} if it should handle it + */ int navit_ignore_button(struct navit *this_) { @@ -421,7 +447,7 @@ center_new.x=center_old->x+coord_old.x-coord_new.x; center_new.y=center_old->y+coord_old.y-coord_new.y; navit_restrict_map_center_to_world_boundingbox(tr, ¢er_new); - dbg(1,"change center from 0x%x,0x%x to 0x%x,0x%x\n", center_old->x, center_old->y, center_new.x, center_new.y); + dbg(lvl_debug,"change center from 0x%x,0x%x to 0x%x,0x%x\n", center_old->x, center_old->y, center_new.x, center_new.y); transform_set_center(tr, ¢er_new); } @@ -439,7 +465,7 @@ { int border=16; - dbg(1,"button %d %s (ignore: %d)\n",button,pressed?"pressed":"released",this_->ignore_button); + dbg(lvl_debug,"button %d %s (ignore: %d)\n",button,pressed?"pressed":"released",this_->ignore_button); callback_list_call_attr_4(this_->attr_cbl, attr_button, this_, GINT_TO_POINTER(pressed), GINT_TO_POINTER(button), p); if (this_->ignore_button) { this_->ignore_button=0; @@ -483,7 +509,7 @@ this_->motion_timeout=NULL; } if (this_->moved) { - dbg(1, "mouse drag (%d, %d)->(%d, %d)\n", this_->pressed.x, this_->pressed.y, p->x, p->y); + dbg(lvl_debug, "mouse drag (%d, %d)->(%d, %d)\n", this_->pressed.x, this_->pressed.y, p->x, p->y); update_transformation(this_->trans, &this_->pressed, p); graphics_draw_drag(this_->gra, NULL); transform_copy(this_->trans, this_->trans_cursor); @@ -501,7 +527,7 @@ navit_button(void *data, int pressed, int button, struct point *p) { struct navit *this=data; - dbg(1,"enter %d %d ignore %d\n",pressed,button,this->ignore_graphics_events); + dbg(lvl_debug,"enter %d %d ignore %d\n",pressed,button,this->ignore_graphics_events); if (!this->ignore_graphics_events) { if (! this->popup_callback) this->popup_callback=callback_new_1(callback_cast(navit_popup), this); @@ -535,9 +561,6 @@ graphics_overlay_disable(this_->gra, 1); tr=transform_dup(this_->trans); update_transformation(tr, &this_->pressed, &this_->current); -#if 0 - graphics_displaylist_move(this_->displaylist, dx, dy); -#endif graphics_draw_cancel(this_->gra, this_->displaylist); graphics_displaylist_draw(this_->gra, this_->displaylist, tr, this_->layout_current, this_->graphics_flags|512); transform_destroy(tr); @@ -797,7 +820,7 @@ key = g_strdup(in[0]->u.str); g_hash_table_insert(cmd_attr_var_hash, key, val); } else { - dbg(1, "Wrong parameters for set_attr_var() command function\n"); + dbg(lvl_warning, "Wrong parameters for set_attr_var() command function\n"); } } @@ -868,12 +891,12 @@ ) { if(!(ms=navit_get_mapset(this))) { - dbg(0, "Command function map_add_curr_pos(): there is no active mapset\n"); + dbg(lvl_error, "Command function map_add_curr_pos(): there is no active mapset\n"); return; } if((item_type = item_from_name(in[1]->u.str))==type_none) { - dbg(0, "Command function map_add_curr_pos(): unknown item type\n"); + dbg(lvl_error, "Command function map_add_curr_pos(): unknown item type\n"); return; } @@ -881,7 +904,7 @@ //no map with the given name found if( ! curr_map) { - dbg(0, "Command function map_add_curr_pos(): map not found\n"); + dbg(lvl_error, "Command function map_add_curr_pos(): map not found\n"); return; } @@ -890,11 +913,11 @@ if(vehicle_get_attr(this->vehicle->vehicle,attr_position_coord_geo,&pos_attr,NULL)) { transform_from_geo(projection_mg, pos_attr.u.coord_geo, &curr_coord); } else { - dbg(0, "Command function map_add_curr_pos(): vehicle position is not accessible\n"); + dbg(lvl_error, "Command function map_add_curr_pos(): vehicle position is not accessible\n"); return; } } else { - dbg(0, "Command function map_add_curr_pos(): no vehicle\n"); + dbg(lvl_error, "Command function map_add_curr_pos(): no vehicle\n"); return; } @@ -980,11 +1003,11 @@ } map_rect_destroy(mr); } else { - dbg(4,"Error in command function item_set_attr()\n"); - dbg(4,"Command function item_set_attr(): map cond: %d\n",(in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str)?1:0); - dbg(4,"Command function item_set_attr(): item cond: %d\n",(in[1] && ATTR_IS_ITEM(in[1]->type))?1:0); - dbg(4,"Command function item_set_attr(): attr type cond: %d\n",(in[2] && ATTR_IS_STRING(in[2]->type) && in[2]->u.str)?1:0); - dbg(4,"Command function item_set_attr(): attr val cond: %d\n",(in[3] && ATTR_IS_STRING(in[3]->type) && in[3]->u.str)?1:0); + dbg(lvl_debug,"Error in command function item_set_attr()\n"); + dbg(lvl_debug,"Command function item_set_attr(): map cond: %d\n",(in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str)?1:0); + dbg(lvl_debug,"Command function item_set_attr(): item cond: %d\n",(in[1] && ATTR_IS_ITEM(in[1]->type))?1:0); + dbg(lvl_debug,"Command function item_set_attr(): attr type cond: %d\n",(in[2] && ATTR_IS_STRING(in[2]->type) && in[2]->u.str)?1:0); + dbg(lvl_debug,"Command function item_set_attr(): attr val cond: %d\n",(in[3] && ATTR_IS_STRING(in[3]->type) && in[3]->u.str)?1:0); } } @@ -1209,10 +1232,13 @@ navit_cmd_set_center(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid) { struct pcoord pc; + int set_timeout=0; in=navit_get_coord(this, in, &pc); if (!in) return; - navit_set_center(this, &pc, 0); + if(in[0] && ATTR_IS_INT(in[0]->type)) + set_timeout=in[0]->u.num!=0; + navit_set_center(this, &pc, set_timeout); } @@ -1308,7 +1334,7 @@ if(in[i]->type!=attr_none ) { argv[j++]=attr_to_text(in[i],NULL,1); } else { - dbg(0,"Parameter #%i is attr_none - skipping\n",i); + dbg(lvl_debug,"Parameter #%i is attr_none - skipping\n",i); } } argv[j]=NULL; @@ -1317,15 +1343,15 @@ // spawn_process() testing suite - uncomment following code to test. //sleep(3); // example of non-blocking wait - //int st=spawn_process_check_status(pi,0);dbg(0,"status %i\n",st); + //int st=spawn_process_check_status(pi,0);dbg(lvl_debug,"status %i\n",st); // example of blocking wait - //st=spawn_process_check_status(pi,1);dbg(0,"status %i\n",st); + //st=spawn_process_check_status(pi,1);dbg(lvl_debug,"status %i\n",st); // example of wait after process is finished and status is // already tested - //st=spawn_process_check_status(pi,1);dbg(0,"status %i\n",st); + //st=spawn_process_check_status(pi,1);dbg(lvl_debug,"status %i\n",st); // example of wait after process is finished and status is // already tested - unblocked - //st=spawn_process_check_status(pi,0);dbg(0,"status %i\n",st); + //st=spawn_process_check_status(pi,0);dbg(lvl_debug,"status %i\n",st); // End testing suite spawn_process_info_free(pi); @@ -1424,7 +1450,7 @@ this_->messages = messagelist_new(attrs); - dbg(1,"return %p\n",this_); + dbg(lvl_debug,"return %p\n",this_); return this_; } @@ -1439,7 +1465,7 @@ if (! main_loop_gui) { main_loop_gui=this_->gui; } else { - dbg(0,"gui with main loop already active, ignoring this instance"); + dbg(lvl_error,"gui with main loop already active, ignoring this instance"); return 0; } } @@ -1515,7 +1541,7 @@ fprintf(f,"%s", TEXTFILE_COMMENT_NAVI_STOPPED); fclose(f); }else{ - dbg(0, "Error setting mark in destination file %s: %s\n", former_destination_file, strerror(errno)); + dbg(lvl_error, "Error setting mark in destination file %s: %s\n", former_destination_file, strerror(errno)); } } @@ -1526,7 +1552,8 @@ * @param navit The navit instance * @param c The coordinate to start routing to * @param description A label which allows the user to later identify this destination in the former destinations selection - * @returns nothing + * @param async Set to 1 to do route calculation asynchronously + * @return nothing */ void navit_set_destination(struct navit *this_, struct pcoord *c, const char *description, int async) @@ -1537,7 +1564,7 @@ this_->destination=*c; this_->destination_valid=1; - dbg(1, "c=(%i,%i)\n", c->x,c->y); + dbg(lvl_debug, "c=(%i,%i)\n", c->x,c->y); bookmarks_append_destinations(this_->former_destination, destination_file, c, 1, type_former_destination, description, this_->recentdest_count); } else { this_->destination_valid=0; @@ -1822,7 +1849,7 @@ if(this_->speech) { if (!speech_get_attr(this_->speech, attr_active, &attr, NULL)) attr.u.num = 1; - dbg(1, "this_.speech->active %ld\n", attr.u.num); + dbg(lvl_debug, "this_.speech->active %ld\n", attr.u.num); if(attr.u.num) speech_say(this_->speech, text); } @@ -1855,7 +1882,7 @@ return; // announce that the speech attribute has changed - callback_list_call_attr_0(this_->attr_cbl, attr_speech); + callback_list_call_attr_1(this_->attr_cbl, attr_speech, this_); } void @@ -1869,7 +1896,7 @@ if (!speech_get_attr(this_->speech, attr_active, &attr, NULL)) attr.u.num = 1; - dbg(1, "this_.speech->active %ld\n", attr.u.num); + dbg(lvl_debug, "this_.speech->active %ld\n", attr.u.num); if(!attr.u.num) return; @@ -1880,8 +1907,10 @@ if (mr) { while ((item=map_rect_get_item(mr)) && (item->type == type_nav_position || item->type == type_nav_none)); if (item && item_attr_get(item, attr_navigation_speech, &attr)) { - speech_say(this_->speech, attr.u.str); - navit_add_message(this_, attr.u.str); + if (*attr.u.str != '\0') { + speech_say(this_->speech, attr.u.str); + navit_add_message(this_, attr.u.str); + } navit_textfile_debug_log(this_, "type=announcement label=\"%s\"", attr.u.str); } map_rect_destroy(mr); @@ -1899,31 +1928,31 @@ struct param_list param[5]; int secs; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); datawindow_mode(this_->roadbook_window, 1); if (nav) map=navigation_get_map(nav); if (map) mr=map_rect_new(map, NULL); - dbg(0,"nav=%p map=%p mr=%p\n", nav, map, mr); + dbg(lvl_debug,"nav=%p map=%p mr=%p\n", nav, map, mr); if (mr) { - dbg(0,"while loop\n"); + dbg(lvl_debug,"while loop\n"); while ((item=map_rect_get_item(mr))) { - dbg(0,"item=%p\n", item); + dbg(lvl_debug,"item=%p\n", item); attr.u.str=NULL; if (item->type != type_nav_position) { item_attr_get(item, attr_navigation_long, &attr); if (attr.u.str == NULL) { continue; } - dbg(2, "Command='%s'\n", attr.u.str); + dbg(lvl_info, "Command='%s'\n", attr.u.str); param[0].value=g_strdup(attr.u.str); } else param[0].value=_("Position"); param[0].name=_("Command"); item_attr_get(item, attr_length, &attr); - dbg(2, "Length=%ld\n", attr.u.num); + dbg(lvl_info, "Length=%ld\n", attr.u.num); param[1].name=_("Length"); if ( attr.u.num >= 2000 ) @@ -1936,7 +1965,7 @@ } item_attr_get(item, attr_time, &attr); - dbg(2, "Time=%ld\n", attr.u.num); + dbg(lvl_info, "Time=%ld\n", attr.u.num); secs=attr.u.num/10; param[2].name=_("Time"); if ( secs >= 3600 ) @@ -1949,7 +1978,7 @@ } item_attr_get(item, attr_destination_length, &attr); - dbg(2, "Destlength=%ld\n", attr.u.num); + dbg(lvl_info, "Destlength=%ld\n", attr.u.num); param[3].name=_("Destination Length"); if ( attr.u.num >= 2000 ) { @@ -1961,7 +1990,7 @@ } item_attr_get(item, attr_destination_time, &attr); - dbg(2, "Desttime=%ld\n", attr.u.num); + dbg(lvl_info, "Desttime=%ld\n", attr.u.num); secs=attr.u.num/10; param[4].name=_("Destination Time"); if ( secs >= 3600 ) @@ -1982,7 +2011,7 @@ void navit_window_roadbook_destroy(struct navit *this_) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); navigation_unregister_callback(this_->navigation, attr_navigation_long, this_->roadbook_callback); callback_destroy(this_->roadbook_callback); this_->roadbook_window=NULL; @@ -2009,24 +2038,24 @@ int callback; char *center_file; - dbg(2,"enter gui %p graphics %p\n",this_->gui,this_->gra); + dbg(lvl_info,"enter gui %p graphics %p\n",this_->gui,this_->gra); if (!this_->gui && !(this_->flags & 2)) { - dbg(0,"Warning: No GUI available.\n"); + dbg(lvl_error,"Warning: No GUI available.\n"); return; } if (!this_->gra && !(this_->flags & 1)) { - dbg(0,"Warning: No graphics subsystem available.\n"); + dbg(lvl_error,"Warning: No graphics subsystem available.\n"); return; } - dbg(2,"Connecting gui to graphics\n"); + dbg(lvl_info,"Connecting gui to graphics\n"); if (this_->gui && this_->gra && gui_set_graphics(this_->gui, this_->gra)) { struct attr attr_type_gui, attr_type_graphics; gui_get_attr(this_->gui, attr_type, &attr_type_gui, NULL); graphics_get_attr(this_->gra, attr_type, &attr_type_graphics, NULL); - dbg(0,"failed to connect graphics '%s' to gui '%s'\n", attr_type_graphics.u.str, attr_type_gui.u.str); - dbg(0," Please see http://wiki.navit-project.org/index.php/Failed_to_connect_graphics_to_gui\n"); - dbg(0," for explanations and solutions\n"); + dbg(lvl_error,"failed to connect graphics '%s' to gui '%s'\n", attr_type_graphics.u.str, attr_type_gui.u.str); + dbg(lvl_error," Please see http://wiki.navit-project.org/index.php/Failed_to_connect_graphics_to_gui\n"); + dbg(lvl_error," for explanations and solutions\n"); return; } if (this_->speech && this_->navigation) { @@ -2035,10 +2064,10 @@ speech.u.speech=this_->speech; navigation_set_attr(this_->navigation, &speech); } - dbg(2,"Initializing graphics\n"); - dbg(2,"Setting Vehicle\n"); + dbg(lvl_info,"Initializing graphics\n"); + dbg(lvl_info,"Setting Vehicle\n"); navit_set_vehicle(this_, this_->vehicle); - dbg(2,"Adding dynamic maps to mapset %p\n",this_->mapsets); + dbg(lvl_info,"Adding dynamic maps to mapset %p\n",this_->mapsets); if (this_->mapsets) { struct mapset_handle *msh; ms=this_->mapsets->data; @@ -2099,7 +2128,7 @@ } navit_add_former_destinations_from_file(this_); } else { - dbg(0, "FATAL: No mapset available. Please add a (valid) mapset to your configuration.\n"); + dbg(lvl_error, "FATAL: No mapset available. Please add a (valid) mapset to your configuration.\n"); exit(1); } if (this_->route) { @@ -2117,23 +2146,11 @@ if (this_->route) navigation_set_route(this_->navigation, this_->route); } - dbg(2,"Setting Center\n"); + dbg(lvl_info,"Setting Center\n"); center_file = bookmarks_get_center_file(FALSE); bookmarks_set_center_from_file(this_->bookmarks, center_file); g_free(center_file); -#if 0 - if (this_->menubar) { - men=menu_add(this_->menubar, "Data", menu_type_submenu, NULL); - if (men) { - navit_add_menu_windows_items(this_, men); - } - } -#endif global_navit=this_; -#if 0 - navit_window_roadbook_new(this_); - navit_window_items_new(this_); -#endif messagelist_init(this_->messages); @@ -2142,14 +2159,11 @@ callback_list_call_attr_1(this_->attr_cbl, attr_navit, this_); callback=(this_->ready == 2); this_->ready|=1; - dbg(2,"ready=%d\n",this_->ready); + dbg(lvl_info,"ready=%d\n",this_->ready); if (this_->ready == 3) navit_draw_async(this_, 1); if (callback) callback_list_call_attr_1(this_->attr_cbl, attr_graphics_ready, this_); -#if 0 - routech_test(this_); -#endif } void @@ -2162,15 +2176,15 @@ c.y=(r->rl.y+r->lu.y)/2; transform_set_center(this_->trans, &c); transform_get_size(this_->trans, &w, &h); - dbg(0,"center 0x%x,0x%x w %d h %d\n",c.x,c.y,w,h); - dbg(0,"%x,%x-%x,%x\n", r->lu.x,r->lu.y,r->rl.x,r->rl.y); + dbg(lvl_debug,"center 0x%x,0x%x w %d h %d\n",c.x,c.y,w,h); + dbg(lvl_debug,"%x,%x-%x,%x\n", r->lu.x,r->lu.y,r->rl.x,r->rl.y); while (scale < 1<<20) { struct point p1,p2; transform_set_scale(this_->trans, scale); transform_setup_source_rect(this_->trans); transform(this_->trans, transform_get_projection(this_->trans), &r->lu, &p1, 1, 0, 0, NULL); transform(this_->trans, transform_get_projection(this_->trans), &r->rl, &p2, 1, 0, 0, NULL); - dbg(0,"%d,%d-%d,%d\n",p1.x,p1.y,p2.x,p2.y); + dbg(lvl_debug,"%d,%d-%d,%d\n",p1.x,p1.y,p2.x,p2.y); if (p1.x < 0 || p2.x < 0 || p1.x > w || p2.x > w || p1.y < 0 || p2.y < 0 || p1.y > h || p2.y > h) scale*=2; @@ -2178,7 +2192,7 @@ break; } - dbg(0,"scale=%d (0x%x) of %d (0x%x)\n",scale,scale,1<<20,1<<20); + dbg(lvl_debug,"scale=%d (0x%x) of %d (0x%x)\n",scale,scale,1<<20,1<<20); if (this_->ready == 3) navit_draw_async(this_,0); } @@ -2194,17 +2208,17 @@ int count=0; if (! this_->route) return; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); map=route_get_map(this_->route); - dbg(1,"map=%p\n",map); + dbg(lvl_debug,"map=%p\n",map); if (map) mr=map_rect_new(map, NULL); - dbg(1,"mr=%p\n",mr); + dbg(lvl_debug,"mr=%p\n",mr); if (mr) { while ((item=map_rect_get_item(mr))) { - dbg(1,"item=%s\n", item_to_name(item->type)); + dbg(lvl_debug,"item=%s\n", item_to_name(item->type)); while (item_coord_get(item, &c, 1)) { - dbg(1,"coord\n"); + dbg(lvl_debug,"coord\n"); if (!count) r.lu=r.rl=c; else @@ -2344,12 +2358,29 @@ return 1; } +/** + * @brief Recalculates the map view so that the vehicle cursor is visible + * + * This function recalculates the parameters which control the visible map area, zoom and orientation. The + * caller is responsible for redrawing the map after the function returns. + * + * If the vehicle supplies a {@code position_valid} attribute and it is {@code attr_position_valid_invalid}, + * the map position is not changed. + * + * @param this_ The navit object + * @param autozoom Whether to set zoom based on current speed. If false, current zoom will be maintained. + * @param keep_orientation Whether to maintain the current map orientation. If false, the map will be rotated + * so that the bearing of the vehicle is up. + */ void navit_set_center_cursor(struct navit *this_, int autozoom, int keep_orientation) { int dir; struct point pn; struct navit_vehicle *nv=this_->vehicle; + struct attr attr; + if (vehicle_get_attr(nv->vehicle, attr_position_valid, &attr, NULL) && (attr.u.num == attr_position_valid_invalid)) + return; navit_get_cursor_pnt(this_, &pn, keep_orientation, &dir); transform_set_yaw(this_->trans, dir); navit_set_center_coord_screen(this_, &nv->coord, &pn, 0); @@ -2357,6 +2388,14 @@ navit_autozoom(this_, &nv->coord, nv->speed, 0); } +/** + * @brief Recenters the map so that the vehicle cursor is visible + * + * This function first calls {@code navit_set_center_cursor()} to recalculate the map display, then + * triggers a redraw of the map. + * + *@param this_ The navit object + */ static void navit_set_center_cursor_draw(struct navit *this_) { @@ -2365,6 +2404,14 @@ navit_draw_async(this_, 1); } +/** + * @brief Recenters the map so that the vehicle cursor is visible + * + * This is the callback function for the {@code set_center_cursor()} command. It is just a wrapper around + * {@code navit_set_center_cursor_draw()}. + * + *@param this_ The navit object + */ static void navit_cmd_set_center_cursor(struct navit *this_) { @@ -2396,6 +2443,8 @@ active.type=attr_active; active.u.num=0; + dbg(lvl_debug, "enter, this_=%p, attr=%p (%s), init=%d\n", this_, attr, attr_to_name(attr->type), init); + switch (attr->type) { case attr_autozoom: attr_updated=(this_->autozoom_secs != attr->u.num); @@ -2407,7 +2456,7 @@ break; case attr_center: transform_from_geo(transform_get_projection(this_->trans), attr->u.coord_geo, &co); - dbg(1,"0x%x,0x%x\n",co.x,co.y); + dbg(lvl_debug,"0x%x,0x%x\n",co.x,co.y); transform_set_center(this_->trans, &co); break; case attr_drag_bitmap: @@ -2483,7 +2532,7 @@ } break; case attr_osd_configuration: - dbg(0,"setting osd_configuration to %ld (was %d)\n", attr->u.num, this_->osd_configuration); + dbg(lvl_debug,"setting osd_configuration to %ld (was %d)\n", attr->u.num, this_->osd_configuration); attr_updated=(this_->osd_configuration != attr->u.num); this_->osd_configuration=attr->u.num; break; @@ -2588,7 +2637,8 @@ this_->waypoints_flag=!!attr->u.num; break; default: - return 0; + dbg(lvl_debug, "calling generic setter method for attribute type %s\n", attr_to_name(attr->type)) + return navit_object_set_attr((struct navit_object *) this_, attr); } if (attr_updated && !init) { callback_list_call_attr_2(this_->attr_cbl, attr->type, this_, attr); @@ -2742,7 +2792,11 @@ attr->u.route=this_->route; break; case attr_speech: - attr->u.speech=this_->speech; + if(this_->speech) { + attr->u.speech=this_->speech; + } else { + return 0; + } break; case attr_timeout: attr->u.num=this_->center_timeout; @@ -2801,7 +2855,8 @@ attr->u.num=this_->waypoints_flag; break; default: - return 0; + dbg(lvl_debug, "calling generic getter method for attribute type %s\n", attr_to_name(type)) + return navit_object_get_attr((struct navit_object *) this_, type, attr, iter); } attr->type=type; return ret; @@ -2951,7 +3006,9 @@ /** * Toggle the cursor update : refresh the map each time the cursor has moved (instead of only when it reaches a border) * - * @param navit The navit instance + * @param this_ The navit instance + * @param nv vehicle to draw + * @param pnt Screen coordinates of the vehicle. If NULL, position stored in nv is used. * @returns nothing */ @@ -2971,25 +3028,32 @@ return; transform(this_->trans_cursor, pro, &nv->coord, &cursor_pnt, 1, 0, 0, NULL); } - vehicle_draw(nv->vehicle, this_->gra, &cursor_pnt, pnt ? 0:1, nv->dir-transform_get_yaw(this_->trans_cursor), nv->speed); -#if 0 - if (pnt) - pnt2=*pnt; - else { - pro=transform_get_projection(this_->trans); - transform(this_->trans, pro, &nv->coord, &pnt2, 1); - } -#if 1 - cursor_draw(nv->cursor, &pnt2, nv->dir-transform_get_angle(this_->trans, 0), nv->speed > 2, pnt == NULL); -#else - cursor_draw(nv->cursor, &pnt2, nv->dir-transform_get_angle(this_->trans, 0), nv->speed > 2, 1); -#endif -#endif + vehicle_draw(nv->vehicle, this_->gra, &cursor_pnt, nv->dir-transform_get_yaw(this_->trans_cursor), nv->speed); } +/** + * @brief Called when the position of a vehicle changes. + * + * This function is called when the position of any configured vehicle changes and triggers all actions + * that need to happen in response, such as: + *
    + *
  • Switching between day and night layout (based on the new position timestamp)
  • + *
  • Updating position, bearing and speed of {@code nv} with the data of the active vehicle + * (which may be different from the vehicle reporting the update)
  • + *
  • Invoking callbacks for {@code navit}'s {@code attr_position} and {@code attr_position_coord_geo} + * attributes
  • + *
  • Triggering an update of the vehicle's position on the map and, if needed, an update of the + * visible map area ad orientation
  • + *
  • Logging a new track point, if enabled
  • + *
  • Updating the position on the route
  • + *
  • Stopping navigation if the destination has been reached
  • + *
+ * + * @param this_ The navit object + * @param nv The {@code navit_vehicle} which reported a new position + */ static void -navit_vehicle_update(struct navit *this_, struct navit_vehicle *nv) -{ +navit_vehicle_update_position(struct navit *this_, struct navit_vehicle *nv) { struct attr attr_valid, attr_dir, attr_speed, attr_pos; struct pcoord cursor_pc; struct point cursor_pnt, *pnt=&cursor_pnt; @@ -3088,6 +3152,37 @@ } /** + * @brief Called when a status attribute of a vehicle changes. + * + * This function is called when the {@code position_fix_type}, {@code position_sats_used} or {@code position_hdop} + * attribute of any configured vehicle changes. + * + * The function checks if {@code nv} refers to the active vehicle and if {@code type} is one of the above types. + * If this is the case, it invokes the callback functions for {@code navit}'s respective attributes. + * + * Future actions that need to happen when one of these three attribute changes for any vehicle should be + * implemented here. + * + * @param this_ The navit object + * @param nv The {@code navit_vehicle} which reported a new status attribute + * @param type The type of attribute with has changed + */ +static void +navit_vehicle_update_status(struct navit *this_, struct navit_vehicle *nv, enum attr_type type) { + if (this_->vehicle != nv) + return; + switch(type) { + case attr_position_fix_type: + case attr_position_sats_used: + case attr_position_hdop: + callback_list_call_attr_2(this_->attr_cbl, type, this_, nv->vehicle); + break; + default: + return; + } +} + +/** * Set the position of the vehicle * * @param navit The navit instance @@ -3158,11 +3253,11 @@ } /** - * Register a new vehicle + * @brief Registers a new vehicle. * - * @param navit The navit instance - * @param v The vehicle instance - * @returns 1 for success + * @param this_ The navit instance + * @param v The vehicle to register + * @return True for success */ static int navit_add_vehicle(struct navit *this_, struct vehicle *v) @@ -3183,7 +3278,13 @@ if ((vehicle_get_attr(v, attr_animate, &animate, NULL))) nv->animate_cursor=animate.u.num; nv->callback.type=attr_callback; - nv->callback.u.callback=callback_new_attr_2(callback_cast(navit_vehicle_update), attr_position_coord_geo, this_, nv); + nv->callback.u.callback=callback_new_attr_2(callback_cast(navit_vehicle_update_position), attr_position_coord_geo, this_, nv); + vehicle_add_attr(nv->vehicle, &nv->callback); + nv->callback.u.callback=callback_new_attr_3(callback_cast(navit_vehicle_update_status), attr_position_fix_type, this_, nv, attr_position_fix_type); + vehicle_add_attr(nv->vehicle, &nv->callback); + nv->callback.u.callback=callback_new_attr_3(callback_cast(navit_vehicle_update_status), attr_position_sats_used, this_, nv, attr_position_sats_used); + vehicle_add_attr(nv->vehicle, &nv->callback); + nv->callback.u.callback=callback_new_attr_3(callback_cast(navit_vehicle_update_status), attr_position_hdop, this_, nv, attr_position_hdop); vehicle_add_attr(nv->vehicle, &nv->callback); vehicle_set_attr(nv->vehicle, &this_->self); return 1; @@ -3245,7 +3346,7 @@ //Check that we aren't calculating too fast if (vehicle_get_attr(n->vehicle->vehicle, attr_position_time_iso8601,&iso8601_attr,NULL)==1) { currTs=iso8601_to_secs(iso8601_attr.u.str); - dbg(1,"currTs: %u:%u\n",currTs%86400/3600,((currTs%86400)%3600)/60); + dbg(lvl_debug,"currTs: %u:%u\n",currTs%86400/3600,((currTs%86400)%3600)/60); } if (currTs-(n->prevTs)<60) { //We've have to wait a little @@ -3264,13 +3365,13 @@ //We calculate sunrise anyway, cause it is needed both for day and for night if (__sunriset__(year,month,day,geo_attr.u.coord_geo->lng,geo_attr.u.coord_geo->lat,-5,1,&trise,&tset)!=0) { //near the pole sun never rises/sets, so we should never switch profiles - dbg(1,"trise: %u:%u, sun never visible, never switch profile\n",HOURS(trise),MINUTES(trise)); + dbg(lvl_warning,"trise: %u:%u, sun never visible, never switch profile\n",HOURS(trise),MINUTES(trise)); n->prevTs=currTs; return; } trise_actual=trise; - dbg(1,"trise: %u:%u\n",HOURS(trise),MINUTES(trise)); + dbg(lvl_debug,"trise: %u:%u\n",HOURS(trise),MINUTES(trise)); if (l->dayname) { if ((HOURS(trise)*60+MINUTES(trise)==(currTs%86400)/60) || @@ -3284,11 +3385,11 @@ if (l->nightname) { if (__sunriset__(year,month,day,geo_attr.u.coord_geo->lng,geo_attr.u.coord_geo->lat,-5,1,&trise,&tset)!=0) { //near the pole sun never rises/sets, so we should never switch profiles - dbg(1,"tset: %u:%u, sun always visible, never switch profile\n",HOURS(tset),MINUTES(tset)); + dbg(lvl_warning,"tset: %u:%u, sun always visible, never switch profile\n",HOURS(tset),MINUTES(tset)); n->prevTs=currTs; return; } - dbg(1,"tset: %u:%u\n",HOURS(tset),MINUTES(tset)); + dbg(lvl_debug,"tset: %u:%u\n",HOURS(tset),MINUTES(tset)); if (HOURS(tset)*60+MINUTES(tset)==((currTs%86400)/60) || (n->prevTs==0 && (((HOURS(tset)*60+MINUTES(tset)<(currTs%86400)/60)) || ((HOURS(trise_actual)*60+MINUTES(trise_actual)>(currTs%86400)/60))))) { @@ -3367,6 +3468,24 @@ callback_list_call_attr_0(global_navit->attr_cbl,attr_unsuspend); } +/** + * @brief Blocks or unblocks redraw operations. + * + * The {@code block} parameter specifies the operation to carry out: + * + * {@code block > 0} cancels all draw operations in progress and blocks future operations. It sets flag 1 of the + * {@code blocked} member. If draw operations in progress were canceled, flag 2 is also set. + * + * {@code block = 0} unblocks redraw operations, resetting {@code blocked} to 0. If flag 2 was previously set, + * indicating that draw operations had been previously canceled, a redraw is triggered. + * + * {@code block < 0} unblocks redraw operations and forces a redraw. As above, {@code blocked} is reset to 0. + * + * @param this_ The navit instance + * @param block The operation to perform, see description + * + * @return {@code true} if a redraw operation was triggered, {@code false} if not + */ int navit_block(struct navit *this_, int block) { @@ -3385,6 +3504,9 @@ return 0; } +/** + * @brief Returns whether redraw operations are currently blocked. + */ int navit_get_blocked(struct navit *this_) { return this_->blocked; @@ -3393,7 +3515,7 @@ void navit_destroy(struct navit *this_) { - dbg(0,"enter %p\n",this_); + dbg(lvl_debug,"enter %p\n",this_); graphics_draw_cancel(this_->gra, this_->displaylist); callback_list_call_attr_1(this_->attr_cbl, attr_destroy, this_); attr_list_free(this_->attrs); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/navit_shipped.xml navit-0.5.0+dfsg.1/navit/navit_shipped.xml --- navit-0.5.0~svn5900+dfsg.1/navit/navit_shipped.xml 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/navit_shipped.xml 2016-01-02 22:29:50.000000000 +0000 @@ -1,8 +1,8 @@ @@ -15,23 +15,27 @@ - + + - + - + + - - + + @@ -150,10 +154,6 @@ - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + @@ -641,66 +331,19 @@ static_distance="25" vehicle_width="274" vehicle_height="411" vehicle_length="2134" vehicle_weight="36287" vehicle_axle_weight="15422"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -709,7 +352,7 @@ - + @@ -1860,9 +1503,12 @@ - + + + + @@ -1911,6 +1557,24 @@ + + + + + + + + + + + + + + + + + + @@ -2464,7 +2128,7 @@ - + @@ -3323,9 +2987,12 @@ - + + + + @@ -3374,6 +3041,24 @@ + + + + + + + + + + + + + + + + + + @@ -3917,7 +3602,7 @@ - + @@ -4645,9 +4330,12 @@ - + + + + @@ -4696,6 +4384,24 @@ + + + + + + + + + + + + + + + + + + @@ -5288,7 +4994,7 @@ - + @@ -6297,9 +6003,12 @@ - + + + + @@ -6348,6 +6057,24 @@ + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/osd/core/osd_core.c navit-0.5.0+dfsg.1/navit/osd/core/osd_core.c --- navit-0.5.0~svn5900+dfsg.1/navit/osd/core/osd_core.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/osd/core/osd_core.c 2016-01-02 22:29:50.000000000 +0000 @@ -150,7 +150,7 @@ { if (imperial){ distance *= FEET_PER_METER; - if(distance <= 1500){ + if(distance <= 500){ return g_strdup_printf("%.0f%sft", round(distance / 10) * 10, sep); } else { return g_strdup_printf("%.1f%smi", distance / FEET_PER_MILE, sep); @@ -223,40 +223,31 @@ { struct osd_priv_common *opc=(struct osd_priv_common *)priv; if(opc && the_attr && ATTR_IS_INT(the_attr->type)) { + int attr_set=0; if(attr_w == the_attr->type) { - opc->osd_item.w = the_attr->u.num; - if(opc->osd_item.gr) { - osd_std_resize(&opc->osd_item); - return 1; - } + opc->osd_item.rel_w = the_attr->u.num; + attr_set=1; } else if(attr_h == the_attr->type) { - opc->osd_item.h = the_attr->u.num; - if(opc->osd_item.gr) { - osd_std_resize(&opc->osd_item); - return 1; - } + opc->osd_item.rel_h = the_attr->u.num; + attr_set=1; } else if(attr_x == the_attr->type) { - opc->osd_item.p.x = the_attr->u.num; - if(opc->osd_item.gr) { - osd_std_resize(&opc->osd_item); - return 1; - } + opc->osd_item.rel_x = the_attr->u.num; + attr_set=1; } else if(attr_y == the_attr->type) { - opc->osd_item.p.y = the_attr->u.num; - if(opc->osd_item.gr) { - osd_std_resize(&opc->osd_item); - return 1; - } + opc->osd_item.rel_y = the_attr->u.num; + attr_set=1; } else if(attr_font_size == the_attr->type) { opc->osd_item.font_size = the_attr->u.num; - if(opc->osd_item.gr) { - osd_std_resize(&opc->osd_item); - return 1; - } + attr_set=1; + } + if(attr_set && opc->osd_item.gr) { + osd_std_calculate_sizes(&opc->osd_item, navit_get_width(opc->osd_item.navit), navit_get_height(opc->osd_item.navit)); + osd_std_resize(&opc->osd_item); + return 1; } } if(opc->spec_set_attr_func) { @@ -278,7 +269,6 @@ int update_period; struct color active_color; struct graphics_gc *red; - struct graphics_gc *white; int width; }; @@ -344,7 +334,7 @@ this->warned = 0; } } - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); dist_str = format_distance(min_dist, "", imperial); @@ -352,7 +342,7 @@ p.x=(opc->osd_item.w-bbox[2].x)/2; p.y = opc->osd_item.h-opc->osd_item.h/10; - curr_color = (this->min_dist < min_dist && min_dist < this->max_dist) ? this->red : this->white; + curr_color = (this->min_dist < min_dist && min_dist < this->max_dist) ? this->red : opc->osd_item.graphic_fg; graphics_draw_text(opc->osd_item.gr, curr_color, NULL, opc->osd_item.font, dist_str, &p, 0x10000, 0); g_free(dist_str); @@ -413,9 +403,9 @@ graphics_gc_set_foreground(this->red, &red_color); graphics_gc_set_linewidth(this->red, this->width); - this->white = graphics_gc_new(opc->osd_item.gr); - graphics_gc_set_foreground(this->white, &opc->osd_item.text_color); - graphics_gc_set_linewidth(this->white, this->width); + opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr); + graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); //setup draw callback navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_route_guard_draw), attr_position_coord_geo, opc)); @@ -437,10 +427,10 @@ struct attr *attr; opc->data = (void*)this; - opc->osd_item.p.x = 120; - opc->osd_item.p.y = 20; - opc->osd_item.w = 60; - opc->osd_item.h = 80; + opc->osd_item.rel_x = 120; + opc->osd_item.rel_y = 20; + opc->osd_item.rel_w = 60; + opc->osd_item.rel_h = 80; opc->osd_item.navit = nav; opc->osd_item.font_size = 200; opc->osd_item.meth.draw = osd_draw_cast(osd_route_guard_draw); @@ -487,7 +477,7 @@ return (struct osd_priv *) opc; } - + static int odometers_saved = 0; static GList* odometer_list = NULL; @@ -498,7 +488,6 @@ struct odometer { int width; struct graphics_gc *orange; - struct graphics_gc *white; struct callback *click_cb; char *text; //text of label attribute for this osd char *name; //unique name of the odometer (needed for handling multiple odometers persistently) @@ -683,18 +672,16 @@ char buffer2[256+1]=""; if(nav) { - navit_get_attr(nav, attr_vehicle, &vehicle_attr, NULL); + if (navit_get_attr(nav, attr_vehicle, &vehicle_attr, NULL)) + curr_vehicle=vehicle_attr.u.vehicle; if (navit_get_attr(nav, attr_imperial, &imperial_attr, NULL)) imperial=imperial_attr.u.num; } - if (vehicle_attr.u.vehicle) { - curr_vehicle = vehicle_attr.u.vehicle; - } if(0==curr_vehicle) return; - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); if(this->bActive) { if(!vehicle_get_attr(curr_vehicle, attr_position_coord_geo,&position_attr, NULL)) { return; @@ -766,7 +753,7 @@ } g_free(time_buffer); - curr_color = this->bActive?this->white:this->orange; + curr_color = this->bActive?opc->osd_item.graphic_fg:this->orange; draw_multiline_osd_text(buffer,&opc->osd_item, curr_color); g_free(dist_buffer); @@ -872,11 +859,11 @@ graphics_gc_set_foreground(this->orange, &this->idle_color); graphics_gc_set_linewidth(this->orange, this->width); - this->white = graphics_gc_new(opc->osd_item.gr); - graphics_gc_set_foreground(this->white, &opc->osd_item.text_color); - graphics_gc_set_linewidth(this->white, this->width); + opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr); + graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); - graphics_gc_set_linewidth(opc->osd_item.graphic_fg_white, this->width); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_odometer_draw), attr_position_coord_geo, opc)); @@ -914,10 +901,10 @@ struct color orange_color={0xffff,0xa5a5,0x0000,0xffff}; opc->data = (void*)this; - opc->osd_item.p.x = 120; - opc->osd_item.p.y = 20; - opc->osd_item.w = 60; - opc->osd_item.h = 80; + opc->osd_item.rel_x = 120; + opc->osd_item.rel_y = 20; + opc->osd_item.rel_w = 60; + opc->osd_item.rel_h = 80; opc->osd_item.navit = nav; opc->osd_item.font_size = 200; opc->osd_item.meth.draw = osd_draw_cast(osd_odometer_draw); @@ -1014,7 +1001,7 @@ struct cmd_interface { int width; - struct graphics_gc *orange,*white; + struct graphics_gc *orange; int update_period; //in sec char* text; struct graphics_image *img; @@ -1044,7 +1031,7 @@ this->bReserved = 0; } - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); //display image if(this->img) { @@ -1055,7 +1042,7 @@ graphics_get_text_bbox(opc->osd_item.gr, opc->osd_item.font, this->text, 0x10000, 0, bbox, 0); p.x=(opc->osd_item.w-bbox[2].x)/2; p.y = opc->osd_item.h-opc->osd_item.h/10; - curr_color = this->white; + curr_color = opc->osd_item.graphic_fg; if(this->text) draw_multiline_osd_text(this->text,&opc->osd_item, curr_color); graphics_draw_mode(opc->osd_item.gr, draw_mode_end); @@ -1070,12 +1057,12 @@ osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc); - this->white = graphics_gc_new(opc->osd_item.gr); - graphics_gc_set_foreground(this->white, &opc->osd_item.text_color); - graphics_gc_set_linewidth(this->white, this->width); + opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr); + graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); - graphics_gc_set_linewidth(opc->osd_item.graphic_fg_white, this->width); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); if(this->update_period>0) { event_add_timeout(this->update_period*1000, 1, callback_new_1(callback_cast(osd_cmd_interface_draw), opc)); @@ -1133,10 +1120,10 @@ struct attr *attr; opc->data = (void*)this; - opc->osd_item.p.x = 120; - opc->osd_item.p.y = 20; - opc->osd_item.w = 60; - opc->osd_item.h = 80; + opc->osd_item.rel_x = 120; + opc->osd_item.rel_y = 20; + opc->osd_item.rel_w = 60; + opc->osd_item.rel_h = 80; opc->osd_item.navit = nav; opc->osd_item.font_size = 200; opc->osd_item.meth.draw = osd_draw_cast(osd_cmd_interface_draw); @@ -1168,7 +1155,7 @@ struct stopwatch { int width; - struct graphics_gc *orange,*white; + struct graphics_gc *orange; struct callback *click_cb; struct color idle_color; //text color when counter is idle @@ -1192,7 +1179,7 @@ time_t total_sec,total_min,total_hours,total_days; total_sec = this->sum_time; - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); if(this->bActive) { total_sec += time(0)-this->current_base_time; @@ -1213,7 +1200,7 @@ p.x=(opc->osd_item.w-bbox[2].x)/2; p.y = opc->osd_item.h-opc->osd_item.h/10; - curr_color = this->bActive?this->white:this->orange; + curr_color = this->bActive?opc->osd_item.graphic_fg:this->orange; graphics_draw_text(opc->osd_item.gr, curr_color, NULL, opc->osd_item.font, buffer, &p, 0x10000, 0); graphics_draw_mode(opc->osd_item.gr, draw_mode_end); } @@ -1270,12 +1257,12 @@ graphics_gc_set_foreground(this->orange, &this->idle_color); graphics_gc_set_linewidth(this->orange, this->width); - this->white = graphics_gc_new(opc->osd_item.gr); - graphics_gc_set_foreground(this->white, &opc->osd_item.text_color); - graphics_gc_set_linewidth(this->white, this->width); + opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr); + graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); - graphics_gc_set_linewidth(opc->osd_item.graphic_fg_white, this->width); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); event_add_timeout(500, 1, callback_new_1(callback_cast(osd_stopwatch_draw), opc)); @@ -1294,10 +1281,10 @@ struct color orange_color={0xffff,0xa5a5,0x0000,0xffff}; opc->data = (void*)this; - opc->osd_item.p.x = 120; - opc->osd_item.p.y = 20; - opc->osd_item.w = 60; - opc->osd_item.h = 80; + opc->osd_item.rel_x = 120; + opc->osd_item.rel_y = 20; + opc->osd_item.rel_w = 60; + opc->osd_item.rel_h = 80; opc->osd_item.navit = nav; opc->osd_item.font_size = 200; opc->osd_item.meth.draw = osd_draw_cast(osd_stopwatch_draw); @@ -1341,15 +1328,15 @@ if (navit_get_attr(nav, attr_imperial, &imperial_attr, NULL)) imperial=imperial_attr.u.num; - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); p.x = opc->osd_item.w/2; p.y = opc->osd_item.w/2; graphics_draw_circle(opc->osd_item.gr, - opc->osd_item.graphic_fg_white, &p, opc->osd_item.w*5/6); + opc->osd_item.graphic_fg, &p, opc->osd_item.w*5/6); if (v) { if (vehicle_get_attr(v, attr_position_direction, &attr_dir, NULL)) { vdir = *attr_dir.u.numd; - handle(opc->osd_item.gr, opc->osd_item.graphic_fg_white, &p, opc->osd_item.w/3, -vdir); + handle(opc->osd_item.gr, opc->osd_item.graphic_fg, &p, opc->osd_item.w/3, -vdir); } if (navit_get_attr(nav, attr_destination, &destination_attr, NULL) @@ -1390,7 +1377,7 @@ c.a = 65535; graphics_gc_set_foreground(this->green, &c); graphics_gc_set_linewidth(this->green, this->width); - graphics_gc_set_linewidth(opc->osd_item.graphic_fg_white, this->width); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_compass_draw), attr_position_coord_geo, opc)); if (opc->osd_item.command) @@ -1408,10 +1395,10 @@ struct attr *attr; opc->data = (void*)this; - opc->osd_item.p.x = 20; - opc->osd_item.p.y = 20; - opc->osd_item.w = 60; - opc->osd_item.h = 80; + opc->osd_item.rel_x = 20; + opc->osd_item.rel_y = 20; + opc->osd_item.rel_w = 60; + opc->osd_item.rel_h = 80; opc->osd_item.navit = nav; opc->osd_item.font_size = 200; opc->osd_item.meth.draw = osd_draw_cast(osd_compass_draw); @@ -1430,17 +1417,58 @@ char *src_dir,*src; }; + +static void +osd_button_adjust_sizes(struct osd_priv_common *opc, struct graphics_image *img) +{ + if(opc->osd_item.rel_w==ATTR_REL_RELSHIFT) + opc->osd_item.w=img->width; + if(opc->osd_item.rel_h==ATTR_REL_RELSHIFT) + opc->osd_item.h=img->height; +} + static void osd_button_draw(struct osd_priv_common *opc, struct navit *nav) { struct osd_button *this = (struct osd_button *)opc->data; - struct point bp = opc->osd_item.p; - if (!opc->osd_item.configured) - return; - osd_wrap_point(&bp, nav); - if(this->img) - graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &bp, this->img); + // FIXME: Do we need this check? + if(navit_get_blocked(nav)&1) + return; + + struct point p; + + if (this->use_overlay) { + struct graphics_image *img; + img=graphics_image_new(opc->osd_item.gr, this->src); + osd_button_adjust_sizes(opc, img); + p.x=(opc->osd_item.w-img->width)/2; + p.y=(opc->osd_item.h-img->height)/2; + osd_fill_with_bgcolor(&opc->osd_item); + graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, img); + graphics_image_free(opc->osd_item.gr, img); + } else { + struct graphics *gra; + gra = navit_get_graphics(nav); + this->img = graphics_image_new(gra, this->src); + + if (!this->img) { + dbg(lvl_warning, "failed to load '%s'\n", this->src); + return; + } + + osd_std_calculate_sizes(&opc->osd_item, navit_get_width(nav), navit_get_height(nav)); + osd_button_adjust_sizes(opc, this->img); + + p = opc->osd_item.p; + p.x+=(opc->osd_item.w-this->img->width)/2; + p.y+=(opc->osd_item.h-this->img->height)/2; + + if (!opc->osd_item.configured) + return; + + graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, this->img); + } } static void @@ -1449,16 +1477,13 @@ struct osd_button *this = (struct osd_button *)opc->data; struct graphics *gra = navit_get_graphics(nav); - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); this->img = graphics_image_new(gra, this->src); if (!this->img) { - dbg(1, "failed to load '%s'\n", this->src); + dbg(lvl_warning, "failed to load '%s'\n", this->src); return; } - if (!opc->osd_item.w) - opc->osd_item.w=this->img->width; - if (!opc->osd_item.h) - opc->osd_item.h=this->img->height; + osd_button_adjust_sizes(opc, this->img); if (this->use_overlay) { struct graphics_image *img; struct point p; @@ -1466,7 +1491,7 @@ img=graphics_image_new(opc->osd_item.gr, this->src); p.x=(opc->osd_item.w-this->img->width)/2; p.y=(opc->osd_item.h-this->img->height)/2; - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, img); graphics_draw_mode(opc->osd_item.gr, draw_mode_end); graphics_image_free(opc->osd_item.gr, img); @@ -1510,27 +1535,13 @@ gra = navit_get_graphics(nav); this_->img = graphics_image_new(gra, this_->src); if (!this_->img) { - dbg(1, "failed to load '%s'\n", this_->src); + dbg(lvl_warning, "failed to load '%s'\n", this_->src); return 0; } - if (!opc->osd_item.w) - opc->osd_item.w=this_->img->width; - if (!opc->osd_item.h) - opc->osd_item.h=this_->img->height; if(navit_get_blocked(nav)&1) return 1; - if (this_->use_overlay) { - struct graphics_image *img; - struct point p; - img=graphics_image_new(opc->osd_item.gr, this_->src); - p.x=(opc->osd_item.w-this_->img->width)/2; - p.y=(opc->osd_item.h-this_->img->height)/2; - osd_std_draw(&opc->osd_item); - graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, img); - graphics_image_free(opc->osd_item.gr, img); - } osd_button_draw(opc,nav); navit_draw(opc->osd_item.navit); return 1; @@ -1551,6 +1562,9 @@ opc->data = (void*)this; opc->osd_item.navit = nav; opc->osd_item.meth.draw = osd_draw_cast(osd_button_draw); + /*Value of 0% is stored in relative attributes as ATTR_REL_RELSHIFT, we use this value as "width/height unset" flag */ + opc->osd_item.rel_w = ATTR_REL_RELSHIFT; + opc->osd_item.rel_h = ATTR_REL_RELSHIFT; meth->set_attr = set_std_osd_attr; opc->spec_set_attr_func = osd_button_set_attr; @@ -1561,7 +1575,7 @@ osd_set_std_attr(attrs, &opc->osd_item, this->use_overlay ? 1:(1|16)); if (!opc->osd_item.command) { - dbg(0, "no command\n"); + dbg(lvl_error, "no command\n"); goto error; } attr = attr_search(attrs, NULL, attr_src_dir); @@ -1571,7 +1585,7 @@ this->src_dir=NULL; attr = attr_search(attrs, NULL, attr_src); if (!attr) { - dbg(0, "no src\n"); + dbg(lvl_error, "no src\n"); goto error; } @@ -1597,16 +1611,13 @@ struct osd_button *this = (struct osd_button *)opc->data; struct graphics *gra = navit_get_graphics(nav); - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); this->img = graphics_image_new(gra, this->src); if (!this->img) { - dbg(1, "failed to load '%s'\n", this->src); + dbg(lvl_warning, "failed to load '%s'\n", this->src); return; } - if (!opc->osd_item.w) - opc->osd_item.w=this->img->width; - if (!opc->osd_item.h) - opc->osd_item.h=this->img->height; + osd_button_adjust_sizes(opc, this->img); if (this->use_overlay) { struct graphics_image *img; struct point p; @@ -1614,7 +1625,7 @@ img=graphics_image_new(opc->osd_item.gr, this->src); p.x=(opc->osd_item.w-this->img->width)/2; p.y=(opc->osd_item.h-this->img->height)/2; - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, img); graphics_draw_mode(opc->osd_item.gr, draw_mode_end); graphics_image_free(opc->osd_item.gr, img); @@ -1638,6 +1649,9 @@ opc->data = (void*)this; opc->osd_item.navit = nav; opc->osd_item.meth.draw = osd_draw_cast(osd_button_draw); + /*Value of 0% is stored in relative attributes as ATTR_REL_RELSHIFT, we use this value as "width/height unset" flag */ + opc->osd_item.rel_w = ATTR_REL_RELSHIFT; + opc->osd_item.rel_h = ATTR_REL_RELSHIFT; meth->set_attr = set_std_osd_attr; opc->spec_set_attr_func = osd_button_set_attr; @@ -1648,7 +1662,7 @@ this->use_overlay=attr->u.num; attr = attr_search(attrs, NULL, attr_src); if (!attr) { - dbg(0, "no src\n"); + dbg(lvl_error, "no src\n"); goto error; } @@ -1663,6 +1677,173 @@ return NULL; } + +/** + * Internal data for {@code navigation_status} OSD. + */ +struct navigation_status { + char *icon_src; /**< Source for icon, with a placeholder */ + int icon_h; + int icon_w; + int last_status; /**< Last status displayed. + Apart from the usual values of {@code nav_status}, -2 is used to + indicate we have not yet received a status. */ +}; + + +/** + * @brief Draws a {@code navigation_status} OSD. + * + * @param opc The OSD to draw + * @param status The status of the navigation engine (the value of the {@code nav_status} attribute) + */ +static void osd_navigation_status_draw(struct osd_priv_common *opc, int status) { + struct navigation_status *this = (struct navigation_status *)opc->data; + struct point p; + int do_draw = opc->osd_item.do_draw; + struct graphics_image *gr_image; + char *image; + + /* When we're routing, the status will flip from 4 (routing) to 3 (recalculating) and back on + * every position update. This hack prevents unnecessary (and even undesirable) updates. + */ + int status2 = (status == 3) ? 4 : status; + + + if ((status2 != this->last_status) && (status2 != status_invalid)) { + this->last_status = status2; + do_draw = 1; + } + + if (do_draw) { + osd_fill_with_bgcolor(&opc->osd_item); + image = g_strdup_printf(this->icon_src, nav_status_to_text(status2)); + dbg(lvl_debug, "image=%s\n", image); + gr_image = + graphics_image_new_scaled(opc->osd_item.gr, + image, this->icon_w, + this->icon_h); + if (!gr_image) { + dbg(lvl_error,"failed to load %s in %dx%d\n",image,this->icon_w,this->icon_h); + g_free(image); + image = graphics_icon_path("unknown.png"); + gr_image = + graphics_image_new_scaled(opc-> + osd_item.gr, + image, + this->icon_w, + this-> + icon_h); + } + dbg(lvl_debug, "gr_image=%p\n", gr_image); + if (gr_image) { + p.x = + (opc->osd_item.w - + gr_image->width) / 2; + p.y = + (opc->osd_item.h - + gr_image->height) / 2; + graphics_draw_image(opc->osd_item.gr, + opc->osd_item. + graphic_fg, &p, + gr_image); + graphics_image_free(opc->osd_item.gr, + gr_image); + } + g_free(image); + graphics_draw_mode(opc->osd_item.gr, draw_mode_end); + } +} + + +/** + * @brief Initializes a new {@code navigation_status} OSD. + * + * This function is registered as a callback function in {@link osd_navigation_status_new(struct navit *, struct osd_methods *, struct attr **)}. + * It is called after graphics initialization has finished and can be used for any initialization + * tasks which rely on a functional graphics system. + * + * @param opc The OSD to initialize + * @param navit The navit instance + */ +static void osd_navigation_status_init(struct osd_priv_common *opc, struct navit *navit) { + struct navigation *nav = NULL; + struct attr attr; + + dbg(lvl_debug, "enter, opc=%p\n", opc); + osd_set_std_graphic(navit, &opc->osd_item, (struct osd_priv *)opc); + if (navit) + nav = navit_get_navigation(navit); + if (nav) { + navigation_register_callback(nav, attr_nav_status, callback_new_attr_1(callback_cast(osd_navigation_status_draw), attr_nav_status, opc)); + if (navigation_get_attr(nav, attr_nav_status, &attr, NULL)) + osd_navigation_status_draw(opc, attr.u.num); + } + else + dbg(lvl_error, "navigation instance is NULL, OSD will never update\n"); + //navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_std_click), attr_button, &opc->osd_item)); // FIXME do we need this? +} + + +/** + * @brief Creates a new {@code navigation_status} OSD. + * + * This initializes the data structures and registers {@link osd_navigation_status_init(struct osd_priv_common *, struct navit *)} + * as a callback. + * + * Note that this function runs before the graphics system has been initialized. Therefore, code + * that requires a functional graphics system must be placed in + * {@link osd_navigation_status_init(struct osd_priv_common *, struct navit *)}. + * + * @param nav The navit instance + * @param meth The methods for the new OSD + * @param attrs The attributes for the new OSD + */ +static struct osd_priv *osd_navigation_status_new(struct navit *nav, struct osd_methods *meth, struct attr **attrs) { + struct navigation_status *this = g_new0(struct navigation_status, 1); + struct osd_priv_common *opc = g_new0(struct osd_priv_common,1); + struct attr *attr; + + opc->data = (void*)this; + opc->osd_item.rel_x = 20; + opc->osd_item.rel_y = -80; + opc->osd_item.rel_w = 70; + opc->osd_item.navit = nav; + opc->osd_item.rel_h = 70; + opc->osd_item.font_size = 200; // FIXME may not be needed + opc->osd_item.meth.draw = osd_draw_cast(osd_navigation_status_draw); + meth->set_attr = set_std_osd_attr; + osd_set_std_attr(attrs, &opc->osd_item, 0); + + this->icon_w = -1; + this->icon_h = -1; + this->last_status = status_invalid; + + attr = attr_search(attrs, NULL, attr_icon_w); + if (attr) + this->icon_w = attr->u.num; + + attr = attr_search(attrs, NULL, attr_icon_h); + if (attr) + this->icon_h = attr->u.num; + + attr = attr_search(attrs, NULL, attr_icon_src); + if (attr) { + struct file_wordexp *we; + char **array; + we = file_wordexp_new(attr->u.str); + array = file_wordexp_get_array(we); + this->icon_src = graphics_icon_path(array[0]); + file_wordexp_destroy(we); + } else { + this->icon_src = graphics_icon_path("%s_wh.svg"); + } + + navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_navigation_status_init), attr_graphics_ready, opc)); + return (struct osd_priv *) opc; +} + + struct nav_next_turn { char *test_text; char *icon_src; @@ -1678,7 +1859,7 @@ struct nav_next_turn *this = (struct nav_next_turn *)opc->data; struct point p; - int do_draw = 0; + int do_draw = opc->osd_item.do_draw; struct navigation *nav = NULL; struct map *map = NULL; struct map_rect *mr = NULL; @@ -1699,7 +1880,7 @@ && (item->type == type_nav_position || item->type == type_nav_none || level-- > 0)); if (item) { name = item_to_name(item->type); - dbg(1, "name=%s\n", name); + dbg(lvl_debug, "name=%s\n", name); if (this->active != 1 || this->last_name != name) { this->active = 1; this->last_name = name; @@ -1715,16 +1896,16 @@ map_rect_destroy(mr); if (do_draw) { - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); if (this->active) { image = g_strdup_printf(this->icon_src, name); - dbg(1, "image=%s\n", image); + dbg(lvl_debug, "image=%s\n", image); gr_image = graphics_image_new_scaled(opc->osd_item.gr, image, this->icon_w, this->icon_h); if (!gr_image) { - dbg(0,"failed to load %s in %dx%d\n",image,this->icon_w,this->icon_h); + dbg(lvl_error,"failed to load %s in %dx%d\n",image,this->icon_w,this->icon_h); g_free(image); image = graphics_icon_path("unknown.png"); gr_image = @@ -1735,7 +1916,7 @@ this-> icon_h); } - dbg(1, "gr_image=%p\n", gr_image); + dbg(lvl_debug, "gr_image=%p\n", gr_image); if (gr_image) { p.x = (opc->osd_item.w - @@ -1745,7 +1926,7 @@ gr_image->height) / 2; graphics_draw_image(opc->osd_item.gr, opc->osd_item. - graphic_fg_white, &p, + graphic_fg, &p, gr_image); graphics_image_free(opc->osd_item.gr, gr_image); @@ -1774,11 +1955,11 @@ struct attr *attr; opc->data = (void*)this; - opc->osd_item.p.x = 20; - opc->osd_item.p.y = -80; - opc->osd_item.w = 70; + opc->osd_item.rel_x = 20; + opc->osd_item.rel_y = -80; + opc->osd_item.rel_w = 70; opc->osd_item.navit = nav; - opc->osd_item.h = 70; + opc->osd_item.rel_h = 70; opc->osd_item.font_size = 200; opc->osd_item.meth.draw = osd_draw_cast(osd_nav_next_turn_draw); meth->set_attr = set_std_osd_attr; @@ -1831,20 +2012,21 @@ struct nav_toggle_announcer *this = (struct nav_toggle_announcer *)opc->data; struct point p; - int do_draw = 0; + int do_draw = opc->osd_item.do_draw; struct graphics_image *gr_image; char *path; char *gui_sound_off = "gui_sound_off"; char *gui_sound_on = "gui_sound"; struct attr attr, speechattr; - if (this->last_state == -1) + if (!navit_get_attr(navit, attr_speech, &speechattr, NULL)) { - if (!navit_get_attr(navit, attr_speech, &speechattr, NULL) || !speech_get_attr(speechattr.u.speech, attr_active, &attr, NULL)) - attr.u.num = 1; - this->active = attr.u.num; - } else - this->active = !this->active; + dbg(lvl_error, "No speech plugin available, toggle_announcer disabled.\n"); + return; + } + if (!speech_get_attr(speechattr.u.speech, attr_active, &attr, NULL)) + attr.u.num = 1; + this->active = attr.u.num; if(this->active != this->last_state) { @@ -1852,7 +2034,7 @@ do_draw = 1; } - if (do_draw) + if (do_draw) { graphics_draw_mode(opc->osd_item.gr, draw_mode_begin); p.x = 0; @@ -1872,13 +2054,13 @@ gr_image = graphics_image_new_scaled(opc->osd_item.gr, path, this->icon_w, this->icon_h); } - dbg(1, "gr_image=%p\n", gr_image); + dbg(lvl_debug, "gr_image=%p\n", gr_image); if (gr_image) { p.x = (opc->osd_item.w - gr_image->width) / 2; p.y = (opc->osd_item.h - gr_image->height) / 2; - graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_fg_white, &p, gr_image); + graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_fg, &p, gr_image); graphics_image_free(opc->osd_item.gr, gr_image); } @@ -1907,11 +2089,11 @@ char *command = "announcer_toggle()"; opc->data = (void*)this; - opc->osd_item.w = 48; - opc->osd_item.h = 48; - opc->osd_item.p.x = -64; + opc->osd_item.rel_w = 48; + opc->osd_item.rel_h = 48; + opc->osd_item.rel_x = -64; + opc->osd_item.rel_y = 76; opc->osd_item.navit = nav; - opc->osd_item.p.y = 76; opc->osd_item.meth.draw = osd_draw_cast(osd_nav_toggle_announcer_draw); meth->set_attr = set_std_osd_attr; @@ -1956,7 +2138,7 @@ struct osd_speed_cam { int width; int flags; - struct graphics_gc *white,*orange; + struct graphics_gc *orange; struct graphics_gc *red; struct color idle_color; @@ -2121,7 +2303,7 @@ buffer [0] = 0; buffer2[0] = 0; - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); str_replace(buffer,this_->text,"${distance}",format_distance(dCurrDist,"",imperial)); str_replace(buffer2,buffer,"${camera_type}",(0<=idx && idx<=CAM_TRAFFIPAX)?camera_t_strs[idx]:""); @@ -2177,12 +2359,12 @@ graphics_gc_set_foreground(this->orange, &this->idle_color); graphics_gc_set_linewidth(this->orange, this->width); - this->white = graphics_gc_new(opc->osd_item.gr); - graphics_gc_set_foreground(this->white, &opc->osd_item.text_color); - graphics_gc_set_linewidth(this->white, this->width); + opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr); + graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); - graphics_gc_set_linewidth(opc->osd_item.graphic_fg_white, this->width); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width); navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_speed_cam_draw), attr_position_coord_geo, opc)); @@ -2246,7 +2428,6 @@ struct graphics_gc *green; struct graphics_gc *grey; struct graphics_gc *black; - struct graphics_gc *white; int width; int active; int d; @@ -2272,7 +2453,7 @@ struct graphics_image *img = this->img_off; - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); p.x=opc->osd_item.w/2-this->d/4; p.y=opc->osd_item.h/2-this->d/4; p.x=opc->osd_item.w/2; @@ -2367,7 +2548,6 @@ { struct osd_speed_warner *this = (struct osd_speed_warner *)opc->data; - struct color white_color={0xffff,0xffff,0xffff,0x0000}; struct color red_color={0xffff,0,0,0xffff}; struct color green_color={0,0xffff,0,0xffff}; struct color grey_color={0x8888,0x8888,0x8888,0x8888}; @@ -2376,6 +2556,11 @@ osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc); navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_speed_warner_draw), attr_position_coord_geo, opc)); + this->d=opc->osd_item.w; + if (opc->osd_item.h < this->d) + this->d=opc->osd_item.h; + this->width=this->d/10; + if(this->label_str && !strncmp("images:",this->label_str,7)) { char *tok1=NULL, *tok2=NULL, *tok3=NULL; strtok(this->label_str,":"); @@ -2402,10 +2587,7 @@ g_free(this->label_str); this->label_str = NULL; - this->white=graphics_gc_new(opc->osd_item.gr); - graphics_gc_set_foreground(this->white, &white_color); - - graphics_gc_set_linewidth(this->white, this->d/2-2 /*-this->width*/ ); + graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->d/2-2 /*-this->width*/ ); this->red=graphics_gc_new(opc->osd_item.gr); graphics_gc_set_foreground(this->red, &red_color); @@ -2434,11 +2616,11 @@ struct attr *attr; opc->data = (void*)this; - opc->osd_item.p.x=-80; - opc->osd_item.p.y=20; - opc->osd_item.w=60; + opc->osd_item.rel_x=-80; + opc->osd_item.rel_y=20; + opc->osd_item.rel_w=60; + opc->osd_item.rel_h=60; opc->osd_item.navit = nav; - opc->osd_item.h=60; this->active=-1; opc->osd_item.meth.draw = osd_draw_cast(osd_speed_warner_draw); meth->set_attr = set_std_osd_attr; @@ -2470,10 +2652,6 @@ else this->announce_on = 1; //announce by default osd_set_std_attr(attrs, &opc->osd_item, 2); - this->d=opc->osd_item.w; - if (opc->osd_item.h < this->d) - this->d=opc->osd_item.h; - this->width=this->d/10; navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_speed_warner_init), attr_graphics_ready, opc)); return (struct osd_priv *) opc; } @@ -2500,13 +2678,14 @@ /** - * @brief Format a text attribute + * @brief Formats a text attribute * * Returns the formatted current value of an attribute as a string * - * @param attr Pointer to an attr structure specifying the attribute to be formatted - * @param format Pointer to a string specifying how to format the attribute. Allowed format strings depend on the attribute; this member can be NULL. - * @returns Pointer to a string containing the formatted value + * @param attr The attribute to be formatted + * @param format A string specifying how to format the attribute. Allowed format strings depend on the attribute; this member can be NULL. + * @param imperial True to convert values to imperial, false to return metric values + * @returns The formatted value */ static char * osd_text_format_attr(struct attr *attr, char *format, int imperial) @@ -2659,11 +2838,17 @@ } /** - * Parse a string of the form key.subkey or key[index].subkey into its components, where subkey can itself have its own index and further subkeys + * @brief Parses a string of the form key.subkey or key[index].subkey into its components, where subkey + * can itself have its own index and further subkeys * - * @param in String to parse (the part before subkey will be modified by the function); upon returning this pointer will point to a string containing key - * @param index Pointer to an address that will receive a pointer to a string containing index or a null pointer if key does not have an index - * @returns If the function succeeds, a pointer to a string containing subkey, i.e. everything following the first period, or a pointer to an empty string if there is nothing left to parse. If the function fails(index with missing closed bracket or passing a null pointer as index argument when an index was encountered), the return value is NULL + * @param in String to parse (the part before subkey will be modified by the function); upon returning + * this pointer will point to a string containing key + * @param index Pointer to an address that will receive a pointer to a string containing index or NULL + * if key does not have an index + * @returns If the function succeeds, a pointer to a string containing subkey, i.e. everything following + * the first period, or a pointer to an empty string if there is nothing left to parse. If the function + * fails (index with missing closed bracket or passing a null pointer as index argument when an index + * was encountered), the return value is NULL */ static char * osd_text_split(char *in, char **index) @@ -2704,7 +2889,7 @@ struct osd_text *this = (struct osd_text *)opc->data; struct point p, p2[4]; char *str,*last,*next,*value,*absbegin; - int do_draw = 0; + int do_draw = opc->osd_item.do_draw; struct attr attr, vehicle_attr, maxspeed_attr, imperial_attr; struct navigation *nav = NULL; struct tracking *tracking = NULL; @@ -2754,8 +2939,8 @@ } if (item) { - dbg(1,"name %s\n", item_to_name(item->type)); - dbg(1,"type %s\n", attr_to_name(oti->attr_typ)); + dbg(lvl_debug,"name %s\n", item_to_name(item->type)); + dbg(lvl_debug,"type %s\n", attr_to_name(oti->attr_typ)); if (item_attr_get(item, oti->attr_typ, &attr)) value=osd_text_format_attr(&attr, oti->format, imperial); } @@ -2838,9 +3023,7 @@ oti=oti->next; } - if ( this->last && str && !strcmp(this->last, str) ) { - do_draw=0; - } else { + if ( !this->last || !str || strcmp(this->last, str) ) { do_draw=1; if (this->last) g_free(this->last); @@ -2849,10 +3032,10 @@ absbegin=str; if (do_draw) { - //osd_std_draw(&opc->osd_item); + //osd_fill_with_bgcolor(&opc->osd_item); } if (do_draw && str) { - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); lines=0; next=str; last=str; @@ -2870,7 +3053,7 @@ last++; } - dbg(1,"this->align=%d\n", this->align); + dbg(lvl_debug,"this->align=%d\n", this->align); switch (this->align & 51) { case 1: p.y=0; @@ -2930,10 +3113,11 @@ } /** - * @brief Create a new osd_text_item and insert it into a linked list + * @brief Creates a new osd_text_item and inserts it into a linked list * - * @param parent Pointer to the preceding osd_text_item structure in the list. If NULL, the new osd_text_item becomes the root element of a new list. - * @returns A pointer to the new osd_text_item element. + * @param parent The preceding {@code osd_text_item} in the list. If NULL, the new item becomes the root + * element of a new list + * @returns The new {@code osd_text_item} */ static struct osd_text_item * oti_new(struct osd_text_item * parent) @@ -2953,13 +3137,14 @@ } /** - * @brief Prepare a text type OSD element + * @brief Prepares a text type OSD element * - * Parses the label string (as specified in the XML file) for a text type OSD element into attributes and static text. + * This function parses the label string (as specified in the XML file) for a text type OSD element + * into attributes and static text. * - * @param this Pointer to an osd_text structure representing the OSD element. The items member of this structure will receive a pointer to a list of osd_text_item structures. - * @param nav Pointer to a navit structure - * @returns nothing + * @param opc The {@code struct osd_priv_common} for the OSD element. {@code opc->data->items} will + * receive a pointer to a list of {@code osd_text_item} structures. + * @param nav The navit structure */ static void osd_text_prepare(struct osd_priv_common *opc, struct navit *nav) @@ -3099,10 +3284,10 @@ struct attr *attr; opc->data = (void*)this; - opc->osd_item.p.x = -80; - opc->osd_item.p.y = 20; - opc->osd_item.w = 60; - opc->osd_item.h = 20; + opc->osd_item.rel_x = -80; + opc->osd_item.rel_y = 20; + opc->osd_item.rel_w = 60; + opc->osd_item.rel_h = 20; opc->osd_item.navit = nav; opc->osd_item.font_size = 200; opc->osd_item.meth.draw = osd_draw_cast(osd_text_draw); @@ -3139,7 +3324,7 @@ struct gps_status *this = (struct gps_status *)opc->data; struct point p; - int do_draw = 0; + int do_draw = opc->osd_item.do_draw; struct graphics_image *gr_image; char *image; struct attr attr, vehicle_attr; @@ -3152,7 +3337,7 @@ case 2: strength=2; if (vehicle_get_attr(vehicle_attr.u.vehicle, attr_position_sats_used, &attr, NULL)) { - dbg(1,"num=%ld\n", attr.u.num); + dbg(lvl_debug,"num=%ld\n", attr.u.num); if (attr.u.num >= 3) strength=attr.u.num-1; if (strength > 5) @@ -3177,14 +3362,14 @@ do_draw=1; } if (do_draw) { - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); if (this->active) { image = g_strdup_printf(this->icon_src, strength); gr_image = graphics_image_new_scaled(opc->osd_item.gr, image, this->icon_w, this->icon_h); if (gr_image) { p.x = (opc->osd_item.w - gr_image->width) / 2; p.y = (opc->osd_item.h - gr_image->height) / 2; - graphics_draw_image(opc->osd_item.gr, opc->osd_item. graphic_fg_white, &p, gr_image); + graphics_draw_image(opc->osd_item.gr, opc->osd_item. graphic_fg, &p, gr_image); graphics_image_free(opc->osd_item.gr, gr_image); } g_free(image); @@ -3198,6 +3383,9 @@ { osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc); navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_draw), attr_position_coord_geo, opc)); + navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_draw), attr_position_fix_type, opc)); + navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_draw), attr_position_sats_used, opc)); + navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_draw), attr_position_hdop, opc)); osd_gps_status_draw(opc, nav, NULL); } @@ -3210,11 +3398,11 @@ struct attr *attr; opc->data = (void*)this; - opc->osd_item.p.x = 20; - opc->osd_item.p.y = -80; - opc->osd_item.w = 60; + opc->osd_item.rel_x = 20; + opc->osd_item.rel_y = -80; + opc->osd_item.rel_w = 60; opc->osd_item.navit = nav; - opc->osd_item.h = 40; + opc->osd_item.rel_h = 40; opc->osd_item.font_size = 200; opc->osd_item.meth.draw = osd_draw_cast(osd_gps_status_draw); meth->set_attr = set_std_osd_attr; @@ -3265,14 +3453,14 @@ struct graphics_image *gr_image; char *image; - osd_std_draw(&opc->osd_item); + osd_fill_with_bgcolor(&opc->osd_item); if (this->active) { image = g_strdup_printf(this->icon_src, this->strength); gr_image = graphics_image_new_scaled(opc->osd_item.gr, image, this->icon_w, this->icon_h); if (gr_image) { p.x = (opc->osd_item.w - gr_image->width) / 2; p.y = (opc->osd_item.h - gr_image->height) / 2; - graphics_draw_image(opc->osd_item.gr, opc->osd_item. graphic_fg_white, &p, gr_image); + graphics_draw_image(opc->osd_item.gr, opc->osd_item. graphic_fg, &p, gr_image); graphics_image_free(opc->osd_item.gr, gr_image); } g_free(image); @@ -3286,7 +3474,6 @@ struct volume *this = (struct volume *)opc->data; struct point bp = opc->osd_item.p; - osd_wrap_point(&bp, nav); if ((p->x < bp.x || p->y < bp.y || p->x > bp.x + opc->osd_item.w || p->y > bp.y + opc->osd_item.h) && !opc->osd_item.pressed) return; navit_ignore_button(nav); @@ -3321,11 +3508,11 @@ struct attr *attr; opc->data = (void*)this; - opc->osd_item.p.x = 20; - opc->osd_item.p.y = -80; - opc->osd_item.w = 60; + opc->osd_item.rel_x = 20; + opc->osd_item.rel_y = -80; + opc->osd_item.rel_w = 60; + opc->osd_item.rel_h = 40; opc->osd_item.navit = nav; - opc->osd_item.h = 40; opc->osd_item.font_size = 200; opc->osd_item.meth.draw = osd_draw_cast(osd_volume_draw); meth->set_attr = set_std_osd_attr; @@ -3391,34 +3578,36 @@ int scale_x_offset,scale_length_on_map,scale_length_pixels; double distance_on_map; char *text; - struct osd_item scale_item=opc->osd_item; - int width_reduced=scale_item.w*9/10; + int width_reduced; int imperial=0; + osd_std_calculate_sizes(&opc->osd_item, navit_get_width(nav), navit_get_height(nav)); + + width_reduced=opc->osd_item.w*9/10; + if (navit_get_attr(nav, attr_imperial, &imperial_attr, NULL)) imperial=imperial_attr.u.num; if (!navit_get_attr(nav, attr_transformation, &transformation, NULL)) return; if (this->use_overlay) { - graphics_draw_mode(scale_item.gr, draw_mode_begin); + graphics_draw_mode(opc->osd_item.gr, draw_mode_begin); item_pos.x=0; item_pos.y=0; - graphics_draw_rectangle(scale_item.gr, scale_item.graphic_bg, &item_pos, scale_item.w, scale_item.h); + graphics_draw_rectangle(opc->osd_item.gr, opc->osd_item.graphic_bg, &item_pos, opc->osd_item.w, opc->osd_item.h); } else { - item_pos=scale_item.p; - osd_wrap_point(&item_pos, nav); + item_pos=opc->osd_item.p; } scale_line_start=item_pos; - scale_line_start.y+=scale_item.h/2; - scale_line_start.x+=(scale_item.w-width_reduced)/2; + scale_line_start.y+=opc->osd_item.h/2; + scale_line_start.x+=(opc->osd_item.w-width_reduced)/2; scale_line_end=scale_line_start; scale_line_end.x+=width_reduced; distance_on_map=transform_pixels_to_map_distance(transformation.u.transformation, width_reduced); scale_length_on_map=round_to_nice_value(distance_on_map); scale_length_pixels=scale_length_on_map/distance_on_map*width_reduced; - scale_x_offset=(scale_item.w-scale_length_pixels) / 2; + scale_x_offset=(opc->osd_item.w-scale_length_pixels) / 2; p[0]=scale_line_start; p[1]=scale_line_end; @@ -3426,12 +3615,12 @@ p[1].x-=scale_x_offset; p[2]=p[0]; p[3]=p[0]; - p[2].y-=scale_item.h/10; - p[3].y+=scale_item.h/10; + p[2].y-=opc->osd_item.h/10; + p[3].y+=opc->osd_item.h/10; p[4]=p[1]; p[5]=p[1]; - p[4].y-=scale_item.h/10; - p[5].y+=scale_item.h/10; + p[4].y-=opc->osd_item.h/10; + p[5].y+=opc->osd_item.h/10; p[6]=p[2]; p[6].x-=2; p[6].y-=2; @@ -3440,20 +3629,20 @@ p[8]=p[4]; p[8].x-=2; p[8].y-=2; - graphics_draw_rectangle(scale_item.gr, scale_item.graphic_fg_white, p+6, 4,scale_item.h/5+4); - graphics_draw_rectangle(scale_item.gr, scale_item.graphic_fg_white, p+7, p[1].x-p[0].x, 4); - graphics_draw_rectangle(scale_item.gr, scale_item.graphic_fg_white, p+8, 4,scale_item.h/5+4); - graphics_draw_lines(scale_item.gr, this->black, p, 2); - graphics_draw_lines(scale_item.gr, this->black, p+2, 2); - graphics_draw_lines(scale_item.gr, this->black, p+4, 2); + graphics_draw_rectangle(opc->osd_item.gr, opc->osd_item.graphic_fg, p+6, 4,opc->osd_item.h/5+4); + graphics_draw_rectangle(opc->osd_item.gr, opc->osd_item.graphic_fg, p+7, p[1].x-p[0].x, 4); + graphics_draw_rectangle(opc->osd_item.gr, opc->osd_item.graphic_fg, p+8, 4,opc->osd_item.h/5+4); + graphics_draw_lines(opc->osd_item.gr, this->black, p, 2); + graphics_draw_lines(opc->osd_item.gr, this->black, p+2, 2); + graphics_draw_lines(opc->osd_item.gr, this->black, p+4, 2); text=format_distance(scale_length_on_map, "", imperial); - graphics_get_text_bbox(scale_item.gr, scale_item.font, text, 0x10000, 0, bbox, 0); - p[0].x=(scale_item.w-bbox[2].x)/2+item_pos.x; - p[0].y=item_pos.y+scale_item.h-scale_item.h/10; - graphics_draw_text(scale_item.gr, this->black, scale_item.graphic_fg_white, scale_item.font, text, &p[0], 0x10000, 0); + graphics_get_text_bbox(opc->osd_item.gr, opc->osd_item.font, text, 0x10000, 0, bbox, 0); + p[0].x=(opc->osd_item.w-bbox[2].x)/2+item_pos.x; + p[0].y=item_pos.y+opc->osd_item.h-opc->osd_item.h/10; + graphics_draw_text(opc->osd_item.gr, this->black, opc->osd_item.graphic_fg, opc->osd_item.font, text, &p[0], 0x10000, 0); g_free(text); if (this->use_overlay) - graphics_draw_mode(scale_item.gr, draw_mode_end); + graphics_draw_mode(opc->osd_item.gr, draw_mode_end); } static void @@ -3461,19 +3650,16 @@ { struct osd_scale *this = (struct osd_scale *)opc->data; - struct color color_white={COLOR_WHITE_}; struct color color_black={COLOR_BLACK_}; struct graphics *gra = navit_get_graphics(nav); - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); if (this->use_overlay) { osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc); } else { opc->osd_item.configured=1; opc->osd_item.gr=gra; opc->osd_item.font = graphics_font_new(opc->osd_item.gr, opc->osd_item.font_size, 1); - opc->osd_item.graphic_fg_white=graphics_gc_new(opc->osd_item.gr); - opc->osd_item.color_white=color_white; - graphics_gc_set_foreground(opc->osd_item.graphic_fg_white, &opc->osd_item.color_white); + opc->osd_item.graphic_fg=graphics_gc_new(opc->osd_item.gr); } this->black=graphics_gc_new(opc->osd_item.gr); graphics_gc_set_foreground(this->black, &color_black); @@ -3532,6 +3718,17 @@ return; p.x=opc->osd_item.w/2; p.y=opc->osd_item.h/2; + + if (opc->osd_item.rel_h || opc->osd_item.rel_w) { + struct map_selection sel; + memset(&sel, 0, sizeof(sel)); + sel.u.p_rect.rl.x=opc->osd_item.w; + sel.u.p_rect.rl.y=opc->osd_item.h; + dbg(lvl_debug,"osd_auxmap_draw: sel.u.p_rect.rl=(%d, %d)\n", opc->osd_item.w, opc->osd_item.h); + transform_set_screen_selection(this->trans, &sel); + graphics_set_rect(opc->osd_item.gr, &sel.u.p_rect); + } + transform_set_center(this->trans, transform_get_center(this->ntrans)); transform_set_scale(this->trans, 64); transform_set_yaw(this->trans, transform_get_yaw(this->ntrans)); @@ -3594,10 +3791,10 @@ struct osd_priv_common *opc = g_new0(struct osd_priv_common,1); opc->data = (void*)this; - opc->osd_item.p.x = 20; - opc->osd_item.p.y = -80; - opc->osd_item.w = 60; - opc->osd_item.h = 40; + opc->osd_item.rel_x = 20; + opc->osd_item.rel_y = -80; + opc->osd_item.rel_w = 60; + opc->osd_item.rel_h = 40; opc->osd_item.font_size = 200; meth->set_attr = set_std_osd_attr; osd_set_std_attr(attrs, &opc->osd_item, 0); @@ -3626,4 +3823,5 @@ plugin_register_osd_type("auxmap", osd_auxmap_new); plugin_register_osd_type("cmd_interface", osd_cmd_interface_new); plugin_register_osd_type("route_guard", osd_route_guard_new); + plugin_register_osd_type("navigation_status", osd_navigation_status_new); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/osd.c navit-0.5.0+dfsg.1/navit/osd.c --- navit-0.5.0~svn5900+dfsg.1/navit/osd.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/osd.c 2016-01-02 22:29:50.000000000 +0000 @@ -53,8 +53,10 @@ if (! type) return NULL; new=plugin_get_osd_type(type->u.str); - if (! new) + if (! new) { + dbg(lvl_error, "invalid OSD type '%s'\n", type->u.str); return NULL; + } o=g_new0(struct osd, 1); o->attrs=attr_list_dup(attrs); cbl.type=attr_callback_list; @@ -70,7 +72,7 @@ g_free(o); o=NULL; } - dbg(3,"new osd %p\n",o); + dbg(lvl_debug,"new osd %p\n",o); return o; } @@ -105,9 +107,10 @@ static void osd_destroy(struct osd *osd) { - if (osd && osd->meth.destroy) { + if (!osd) + return; + if (osd->meth.destroy) osd->meth.destroy(osd->priv); - } attr_list_free(osd->attrs); g_free(osd); } @@ -128,18 +131,20 @@ struct attr navit; navit.type=attr_navit; navit.u.navit=nav; - dbg(1, "calling command '%s'\n", this->command); + dbg(lvl_debug, "calling command '%s'\n", this->command); command_evaluate(&navit, this->command); } void osd_std_click(struct osd_item *this, struct navit *nav, int pressed, int button, struct point *p) { + int click_is_outside_item; struct point bp = this->p; if (!this->command || !this->command[0]) return; osd_wrap_point(&bp, nav); - if ((p->x < bp.x || p->y < bp.y || p->x > bp.x + this->w || p->y > bp.y + this->h || !this->configured) && !this->pressed) + click_is_outside_item = p->x < bp.x || p->y < bp.y || p->x > bp.x + this->w || p->y > bp.y + this->h; + if ((click_is_outside_item || !this->configured) && !this->pressed) return; if (button != 1) return; @@ -155,34 +160,62 @@ void osd_std_resize(struct osd_item *item) { - graphics_overlay_resize(item->gr, &item->p, item->w, item->h, 65535, 1); + graphics_overlay_resize(item->gr, &item->p, item->w, item->h, 1); } +/** + * @brief Calculates the size and position of an OSD item. + * + * If the geometry of the OSD item is specified relative to screen dimensions, + * this function will set its absolute dimensions accordingly. If relative width + * or relative height is set to 0% (int value is equal to ATTR_REL_RELSHIFT), + * object width (height) is not changed here, for button and image osds it means + * to derive values from the underlying image. + * @param item + * @param w Available screen width in pixels (the width that corresponds to + * 100%) + * @param h Available screen height in pixels (the height that corresponds to + * 100%) + */ +void +osd_std_calculate_sizes(struct osd_item *item, int w, int h) +{ + if(item->rel_w!=ATTR_REL_RELSHIFT) + item->w=attr_rel2real(item->rel_w, w, 1); + if(item->w<0) + item->w=0; + if(item->rel_h!=ATTR_REL_RELSHIFT) + item->h=attr_rel2real(item->rel_h, h, 1); + if(item->h<0) + item->h=0; + item->p.x=attr_rel2real(item->rel_x, w, 1); + item->p.y=attr_rel2real(item->rel_y, h, 1); +} + +/** + * @brief Recalculates the size and position of an OSD item and + * triggers a redraw of the item. + * + * @param item + * @param priv + * @param w Available screen width in pixels (the width that corresponds to + * 100%) + * @param h Available screen height in pixels (the height that corresponds to + * 100%) + */ static void -osd_std_calculate_sizes(struct osd_item *item, struct osd_priv *priv, int w, int h) +osd_std_calculate_sizes_and_redraw(struct osd_item *item, struct osd_priv *priv, int w, int h) { struct attr vehicle_attr; - if (item->rel_w) { - item->w = (item->rel_w * w) / 100; - } - - if (item->rel_h) { - item->h = (item->rel_h * h) / 100; - } - - if (item->rel_x) { - item->p.x = (item->rel_x * w) / 100; - } - - if (item->rel_y) { - item->p.y = (item->rel_y * h) / 100; - } + osd_std_calculate_sizes(item, w, h); osd_std_resize(item); + item->do_draw=1; if (item->meth.draw) { if (navit_get_attr(item->navit, attr_vehicle, &vehicle_attr, NULL)) { item->meth.draw(priv, item->navit, vehicle_attr.u.vehicle); + item->do_draw=0; } } } @@ -192,27 +225,44 @@ { #if 0 int i; - dbg(0,"key=%s\n",key); + dbg(lvl_debug,"key=%s\n",key); for (i = 0 ; i < strlen(key) ; i++) { - dbg(0,"key:0x%02x\n",key[i]); + dbg(lvl_debug,"key:0x%02x\n",key[i]); } for (i = 0 ; i < strlen(item->accesskey) ; i++) { - dbg(0,"accesskey:0x%02x\n",item->accesskey[i]); + dbg(lvl_debug,"accesskey:0x%02x\n",item->accesskey[i]); } #endif if ( ! graphics_is_disabled(item->gr) && item->accesskey && key && !strcmp(key, item->accesskey)) osd_evaluate_command(item, nav); } +/** + * @brief Configures or unconfigures an OSD item. + * + * This method evaluates the result of the last execution of {@code cs}. If it evaluates to true, the + * item is configured, else it is unconfigured. (A configured item is displayed on the screen and can + * respond to user input, an unconfigured item is invisible and cannot receive user input.) + * + * If an error occurred during evaluation of {@code cs}, the item's configuration state is not changed. + * + * @param item The OSD item to reconfigure + * @param cs The command to evaluate + */ static void osd_std_reconfigure(struct osd_item *item, struct command_saved *cs) { + char *err = NULL; /* Error description */ + + dbg(lvl_debug, "enter, item=%p, cs=%p\n", item, cs); if (!command_saved_error(cs)) { item->configured = !! command_saved_get_int(cs); if (item->gr && !(item->flags & 16)) graphics_overlay_disable(item->gr, !item->configured); } else { - dbg(0, "Error in saved command: %i\n", command_saved_error(cs)); + err = command_error_to_text(command_saved_error(cs)); + dbg(lvl_error, "Error in saved command: %s, cs=%p.\n", err, cs); + g_free(err); } } @@ -223,10 +273,10 @@ item->flags=flags; item->osd_configuration=-1; - item->color_white.r = 0xffff; - item->color_white.g = 0xffff; - item->color_white.b = 0xffff; - item->color_white.a = 0xffff; + item->color_fg.r = 0xffff; + item->color_fg.g = 0xffff; + item->color_fg.b = 0xffff; + item->color_fg.a = 0xffff; item->text_color.r = 0xffff; item->text_color.g = 0xffff; item->text_color.b = 0xffff; @@ -254,42 +304,22 @@ attr = attr_search(attrs, NULL, attr_w); if (attr) { - if (attr->u.num > ATTR_REL_MAXABS) { - item->rel_w = attr->u.num - ATTR_REL_RELSHIFT; - } else { - item->rel_w = 0; - item->w = attr->u.num; - } + item->rel_w = attr->u.num; } attr = attr_search(attrs, NULL, attr_h); if (attr) { - if (attr->u.num > ATTR_REL_MAXABS) { - item->rel_h = attr->u.num - ATTR_REL_RELSHIFT; - } else { - item->rel_h = 0; - item->h = attr->u.num; - } + item->rel_h = attr->u.num; } attr = attr_search(attrs, NULL, attr_x); if (attr) { - if (attr->u.num > ATTR_REL_MAXABS) { - item->rel_x = attr->u.num - ATTR_REL_RELSHIFT; - } else { - item->rel_x = 0; - item->p.x = attr->u.num; - } + item->rel_x = attr->u.num; } attr = attr_search(attrs, NULL, attr_y); if (attr) { - if (attr->u.num > ATTR_REL_MAXABS) { - item->rel_y = attr->u.num - ATTR_REL_RELSHIFT; - } else { - item->rel_y = 0; - item->p.y = attr->u.num; - } + item->rel_y = attr->u.num; } attr = attr_search(attrs, NULL, attr_font_size); @@ -305,9 +335,9 @@ attr=attr_search(attrs, NULL, attr_text_color); if (attr) item->text_color=*attr->u.color; - attr=attr_search(attrs, NULL, attr_flags); + attr=attr_search(attrs, NULL, attr_foreground_color); if (attr) - item->attr_flags=attr->u.num; + item->color_fg=*attr->u.color; attr=attr_search(attrs, NULL, attr_accesskey); if (attr) item->accesskey = g_strdup(attr->u.str); @@ -320,7 +350,9 @@ osd_std_config(struct osd_item *item, struct navit *navit) { struct attr attr; - dbg(1,"enter\n"); + char *err = NULL; /* Error description */ + + dbg(lvl_debug, "enter, item=%p, enable_cs=%p\n", item, item->enable_cs); if (item->enable_cs) { item->reconfig_cb = callback_new_1(callback_cast(osd_std_reconfigure), item); command_saved_set_cb(item->enable_cs, item->reconfig_cb); @@ -328,7 +360,9 @@ if (!command_saved_error(item->enable_cs)) { item->configured = !! command_saved_get_int(item->enable_cs); } else { - dbg(0, "Error in saved command: %i.\n", command_saved_error(item->enable_cs)); + err = command_error_to_text(command_saved_error(item->enable_cs)); + dbg(lvl_error, "Error in saved command: %s, item=%p.\n", err, item); + g_free(err); } } else { if (!navit_get_attr(navit, attr_osd_configuration, &attr, NULL)) @@ -342,6 +376,7 @@ void osd_set_std_config(struct navit *nav, struct osd_item *item) { + dbg(lvl_debug, "enter, item=%p\n", item); item->cb = callback_new_attr_2(callback_cast(osd_std_config), attr_osd_configuration, item, nav); navit_add_callback(nav, item->cb); osd_std_config(item, nav); @@ -351,7 +386,7 @@ osd_set_keypress(struct navit *nav, struct osd_item *item) { struct graphics *navit_gr = navit_get_graphics(nav); - dbg(2,"accesskey %s\n",item->accesskey); + dbg(lvl_info,"accesskey %s\n",item->accesskey); if (item->accesskey) { item->keypress_cb=callback_new_attr_2(callback_cast(osd_std_keypress), attr_keypress, item, nav); graphics_add_callback(navit_gr, item->keypress_cb); @@ -364,14 +399,15 @@ struct graphics *navit_gr; navit_gr = navit_get_graphics(nav); - item->gr = graphics_overlay_new(navit_gr, &item->p, item->w, item->h, 65535, 1); + osd_std_calculate_sizes(item, navit_get_width(nav), navit_get_height(nav)); + item->gr = graphics_overlay_new(navit_gr, &item->p, item->w, item->h, 1); item->graphic_bg = graphics_gc_new(item->gr); graphics_gc_set_foreground(item->graphic_bg, &item->color_bg); graphics_background_gc(item->gr, item->graphic_bg); - item->graphic_fg_white = graphics_gc_new(item->gr); - graphics_gc_set_foreground(item->graphic_fg_white, &item->color_white); + item->graphic_fg = graphics_gc_new(item->gr); + graphics_gc_set_foreground(item->graphic_fg, &item->color_fg); if (item->flags & 2) { item->font = graphics_named_font_new(item->gr, item->font_name, item->font_size, 1); @@ -381,37 +417,19 @@ osd_set_std_config(nav, item); - item->resize_cb = callback_new_attr_2(callback_cast(osd_std_calculate_sizes), attr_resize, item, priv); + item->resize_cb = callback_new_attr_2(callback_cast(osd_std_calculate_sizes_and_redraw), attr_resize, item, priv); graphics_add_callback(navit_gr, item->resize_cb); osd_set_keypress(nav, item); } void -osd_std_draw(struct osd_item *item) +osd_fill_with_bgcolor(struct osd_item *item) { - struct point p[2]; - int flags=item->attr_flags; - + struct point p[1]; graphics_draw_mode(item->gr, draw_mode_begin); p[0].x=0; p[0].y=0; graphics_draw_rectangle(item->gr, item->graphic_bg, p, item->w, item->h); - p[1].x=item->w-1; - p[1].y=0; - if (flags & 1) - graphics_draw_lines(item->gr, item->graphic_fg_text, p, 2); - p[0].x=item->w-1; - p[0].y=item->h-1; - if (flags & 2) - graphics_draw_lines(item->gr, item->graphic_fg_text, p, 2); - p[1].x=0; - p[1].y=item->h-1; - if (flags & 4) - graphics_draw_lines(item->gr, item->graphic_fg_text, p, 2); - p[0].x=0; - p[0].y=0; - if (flags & 8) - graphics_draw_lines(item->gr, item->graphic_fg_text, p, 2); } struct object_func osd_func = { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/osd.h navit-0.5.0+dfsg.1/navit/osd.h --- navit-0.5.0~svn5900+dfsg.1/navit/osd.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/osd.h 2016-01-02 22:29:50.000000000 +0000 @@ -39,12 +39,12 @@ struct osd_item { struct point p; struct osd_item_methods meth; - int flags, attr_flags, w, h, fg_line_width, font_size, osd_configuration, configured; + int flags, w, h, fg_line_width, font_size, osd_configuration, configured; int rel_w, rel_h, rel_x, rel_y; - struct color color_bg, color_white, text_color; + struct color color_bg, color_fg, text_color; struct navit *navit; struct graphics *gr; - struct graphics_gc *graphic_bg, *graphic_fg_white, *graphic_fg_text; + struct graphics_gc *graphic_bg, *graphic_fg, *graphic_fg_text; struct graphics_font *font; char *font_name; struct callback *cb; @@ -55,6 +55,7 @@ char *command; struct command_saved *enable_cs; char *accesskey; + int do_draw; /**< Whether the item needs to be redrawn. */ }; /* prototypes */ @@ -71,7 +72,8 @@ void osd_set_std_config(struct navit *nav, struct osd_item *item); void osd_set_std_graphic(struct navit *nav, struct osd_item *item, struct osd_priv *priv); void osd_std_resize(struct osd_item *item); -void osd_std_draw(struct osd_item *item); +void osd_std_calculate_sizes(struct osd_item *item, int w, int h); +void osd_fill_with_bgcolor(struct osd_item *item); int osd_set_attr(struct osd *osd, struct attr* attr); int osd_get_attr(struct osd *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter); /* end of prototypes */ diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/plugin/j1850/CMakeLists.txt navit-0.5.0+dfsg.1/navit/plugin/j1850/CMakeLists.txt --- navit-0.5.0~svn5900+dfsg.1/navit/plugin/j1850/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/plugin/j1850/CMakeLists.txt 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1 @@ +module_add_library(plugin_j1850 j1850.c) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/plugin/j1850/j1850.c navit-0.5.0+dfsg.1/navit/plugin/j1850/j1850.c --- navit-0.5.0~svn5900+dfsg.1/navit/plugin/j1850/j1850.c 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/plugin/j1850/j1850.c 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,506 @@ +/* vim: set tabstop=4 expandtab: */ +/** + * Navit, a modular navigation system. + * Copyright (C) 2005-2014 Navit Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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. + */ + +/* + This plugin implements a small subset of the SAE j1850 protocal used in some cars. + So far the code assumes that it is run on Linux. It allows Navit to read the steering + wheel inputs and some metrics like RPM or the fuel tank level + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "graphics.h" +#include "color.h" +#include "osd.h" + +struct j1850 { + struct navit *nav; + int status; + int device; + int index; + char message[255]; + char * filename; + struct event_idle *idle; + struct callback *callback; + struct osd_item osd_item; + int width; + struct graphics_gc *orange,*white; + struct callback *click_cb; + int init_string_index; + + int engine_rpm; + int trans_rpm; + int map; + int tank_level; + int odo; +}; + +/** + * @brief Generates a fake sentence. Used for debugging + * @param[in] dest - the char * to which we will write the sentence + * lenght - the length of the sentence to generate + * + * @return nothing + * + * Generates a fake string to simulate data from the serial port + * + */ +void rand_str(char *dest, size_t length) { + char charset[] = "0123456789" + "ABCDEF"; + + while (length-- > 0) { + size_t index = (double) rand() / RAND_MAX * (sizeof charset - 1); + *dest++ = charset[index]; + } + *dest = '\0'; +} + +/** + * @brief Writes 'cmd' to the serial port' + * @param[in] cmd - the char * that we will write to the serial port + * device - the serial port device + * + * @return nothing + * + * Write the cmd to the serial port + * + */ +void write_to_serial_port(unsigned char *cmd, int device) +{ + int n_written = 0; + do { + n_written += write( device, &cmd[n_written], 1 ); + } + while (cmd[n_written-1] != '\r' && n_written > 0); + dbg(lvl_info,"sent %s to the serial port\n",cmd); +} + +/** + * @brief Function called when navit is idle. Does the continous reading + * @param[in] j1850 - the j1850 struct containing the state of the plugin + * + * @return nothing + * + * This is the main function of this plugin. It is called when navit is idle, + * and performs the initialization of the obd device if needed, then reads + * one char each time it is called, and puts this char in a buffer. When it + * reads an EOL character, the buffer is parsed, and the appropriate action is + * taken. The buffer is then cleared and we start over. + * + */ +static void +j1850_idle(struct j1850 *j1850) +{ + int n; // used to keep track of the numbers of char read from the device + int value; // used to convert the ascii char to an int + char buf = '\0'; // the buffer where we store the char read from the device + char header[3]; // a buffer to store the j1850 header for easier matching + struct timeval tv; // used to timestamp the logs + struct attr navit; + + const char *init_string[] = { + "ATZ\r\n", + "ATI\r\n", + "ATL1\r\n", + "ATH1\r\n", + "ATS1\r\n", + "ATAL\r\n", + "ATMA\r\n", + NULL + }; + + // Make sure we sent all init commands before trying to read + if ( init_string[j1850->init_string_index]) + { + dbg(lvl_info,"Sending next init command : %s\n",init_string[j1850->init_string_index]); + if (j1850->device > 0 ){ + write_to_serial_port(init_string[j1850->init_string_index++],j1850->device); + } + + // Did we reach the last init command? + if ( !init_string[j1850->init_string_index]) + { + // if yes, switch to idle read instead of timed read + event_remove_timeout(j1850->idle); + j1850->idle=event_add_idle(125, j1850->callback); + } + return; + } + navit.type=attr_navit; + navit.u.navit=j1850->nav; + + // If not connected, generate random messages for debugging purpose + if (j1850->device < 0 ){ + rand_str(j1850->message,8); + return; + } + + n = read( j1850->device, &buf, 1 ); + if(n == -1) { + dbg(lvl_debug,"x\n"); + } else if (n==0) { + dbg(lvl_debug,".\n"); + } else { + if( buf == 13 ) { + gettimeofday(&tv, NULL); + unsigned long long millisecondsSinceEpoch = + (unsigned long long)(tv.tv_sec) * 1000 + + (unsigned long long)(tv.tv_usec) / 1000; + + j1850->message[j1850->index]='\0'; + FILE *fp; + fp = fopen(j1850->filename,"a"); + fprintf(fp, "%llu,%s\n", millisecondsSinceEpoch, j1850->message); + fclose(fp); + strncpy(header, j1850->message, 2); + header[2]='\0'; + if( strncmp(header,"10",2)==0 ) { + char * w1 = strndup(j1850->message+2, 2); + char * w2 = strndup(j1850->message+4, 2); + char * w3 = strndup(j1850->message+6, 2); + j1850->engine_rpm = ((int)strtol(w1, NULL, 16) ) / 4 ; + j1850->trans_rpm = ((int)strtol(w2, NULL, 16) ) / 4 ; + j1850->map = (int)strtol(w3, NULL, 16); + } else if( strncmp(header,"3D",2)==0 ) { + if (strcmp(j1850->message, "3D110000EE") == 0) { + // noise + } else if (strcmp(j1850->message, "3D1120009B") == 0) { + dbg(lvl_error,"L1\n"); + command_evaluate(&navit, "gui.spotify_volume_up()" ); + } else if (strcmp(j1850->message, "3D110080C8") == 0) { + dbg(lvl_error,"L2\n"); + command_evaluate(&navit, "gui.spotify_volume_toggle()" ); + } else if (strcmp(j1850->message, "3D1110005A") == 0) { + dbg(lvl_error,"L3\n"); + command_evaluate(&navit, "gui.spotify_volume_down()" ); + } else if (strcmp(j1850->message, "3D110400C3") == 0) { + dbg(lvl_error,"R1\n"); + command_evaluate(&navit, "gui.spotify_next_track()" ); + } else if (strcmp(j1850->message, "3D110002D4") == 0) { + dbg(lvl_error,"R2\n"); + command_evaluate(&navit, "gui.spotify_toggle()" ); + } else if (strcmp(j1850->message, "3D11020076") == 0) { + dbg(lvl_error,"R3\n"); + command_evaluate(&navit, "gui.spotify_previous_track()" ); + } else { + dbg(lvl_error,"Got button from %s\n", j1850->message); + } + } else if( strncmp(header,"72",2)==0 ) { + char * data=strndup(j1850->message+2, 8); + j1850->odo=((int)strtol(data, NULL, 16) )/8000; + } else if( strncmp(header,"90",2)==0 ) { + } else if( strncmp(header,"A4",2)==0 ) { + char * w1 =strndup(j1850->message+2, 4); + j1850->tank_level = ((int)strtol(w1, NULL, 16) ) / 4 ; + } else { + // printf(" ascii: %i [%s] with header [%s]\n",buf, response, header); + } + // Message has been processed. Let's clear it + j1850->message[0]='\0'; + j1850->index=0; + } else { + value=buf-48; + if(value==-16 || buf == 10 ){ + //space and newline, discard + return; + } else if (value>16) { + // chars, need to shift down + value-=7; + j1850->message[j1850->index]=buf; + j1850->index++; + } else if (buf == '<' ) { + // We have a data error. Let's truncate the message + j1850->message[j1850->index]='\0'; + j1850->index++; + } else { + j1850->message[j1850->index]=buf; + j1850->index++; + } + // printf("{%c:%i}", buf,value); + } + } +} + +/** + * @brief Draws the j1850 OSD + * @param[in] j1850 - the j1850 struct containing the state of the plugin + * nav - the navit object + * v - the vehicle object + * + * @return nothing + * + * Draws the j1850 OSD. Currently it only displays the last parsed message + * + */ +static void +osd_j1850_draw(struct j1850 *this, struct navit *nav, + struct vehicle *v) +{ + osd_std_draw(&this->osd_item); + + struct point p, bbox[4]; + + graphics_get_text_bbox(this->osd_item.gr, this->osd_item.font, this->message, 0x10000, 0, bbox, 0); + p.x=(this->osd_item.w-bbox[2].x)/2; + p.y = this->osd_item.h-this->osd_item.h/10; + + struct graphics_gc *curr_color = this->white; + // online? use this->bActive?this->white:this->orange; + graphics_draw_text(this->osd_item.gr, curr_color, NULL, this->osd_item.font, this->message, &p, 0x10000, 0); + graphics_draw_mode(this->osd_item.gr, draw_mode_end); +} + +/** + * @brief Initialize the j1850 OSD + * @param[in] j1850 - the j1850 struct containing the state of the plugin + * nav - the navit object + * + * @return nothing + * + * Initialize the j1850 OSD + * + */ +static void +osd_j1850_init(struct j1850 *this, struct navit *nav) +{ + + struct color c; + osd_set_std_graphic(nav, &this->osd_item, (struct osd_priv *)this); + + // Used when debugging or when the device is offline + this->orange = graphics_gc_new(this->osd_item.gr); + c.r = 0xFFFF; + c.g = 0xA5A5; + c.b = 0x0000; + c.a = 65535; + graphics_gc_set_foreground(this->orange, &c); + graphics_gc_set_linewidth(this->orange, this->width); + + // Used when we are receiving real datas from the device + this->white = graphics_gc_new(this->osd_item.gr); + c.r = 65535; + c.g = 65535; + c.b = 65535; + c.a = 65535; + graphics_gc_set_foreground(this->white, &c); + graphics_gc_set_linewidth(this->white, this->width); + + + graphics_gc_set_linewidth(this->osd_item.graphic_fg_white, this->width); + + event_add_timeout(500, 1, callback_new_1(callback_cast(osd_j1850_draw), this)); + + j1850_init_serial_port(this); + + // navit_add_callback(nav, this->click_cb = callback_new_attr_1(callback_cast (osd_j1850_click), attr_button, this)); + + osd_j1850_draw(this, nav, NULL); +} + +/** + * @brief Sends 'cmd' and reads the reply from the device + * @param[in] cmd - the char * that we will write to the serial port + * device - the serial port device + * + * @return nothing + * + * Sends 'cmd' and reads the reply from the device + * + */ +void send_and_read(unsigned char *cmd, int USB) +{ + int n_written = 0; + do { + n_written += write( USB, &cmd[n_written], 1 ); + } + while (cmd[n_written-1] != '\r' && n_written > 0); + + int n = 0; + char buf = '\0'; + + /* Whole response*/ + char response[255]; + + do + { + n = read( USB, &buf, 1 ); + if(n == -1) { + dbg(lvl_debug,"x"); + } else if (n==0) { + dbg(lvl_debug,"."); + } else { + dbg(lvl_debug,"[%s]", &buf); + } + } + while( buf != '\r' && n > 0); + + if (n < 0) { + dbg(lvl_error,"Read error\n"); + } else if (n == 0) { + dbg(lvl_error,"Nothing to read?\n"); + } else { + dbg(lvl_error,"Response : \n"); + } +} + +/** + * @brief Opens the serial port and saves state to the j1850 object + * @param[in] j1850 - the j1850 struct containing the state of the plugin + * + * @return nothing + * + * Opens the serial port and saves state to the j1850 object + * + */ +void +j1850_init_serial_port(struct j1850 *j1850) +{ + j1850->callback=callback_new_1(callback_cast(j1850_idle), j1850); + // Fixme : we should read the device path from the config file + j1850->device = open( "/dev/ttyUSB0", O_RDWR| O_NOCTTY ); + if ( j1850->device < 0 ) + { + dbg(lvl_error,"Can't open port\n"); + j1850->idle=event_add_timeout(100, 1, j1850->callback); + return; + } + + struct termios tty; + struct termios tty_old; + memset (&tty, 0, sizeof tty); + + /* Error Handling */ + if ( tcgetattr ( j1850->device, &tty ) != 0 ) + { + dbg(lvl_error,"Error\n"); + return; + } + + /* Save old tty parameters */ + tty_old = tty; + + /* Set Baud Rate */ + cfsetospeed (&tty, (speed_t)B115200); + cfsetispeed (&tty, (speed_t)B115200); + + /* Setting other Port Stuff */ + tty.c_cflag &= ~PARENB; // Make 8n1 + tty.c_cflag &= ~CSTOPB; + tty.c_cflag &= ~CSIZE; + tty.c_cflag |= CS8; + + tty.c_cflag &= ~CRTSCTS; // no flow control + tty.c_cc[VMIN] = 1; // read doesn't block + tty.c_cc[VTIME] = 10; // 0.5 seconds read timeout + tty.c_cflag |= CREAD | CLOCAL; // turn on READ & ignore ctrl lines + + /* Make raw */ + cfmakeraw(&tty); + + /* Flush Port, then applies attributes */ + tcflush( j1850->device, TCIFLUSH ); + if ( tcsetattr ( j1850->device, TCSANOW, &tty ) != 0) + { + dbg(lvl_error,"Flush error\n"); + return; + } + + dbg(lvl_error,"Port init ok\n"); + // For the init part, we want to wait 1sec before each init string + j1850->idle=event_add_timeout(1000, 1, j1850->callback); +} + +/** + * @brief Creates the j1850 OSD and set some default properties + * @param[in] nav - the navit object + * meth - the osd_methods + * attrs - pointer to the attributes + * + * @return nothing + * + * Creates the j1850 OSD and set some default properties + * + */ +static struct osd_priv * +osd_j1850_new(struct navit *nav, struct osd_methods *meth, + struct attr **attrs) +{ + struct j1850 *this=g_new0(struct j1850, 1); + this->nav=nav; + time_t current_time = time(NULL); + // FIXME : make sure that the directory we log to exists! + this->filename=g_strdup_printf("/home/navit/.navit/obd/%ld.log",(long)current_time); + dbg(lvl_error,"Will log to %s\n", this->filename); + this->init_string_index=0; + struct attr *attr; + this->osd_item.p.x = 120; + this->osd_item.p.y = 20; + this->osd_item.w = 160; + this->osd_item.h = 20; + this->osd_item.navit = nav; + this->osd_item.font_size = 200; + this->osd_item.meth.draw = osd_draw_cast(osd_j1850_draw); + + osd_set_std_attr(attrs, &this->osd_item, 2); + attr = attr_search(attrs, NULL, attr_width); + this->width=attr ? attr->u.num : 2; + navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_j1850_init), attr_graphics_ready, this)); + return (struct osd_priv *) this; +} + +/** + * @brief The plugin entry point + * + * @return nothing + * + * The plugin entry point + * + */ +void +plugin_init(void) +{ + struct attr callback,navit; + struct attr_iter *iter; + + plugin_register_osd_type("j1850", osd_j1850_new); +} diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/plugin/pedestrian/pedestrian.c navit-0.5.0+dfsg.1/navit/plugin/pedestrian/pedestrian.c --- navit-0.5.0~svn5900+dfsg.1/navit/plugin/pedestrian/pedestrian.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/plugin/pedestrian/pedestrian.c 2016-01-02 22:29:50.000000000 +0000 @@ -92,13 +92,13 @@ transform_set_hog(rocket->trans, rocket->hog); graphics_displaylist_draw(rocket->gra, rocket->dl, rocket->trans, rocket->layout, 0); rocket->v+=rocket->a-rocket->g; - dbg(0,"enter v=%d\n",rocket->v); + dbg(lvl_debug,"enter v=%d\n",rocket->v); if (rocket->t > 0) rocket->t--; else rocket->a=0; rocket->hog+=rocket->v/rocket->vscale; - dbg(0,"hog=%d\n",rocket->hog); + dbg(lvl_debug,"hog=%d\n",rocket->hog); if (rocket->hog < 0) { transform_set_hog(rocket->trans, 0); transform_set_order_base(rocket->trans, 14); @@ -192,7 +192,7 @@ if (navit_get_attr(nav, attr_layout, &attr, NULL)) rocket->layout=attr.u.layout; if (navit_get_attr(nav, attr_callback_list, &attr, NULL)) { - dbg(0,"ok\n"); + dbg(lvl_debug,"ok\n"); command_add_table(attr.u.callback_list, commands, sizeof(commands)/sizeof(struct command_table), rocket); } } @@ -207,7 +207,7 @@ #if 0 struct attr graphics; struct point p; - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); if (!navit_get_attr(nav, attr_graphics, &graphics, NULL)) return; p.x=40; @@ -401,7 +401,7 @@ map_route_occluded_check_buildings(struct coord *c0) { struct building *b=buildings; - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); int i,count; struct coord *c; #if 1 @@ -414,7 +414,7 @@ count=b->sd->count; if (c[count-1].x == c[0].x && c[count-1].y == c[0].y) { #if 0 - dbg(0,"closed\n"); + dbg(lvl_debug,"closed\n"); #endif count--; } @@ -457,11 +457,11 @@ num=-num; den=-den; } - dbg(1,"num=%f den=%f\n", num, den); + dbg(lvl_debug,"num=%f den=%f\n", num, den); if (i) { i->x=p1->x+(num/den)*(p2->x-p1->x)+0.5; i->y=p1->y+(num/den)*(p2->y-p1->y)+0.5; - dbg(1,"i=0x%x,0x%x\n", i->x, i->y); + dbg(lvl_debug,"i=0x%x,0x%x\n", i->x, i->y); if (debug2) fprintf(debug2, "0x%x 0x%x type=town_label_5e3\n", i->x, i->y); } @@ -489,18 +489,18 @@ struct building *b=buildings; struct coord cn; #ifdef DEBUG_VISIBLE - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); #endif while (b) { if (side(&b->left, &b->right, c1) < 0 || side(&b->left, &b->right, c2) < 0) { #ifdef DEBUG_VISIBLE - dbg(0,"sides left: start %d end %d right: start %d end %d\n", side(c0, &b->left, c1), side(c0, &b->left, c2), side(c0, &b->right, c1), side(c0, &b->right, c2)); + dbg(lvl_debug,"sides left: start %d end %d right: start %d end %d\n", side(c0, &b->left, c1), side(c0, &b->left, c2), side(c0, &b->right, c1), side(c0, &b->right, c2)); #endif for (;;) { if (side(c0, &b->left, c1) <= 0) { if (side(c0, &b->left, c2) > 0) { #ifdef DEBUG_VISIBLE - dbg(0,"visible: start is left of left corner and end is right of left corner, clipping end\n"); + dbg(lvl_debug,"visible: start is left of left corner and end is right of left corner, clipping end\n"); #endif res=intersect(c0, &b->left, c1, c2, &cn); if (res < 256) @@ -516,7 +516,7 @@ if (side(c0, &b->right, c1) >= 0) { if (side(c0, &b->right, c2) < 0) { #ifdef DEBUG_VISIBLE - dbg(0,"visible: start is right of right corner and end is left of right corner, clipping end\n"); + dbg(lvl_debug,"visible: start is right of right corner and end is left of right corner, clipping end\n"); #endif res=intersect(c0, &b->right, c1, c2, &cn); if (res < 256) @@ -532,7 +532,7 @@ if (side(c0, &b->left, c2) <= 0) { if (side(c0, &b->left, c1) > 0) { #ifdef DEBUG_VISIBLE - dbg(0,"visible: end is left of left corner and start is right of left corner, clipping start\n"); + dbg(lvl_debug,"visible: end is left of left corner and start is right of left corner, clipping start\n"); #endif res=intersect(c0, &b->left, c1, c2, &cn); if (res < 256) @@ -548,7 +548,7 @@ if (side(c0, &b->right, c2) >= 0) { if (side(c0, &b->right, c1) < 0) { #ifdef DEBUG_VISIBLE - dbg(0,"visible: end is right of right corner and start is left of right corner, clipping start\n"); + dbg(lvl_debug,"visible: end is right of right corner and start is left of right corner, clipping start\n"); #endif res=intersect(c0, &b->right, c1, c2, &cn); if (res < 256) @@ -562,7 +562,7 @@ break; } #ifdef DEBUG_VISIBLE - dbg(0,"visible: not visible\n"); + dbg(lvl_debug,"visible: not visible\n"); #endif return 4; } @@ -570,7 +570,7 @@ b=b->next; } #ifdef DEBUG_VISIBLE - dbg(0,"return %d\n",ret); + dbg(lvl_debug,"return %d\n",ret); #endif return ret; } @@ -579,7 +579,7 @@ map_route_occluded_coord_rewind(void *priv_data) { struct map_rect_priv *mr = priv_data; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); mr->idx=mr->idx_base; mr->first=1; mr->lseg_done=mr->lseg_done_base; @@ -594,7 +594,7 @@ map_route_occluded_attr_rewind(void *priv_data) { struct map_rect_priv *mr=priv_data; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); item_attr_rewind(mr->route_item); } @@ -602,7 +602,7 @@ map_route_occluded_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr) { struct map_rect_priv *mr=priv_data; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); return item_attr_get(mr->route_item, attr_type, attr); } @@ -625,7 +625,7 @@ char buffer[4096]; #ifdef DEBUG_COORD_GET - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); #endif dbg_assert(count >= 2); if (! mr->checked) { @@ -635,11 +635,11 @@ } while (ret < count && !mr->last) { #ifdef DEBUG_COORD_GET - dbg(1,"coord first %d lseg_done %d\n",mr->first,mr->lseg_done); + dbg(lvl_debug,"coord first %d lseg_done %d\n",mr->first,mr->lseg_done); #endif if (mr->lseg_done) { #ifdef DEBUG_COORD_GET - dbg(1,"loading %d of %d from id_lo %d\n", mr->idx, mr->sd->count, mr->sd->item.id_lo); + dbg(lvl_debug,"loading %d of %d from id_lo %d\n", mr->idx, mr->sd->count, mr->sd->item.id_lo); #endif if (!mr->idx) { if (coord_next(mr, &mr->lseg[0])) { @@ -663,7 +663,7 @@ l0=mr->c_next; l1=mr->lseg[1]; #ifdef DEBUG_COORD_GET - dbg(1,"line (0x%x,0x%x)-(0x%x,0x%x)\n", l0.x,l0.y,l1.x,l1.y); + dbg(lvl_debug,"line (0x%x,0x%x)-(0x%x,0x%x)\n", l0.x,l0.y,l1.x,l1.y); #endif vis=is_visible_line(&mr->c0, &l0, &l1); if (debug) { @@ -672,7 +672,7 @@ fprintf(debug,"0x%x 0x%x\n", l1.x, l1.y); } #ifdef DEBUG_COORD_GET - dbg(1,"vis=%d line (0x%x,0x%x)-(0x%x,0x%x)\n", vis, l0.x,l0.y,l1.x,l1.y); + dbg(lvl_debug,"vis=%d line (0x%x,0x%x)-(0x%x,0x%x)\n", vis, l0.x,l0.y,l1.x,l1.y); #endif mr->idx_base=mr->idx; mr->c_next_base=mr->c_next; @@ -683,11 +683,11 @@ case 0: mr->c_next_base=mr->c_next; #ifdef DEBUG_COORD_GET - dbg(1,"out 0x%x,0x%x\n", l0.x, l1.y); + dbg(lvl_debug,"out 0x%x,0x%x\n", l0.x, l1.y); #endif c[ret++]=l0; #ifdef DEBUG_COORD_GET - dbg(1,"out 0x%x,0x%x\n", l1.x, l1.y); + dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y); #endif c[ret++]=l1; mr->lseg_done_base=mr->lseg_done=1; @@ -695,12 +695,12 @@ break; case 1: #ifdef DEBUG_COORD_GET - dbg(1,"begin clipped\n"); - dbg(1,"out 0x%x,0x%x\n", l0.x, l1.y); + dbg(lvl_debug,"begin clipped\n"); + dbg(lvl_debug,"out 0x%x,0x%x\n", l0.x, l1.y); #endif c[ret++]=l0; #ifdef DEBUG_COORD_GET - dbg(1,"out 0x%x,0x%x\n", l1.x, l1.y); + dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y); #endif c[ret++]=l1; mr->c_next_base=mr->c_next=l1; @@ -708,15 +708,15 @@ break; case 2: #ifdef DEBUG_COORD_GET - dbg(1,"end clipped\n"); + dbg(lvl_debug,"end clipped\n"); #endif mr->c_next_base=mr->c_next; #ifdef DEBUG_COORD_GET - dbg(1,"out 0x%x,0x%x\n", l0.x, l1.y); + dbg(lvl_debug,"out 0x%x,0x%x\n", l0.x, l1.y); #endif c[ret++]=l0; #ifdef DEBUG_COORD_GET - dbg(1,"out 0x%x,0x%x\n", l1.x, l1.y); + dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y); #endif c[ret++]=l1; mr->c_next_base=mr->c_next=l1; @@ -724,15 +724,15 @@ break; case 3: #ifdef DEBUG_COORD_GET - dbg(1,"both clipped\n"); + dbg(lvl_debug,"both clipped\n"); #endif mr->c_next_base=mr->c_next; #ifdef DEBUG_COORD_GET - dbg(1,"out 0x%x,0x%x\n", l0.x, l1.y); + dbg(lvl_debug,"out 0x%x,0x%x\n", l0.x, l1.y); #endif c[ret++]=l0; #ifdef DEBUG_COORD_GET - dbg(1,"out 0x%x,0x%x\n", l1.x, l1.y); + dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y); #endif c[ret++]=l1; mr->c_next_base=mr->c_next=l1; @@ -745,21 +745,21 @@ #if 0 case 2: - dbg(1,"visible up to 0x%x,0x%x\n",l1.x,l1.y); + dbg(lvl_debug,"visible up to 0x%x,0x%x\n",l1.x,l1.y); if (mr->first) { mr->first=0; c[ret++]=mr->c_out; - dbg(1,"out 0x%x,0x%x\n", mr->c_out.x, mr->c_out.y); + dbg(lvl_debug,"out 0x%x,0x%x\n", mr->c_out.x, mr->c_out.y); } c[ret++]=mr->c_out=l1; - dbg(1,"out 0x%x,0x%x\n", l1.x, l1.y); + dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y); mr->last=1; mr->route_item_done=1; break; case 1: case 3: case 4: - dbg(1,"invisible\n"); + dbg(lvl_debug,"invisible\n"); mr->c_out=l1; mr->idx++; mr->last=1; @@ -772,7 +772,7 @@ } } #ifdef DEBUG_COORD_GET - dbg(1,"ret=%d last=%d\n", ret, mr->last); + dbg(lvl_debug,"ret=%d last=%d\n", ret, mr->last); #endif return ret; } @@ -801,16 +801,16 @@ struct map_rect *route_map_rect; struct coord_rect r; if (!navit_get_attr(priv->navit, attr_route, &route, NULL)) { - dbg(0,"no route in navit\n"); + dbg(lvl_debug,"no route in navit\n"); return NULL; } if (!route_get_attr(route.u.route, attr_map, &route_map, NULL)) { - dbg(0,"no map in route\n"); + dbg(lvl_debug,"no map in route\n"); return NULL; } route_map_rect=map_rect_new(route_map.u.map, sel); if (!route_map_rect) { - dbg(0,"no route map rect\n"); + dbg(lvl_debug,"no route map rect\n"); return NULL; } map_dump_file(route_map.u.map, "route.txt"); @@ -865,17 +865,17 @@ static struct item * map_route_occluded_get_item(struct map_rect_priv *mr) { - dbg(1,"enter last=%d\n",mr->last); + dbg(lvl_debug,"enter last=%d\n",mr->last); while (!mr->last) { struct coord c[128]; map_route_occluded_coord_get(mr, c, 128); } if (mr->route_item_done) { - dbg(1,"next route item\n"); + dbg(lvl_debug,"next route item\n"); do { mr->route_item=map_rect_get_item(mr->route_map_rect); } while (mr->route_item && mr->route_item->type != type_street_route); - dbg(1,"item %p\n", mr->route_item); + dbg(lvl_debug,"item %p\n", mr->route_item); if (!mr->route_item) return NULL; mr->item.type=type_street_route_occluded; @@ -889,7 +889,7 @@ return NULL; #endif map_route_occluded_coord_rewind(mr); - dbg(1,"type %s\n", item_to_name(mr->route_item->type)); + dbg(lvl_debug,"type %s\n", item_to_name(mr->route_item->type)); return &mr->item; } @@ -921,14 +921,14 @@ { struct map_priv *ret; struct attr *navit; - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); navit=attr_search(attrs, NULL, attr_navit); if (! navit) return NULL; ret=g_new0(struct map_priv, 1); *meth=map_route_occluded_methods; ret->navit=navit->u.navit; - dbg(0,"m=%p navit=%p\n", ret, ret->navit); + dbg(lvl_debug,"m=%p navit=%p\n", ret, ret->navit); return ret; } @@ -977,16 +977,16 @@ if (orientation == 2) return; if (!navit_get_attr(pedestrian_data.nav, attr_route, &route, NULL)) { - dbg(0,"no route in navit\n"); + dbg(lvl_debug,"no route in navit\n"); return; } if (!route_get_attr(route.u.route, attr_map, &route_map, NULL)) { - dbg(0,"no map in route\n"); + dbg(lvl_debug,"no map in route\n"); return; } route_map_rect=map_rect_new(route_map.u.map, NULL); if (!route_map_rect) { - dbg(0,"no route map rect\n"); + dbg(lvl_debug,"no route map rect\n"); return; } while ((item=map_rect_get_item(route_map_rect))) { @@ -1021,7 +1021,6 @@ p.x=0; p.y=0; graphics_gc_set_foreground(gc, &c); - graphics_gc_set_stipple(gc, NULL); graphics_draw_rectangle(gra, gc, &p, 1000, 200); graphics_gc_destroy(gc); #endif @@ -1042,7 +1041,7 @@ ret=write(fd, buffer+axis, 1); if (ret != 2) { - dbg(0,"ret=%d\n",ret); + dbg(lvl_debug,"ret=%d\n",ret); } } @@ -1062,7 +1061,7 @@ data->len=0; if (navit_get_attr(nav, attr_transformation, &attr, NULL)) { struct transformation *trans=attr.u.transformation; - dbg(0,"ok axis=%d val=0x%x\n", data->axis, val); + dbg(lvl_debug,"ok axis=%d val=0x%x\n", data->axis, val); if (data->axis != 1) { transform_set_pitch(trans, 90+(val-0x80)); } else { @@ -1093,7 +1092,7 @@ char buffer[32]; fd=open("/dev/tiltsensor",O_RDWR); if (fd == -1) { - dbg(0,"Failed to set up tilt sensor, error %d\n",errno); + dbg(lvl_error,"Failed to set up tilt sensor, error %d\n",errno); return; } tcgetattr(fd, &t); @@ -1126,7 +1125,7 @@ sensors[sensor-1][2]=*z; if (sensors_locked) return; - dbg(1,"enter %d %f %f %f\n",sensor,*x,*y,*z); + dbg(lvl_debug,"enter %d %f %f %f\n",sensor,*x,*y,*z); if (sensor == 1) { if (*x > 7.5) orientation=1; /* landscape */ @@ -1134,7 +1133,7 @@ orientation=0; /* portrait */ if (*z > 7.5) orientation=2; /* flat */ - dbg(1,"orientation=%d\n",orientation); + dbg(lvl_debug,"orientation=%d\n",orientation); } if ((orientation_old == 2) != (orientation == 2)) { struct attr attr, flags_graphics, osd_configuration; @@ -1179,7 +1178,7 @@ if (orientation != 2) pitch+=2.0; transform_set_pitch(trans, (int)pitch); - dbg(1,"pich %d %f\n",orientation,pitch); + dbg(lvl_debug,"pich %d %f\n",orientation,pitch); } else { struct attr attr; attr.type=attr_orientation; @@ -1188,7 +1187,7 @@ attr.u.num+=360; pedestrian_data.yaw=attr.u.num; navit_set_attr(nav, &attr); - dbg(1,"yaw %d %f\n",orientation,yaw); + dbg(lvl_debug,"yaw %d %f\n",orientation,yaw); if (orientation == 2) navit_set_center_cursor(nav, 1, 0); } @@ -1220,7 +1219,7 @@ struct attr attr; if (vehicle_get_attr(v, attr_position_direction, &attr, NULL)) { int dir=(int)(*attr.u.numd); - dbg(0,"enter %d\n",dir); + dbg(lvl_debug,"enter %d\n",dir); transform_set_pitch(trans, 90); transform_set_yaw(trans, dir); } @@ -1245,15 +1244,15 @@ jmethodID cid; jobject navitsensors; - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); if (android_find_class_global("org/navitproject/navit/NavitSensors", &navitsensorsclass)) { - dbg(0,"class found\n"); + dbg(lvl_debug,"class found\n"); cid = (*jnienv)->GetMethodID(jnienv, navitsensorsclass, "", "(Landroid/content/Context;I)V"); - dbg(0,"cid=%p\n",cid); + dbg(lvl_debug,"cid=%p\n",cid); if (cid) { cb=callback_new_1(callback_cast(android_sensors), nav); navitsensors=(*jnienv)->NewObject(jnienv, navitsensorsclass, cid, android_activity, cb); - dbg(0,"object=%p\n",navitsensors); + dbg(lvl_debug,"object=%p\n",navitsensors); if (navitsensors) navitsensors = (*jnienv)->NewGlobalRef(jnienv, navitsensors); } @@ -1288,14 +1287,14 @@ return; if (!route_get_attr(route.u.route, attr_map, &route_map, NULL)) return; - dbg(0,"enter 1\n"); + dbg(lvl_debug,"enter 1\n"); #if 0 struct attr active; active.type=attr_active; active.u.num=0; if (!map_set_attr(route_map.u.map, &active)) return; - dbg(0,"enter 2\n"); + dbg(lvl_debug,"enter 2\n"); #endif if (!navit_get_attr(nav, attr_mapset, &mapset, NULL)) return; @@ -1318,7 +1317,7 @@ iter=navit_attr_iter_new(); while(navit_get_attr(nav, attr_layout, &attr, iter)) { if (!strcmp(attr.u.layout->name, "Route")) { - dbg(0,"found %s\n",attr_to_name(attr.type)); + dbg(lvl_debug,"found %s\n",attr_to_name(attr.type)); main_layout=attr; #if 1 navit_set_attr(nav, &attr); @@ -1344,7 +1343,7 @@ static void pedestrian_navit(struct navit *nav, int add) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); struct attr callback; if (add) { callback.type=attr_callback; @@ -1363,10 +1362,10 @@ jmethodID Activity_setRequestedOrientation; if (!android_find_class_global("android/app/Activity", &ActivityClass)) - dbg(0,"failed to get class android/app/Activity\n"); + dbg(lvl_error,"failed to get class android/app/Activity\n"); Activity_setRequestedOrientation = (*jnienv)->GetMethodID(jnienv, ActivityClass, "setRequestedOrientation", "(I)V"); if (Activity_setRequestedOrientation == NULL) - dbg(0,"failed to get method setRequestedOrientation from android/app/Activity\n"); + dbg(lvl_error,"failed to get method setRequestedOrientation from android/app/Activity\n"); (*jnienv)->CallVoidMethod(jnienv, android_activity, Activity_setRequestedOrientation, 0); #endif diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/plugin.c navit-0.5.0+dfsg.1/navit/plugin.c --- navit-0.5.0~svn5900+dfsg.1/navit/plugin.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/plugin.c 2016-01-02 22:29:50.000000000 +0000 @@ -170,20 +170,20 @@ GModule *mod; if (pl->mod) { - dbg(0,"can't load '%s', already loaded\n", pl->name); - return 0; + dbg(lvl_debug,"'%s' already loaded, returning\n", pl->name); + return 1; } mod=g_module_open(pl->name, G_MODULE_BIND_LOCAL | (pl->lazy ? G_MODULE_BIND_LAZY : 0)); if (! mod) { - dbg(0,"can't load '%s', Error '%s'\n", pl->name, g_module_error()); + dbg(lvl_error,"can't load '%s', Error '%s'\n", pl->name, g_module_error()); return 0; } if (!g_module_symbol(mod, "plugin_init", &init)) { - dbg(0,"can't load '%s', plugin_init not found\n", pl->name); + dbg(lvl_error,"can't load '%s', plugin_init not found\n", pl->name); g_module_close(mod); return 0; } else { - dbg(1, "loaded module %s\n", pl->name); + dbg(lvl_debug, "loaded module %s\n", pl->name); pl->mod=mod; pl->init=init; } @@ -278,7 +278,7 @@ pls=parent->u.plugins; if (! (path_attr=attr_search(attrs, NULL, attr_path))) { - dbg(0,"missing path\n"); + dbg(lvl_error,"missing path\n"); return NULL; } if ( (attr=attr_search(attrs, NULL, attr_active))) { @@ -290,20 +290,20 @@ if ( (attr=attr_search(attrs, NULL, attr_ondemand))) { ondemand=attr->u.num; } - dbg(1, "path=\"%s\", active=%d, lazy=%d, ondemand=%d\n",path_attr->u.str, active, lazy, ondemand); + dbg(lvl_debug, "path=\"%s\", active=%d, lazy=%d, ondemand=%d\n",path_attr->u.str, active, lazy, ondemand); we=file_wordexp_new(path_attr->u.str); count=file_wordexp_get_count(we); array=file_wordexp_get_array(we); - dbg(2,"expanded to %d words\n",count); + dbg(lvl_info,"expanded to %d words\n",count); if (count != 1 || file_exists(array[0])) { for (i = 0 ; i < count ; i++) { name=array[i]; - dbg(2,"found plugin module file [%d]: '%s'\n", i, name); + dbg(lvl_info,"found plugin module file [%d]: '%s'\n", i, name); if (! (pls && (pl=g_hash_table_lookup(pls->hash, name)))) { pl=plugin_new_from_path(name); if (! pl) { - dbg(0,"failed to create plugin from file '%s'\n", name); + dbg(lvl_error,"failed to create plugin from file '%s'\n", name); continue; } if (pls) { @@ -355,7 +355,7 @@ l=g_list_next(l); } } else { - dbg(0, "Warning: No plugins found. Is Navit installed correctly?\n"); + dbg(lvl_error, "Warning: No plugins found. Is Navit installed correctly?\n"); } #endif } @@ -377,54 +377,57 @@ g_free(pls); } - void * +static void * +find_by_name(enum plugin_type type, const char *name) +{ + GList *name_list=plugin_types[type]; + while (name_list) { + struct name_val *nv=name_list->data; + if (!g_ascii_strcasecmp(nv->name, name)) + return nv->val; + name_list=g_list_next(name_list); + } + return NULL; +} + +void * plugin_get_type(enum plugin_type type, const char *type_name, const char *name) { - GList *l,*lpls; - struct name_val *nv; + GList *plugin_list; struct plugin *pl; char *mod_name, *filename=NULL, *corename=NULL; + void *result=NULL; - dbg(1, "type=\"%s\", name=\"%s\"\n", type_name, name); + dbg(lvl_debug, "type=\"%s\", name=\"%s\"\n", type_name, name); - l=plugin_types[type]; - while (l) { - nv=l->data; - if (!g_ascii_strcasecmp(nv->name, name)) - return nv->val; - l=g_list_next(l); + if ((result=find_by_name(type, name))) { + return result; } if (!pls) return NULL; - lpls=pls->list; + plugin_list=pls->list; filename=g_strjoin("", "lib", type_name, "_", name, NULL); corename=g_strjoin("", "lib", type_name, "_", "core", NULL); - while (lpls) { - pl=lpls->data; + while (plugin_list) { + pl=plugin_list->data; if ((mod_name=g_strrstr(pl->name, "/"))) mod_name++; else mod_name=pl->name; - dbg(2,"compare '%s' with '%s'\n", mod_name, filename); if (!g_ascii_strncasecmp(mod_name, filename, strlen(filename)) || !g_ascii_strncasecmp(mod_name, corename, strlen(corename))) { - dbg(1, "Loading module \"%s\"\n",pl->name) ; + dbg(lvl_debug, "Loading module \"%s\"\n",pl->name) ; if (plugin_get_active(pl)) if (!plugin_load(pl)) plugin_set_active(pl, 0); if (plugin_get_active(pl)) plugin_call_init(pl); - l=plugin_types[type]; - while (l) { - nv=l->data; - if (!g_ascii_strcasecmp(nv->name, name)) { - g_free(filename); - g_free(corename); - return nv->val; - } - l=g_list_next(l); + if ((result=find_by_name(type, name))) { + g_free(filename); + g_free(corename); + return result; } } - lpls=g_list_next(lpls); + plugin_list=g_list_next(plugin_list); } g_free(filename); g_free(corename); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/popup.c navit-0.5.0+dfsg.1/navit/popup.c --- navit-0.5.0~svn5900+dfsg.1/navit/popup.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/popup.c 2016-01-02 22:29:50.000000000 +0000 @@ -87,7 +87,7 @@ } else { - dbg(0,"could not open file for distortions !!"); + dbg(lvl_error,"could not open file for distortions !!"); } /* else - if (map) */ g_free(dist_filename); /* free the file name */ @@ -99,7 +99,7 @@ static void popup_traffic_distortion_blocked(struct item *item) { - dbg(0,"item=%p\n",item); + dbg(lvl_debug,"item=%p\n",item); popup_traffic_distortion(item, "maxspeed=0"); } @@ -180,7 +180,7 @@ static void popup_set_position(struct navit *nav, struct pcoord *pc) { - dbg(1,"%p %p\n", nav, pc); + dbg(lvl_debug,"%p %p\n", nav, pc); navit_set_position(nav, pc); } @@ -214,7 +214,7 @@ va_start(ap, fmt); str=g_strdup_vprintf(fmt, ap); - dbg(0,"%s\n", str); + dbg(lvl_debug,"%s\n", str); us=str; while (*us) { if (*us == '_') @@ -310,7 +310,7 @@ struct map_rect *mr; mr=map_rect_new(item->map,NULL); item=map_rect_get_item_byid(mr, item->id_hi, item->id_lo); - dbg(0,"item=%p\n",item); + dbg(lvl_debug,"item=%p\n",item); item_dump_filedesc(item,item->map,stdout); map_rect_destroy(mr); } @@ -349,7 +349,7 @@ if (diitem->map) { mr=map_rect_new(diitem->map,NULL); item=map_rect_get_item_byid(mr, diitem->id_hi, diitem->id_lo); - dbg(1,"item=%p\n", item); + dbg(lvl_debug,"item=%p\n", item); if (item) { popup_show_attrs(item->map, menu_item, item); popup_printf_cb(menu_item, menu_type_menu, callback_new_1(callback_cast(popup_item_dump), diitem), "Dump"); @@ -425,7 +425,7 @@ coord_format(g.lat,g.lng,DEGREES_MINUTES_SECONDS,buffer,sizeof(buffer)); popup_printf(men, menu_type_menu, "%s", buffer); popup_printf(men, menu_type_menu, "%f %f", g.lat, g.lng); - dbg(1,"%p %p\n", nav, &c); + dbg(lvl_debug,"%p %p\n", nav, &c); c.pro = transform_get_projection(navit_get_trans(nav)); c.x = co.x; c.y = co.y; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/profile.c navit-0.5.0+dfsg.1/navit/profile.c --- navit-0.5.0~svn5900+dfsg.1/navit/profile.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/profile.c 2016-01-02 22:29:50.000000000 +0000 @@ -27,40 +27,61 @@ #include "profile.h" #include "debug.h" +#define PROFILE_LEVEL_MAX 9 + +/** + * @brief Log timing information. + * + * @note Normally this function is called via the macro 'profile', which automatically fills in + * parameters 'module' and 'function'. + * + * Successive calls to this function will print the elapsed time between calls, using an + * internal timer. To start/reset the internal timer without printing a message, set parameter + * 'fmt' to NULL. + * + * To run multiple timers in parallel, the parameter 'level' can be used. Each invocation will + * print the elapsed time to the last invocation with the same level. As an exception, calling + * with 'fmt'=NULL wll reset all timers with a level greater or equal to the level parameter. + * + * Typically, profiling is started by calling profile(0, NULL). Then calls with various levels + * can be used to print different intermediate timings. + * + * @param level level of timer to use (0 to PROFILE_LEVEL_MAX). + * @param module name of current module (for logging) + * @param function name of current function (for logging) + * @param fmt format string Log message to print (as a printf format string), followed by required + * parameters as varargs. May be NULL; then no message is printed, and all timers with the + * same or higher level are reset. + */ void profile_timer(int level, const char *module, const char *function, const char *fmt, ...) { #ifndef _MSC_VER va_list ap; - static struct timeval last[10]; + static struct timeval last[PROFILE_LEVEL_MAX+1]; struct timeval curr; - int msec,usec; + double msec; char buffer[strlen(module)+20]; - va_start(ap, fmt); if (level < 0) level=0; - if (level > 9) - level=9; + if (level > PROFILE_LEVEL_MAX) + level=PROFILE_LEVEL_MAX; if (fmt) { gettimeofday(&curr, NULL); - msec=(curr.tv_usec-last[level].tv_usec)/1000+ + msec=(curr.tv_usec-last[level].tv_usec)/((double)1000)+ (curr.tv_sec-last[level].tv_sec)*1000; sprintf(buffer, "profile:%s", module); - debug_vprintf(1, buffer, strlen(buffer), function, strlen(function), 1, fmt, ap); - if (msec >= 100) - debug_printf(1, buffer, strlen(buffer), function, strlen(function), 0, " %d msec\n", msec); - else { - usec=(curr.tv_usec-last[level].tv_usec)+(curr.tv_sec-last[level].tv_sec)*1000*1000; - debug_printf(1, buffer, strlen(buffer), function, strlen(function), 0, " %d.%d msec\n", usec/1000, usec%1000); - } + va_start(ap, fmt); + debug_vprintf(lvl_debug, buffer, strlen(buffer), function, strlen(function), 1, fmt, ap); + va_end(ap); + debug_printf(lvl_debug, buffer, strlen(buffer), function, strlen(function), 0, " %7.1f ms\n", msec); gettimeofday(&last[level], NULL); } else { gettimeofday(&curr, NULL); - while (level < 10) + while (level <= PROFILE_LEVEL_MAX) last[level++]=curr; } - va_end(ap); #endif /*_MSC_VER*/ } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/profile.h navit-0.5.0+dfsg.1/navit/profile.h --- navit-0.5.0~svn5900+dfsg.1/navit/profile.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/profile.h 2016-01-02 22:29:50.000000000 +0000 @@ -29,6 +29,10 @@ #define profile_str2(x) #x #define profile_str1(x) profile_str2(x) #define profile_module profile_str1(MODULE) +/* + * Macro for logging timing information. + * See function profile_timer for more information. + */ #define profile(level,...) profile_timer(level,profile_module,__PRETTY_FUNCTION__,__VA_ARGS__) void profile_timer(int level, const char *module, const char *function, const char *fmt, ...); #ifdef __cplusplus diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/profile_option.c navit-0.5.0+dfsg.1/navit/profile_option.c --- navit-0.5.0~svn5900+dfsg.1/navit/profile_option.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/profile_option.c 2016-01-02 22:29:50.000000000 +0000 @@ -34,7 +34,7 @@ po->func=&profile_option_func; navit_object_ref((struct navit_object *)po); po->attrs=attr_list_dup(attrs); - dbg(0,"return %p\n",po); + dbg(lvl_debug,"return %p\n",po); return po; } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/projection.c navit-0.5.0+dfsg.1/navit/projection.c --- navit-0.5.0~svn5900+dfsg.1/navit/projection.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/projection.c 2016-01-02 22:29:50.000000000 +0000 @@ -34,7 +34,6 @@ {projection_mg, "mg"}, {projection_garmin, "garmin"}, {projection_utm, "utm"}, - {projection_gk, "gk"}, }; static int @@ -51,8 +50,15 @@ return -1; } +/** + * Look up a projection by name. + * + * @param name name of projection to look up (values from projection_names, and UTM projections) + * @utm_offset Only for UTM projections: Used to return the offset for the UTM projection + * @returns projection, or projection_none if no projection could be determined + */ enum projection -projection_from_name(const char *name, struct coord *offset) +projection_from_name(const char *name, struct coord *utm_offset) { int i; int zone,baserow; @@ -62,31 +68,31 @@ if (! strcmp(projection_names[i].name, name)) return projection_names[i].projection; } - if (offset) { + if (utm_offset) { if (sscanf(name,"utm%d%c",&zone,&ns) == 2 && zone > 0 && zone <= 60 && (ns == 'n' || ns == 's')) { - offset->x=zone*1000000; - offset->y=(ns == 's' ? -10000000:0); + utm_offset->x=zone*1000000; + utm_offset->y=(ns == 's' ? -10000000:0); return projection_utm; } if (sscanf(name,"utmref%d%c%c%c",&zone,&zone_field,&square_x,&square_y)) { i=utmref_letter(zone_field); if (i < 2 || i > 21) { - dbg(0,"invalid zone field '%c' in '%s'\n",zone_field,name); + dbg(lvl_error,"invalid zone field '%c' in '%s'\n",zone_field,name); return projection_none; } i-=12; - dbg(1,"zone_field %d\n",i); + dbg(lvl_debug,"zone_field %d\n",i); baserow=i*887.6/100; - offset->x=zone*1000000; + utm_offset->x=zone*1000000; i=utmref_letter(square_x); - offset->x+=((i%8)+1)*100000; + utm_offset->x+=((i%8)+1)*100000; i=utmref_letter(square_y); - dbg(1,"baserow %d\n",baserow); + dbg(lvl_debug,"baserow %d\n",baserow); if (!(zone % 2)) i-=5; - dbg(1,"i=%d\n",i); + dbg(lvl_debug,"i=%d\n",i); i=(i-baserow+100)%20+baserow; - offset->y=i*100000; + utm_offset->y=i*100000; return projection_utm; } } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/projection.h navit-0.5.0+dfsg.1/navit/projection.h --- navit-0.5.0~svn5900+dfsg.1/navit/projection.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/projection.h 2016-01-02 22:29:50.000000000 +0000 @@ -21,7 +21,11 @@ #define NAVIT_PROJECTION_H enum projection { - projection_none, projection_mg, projection_garmin, projection_screen, projection_utm, projection_gk + projection_none, /*!< No projection or unknown projection */ + projection_mg, /*!< Mercator projection */ + projection_garmin, /*!< Garmin projection */ + projection_screen, /*!< Screen projection */ + projection_utm /*!< UTM projection */ }; enum map_datum { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/route.c navit-0.5.0+dfsg.1/navit/route.c --- navit-0.5.0~svn5900+dfsg.1/navit/route.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/route.c 2016-01-02 22:29:50.000000000 +0000 @@ -78,13 +78,6 @@ int debug_route=0; -enum route_path_flags { - route_path_flag_none=0, - route_path_flag_cancel=1, - route_path_flag_async=2, - route_path_flag_no_rebuild=4, -}; - /** * @brief A point in the route graph * @@ -171,11 +164,18 @@ /** * @brief A traffic distortion * - * This is distortion in the traffic where you can't drive as fast as usual or have to wait for some time + * Traffic distortions represent delays or closures on the route, which can occur for a variety of + * reasons such as roadworks, accidents or heavy traffic. They are also used internally by Navit to + * avoid using a particular segment. + * + * A traffic distortion can limit the speed on a segment, or introduce a delay. If both are given, + * at the same time, they are cumulative. */ struct route_traffic_distortion { - int maxspeed; /**< Maximum speed possible in km/h */ - int delay; /**< Delay in tenths of seconds */ + int maxspeed; /**< Maximum speed possible in km/h. Use {@code INT_MAX} to + leave the speed unchanged, or 0 to mark the segment as + impassable. */ + int delay; /**< Delay in tenths of seconds (0 for no delay) */ }; /** @@ -239,7 +239,7 @@ struct route { NAVIT_OBJECT struct mapset *ms; /**< The mapset this route is built upon */ - unsigned flags; + enum route_path_flags flags; struct route_info *pos; /**< Current position within this route */ GList *destinations; /**< Destinations of the route */ int reached_destinations_count; /**< Used as base to calculate waypoint numbers */ @@ -749,6 +749,16 @@ return 2; } +/** + * @brief Returns the position from which to route to the current destination of the route. + * + * This function examines the destination list of the route. If present, it returns the destination + * which precedes the one indicated by the {@code current_dst} member of the route. Failing that, + * the current position of the route is returned. + * + * @param this The route object + * @return The previous destination or current position, see description + */ static struct route_info * route_previous_destination(struct route *this) { @@ -761,12 +771,25 @@ return l->data; } +/** + * @brief Updates or recreates the route graph. + * + * This function is called after the route graph has been changed or rebuilt and flooding has + * completed. It then updates the route path to reflect these changes. + * + * If multiple destinations are set, this function will reset and re-flood the route graph for each + * destination, thus recursively calling itself for each destination. + * + * @param this The route object + * @param new_graph FIXME Whether the route graph has been rebuilt from scratch + */ +/* FIXME Should we rename this function to route_graph_flood_done, in order to avoid confusion? */ static void route_path_update_done(struct route *this, int new_graph) { struct route_path *oldpath=this->path2; struct attr route_status; - struct route_info *prev_dst; + struct route_info *prev_dst; /* previous destination or current position */ route_status.type=attr_route_status; if (this->path2 && (this->path2->in_use>1)) { this->path2->update_required=1+new_graph; @@ -795,7 +818,7 @@ /* FIXME */ int seg_time=route_time_seg(this->vehicleprofile, seg->data, NULL); if (seg_time == INT_MAX) { - dbg(1,"error\n"); + dbg(lvl_debug,"error\n"); } else path_time+=seg_time; path_len+=seg->data->len; @@ -824,19 +847,30 @@ * @brief Updates the route graph and the route path if something changed with the route * * This will update the route graph and the route path of the route if some of the - * route's settings (destination, position) have changed. + * route's settings (destination, position) have changed. + * + * The behavior of this function can be controlled via flags: + *
    + *
  • {@code route_path_flag_cancel}: Cancel navigation, clear route graph and route path
  • + *
  • {@code route_path_flag_async}: Perform operations asynchronously
  • + *
  • {@code route_path_flag_no_rebuild}: Do not rebuild the route graph
  • + *
* + * These flags will be stored in the {@code flags} member of the route object. + * * @attention For this to work the route graph has to be destroyed if the route's * @attention destination is changed somewhere! * * @param this The route to update + * @param flags Flags to control the behavior of this function, see description */ static void route_path_update_flags(struct route *this, enum route_path_flags flags) { - dbg(1,"enter %d\n", flags); + dbg(lvl_debug,"enter %d\n", flags); + this->flags = flags; if (! this->pos || ! this->destinations) { - dbg(1,"destroy\n"); + dbg(lvl_debug,"destroy\n"); route_path_destroy(this->path2,1); this->path2 = NULL; return; @@ -848,25 +882,34 @@ /* the graph is destroyed when setting the destination */ if (this->graph) { if (this->graph->busy) { - dbg(1,"busy building graph\n"); + dbg(lvl_debug,"busy building graph\n"); return; } // we can try to update - dbg(1,"try update\n"); + dbg(lvl_debug,"try update\n"); route_path_update_done(this, 0); } else { route_path_destroy(this->path2,1); this->path2 = NULL; } if (!this->graph || (!this->path2 && !(flags & route_path_flag_no_rebuild))) { - dbg(0,"rebuild graph %p %p\n",this->graph,this->path2); + dbg(lvl_debug,"rebuild graph %p %p\n",this->graph,this->path2); if (! this->route_graph_flood_done_cb) this->route_graph_flood_done_cb=callback_new_2(callback_cast(route_path_update_done), this, (long)1); - dbg(1,"route_graph_update\n"); + dbg(lvl_debug,"route_graph_update\n"); route_graph_update(this, this->route_graph_flood_done_cb, !!(flags & route_path_flag_async)); } } +/** + * @brief Updates the route graph and the route path if something changed with the route + * + * This function is a wrapper around {@link route_path_update_flags(route *, enum route_path)}. + * + * @param this The route to update + * @param cancel If true, cancel navigation, clear route graph and route path + * @param async If true, perform processing asynchronously + */ static void route_path_update(struct route *this, int cancel, int async) { @@ -919,7 +962,7 @@ if (!this->pos) return 0; this->pos->street_direction=0; - dbg(1,"this->pos=%p\n", this->pos); + dbg(lvl_debug,"this->pos=%p\n", this->pos); route_info_distances(this->pos, pos->pro); route_path_update_flags(this, flags); return 1; @@ -953,7 +996,7 @@ struct route_info *ret; struct street_data *sd; - dbg(2,"enter\n"); + dbg(lvl_info,"enter\n"); c=tracking_get_pos(tracking); ret=g_new0(struct route_info, 1); if (!ret) { @@ -972,13 +1015,13 @@ ret->street=street_data_dup(sd); route_info_distances(ret, pro); } - dbg(3,"position 0x%x,0x%x item 0x%x,0x%x direction %d pos %d lenpos %d lenneg %d\n",c->x,c->y,sd?sd->item.id_hi:0,sd?sd->item.id_lo:0,ret->street_direction,ret->pos,ret->lenpos,ret->lenneg); - dbg(3,"c->x=0x%x, c->y=0x%x pos=%d item=(0x%x,0x%x)\n", c->x, c->y, ret->pos, ret->street?ret->street->item.id_hi:0, ret->street?ret->street->item.id_lo:0); - dbg(3,"street 0=(0x%x,0x%x) %d=(0x%x,0x%x)\n", ret->street?ret->street->c[0].x:0, ret->street?ret->street->c[0].y:0, ret->street?ret->street->count-1:0, ret->street?ret->street->c[ret->street->count-1].x:0, ret->street?ret->street->c[ret->street->count-1].y:0); + dbg(lvl_debug,"position 0x%x,0x%x item 0x%x,0x%x direction %d pos %d lenpos %d lenneg %d\n",c->x,c->y,sd?sd->item.id_hi:0,sd?sd->item.id_lo:0,ret->street_direction,ret->pos,ret->lenpos,ret->lenneg); + dbg(lvl_debug,"c->x=0x%x, c->y=0x%x pos=%d item=(0x%x,0x%x)\n", c->x, c->y, ret->pos, ret->street?ret->street->item.id_hi:0, ret->street?ret->street->item.id_lo:0); + dbg(lvl_debug,"street 0=(0x%x,0x%x) %d=(0x%x,0x%x)\n", ret->street?ret->street->c[0].x:0, ret->street?ret->street->c[0].y:0, ret->street?ret->street->count-1:0, ret->street?ret->street->c[ret->street->count-1].x:0, ret->street?ret->street->c[ret->street->count-1].y:0); this->pos=ret; if (this->destinations) route_path_update(this, 0, 1); - dbg(2,"ret\n"); + dbg(lvl_info,"ret\n"); } /* Used for debuging of route_rect, what routing sees */ @@ -999,7 +1042,7 @@ sel->order=order; sel->range.min=route_item_first; sel->range.max=route_item_last; - dbg(1,"%p %p\n", c1, c2); + dbg(lvl_debug,"%p %p\n", c1, c2); dx=c1->x-c2->x; dy=c1->y-c2->y; if (dx < 0) { @@ -1123,8 +1166,8 @@ * * @param this The route to set the destination for * @param dst Coordinates to set as destination - * @param count: Number of destinations (last one is final) - * @param async: If set, do routing asynchronously + * @param count Number of destinations (last one is final) + * @param async If set, do routing asynchronously */ void @@ -1253,8 +1296,8 @@ * @brief Start a route given set of coordinates * * @param this The route instance - * @param c The coordinate to start routing to - * @param async 1 for async + * @param dst The coordinate to start routing to + * @param async Set to 1 to do route calculation asynchronously * @return nothing */ void @@ -1336,11 +1379,12 @@ } /** - * @brief Gets the route_graph_point with the specified coordinates + * @brief Gets the next route_graph_point with the specified coordinates * * @param this The route in which to search * @param c Coordinates to search for - * @param last The last route graph point returned to iterate over multiple points with the same coordinates + * @param last The last route graph point returned to iterate over multiple points with the same coordinates, + * or {@code NULL} to return the first point * @return The point at the specified coordinates or NULL if not found */ static struct route_graph_point * @@ -1361,6 +1405,13 @@ return NULL; } +/** + * @brief Gets the first route_graph_point with the specified coordinates + * + * @param this The route in which to search + * @param c Coordinates to search for + * @return The point at the specified coordinates or NULL if not found + */ static struct route_graph_point * route_graph_get_point(struct route_graph *this, struct coord *c) { @@ -1421,7 +1472,10 @@ * This will insert a point into the route graph at the coordinates passed in f. * Note that the point is not yet linked to any segments. * - * @param this The route to insert the point into + * If the route graph already contains a point at the specified coordinates, the existing point + * will be returned. + * + * @param this The route graph to insert the point into * @param f The coordinates at which the point should be inserted * @return The point inserted or NULL on failure */ @@ -1460,6 +1514,14 @@ /** * @brief Resets all nodes * + * This iterates through all the points in the route graph, resetting them to their initial state. + * The {@code value} member of each point (cost to reach the destination) is reset to + * {@code INT_MAX}, the {@code seg} member (cheapest way to destination) is reset to {@code NULL} + * and the {@code el} member (pointer to element in Fibonacci heap) is also reset to {@code NULL}. + * + * References to elements of the route graph which were obtained prior to calling this function + * remain valid after it returns. + * * @param this The route graph to reset */ static void @@ -1730,7 +1792,7 @@ struct route_path_segment *segment; int seg_size,seg_dat_size; - dbg(1,"line from 0x%x,0x%x-0x%x,0x%x\n", start->x, start->y, end->x, end->y); + dbg(lvl_debug,"line from 0x%x,0x%x-0x%x,0x%x\n", start->x, start->y, end->x, end->y); seg_size=sizeof(*segment) + sizeof(struct coord) * ccnt; seg_dat_size=sizeof(struct route_segment_data); segment=g_malloc0(seg_size + seg_dat_size); @@ -1775,7 +1837,7 @@ if (rgs->data.flags & AF_SEGMENTED) offset=RSD_OFFSET(&rgs->data); - dbg(1,"enter (0x%x,0x%x) dir=%d pos=%p dst=%p\n", rgs->data.item.id_hi, rgs->data.item.id_lo, dir, pos, dst); + dbg(lvl_debug,"enter (0x%x,0x%x) dir=%d pos=%p dst=%p\n", rgs->data.item.id_hi, rgs->data.item.id_lo, dir, pos, dst); if (oldpath) { segment=item_hash_lookup(oldpath->path_hash, &rgs->data.item); if (segment && segment->direction == dir) { @@ -1805,9 +1867,9 @@ } } else { extra=1; - dbg(1,"pos dir=%d\n", dir); - dbg(1,"pos pos=%d\n", pos->pos); - dbg(1,"pos count=%d\n", pos->street->count); + dbg(lvl_debug,"pos dir=%d\n", dir); + dbg(lvl_debug,"pos pos=%d\n", pos->pos); + dbg(lvl_debug,"pos count=%d\n", pos->street->count); if (dir > 0) { c=pos->street->c+pos->pos+1; ccnt=pos->street->count-pos->pos-1; @@ -1821,8 +1883,8 @@ pos->dir=dir; } else if (dst) { extra=1; - dbg(1,"dst dir=%d\n", dir); - dbg(1,"dst pos=%d\n", dst->pos); + dbg(lvl_debug,"dst dir=%d\n", dir); + dbg(lvl_debug,"dst pos=%d\n", dst->pos); if (dir > 0) { c=dst->street->c; ccnt=dst->pos+1; @@ -1913,14 +1975,28 @@ } /** - * @brief Returns the estimated speed on a segment + * @brief Returns the estimated speed on a segment, or 0 for an impassable segment * - * This function returns the estimated speed to be driven on a segment, 0=not passable + * This function returns the estimated speed to be driven on a segment, calculated as follows: + *
    + *
  • Initially the route weight of the vehicle profile for the given item type is used. If the + * item type does not have a route weight in the vehicle profile given, it is considered impassable + * and 0 is returned.
  • + *
  • If the {@code maxspeed} attribute of the segment's item is set, either it or the previous + * speed estimate for the segment is used, as governed by the vehicle profile's + * {@code maxspeed_handling} attribute.
  • + *
  • If a traffic distortion is present, its {@code maxspeed} is taken into account in a similar + * manner. Unlike the regular {@code maxspeed}, a {@code maxspeed} resulting from a traffic + * distortion is always considered if it limits the speed, regardless of {@code maxspeed_handling}. + *
  • + *
  • Access restrictions for dangerous goods, size or weight are evaluated, and 0 is returned if + * the given vehicle profile violates one of them.
  • + *
* * @param profile The routing preferences * @param over The segment which is passed - * @param dist A traffic distortion if applicable - * @return The estimated speed + * @param dist A traffic distortion if applicable, or {@code NULL} + * @return The estimated speed in km/h, or 0 if the segment is impassable */ static int route_seg_speed(struct vehicleprofile *profile, struct route_segment_data *over, struct route_traffic_distortion *dist) @@ -1929,18 +2005,17 @@ int speed,maxspeed; if (!roadprofile || !roadprofile->route_weight) return 0; - /* maxspeed_handling: 0=always, 1 only if maxspeed restricts the speed, 2 never */ speed=roadprofile->route_weight; - if (profile->maxspeed_handling != 2) { + if (profile->maxspeed_handling != maxspeed_ignore) { if (over->flags & AF_SPEED_LIMIT) { maxspeed=RSD_MAXSPEED(over); - if (!profile->maxspeed_handling) + if (profile->maxspeed_handling == maxspeed_enforce) speed=maxspeed; } else maxspeed=INT_MAX; if (dist && maxspeed > dist->maxspeed) maxspeed=dist->maxspeed; - if (maxspeed != INT_MAX && (profile->maxspeed_handling != 1 || maxspeed < speed)) + if (maxspeed != INT_MAX && (profile->maxspeed_handling != maxspeed_restrict || maxspeed < speed)) speed=maxspeed; } if (over->flags & AF_DANGEROUS_GOODS) { @@ -1964,15 +2039,16 @@ } /** - * @brief Returns the time needed to drive len on item + * @brief Returns the time needed to travel along a segment, or {@code INT_MAX} if the segment is impassable. * - * This function returns the time needed to drive len meters on - * the item passed in item in tenth of seconds. + * This function returns the time needed to travel along the entire length of {@code over} in + * tenths of seconds. Restrictions for dangerous goods, weight or size are taken into account. + * Traffic distortions are also taken into account if a valid {@code dist} argument is given. * - * @param profile The routing preferences + * @param profile The vehicle profile (routing preferences) * @param over The segment which is passed - * @param dist A traffic distortion if applicable - * @return The time needed to drive len on item in thenth of senconds + * @param dist A traffic distortion if applicable, or {@code NULL} + * @return The time needed in tenths of seconds */ static int @@ -1984,6 +2060,14 @@ return over->len*36/speed+(dist ? dist->delay : 0); } +/** + * @brief Returns the traffic distortion for a segment. + * + * @param seg The segment for which the traffic distortion is to be returned + * @param ret Points to a {@code struct route_traffic_distortion}, whose members will be filled + * + * @return true if a traffic distortion was found, 0 if not + */ static int route_get_traffic_distortion(struct route_graph_segment *seg, struct route_traffic_distortion *ret) { @@ -2020,13 +2104,22 @@ } /** - * @brief Returns the "costs" of driving from point from over segment over in direction dir + * @brief Returns the "cost" of driving from point {@code from} along segment {@code over} in direction {@code dir} + * + * Cost is relative to time, indicated in tenths of seconds. + * + * This function considers traffic distortions as well as penalties. If the segment is impassable + * due to traffic distortions or restrictions, {@code INT_MAX} is returned in order to prevent use + * of this segment for routing. * * @param profile The routing preferences * @param from The point where we are starting * @param over The segment we are using - * @param dir The direction of segment which we are driving - * @return The "costs" needed to drive len on item + * @param dir The direction of segment which we are driving. Positive values indicate we are + * traveling in the direction of the segment, negative values indicate we are traveling against + * that direction. Values of +2 or -2 cause the function to ignore traffic distortions. + * + * @return The "cost" needed to travel along the segment */ static int @@ -2035,7 +2128,7 @@ int ret; struct route_traffic_distortion dist,*distp=NULL; #if 0 - dbg(0,"flags 0x%x mask 0x%x flags 0x%x\n", over->flags, dir >= 0 ? profile->flags_forward_mask : profile->flags_reverse_mask, profile->flags); + dbg(lvl_debug,"flags 0x%x mask 0x%x flags 0x%x\n", over->flags, dir >= 0 ? profile->flags_forward_mask : profile->flags_reverse_mask, profile->flags); #endif if ((over->data.flags & (dir >= 0 ? profile->flags_forward_mask : profile->flags_reverse_mask)) != profile->flags) return INT_MAX; @@ -2066,6 +2159,15 @@ s1->end->c.x == s2->end->c.x && s1->end->c.y == s2->end->c.y); } +/** + * @brief Sets or clears a traffic distortion for a segment. + * + * This sets or clears a delay. It cannot be used to set speed. + * + * @param this The route graph + * @param seg The segment to which the traffic distortion applies + * @param delay Delay in tenths of a second + */ static void route_graph_set_traffic_distortion(struct route_graph *this, struct route_graph_segment *seg, int delay) { @@ -2135,7 +2237,7 @@ } /** - * @brief Adds a route distortion item to the route graph + * @brief Adds a turn restriction item to the route graph * * @param this The route graph to add to * @param item The item to add @@ -2150,14 +2252,14 @@ count=item_coord_get(item, c, 5); if (count != 3 && count != 4) { - dbg(0,"wrong count %d\n",count); + dbg(lvl_debug,"wrong count %d\n",count); return; } if (count == 4) return; for (i = 0 ; i < count ; i++) pnt[i]=route_graph_add_point(this,&c[i]); - dbg(1,"%s: (0x%x,0x%x)-(0x%x,0x%x)-(0x%x,0x%x) %p-%p-%p\n",item_to_name(item->type),c[0].x,c[0].y,c[1].x,c[1].y,c[2].x,c[2].y,pnt[0],pnt[1],pnt[2]); + dbg(lvl_debug,"%s: (0x%x,0x%x)-(0x%x,0x%x)-(0x%x,0x%x) %p-%p-%p\n",item_to_name(item->type),c[0].x,c[0].y,c[1].x,c[1].y,c[2].x,c[2].y,pnt[0],pnt[1],pnt[2]); data.item=item; data.flags=0; data.len=0; @@ -2193,8 +2295,8 @@ #endif int segmented = 0; struct roadprofile *roadp; - struct route_graph_point *s_pnt,*e_pnt; - struct coord c,l; + struct route_graph_point *s_pnt,*e_pnt; /* Start and end point */ + struct coord c,l; /* Current and previous point */ struct attr attr; struct route_graph_segment_data data; data.flags=0; @@ -2204,7 +2306,7 @@ roadp = vehicleprofile_get_roadprofile(profile, item->type); if (!roadp) { - // Don't include any roads that don't have a road profile in our vehicle profile + /* Don't include any roads that don't have a road profile in our vehicle profile */ return; } @@ -2295,6 +2397,16 @@ } } +/** + * @brief Gets the next route_graph_segment belonging to the specified street + * + * @param graph The route graph in which to search + * @param sd The street to search for + * @param last The last route graph segment returned to iterate over multiple segments of the same + * item. If {@code NULL}, the first matching segment will be returned. + * + * @return The route graph segment, or {@code NULL} if none was found. + */ static struct route_graph_segment * route_graph_get_segment(struct route_graph *graph, struct street_data *sd, struct route_graph_segment *last) { @@ -2327,6 +2439,15 @@ * * This function uses Dijkstra's algorithm to do the routing. To understand it you should have a look * at this algorithm. + * + * References to elements of the route graph which were obtained prior to calling this function + * remain valid after it returns. + * + * @param this_ The route graph to flood + * @param dst The destination of the route + * @param profile The vehicle profile to use for routing. This determines which ways are passable + * and how their costs are calculated. + * @param cb The callback function to call when flooding is complete */ static void route_graph_flood(struct route_graph *this, struct route_info *dst, struct vehicleprofile *profile, struct callback *cb) @@ -2433,7 +2554,7 @@ } fh_deleteheap(heap); callback_call_0(cb); - dbg(1,"return\n"); + dbg(lvl_debug,"return\n"); } /** @@ -2535,16 +2656,16 @@ static struct route_path * route_path_new(struct route_graph *this, struct route_path *oldpath, struct route_info *pos, struct route_info *dst, struct vehicleprofile *profile) { - struct route_graph_segment *s=NULL,*s1=NULL,*s2=NULL; - struct route_graph_point *start; - struct route_info *posinfo, *dstinfo; - int segs=0,dir; - int val1=INT_MAX,val2=INT_MAX; + struct route_graph_segment *s=NULL,*s1=NULL,*s2=NULL; /* candidate segments for cheapest path */ + struct route_graph_point *start; /* point at which the next segment starts, i.e. up to which the path is complete */ + struct route_info *posinfo, *dstinfo; /* same as pos and dst, but NULL if not part of current segment */ + int segs=0,dir; /* number of segments added to graph, direction of first segment */ + int val1=INT_MAX,val2=INT_MAX; /* total cost for s1 and s2, respectively */ int val,val1_new,val2_new; struct route_path *ret; if (! pos->street || ! dst->street) { - dbg(0,"pos or dest not set\n"); + dbg(lvl_error,"pos or dest not set\n"); return NULL; } @@ -2554,12 +2675,12 @@ val=route_value_seg(profile, NULL, s, 2); if (val != INT_MAX && s->end->value != INT_MAX) { val=val*(100-pos->percent)/100; - dbg(1,"val1 %d\n",val); + dbg(lvl_debug,"val1 %d\n",val); if (route_graph_segment_match(s,this->avoid_seg) && pos->street_direction < 0) val+=profile->turn_around_penalty; - dbg(1,"val1 %d\n",val); + dbg(lvl_debug,"val1 %d\n",val); val1_new=s->end->value+val; - dbg(1,"val1 +%d=%d\n",s->end->value,val1_new); + dbg(lvl_debug,"val1 +%d=%d\n",s->end->value,val1_new); if (val1_new < val1) { val1=val1_new; s1=s; @@ -2568,12 +2689,12 @@ val=route_value_seg(profile, NULL, s, -2); if (val != INT_MAX && s->start->value != INT_MAX) { val=val*pos->percent/100; - dbg(1,"val2 %d\n",val); + dbg(lvl_debug,"val2 %d\n",val); if (route_graph_segment_match(s,this->avoid_seg) && pos->street_direction > 0) val+=profile->turn_around_penalty; - dbg(1,"val2 %d\n",val); + dbg(lvl_debug,"val2 %d\n",val); val2_new=s->start->value+val; - dbg(1,"val2 +%d=%d\n",s->start->value,val2_new); + dbg(lvl_debug,"val2 +%d=%d\n",s->start->value,val2_new); if (val2_new < val2) { val2=val2_new; s2=s; @@ -2581,7 +2702,7 @@ } } if (val1 == INT_MAX && val2 == INT_MAX) { - dbg(0,"no route found, pos blocked\n"); + dbg(lvl_error,"no route found, pos blocked\n"); return NULL; } if (val1 == val2) { @@ -2599,7 +2720,7 @@ } if (pos->street_direction && dir != pos->street_direction && profile->turn_around_penalty) { if (!route_graph_segment_match(this->avoid_seg,s)) { - dbg(0,"avoid current segment\n"); + dbg(lvl_debug,"avoid current segment\n"); if (this->avoid_seg) route_graph_set_traffic_distortion(this, this->avoid_seg, 0); this->avoid_seg=s; @@ -2640,7 +2761,7 @@ } if (dst->lenextra) route_path_add_line(ret, &dst->lp, &dst->c, dst->lenextra); - dbg(1, "%d segments\n", segs); + dbg(lvl_debug, "%d segments\n", segs); return ret; } @@ -2680,29 +2801,29 @@ (tmp1->data.item.type == type_street_turn_restriction_no || tmp1->data.item.type == type_street_turn_restriction_only)) { tmp2=p->start; - dbg(1,"found %s (0x%x,0x%x) (0x%x,0x%x)-(0x%x,0x%x) %p-%p\n",item_to_name(tmp1->data.item.type),tmp1->data.item.id_hi,tmp1->data.item.id_lo,tmp1->start->c.x,tmp1->start->c.y,tmp1->end->c.x,tmp1->end->c.y,tmp1->start,tmp1->end); + dbg(lvl_debug,"found %s (0x%x,0x%x) (0x%x,0x%x)-(0x%x,0x%x) %p-%p\n",item_to_name(tmp1->data.item.type),tmp1->data.item.id_hi,tmp1->data.item.id_lo,tmp1->start->c.x,tmp1->start->c.y,tmp1->end->c.x,tmp1->end->c.y,tmp1->start,tmp1->end); while (tmp2) { - dbg(1,"compare %s (0x%x,0x%x) (0x%x,0x%x)-(0x%x,0x%x) %p-%p\n",item_to_name(tmp2->data.item.type),tmp2->data.item.id_hi,tmp2->data.item.id_lo,tmp2->start->c.x,tmp2->start->c.y,tmp2->end->c.x,tmp2->end->c.y,tmp2->start,tmp2->end); + dbg(lvl_debug,"compare %s (0x%x,0x%x) (0x%x,0x%x)-(0x%x,0x%x) %p-%p\n",item_to_name(tmp2->data.item.type),tmp2->data.item.id_hi,tmp2->data.item.id_lo,tmp2->start->c.x,tmp2->start->c.y,tmp2->end->c.x,tmp2->end->c.y,tmp2->start,tmp2->end); if (item_is_equal(tmp1->data.item, tmp2->data.item)) break; tmp2=tmp2->start_next; } - dbg(1,"tmp2=%p\n",tmp2); + dbg(lvl_debug,"tmp2=%p\n",tmp2); if (tmp2) { - dbg(1,"%s tmp2->end=%p next=%p\n",item_to_name(tmp1->data.item.type),tmp2->end,next); + dbg(lvl_debug,"%s tmp2->end=%p next=%p\n",item_to_name(tmp1->data.item.type),tmp2->end,next); } if (tmp1->data.item.type == type_street_turn_restriction_no && tmp2 && tmp2->end->c.x == next->c.x && tmp2->end->c.y == next->c.y) { - dbg(1,"from 0x%x,0x%x over 0x%x,0x%x to 0x%x,0x%x not allowed (no)\n",prev->c.x,prev->c.y,p->c.x,p->c.y,next->c.x,next->c.y); + dbg(lvl_debug,"from 0x%x,0x%x over 0x%x,0x%x to 0x%x,0x%x not allowed (no)\n",prev->c.x,prev->c.y,p->c.x,p->c.y,next->c.x,next->c.y); return 0; } if (tmp1->data.item.type == type_street_turn_restriction_only && tmp2 && (tmp2->end->c.x != next->c.x || tmp2->end->c.y != next->c.y)) { - dbg(1,"from 0x%x,0x%x over 0x%x,0x%x to 0x%x,0x%x not allowed (only)\n",prev->c.x,prev->c.y,p->c.x,p->c.y,next->c.x,next->c.y); + dbg(lvl_debug,"from 0x%x,0x%x over 0x%x,0x%x to 0x%x,0x%x not allowed (only)\n",prev->c.x,prev->c.y,p->c.x,p->c.y,next->c.x,next->c.y); return 0; } } tmp1=tmp1->end_next; } - dbg(1,"from 0x%x,0x%x over 0x%x,0x%x to 0x%x,0x%x allowed\n",prev->c.x,prev->c.y,p->c.x,p->c.y,next->c.x,next->c.y); + dbg(lvl_debug,"from 0x%x,0x%x over 0x%x,0x%x to 0x%x,0x%x allowed\n",prev->c.x,prev->c.y,p->c.x,p->c.y,next->c.x,next->c.y); return 1; } @@ -2719,7 +2840,7 @@ data.maxspeed=RSD_MAXSPEED(&s->data); if (s->data.flags & AF_SEGMENTED) data.offset=RSD_OFFSET(&s->data); - dbg(1,"cloning segment from %p (0x%x,0x%x) to %p (0x%x,0x%x)\n",start,start->c.x,start->c.y, end, end->c.x, end->c.y); + dbg(lvl_debug,"cloning segment from %p (0x%x,0x%x) to %p (0x%x,0x%x)\n",start,start->c.x,start->c.y, end, end->c.x, end->c.y); route_graph_add_segment(this, start, end, &data); } @@ -2733,19 +2854,19 @@ int dy=0; c.x+=dx; c.y+=dy; - dbg(1,"From %s %d,%d\n",item_to_name(s->data.item.type),dx,dy); + dbg(lvl_debug,"From %s %d,%d\n",item_to_name(s->data.item.type),dx,dy); pn=route_graph_point_new(this, &c); if (dir > 0) { /* going away */ - dbg(1,"other 0x%x,0x%x\n",s->end->c.x,s->end->c.y); + dbg(lvl_debug,"other 0x%x,0x%x\n",s->end->c.x,s->end->c.y); if (s->data.flags & AF_ONEWAY) { - dbg(1,"Not possible\n"); + dbg(lvl_debug,"Not possible\n"); return; } route_graph_clone_segment(this, s, pn, s->end, AF_ONEWAYREV); } else { /* coming in */ - dbg(1,"other 0x%x,0x%x\n",s->start->c.x,s->start->c.y); + dbg(lvl_debug,"other 0x%x,0x%x\n",s->start->c.x,s->start->c.y); if (s->data.flags & AF_ONEWAYREV) { - dbg(1,"Not possible\n"); + dbg(lvl_debug,"Not possible\n"); return; } route_graph_clone_segment(this, s, s->start, pn, AF_ONEWAY); @@ -2756,7 +2877,7 @@ tmp->data.item.type != type_street_turn_restriction_only && !(tmp->data.flags & AF_ONEWAYREV) && is_turn_allowed(p, s, tmp)) { route_graph_clone_segment(this, tmp, pn, tmp->end, AF_ONEWAY); - dbg(1,"To start %s\n",item_to_name(tmp->data.item.type)); + dbg(lvl_debug,"To start %s\n",item_to_name(tmp->data.item.type)); } tmp=tmp->start_next; } @@ -2766,7 +2887,7 @@ tmp->data.item.type != type_street_turn_restriction_only && !(tmp->data.flags & AF_ONEWAY) && is_turn_allowed(p, s, tmp)) { route_graph_clone_segment(this, tmp, tmp->start, pn, AF_ONEWAYREV); - dbg(1,"To end %s\n",item_to_name(tmp->data.item.type)); + dbg(lvl_debug,"To end %s\n",item_to_name(tmp->data.item.type)); } tmp=tmp->end_next; } @@ -2777,7 +2898,7 @@ { struct route_graph_segment *tmp; tmp=p->start; - dbg(1,"node 0x%x,0x%x\n",p->c.x,p->c.y); + dbg(lvl_debug,"node 0x%x,0x%x\n",p->c.x,p->c.y); while (tmp) { if (tmp->data.item.type != type_street_turn_restriction_no && tmp->data.item.type != type_street_turn_restriction_only) @@ -2799,7 +2920,7 @@ { struct route_graph_point *curr; int i; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); for (i = 0 ; i < HASH_SIZE ; i++) { curr=this->hash[i]; while (curr) { @@ -2813,7 +2934,7 @@ static void route_graph_build_done(struct route_graph *rg, int cancel) { - dbg(1,"cancel=%d\n",cancel); + dbg(lvl_debug,"cancel=%d\n",cancel); if (rg->idle_ev) event_remove_idle(rg->idle_ev); if (rg->idle_cb) @@ -2870,17 +2991,19 @@ * between c1 and c2. * * @param ms The mapset to build the route graph from + * @param c The coordinates of the destination or next waypoint * @param c1 Corner 1 of the rectangle to use from the map * @param c2 Corner 2 of the rectangle to use from the map * @param done_cb The callback which will be called when graph is complete * @return The new route graph. */ +// FIXME documentation does not match argument list static struct route_graph * route_graph_build(struct mapset *ms, struct coord *c, int count, struct callback *done_cb, int async, struct vehicleprofile *profile) { struct route_graph *ret=g_new0(struct route_graph, 1); - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); ret->sel=route_calc_selection(c, count, profile); ret->h=mapset_open(ms); @@ -2910,6 +3033,8 @@ * adds routing information afterwards by calling route_graph_flood(). * * @param this The route to update the graph for + * @param cb The callback function to call when the route graph update is complete (used only in asynchronous mode) + * @param async Set to nonzero in order to update the route graph asynchronously */ static void route_graph_update(struct route *this, struct callback *cb, int async) @@ -3083,7 +3208,7 @@ ret->lp=lp; ret->pos=pos; ret->street=sd; - dbg(1,"dist=%d id 0x%x 0x%x pos=%d\n", dist, item->id_hi, item->id_lo, pos); + dbg(lvl_debug,"dist=%d id 0x%x 0x%x pos=%d\n", dist, item->id_hi, item->id_lo, pos); } else { street_data_free(sd); } @@ -3097,7 +3222,7 @@ if (!ret->street || mindist > max_dist*max_dist) { if (ret->street) { street_data_free(ret->street); - dbg(1,"Much too far %d > %d\n", mindist, max_dist); + dbg(lvl_debug,"Much too far %d > %d\n", mindist, max_dist); } g_free(ret); ret = NULL; @@ -3318,7 +3443,7 @@ c[i] = seg->c[mr->last_coord++]; rc++; } - dbg(1,"return %d\n",rc); + dbg(lvl_debug,"return %d\n",rc); return rc; } @@ -3348,7 +3473,7 @@ switch (attr_type) { case attr_any: // works only with rg_points for now while (mr->attr_next != attr_none) { - dbg(0,"querying %s\n", attr_to_name(mr->attr_next)); + dbg(lvl_debug,"querying %s\n", attr_to_name(mr->attr_next)); if (rp_attr_get(priv_data, mr->attr_next, attr)) return 1; } @@ -3543,7 +3668,7 @@ rm_rect_new(struct map_priv *priv, struct map_selection *sel) { struct map_rect_priv * mr; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); #if 0 if (! route_get_pos(priv->route)) return NULL; @@ -3587,7 +3712,7 @@ { struct map_rect_priv * mr; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); if (! priv->route->graph) return NULL; mr=g_new0(struct map_rect_priv, 1); @@ -3614,7 +3739,7 @@ } if (mr->path) { mr->path->in_use--; - if (mr->path->update_required && (mr->path->in_use==1)) + if (mr->path->update_required && (mr->path->in_use==1) && (mr->mpriv->route->route_status & ~route_status_destination_set)) route_path_update_done(mr->mpriv->route, mr->path->update_required-1); else if (!mr->path->in_use) g_free(mr->path); @@ -3894,6 +4019,24 @@ return route_get_map_helper(this_, &this_->graph_map, "route_graph","Route Graph"); } + +/** + * @brief Returns the flags for the route. + */ +enum route_path_flags route_get_flags(struct route *this_) { + return this_->flags; +} + +/** + * @brief Whether the route has a valid graph. + * + * @return True if the route has a graph, false if not. + */ +int +route_has_graph(struct route *this_) { + return (this_->graph != NULL); +} + void route_set_projection(struct route *this_, enum projection pro) { @@ -3933,7 +4076,7 @@ } break; default: - dbg(0,"unsupported attribute: %s\n",attr_to_name(attr->type)); + dbg(lvl_error,"unsupported attribute: %s\n",attr_to_name(attr->type)); return 0; } if (attr_updated) @@ -3956,7 +4099,7 @@ int route_remove_attr(struct route *this_, struct attr *attr) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); switch (attr->type) { case attr_callback: callback_list_remove(this_->cbl2, attr->u.callback); @@ -4004,7 +4147,7 @@ case attr_vehicle: attr->u.vehicle=this_->v; ret=(this_->v != NULL); - dbg(0,"get vehicle %p\n",this_->v); + dbg(lvl_debug,"get vehicle %p\n",this_->v); break; case attr_vehicleprofile: attr->u.vehicleprofile=this_->vehicleprofile; @@ -4021,7 +4164,7 @@ attr->u.num+=path->path_time; path=path->next; } - dbg(1,"path_time %ld\n",attr->u.num); + dbg(lvl_debug,"path_time %ld\n",attr->u.num); } else ret=0; break; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/routech.c navit-0.5.0+dfsg.1/navit/routech.c --- navit-0.5.0~svn5900+dfsg.1/navit/routech.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/routech.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,578 +0,0 @@ -#include -#include -#include "item.h" -#include "coord.h" -#include "navit.h" -#include "transform.h" -#include "profile.h" -#include "mapset.h" -#include "map.h" - -FILE *routefile; - -void routech_test(struct navit *navit); - -struct ch_edge { - int flags; - int weight; - struct item_id target,middle; -}; - -struct routech_search { - struct pq *pq; - GHashTable *hash; - int finished; - int dir; - unsigned int upper; - struct item_id *via; -}; - - -struct pq_element { - struct item_id *node_id; - struct item_id *parent_node_id; - int stalled; - int key; - int heap_element; -}; - -struct pq_heap_element { - int key; - int element; -}; - -struct pq { - int capacity; - int size; - int step; - int elements_capacity; - int elements_size; - int elements_step; - struct pq_element *elements; - struct pq_heap_element *heap_elements; -}; - -static struct pq * -pq_new(void) -{ - struct pq *ret=g_new(struct pq, 1); - ret->step=10; - ret->capacity=0; - ret->size=1; - ret->elements_step=10; - ret->elements_capacity=0; - ret->elements_size=1; - ret->elements=NULL; - ret->heap_elements=NULL; - return ret; -} - -static int -pq_insert(struct pq *pq, int key, struct item_id *node_id) -{ - int element,i; - if (pq->size >= pq->capacity) { - pq->capacity += pq->step; - pq->heap_elements=g_renew(struct pq_heap_element, pq->heap_elements, pq->capacity); - } - if (pq->elements_size >= pq->elements_capacity) { - pq->elements_capacity += pq->elements_step; - pq->elements=g_renew(struct pq_element, pq->elements, pq->elements_capacity); - } - element=pq->elements_size++; - pq->elements[element].node_id=node_id; - i=pq->size++; - while (i > 1 && pq->heap_elements[i/2].key > key) { - pq->heap_elements[i]=pq->heap_elements[i/2]; - pq->elements[pq->heap_elements[i].element].heap_element=i; - i/=2; - } - pq->heap_elements[i].key=key; - pq->heap_elements[i].element=element; - pq->elements[element].heap_element=i; - pq->elements[element].key=key; - return element; -} - -static int -pq_get_key(struct pq *pq, int element, int *key) -{ - *key=pq->elements[element].key; - return 1; -} - -static void -pq_set_parent(struct pq *pq, int element, struct item_id *node_id, int stalled) -{ - pq->elements[element].parent_node_id=node_id; - pq->elements[element].stalled=stalled; -} - -static struct item_id * -pq_get_parent_node_id(struct pq *pq, int element) -{ - return pq->elements[element].parent_node_id; -} - -static void -pq_set_stalled(struct pq *pq, int element, int stalled) -{ - pq->elements[element].stalled=stalled; -} - -static int -pq_get_stalled(struct pq *pq, int element) -{ - return pq->elements[element].stalled; -} - -static int -pq_is_deleted(struct pq *pq, int element) -{ - return (pq->elements[element].heap_element == 0); -} - -static int -pq_min(struct pq *pq) -{ - return (pq->heap_elements[1].key); -} - -static void -pq_decrease_key(struct pq *pq, int element, int key) -{ - int i=pq->elements[element].heap_element; - while (i > 1 && pq->heap_elements[i/2].key > key) { - pq->heap_elements[i]=pq->heap_elements[i/2]; - pq->elements[pq->heap_elements[i].element].heap_element=i; - i/=2; - } - pq->heap_elements[i].element=element; - pq->heap_elements[i].key=key; - pq->elements[element].heap_element=i; - pq->elements[element].key=key; -} - -static int -pq_delete_min(struct pq *pq, struct item_id **node_id, int *key, int *element) -{ - struct pq_heap_element min, last; - int i=1,j; - if (pq->size <= 1) - return 0; - min=pq->heap_elements[1]; - if (node_id) - *node_id=pq->elements[min.element].node_id; - if (key) - *key=min.key; - if (element) - *element=min.element; - pq->elements[min.element].heap_element=0; - min.element=0; - last=pq->heap_elements[--pq->size]; - while (i <= pq->size / 2) { - j=2*i; - if (j < pq->size && pq->heap_elements[j].key > pq->heap_elements[j+1].key) - j++; - if (pq->heap_elements[j].key >= last.key) - break; - pq->heap_elements[i]=pq->heap_elements[j]; - pq->elements[pq->heap_elements[i].element].heap_element=i; - i=j; - } - pq->heap_elements[i]=last; - pq->elements[last.element].heap_element=i; - return 1; -} - -static int -pq_is_empty(struct pq *pq) -{ - return pq->size <= 1; -} - -static void -pq_check(struct pq *pq) -{ - int i; - for (i = 2 ; i < pq->size ; i++) { - if (pq->heap_elements[i/2].key > pq->heap_elements[i].key) { - printf("%d vs %d\n", pq->heap_elements[i/2].key, pq->heap_elements[i].key); - return; - } - } - for (i = 1 ; i < pq->size ; i++) { - if (i != pq->elements[pq->heap_elements[i].element].heap_element) { - printf("Error: heap_element %d points to element %d, but that points to %d\n",i,pq->heap_elements[i].element,pq->elements[pq->heap_elements[i].element].heap_element); - } - } -} - -static struct routech_search * -routech_search_new(int dir) -{ - struct routech_search *ret=g_new0(struct routech_search, 1); - ret->pq=pq_new(); - ret->hash=g_hash_table_new_full(item_id_hash, item_id_equal, g_free, NULL); - ret->upper=UINT_MAX; - ret->dir=dir; - - return ret; -} - -static int -routech_insert_node(struct routech_search *search, struct item_id **id, int val) -{ - struct item_id *ret; - int e; - if (g_hash_table_lookup_extended(search->hash, *id, (gpointer)&ret, (gpointer)&e)) { - int oldval; - pq_get_key(search->pq, e, &oldval); - // printf("Node = %d\n",node); - if (oldval > val) { - pq_decrease_key(search->pq, e, val); - *id=ret; - return e; - } - return 0; - } - ret=g_new(struct item_id, 1); - *ret=**id; - e=pq_insert(search->pq, val, ret); - g_hash_table_insert(search->hash, ret, GINT_TO_POINTER(e)); - *id=ret; - return e; -} - - -static int -routech_find_nearest(struct mapset *ms, struct coord *c, struct item_id *id, struct map **map_ret) -{ - int dst=50; - int dstsq=dst*dst; - int ret=0; - struct map_selection sel; - struct map_rect *mr; - struct mapset_handle *msh; - struct map *map; - struct item *item; - sel.next=NULL; - sel.order=18; - sel.range.min=type_ch_node; - sel.range.max=type_ch_node; - sel.u.c_rect.lu.x=c->x-dst; - sel.u.c_rect.lu.y=c->y+dst; - sel.u.c_rect.rl.x=c->x+dst; - sel.u.c_rect.rl.y=c->y-dst; - printf("0x%x,0x%x-0x%x,0x%x\n",sel.u.c_rect.lu.x,sel.u.c_rect.lu.y,sel.u.c_rect.rl.x,sel.u.c_rect.rl.y); - msh=mapset_open(ms); - while ((map=mapset_next(msh, 1))) { - mr=map_rect_new(map, &sel); - if (!mr) - continue; - while ((item=map_rect_get_item(mr))) { - struct coord cn; - if (item->type == type_ch_node && item_coord_get(item, &cn, 1)) { - int dist=transform_distance_sq(&cn, c); - if (dist < dstsq) { - dstsq=dist; - id->id_hi=item->id_hi; - id->id_lo=item->id_lo; - *map_ret=map; - ret=1; - } - } - } - map_rect_destroy(mr); - } - mapset_close(msh); - dbg_assert(ret==1); - return ret; -} - -static int -routech_edge_valid(struct ch_edge *edge, int dir) -{ - if (edge->flags & (1 << dir)) - return 1; - return 0; -} - -static void -routech_stall(struct map_rect *mr, struct routech_search *curr, struct item_id *id, int key) -{ - struct stall_element { - struct item_id id; - int key; - } *se; - GList *list=NULL; - struct item *item; - struct attr edge_attr; - - int index=GPOINTER_TO_INT(g_hash_table_lookup(curr->hash, id)); - pq_set_stalled(curr->pq, index, key); - se=g_new(struct stall_element, 1); - se->id=*id; - se->key=key; - list=g_list_append(list, se); - while (list) { - se=list->data; - key=se->key; - item=map_rect_get_item_byid(mr, se->id.id_hi, se->id.id_lo); - while (item_attr_get(item, attr_ch_edge, &edge_attr)) { - struct ch_edge *edge=edge_attr.u.data; - if (routech_edge_valid(edge, curr->dir)) { - int index=GPOINTER_TO_INT(g_hash_table_lookup(curr->hash, &edge->target)); - if (index) { - int newkey=key+edge->weight; - int target_key; - pq_get_key(curr->pq, index, &target_key); - if (newkey < target_key) { - if (!pq_get_stalled(curr->pq, index)) { - pq_set_stalled(curr->pq, index, newkey); - se=g_new(struct stall_element, 1); - se->id=edge->target; - se->key=newkey; - list=g_list_append(list, se); - } - } - } - } - } - list=g_list_remove(list, se); - g_free(se); - } -} - -static void -routech_relax(struct map_rect **mr, struct routech_search *curr, struct routech_search *opposite) -{ - int val,element; - struct item_id *id; - struct item *item; - struct attr edge_attr; - int opposite_element; - - if (!pq_delete_min(curr->pq, &id, &val, &element)) { - return; - } - pq_check(curr->pq); - opposite_element=GPOINTER_TO_INT(g_hash_table_lookup(opposite->hash, id)); - if (opposite_element && pq_is_deleted(opposite->pq, opposite_element)) { - int opposite_val; - pq_get_key(opposite->pq, opposite_element, &opposite_val); - if (val+opposite_val < curr->upper) { - curr->upper=opposite->upper=val+opposite_val; - printf("%d path found: 0x%x,0x%x ub = %d\n",curr->dir,id->id_hi,id->id_lo,curr->upper); - curr->via=opposite->via=id; - } - } - if (pq_get_stalled(curr->pq, element)) - return; - item=map_rect_get_item_byid(mr[0], id->id_hi, id->id_lo); - while (item_attr_get(item, attr_ch_edge, &edge_attr)) { - struct ch_edge *edge=edge_attr.u.data; - struct item_id *target_id=&edge->target; - int element; - if (routech_edge_valid(edge, curr->dir)) { - int index=GPOINTER_TO_INT(g_hash_table_lookup(curr->hash, target_id)); - if (index && routech_edge_valid(edge, 1-curr->dir)) { - int newkey,stallkey; - stallkey=pq_get_stalled(curr->pq, index); - if (stallkey) - newkey=stallkey; - else - pq_get_key(curr->pq, index, &newkey); - newkey+=edge->weight; - if (newkey < val) { - routech_stall(mr[1], curr, id, newkey); - return; - } - } - element=routech_insert_node(curr, &target_id, edge->weight+val); - if (element) { - pq_set_parent(curr->pq, element, id, 0); - } - } - } -} - -static void -routech_print_coord(struct coord *c, FILE *out) -{ - int x=c->x; - int y=c->y; - char *sx=""; - char *sy=""; - if (x < 0) { - sx="-"; - x=-x; - } - if (y < 0) { - sy="-"; - y=-y; - } - fprintf(out,"%s0x%x %s0x%x\n",sx,x,sy,y); -} - -static void -routech_resolve_route(struct map_rect *mr, struct item_id *id, int flags, int dir) -{ - int i,count,max=16384; - struct coord *ca=g_alloca(sizeof(struct coord)*(max)); - struct item *item; - int rev=0; - if (!(flags & 8) == dir) - rev=1; - item=map_rect_get_item_byid(mr, id->id_hi, id->id_lo); - dbg_assert(item->type >= type_line && item->type < type_area); - item->type=type_street_route; - - count=item_coord_get(item, ca, max); - item_dump_attr(item, item->map, routefile); - fprintf(routefile,"debug=\"flags=%d dir=%d rev=%d\"",flags,dir,rev); - fprintf(routefile,"\n"); - if (rev) { - for (i = count-1 ; i >= 0 ; i--) - routech_print_coord(&ca[i], routefile); - } else { - for (i = 0 ; i < count ; i++) - routech_print_coord(&ca[i], routefile); - } -} - -static int -routech_find_edge(struct map_rect *mr, struct item_id *from, struct item_id *to, struct item_id *middle) -{ - struct item *item=map_rect_get_item_byid(mr, from->id_hi, from->id_lo); - struct attr edge_attr; - dbg_assert(item->type == type_ch_node); - dbg(1,"type %s\n",item_to_name(item->type)); - dbg(1,"segment item=%p\n",item); - while (item_attr_get(item, attr_ch_edge, &edge_attr)) { - struct ch_edge *edge=edge_attr.u.data; - dbg(1,"flags=%d\n",edge->flags); - if (edge->target.id_hi == to->id_hi && edge->target.id_lo == to->id_lo) { - *middle=edge->middle; - return edge->flags; - } - } - dbg(0,"** not found\n"); - return 0; -} - -static void -routech_resolve(struct map_rect *mr, struct item_id *from, struct item_id *to, int dir) -{ - struct item_id middle_node; - int res; - if (dir) - res=routech_find_edge(mr, to, from, &middle_node); - else - res=routech_find_edge(mr, from, to, &middle_node); - dbg(1,"res=%d\n",res); - if (res & 4) { - routech_resolve(mr, from, &middle_node, 1); - routech_resolve(mr, &middle_node, to, 0); - } else - routech_resolve_route(mr, &middle_node, res, dir); -} - -static void -routech_find_path(struct map_rect *mr, struct routech_search *search) -{ - struct item_id *curr_node=search->via; - GList *i,*n,*list=NULL; - dbg(1,"node %p\n",curr_node); - for (;;) { - int element=GPOINTER_TO_INT(g_hash_table_lookup(search->hash, curr_node)); - struct item_id *next_node=pq_get_parent_node_id(search->pq,element); - if (search->dir) - list=g_list_append(list, curr_node); - else - list=g_list_prepend(list, curr_node); - dbg(1,"element %d\n",element); - dbg(1,"next node %p\n",next_node); - if (!next_node) - break; - curr_node=next_node; - } - i=list; - while (i && (n=g_list_next(i))) { - routech_resolve(mr, i->data, n->data, search->dir); - i=n; - } -} - -void -routech_test(struct navit *navit) -{ - struct attr mapset; - struct coord src={0x3fd661,0x727146}; - struct coord dst={0xfff07fc2,0x4754c9}; - struct item_id id[2],*id_ptr; - struct routech_search *search[2],*curr,*opposite; - struct map *map[2]; - struct map_rect *mr[2]; - int element; - int k; - int search_id=0; - int i; - - navit_get_attr(navit, attr_mapset, &mapset, NULL); - routech_find_nearest(mapset.u.mapset, &src, &id[0], &map[0]); - routech_find_nearest(mapset.u.mapset, &dst, &id[1], &map[1]); - for (k = 0 ; k < 2 ; k++) { - profile(0,"start\n"); - search[0]=routech_search_new(0); - search[1]=routech_search_new(1); - printf("Start 0x%x,0x%x\n",id[0].id_hi,id[0].id_lo); - printf("End 0x%x,0x%x\n",id[1].id_hi,id[1].id_lo); - id_ptr=&id[0]; - element=routech_insert_node(search[0], &id_ptr, 0); - pq_set_parent(search[0]->pq, element, NULL, 0); - - id_ptr=&id[1]; - element=routech_insert_node(search[1], &id_ptr, 0); - pq_set_parent(search[1]->pq, element, NULL, 0); - - mr[0]=map_rect_new(map[0], NULL); - mr[1]=map_rect_new(map[0], NULL); - for (i=0 ; i < 5000 ; i++) { - if (pq_is_empty(search[0]->pq) && pq_is_empty(search[1]->pq)) - break; - if (!pq_is_empty(search[1-search_id]->pq)) { - search_id=1-search_id; - } - if (search[0]->finished) - search_id=1; - if (search[1]->finished) - search_id=0; - curr=search[search_id]; - opposite=search[1-search_id]; - if (pq_is_empty(curr->pq)) { - dbg(0,"empty\n"); - break; - } - routech_relax(mr, curr, opposite); - if (pq_min(curr->pq) > curr->upper) { - dbg(0,"min %d upper %d\n",pq_min(curr->pq), curr->upper); - curr->finished=1; - } - if (curr->finished && opposite->finished) { - dbg(0,"finished\n"); - break; - } - } - - printf("finished %d\n",search[0]->upper); - profile(0,"finished\n"); - } - routefile=fopen("route.txt","w"); - routech_find_path(mr[0], search[0]); - routech_find_path(mr[0], search[1]); - fclose(routefile); - printf("Heap size %d vs %d\n",search[0]->pq->size,search[1]->pq->size); - printf("Element size %d vs %d\n",search[0]->pq->elements_size,search[1]->pq->elements_size); - -} diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/route.h navit-0.5.0+dfsg.1/navit/route.h --- navit-0.5.0~svn5900+dfsg.1/navit/route.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/route.h 2016-01-02 22:29:50.000000000 +0000 @@ -31,6 +31,13 @@ #ifdef __cplusplus extern "C" { #endif +enum route_path_flags { + route_path_flag_none=0, + route_path_flag_cancel=1, + route_path_flag_async=2, + route_path_flag_no_rebuild=4, +}; + enum route_status { route_status_no_destination=0, route_status_destination_set=1, @@ -111,6 +118,8 @@ struct street_data *route_info_street(struct route_info *rinf); struct map *route_get_map(struct route *this_); struct map *route_get_graph_map(struct route *this_); +enum route_path_flags route_get_flags(struct route *this_); +int route_has_graph(struct route *this_); void route_set_projection(struct route *this_, enum projection pro); void route_set_destinations(struct route *this_, struct pcoord *dst, int count, int async); int route_set_attr(struct route *this_, struct attr *attr); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/script.c navit-0.5.0+dfsg.1/navit/script.c --- navit-0.5.0~svn5900+dfsg.1/navit/script.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/script.c 2016-01-02 22:29:50.000000000 +0000 @@ -40,10 +40,10 @@ struct attr *xml_text=attr_search(scr->attrs, NULL, attr_xml_text); int error; if (!xml_text || !xml_text->u.str) { - dbg(0,"no text\n"); + dbg(lvl_error,"no text\n"); return; } - dbg(0,"running '%s'\n",xml_text->u.str); + dbg(lvl_debug,"running '%s'\n",xml_text->u.str); command_evaluate_to_void(&scr->parent, xml_text->u.str, &error); } @@ -52,7 +52,7 @@ { switch (attr->type) { case attr_refresh_cond: - dbg(0,"refresh_cond\n"); + dbg(lvl_debug,"refresh_cond\n"); if (scr->cs) command_saved_destroy(scr->cs); scr->cs=command_saved_attr_new(attr->u.str, &scr->parent, scr->cb, 0); @@ -79,14 +79,14 @@ scr->parent=*parent; while (attrs && *attrs) script_set_attr_int(scr, *attrs++); - dbg(0,"return %p\n",scr); + dbg(lvl_debug,"return %p\n",scr); return scr; } static void script_destroy(struct script *scr) { - dbg(0,"enter %p\n",scr); + dbg(lvl_debug,"enter %p\n",scr); if (scr->timeout) event_remove_timeout(scr->timeout); if (scr->cs) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/search.c navit-0.5.0+dfsg.1/navit/search.c --- navit-0.5.0~svn5900+dfsg.1/navit/search.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/search.c 2016-01-02 22:29:50.000000000 +0000 @@ -138,7 +138,7 @@ case attr_postal: return -1; default: - dbg(0,"unknown search '%s'\n",attr_to_name(attr_type)); + dbg(lvl_error,"unknown search '%s'\n",attr_to_name(attr_type)); return -1; } } @@ -225,10 +225,10 @@ { while (used_phrases) { struct phrase *pu=used_phrases->data; - dbg(1,"'%s'-'%s' vs '%s'-'%s'\n",p->start,p->end,pu->start,pu->end); + dbg(lvl_debug,"'%s'-'%s' vs '%s'-'%s'\n",p->start,p->end,pu->start,pu->end); if (p->start < pu->end && p->end > pu->start) return 1; - dbg(1,"unused\n"); + dbg(lvl_debug,"unused\n"); used_phrases=g_list_next(used_phrases); } return 0; @@ -255,7 +255,7 @@ int count=0,wordcount_all=wordcount+p->wordcount; struct search_list_result *slr; attr.u.str=search_phrase_str(p); - dbg(1,"%s phrase '%s'\n",attr_to_name(attr_type),attr.u.str); + dbg(lvl_debug,"%s phrase '%s'\n",attr_to_name(attr_type),attr.u.str); search_list_search(sl, &attr, 0); while ((slr=search_list_get_result(sl))) { if (attr_type != attr_country_all) { @@ -265,7 +265,7 @@ } count++; } - dbg(1,"%d results wordcount %d\n",count,wordcount_all); + dbg(lvl_debug,"%d results wordcount %d\n",count,wordcount_all); if (count) { GList *used=g_list_prepend(g_list_copy(exclude), tmp->data); enum attr_type new_attr_type=attr_none; @@ -348,7 +348,7 @@ { struct search_list_level *le; int level; - dbg(2,"Starting search for '=%s' of type %s\n", search_attr->u.str, attr_to_name(search_attr->type)); + dbg(lvl_info,"Starting search for '=%s' of type %s\n", search_attr->u.str, attr_to_name(search_attr->type)); search_address_results_free(this_); if (search_attr->type == attr_address) { search_by_address(this_, search_attr->u.str); @@ -392,7 +392,7 @@ curr=le->list; if (mode > 0 || !id) le->selected=mode; - //dbg(0,"enter level=%d %d %d %p\n", level, id, mode, curr); + //dbg(lvl_debug,"enter level=%d %d %d %p\n", level, id, mode, curr); num = 0; while (curr) { num++; @@ -401,13 +401,13 @@ slc->selected=mode; if (id) { le->last=curr; - //dbg(0,"found\n"); + //dbg(lvl_debug,"found\n"); return slc; } } curr=g_list_next(curr); } - //dbg(0,"not found\n"); + //dbg(lvl_debug,"not found\n"); return NULL; } @@ -566,7 +566,7 @@ ret->itemt=*item; ret->common.item=ret->common.unique=*item; if (item_attr_get(item, attr_town_streets_item, &attr)) { - dbg(1,"town_assoc 0x%x 0x%x\n", attr.u.item->id_hi, attr.u.item->id_lo); + dbg(lvl_debug,"town_assoc 0x%x 0x%x\n", attr.u.item->id_hi, attr.u.item->id_lo); ret->common.unique=*attr.u.item; } search_list_common_new(item, &ret->common); @@ -760,7 +760,7 @@ { int i; char *ret=NULL; - dbg(1,"enter %s %s\n", mask, new); + dbg(lvl_debug,"enter %s %s\n", mask, new); if (!new) return NULL; if (!mask) @@ -777,7 +777,7 @@ while (mask[i]) ret[i++]='.'; } - dbg(1,"merged %s with %s as %s\n", mask, new, ret); + dbg(lvl_debug,"merged %s with %s as %s\n", mask, new, ret); return ret; } @@ -861,24 +861,24 @@ return ret; } - //dbg(0,"enter\n"); + //dbg(lvl_debug,"enter\n"); le=&this_->levels[level]; - //dbg(0,"le=%p\n", le); + //dbg(lvl_debug,"le=%p\n", le); for (;;) { - //dbg(0,"le->search=%p\n", le->search); + //dbg(lvl_debug,"le->search=%p\n", le->search); if (! le->search) { - //dbg(0,"partial=%d level=%d\n", le->partial, level); + //dbg(lvl_debug,"partial=%d level=%d\n", le->partial, level); if (! level) le->parent=NULL; else { leu=&this_->levels[level-1]; - //dbg(0,"leu->curr=%p\n", leu->curr); + //dbg(lvl_debug,"leu->curr=%p\n", leu->curr); for (;;) { - //dbg(0,"*********########"); + //dbg(lvl_debug,"*********########"); struct search_list_common *slc; if (! leu->curr) @@ -897,23 +897,23 @@ } if (le->parent) { - //dbg(0,"mapset_search_new with item(%d,%d)\n", le->parent->item.id_hi, le->parent->item.id_lo); + //dbg(lvl_debug,"mapset_search_new with item(%d,%d)\n", le->parent->item.id_hi, le->parent->item.id_lo); } - //dbg(0,"############## attr=%s\n", attr_to_name(le->attr->type)); + //dbg(lvl_debug,"############## attr=%s\n", attr_to_name(le->attr->type)); le->search=mapset_search_new(this_->ms, &le->parent->item, le->attr, le->partial); le->hash=g_hash_table_new(search_item_hash_hash, search_item_hash_equal); } - //dbg(0,"le->search=%p\n", le->search); + //dbg(lvl_debug,"le->search=%p\n", le->search); if (!this_->item) { - //dbg(0,"sssss 1"); + //dbg(lvl_debug,"sssss 1"); this_->item=mapset_search_get_item(le->search); - //dbg(0,"sssss 1 %p\n",this_->item); + //dbg(lvl_debug,"sssss 1 %p\n",this_->item); } if (this_->item) { void *p=NULL; - //dbg(0,"id_hi=%d id_lo=%d\n", this_->item->id_hi, this_->item->id_lo); + //dbg(lvl_debug,"id_hi=%d id_lo=%d\n", this_->item->id_hi, this_->item->id_lo); if (this_->postal) { struct attr postal; @@ -929,11 +929,11 @@ this_->result.town=NULL; this_->result.street=NULL; this_->result.c=NULL; - //dbg(0,"case x LEVEL start %d\n",level); + //dbg(lvl_debug,"case x LEVEL start %d\n",level); switch (level) { case 0: - //dbg(0,"case 0 COUNTRY"); + //dbg(lvl_debug,"case 0 COUNTRY"); p=search_list_country_new(this_->item); this_->result.country=p; this_->result.country->common.parent=NULL; @@ -943,7 +943,7 @@ this_->item=NULL; break; case 1: - //dbg(0,"case 1 TOWN"); + //dbg(lvl_debug,"case 1 TOWN"); p=search_list_town_new(this_->item); this_->result.town=p; this_->result.town->common.parent=this_->levels[0].last->data; @@ -954,7 +954,7 @@ this_->item=NULL; break; case 2: - //dbg(0,"case 2 STREET"); + //dbg(lvl_debug,"case 2 STREET"); p=search_list_street_new(this_->item); this_->result.street=p; this_->result.street->common.parent=this_->levels[1].last->data; @@ -965,13 +965,13 @@ this_->item=NULL; break; case 3: - dbg(1,"case 3 HOUSENUMBER\n"); + dbg(lvl_debug,"case 3 HOUSENUMBER\n"); has_street_name=0; // if this housenumber has a streetname tag, set the name now if (item_attr_get(this_->item, attr_street_name, &attr2)) { - dbg(1,"streetname: %s\n",attr2.u.str); + dbg(lvl_debug,"streetname: %s\n",attr2.u.str); has_street_name=1; } @@ -988,7 +988,7 @@ { this_->item=NULL; } else { - dbg(0,"interpolation!\n"); + dbg(lvl_debug,"interpolation!\n"); } if(le->parent && has_street_name) { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/search_houseno_interpol.c navit-0.5.0+dfsg.1/navit/search_houseno_interpol.c --- navit-0.5.0~svn5900+dfsg.1/navit/search_houseno_interpol.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/search_houseno_interpol.c 2016-01-02 22:29:50.000000000 +0000 @@ -79,7 +79,7 @@ static char * search_next_house_number_curr_interpol_with_ends(struct house_number_interpolation *inter) { - dbg(1,"interpolate %s-%s %s\n",inter->first,inter->last,inter->curr); + dbg(lvl_debug,"interpolate %s-%s %s\n",inter->first,inter->last,inter->curr); if (!inter->first || !inter->last) return NULL; if (!inter->curr) @@ -97,7 +97,7 @@ inter->curr=NULL; } } - dbg(1,"interpolate result %s\n",inter->curr); + dbg(lvl_debug,"interpolate result %s\n",inter->curr); return inter->curr; } @@ -141,7 +141,7 @@ strncpy(first, str, len); first[len]='\0'; last=g_strdup(pos+1); - dbg(1,"%s = %s - %s\n",str, first, last); + dbg(lvl_debug,"%s = %s - %s\n",str, first, last); if (atoi(first) > atoi(last)) { inter->first=last; inter->last=first; @@ -158,7 +158,7 @@ { struct pcoord *ret=g_new(struct pcoord, 1); ret->pro = map_projection(item->map); - dbg(1,"%s\n",item_to_name(item->type)); + dbg(lvl_debug,"%s\n",item_to_name(item->type)); if (!inter) { struct coord c; if (item_coord_get(item, &c, 1)) { @@ -183,29 +183,29 @@ if (count) { int i,distance_sum=0,hn_distance; int *distances=g_alloca(sizeof(int)*(count-1)); - dbg(1,"count=%d hn_length=%d hn_pos=%d (%s of %s-%s)\n",count,hn_length,hn_pos,inter->curr,inter->first,inter->last); + dbg(lvl_debug,"count=%d hn_length=%d hn_pos=%d (%s of %s-%s)\n",count,hn_length,hn_pos,inter->curr,inter->first,inter->last); if (!hn_length) { hn_length=2; hn_pos=1; } if (count == max) - dbg(0,"coordinate overflow\n"); + dbg(lvl_error,"coordinate overflow\n"); for (i = 0 ; i < count-1 ; i++) { distances[i]=navit_sqrt(transform_distance_sq(&c[i],&c[i+1])); distance_sum+=distances[i]; - dbg(1,"distance[%d]=%d\n",i,distances[i]); + dbg(lvl_debug,"distance[%d]=%d\n",i,distances[i]); } - dbg(1,"sum=%d\n",distance_sum); + dbg(lvl_debug,"sum=%d\n",distance_sum); #if 0 hn_distance=distance_sum*hn_pos/hn_length; #else hn_distance=(distance_sum*hn_pos+distance_sum*inter_increment/2)/(hn_length+inter_increment); #endif - dbg(1,"hn_distance=%d\n",hn_distance); + dbg(lvl_debug,"hn_distance=%d\n",hn_distance); i=0; while (i < count-1 && hn_distance > distances[i]) hn_distance-=distances[i++]; - dbg(1,"remaining distance=%d from %d\n",hn_distance,distances[i]); + dbg(lvl_debug,"remaining distance=%d from %d\n",hn_distance,distances[i]); ret->x=(c[i+1].x-c[i].x)*hn_distance/distances[i]+c[i].x; ret->y=(c[i+1].y-c[i].y)*hn_distance/distances[i]+c[i].y; } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/speech/cmdline/speech_cmdline.c navit-0.5.0+dfsg.1/navit/speech/cmdline/speech_cmdline.c --- navit-0.5.0~svn5900+dfsg.1/navit/speech/cmdline/speech_cmdline.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/speech/cmdline/speech_cmdline.c 2016-01-02 22:29:50.000000000 +0000 @@ -63,7 +63,7 @@ { GList *loop_samples=samples,*result=NULL,*recursion_result; int shortest_result_length=INT_MAX; - dbg(1,"searching samples for text: '%s'\n",text); + dbg(lvl_debug,"searching samples for text: '%s'\n",text); while (loop_samples) { char *sample_name=loop_samples->data; int sample_name_len; @@ -77,7 +77,7 @@ const char *remaining_text=text+sample_name_len; while (*remaining_text == ' ' || *remaining_text == ',') remaining_text++; - dbg(1,"sample '%s' matched; remaining text: '%s'\n",sample_name,remaining_text); + dbg(lvl_debug,"sample '%s' matched; remaining text: '%s'\n",sample_name,remaining_text); if (*remaining_text) { recursion_result=speech_cmdline_search(samples, suffix_len, remaining_text, decode); if (recursion_result && g_list_length(recursion_result) < shortest_result_length) { @@ -86,7 +86,7 @@ result=g_list_prepend(result, loop_samples->data); shortest_result_length=g_list_length(result); } else { - dbg(1,"no (shorter) result found for remaining text '%s', " + dbg(lvl_debug,"no (shorter) result found for remaining text '%s', " "trying next sample\n", remaining_text); g_list_free(recursion_result); } @@ -141,15 +141,15 @@ argl=speech_cmdline_search(this->samples, strlen(this->sample_suffix), text, !!(this->flags & 1)); samplesmode=1; listlen=g_list_length(argl); - dbg(1,"For text: '%s', found %d samples.\n",text,listlen); + dbg(lvl_debug,"For text: '%s', found %d samples.\n",text,listlen); if (!listlen){ - dbg(0,"No matching samples found. Cannot speak text: '%s'\n",text); + dbg(lvl_error,"No matching samples found. Cannot speak text: '%s'\n",text); } } else { listlen=1; } if(listlen>0) { - dbg(1,"Speaking text '%s'\n",text); + dbg(lvl_debug,"Speaking text '%s'\n",text); int argc; char**argv; int j; @@ -168,7 +168,7 @@ while(l) { char *new_arg; new_arg=g_strdup_printf("%s/%s",this->sample_dir,(char *)l->data); - dbg(1,"new_arg %s\n",new_arg); + dbg(lvl_debug,"new_arg %s\n",new_arg); argv[j++]=g_strdup_printf(cmdv[i],new_arg); g_free(new_arg); l=g_list_next(l); @@ -236,13 +236,17 @@ this->flags=attr->u.num; if (this->sample_dir && this->sample_suffix) { void *handle=file_opendir(this->sample_dir); + if (!handle) { + dbg(lvl_error,"Cannot read sample directory contents: %s", this->sample_dir); + return NULL; + } char *name; int suffix_len=strlen(this->sample_suffix); while((name=file_readdir(handle))) { int len=strlen(name); if (len > suffix_len) { if (!strcmp(name+len-suffix_len, this->sample_suffix)) { - dbg(1,"found %s\n",name); + dbg(lvl_debug,"found %s\n",name); this->samples=g_list_prepend(this->samples, g_strdup(name)); } } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/speech/espeak/speak.c navit-0.5.0+dfsg.1/navit/speech/espeak/speak.c --- navit-0.5.0~svn5900+dfsg.1/navit/speech/espeak/speak.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/speech/espeak/speak.c 2016-01-02 22:29:50.000000000 +0000 @@ -166,11 +166,11 @@ { if(result == -1) { - dbg(0, "Failed to load espeak-data\n"); + dbg(lvl_error, "Failed to load espeak-data\n"); return FALSE; } else - dbg(0, "Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); + dbg(lvl_error, "Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); } LoadConfig(); SetVoiceStack(NULL); @@ -214,7 +214,7 @@ static LRESULT CALLBACK speech_message_handler( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { - dbg(1, "message_handler called\n"); + dbg(lvl_debug, "message_handler called\n"); switch (uMsg) { @@ -234,7 +234,7 @@ { WAVEHDR *WaveHeader = (WAVEHDR *)lParam; struct speech_priv* sp_priv; - dbg(2, "Wave buffer done\n"); + dbg(lvl_info, "Wave buffer done\n"); sp_priv = (struct speech_priv*)WaveHeader->dwUser; sp_priv->free_buffers = g_list_append(sp_priv->free_buffers, WaveHeader); @@ -282,7 +282,7 @@ { if (bRet == -1) { - dbg(0, "Error getting message from queue\n"); + dbg(lvl_error, "Error getting message from queue\n"); break; } else @@ -336,7 +336,7 @@ if (!RegisterClass(&wc)) { - dbg(0, "Window registration for message queue failed\n"); + dbg(lvl_error, "Window registration for message queue failed\n"); return 1; } @@ -361,7 +361,7 @@ if (hwnd == NULL) { - dbg(0, "Window creation failed: %d\n", GetLastError()); + dbg(lvl_error, "Window creation failed: %d\n", GetLastError()); return 1; } @@ -371,7 +371,7 @@ if(!waveout_open(this)) { - dbg(0, "Can't open wave output\n"); + dbg(lvl_error, "Can't open wave output\n"); return 1; } @@ -387,11 +387,11 @@ espeak_say(struct speech_priv *this, const char *text) { char *phrase = g_strdup(text); - dbg(1, "Speak: '%s'\n", text); + dbg(lvl_debug, "Speak: '%s'\n", text); if (!PostMessage(this->h_queue, msg_say, (WPARAM)this, (LPARAM)phrase)) { - dbg(0, "PostThreadMessage 'say' failed\n"); + dbg(lvl_error, "PostThreadMessage 'say' failed\n"); } return 0; @@ -440,7 +440,7 @@ strcpy(path_home,path->u.str); else sprintf(path_home,"%s/espeak-data",getenv("NAVIT_SHAREDIR")); - dbg(0,"path_home set to %s\n",path_home); + dbg(lvl_debug,"path_home set to %s\n",path_home); if ( !initialise() ) { @@ -467,12 +467,12 @@ } file1=g_strdup_printf("%s/voices/%s",path_home,lang_full); file2=g_strdup_printf("%s/voices/%s/%s",path_home,lang,lang_full); - dbg(0,"Testing %s and %s\n",file1,file2); + dbg(lvl_debug,"Testing %s and %s\n",file1,file2); if (file_exists(file1) || file_exists(file2)) lang_str=g_strdup(lang_full); else lang_str=g_strdup(lang); - dbg(0,"Language full %s lang %s result %s\n",lang_full,lang,lang_str); + dbg(lvl_debug,"Language full %s lang %s result %s\n",lang_full,lang,lang_str); g_free(lang_full); g_free(lang); g_free(file1); @@ -481,12 +481,12 @@ } if(lang_str && SetVoiceByName(lang_str) != EE_OK) { - dbg(0, "Error setting language to: '%s',falling back to default\n", lang_str); + dbg(lvl_error, "Error setting language to: '%s',falling back to default\n", lang_str); g_free(lang_str); lang_str=NULL; } if(!lang_str && SetVoiceByName("default") != EE_OK) { - dbg(0, "Error setting language to default\n"); + dbg(lvl_error, "Error setting language to default\n"); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/speech.c navit-0.5.0+dfsg.1/navit/speech.c --- navit-0.5.0~svn5900+dfsg.1/navit/speech.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/speech.c 2016-01-02 22:29:50.000000000 +0000 @@ -41,25 +41,25 @@ attr=attr_search(attrs, NULL, attr_type); if (! attr) { - dbg(0,"type missing\n"); + dbg(lvl_error,"type missing\n"); return NULL; } - dbg(1,"type='%s'\n", attr->u.str); + dbg(lvl_debug,"type='%s'\n", attr->u.str); speech_new=plugin_get_speech_type(attr->u.str); - dbg(1,"new=%p\n", speech_new); + dbg(lvl_debug,"new=%p\n", speech_new); if (! speech_new) { - dbg(0,"wrong type '%s'\n", attr->u.str); + dbg(lvl_error,"wrong type '%s'\n", attr->u.str); return NULL; } this_=(struct speech *)navit_object_new(attrs, &speech_func, sizeof(struct speech)); this_->priv=speech_new(&this_->meth, this_->attrs, parent); - dbg(1, "say=%p\n", this_->meth.say); - dbg(1,"priv=%p\n", this_->priv); + dbg(lvl_debug, "say=%p\n", this_->meth.say); + dbg(lvl_debug,"priv=%p\n", this_->priv); if (! this_->priv) { speech_destroy(this_); return NULL; } - dbg(1,"return %p\n", this_); + dbg(lvl_debug,"return %p\n", this_); return this_; } @@ -75,7 +75,7 @@ int speech_say(struct speech *this_, const char *text) { - dbg(1, "this_=%p text='%s' calling %p\n", this_, text, this_->meth.say); + dbg(lvl_debug, "this_=%p text='%s' calling %p\n", this_, text, this_->meth.say); return (this_->meth.say)(this_->priv, text); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/start_real.c navit-0.5.0+dfsg.1/navit/start_real.c --- navit-0.5.0~svn5900+dfsg.1/navit/start_real.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/start_real.c 2016-01-02 22:29:50.000000000 +0000 @@ -51,7 +51,7 @@ #include #endif -char *version=PACKAGE_VERSION" "SVN_VERSION""NAVIT_VARIANT; +char *version=PACKAGE_VERSION"+git:"GIT_VERSION""NAVIT_VARIANT; int main_argc; char * const* main_argv; @@ -60,10 +60,11 @@ { printf("%s",_("navit usage:\n" "navit [options] [configfile]\n" - "\t-c : use as config file\n" - "\t-d : set the global debug output level to (0-3). Overrides setting from config file.\n" + "\t-c : use as config file, instead of using the default file.\n" + "\t-d : set the global debug output level to (0=error, 1=warning, 2=info, 3=debug).\n" + "\tSettings from config file will still take effect where they set a higher level.\n" "\t-h: print this usage info and exit.\n" - "\t-v: Print the version and exit.\n")); + "\t-v: print the version and exit.\n")); } @@ -168,12 +169,6 @@ list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_USER_DATADIR"), "/navit.xml" , NULL)); list = g_list_append(list,g_strdup("navit.xml.local")); list = g_list_append(list,g_strdup("navit.xml")); -#ifdef HAVE_API_ANDROID - // new preferred location (the new one should have priority over the legacy!) - list = g_list_append(list,g_strdup("/sdcard/navit/navit.xml")); - // legacy location, still supported - list = g_list_append(list,g_strdup("/sdcard/navit.xml")); -#endif list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml.local" , NULL)); list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml" , NULL)); #ifndef _WIN32 @@ -184,12 +179,12 @@ for (;;) { if (li == NULL) { // We have not found an existing config file from all possibilities - dbg(0, "%s", _("No config file navit.xml, navit.xml.local found\n")); + dbg(lvl_error, "%s", _("No config file navit.xml, navit.xml.local found\n")); return 4; } // Try the next config file possibility from the list config_file = li->data; - dbg(1,"trying %s\n",config_file); + dbg(lvl_debug,"trying %s\n",config_file); if (file_exists(config_file)) { break; } @@ -197,14 +192,14 @@ li = g_list_next(li); } - dbg(0,"Loading %s\n",config_file); + dbg(lvl_debug,"Loading %s\n",config_file); if (!config_load(config_file, &error)) { - dbg(0, _("Error parsing config file '%s': %s\n"), config_file, error ? error->message : ""); + dbg(lvl_error, _("Error parsing config file '%s': %s\n"), config_file, error ? error->message : ""); } else { - dbg(0, _("Using config file '%s'\n"), config_file); + dbg(lvl_info, _("Using config file '%s'\n"), config_file); } if (! config) { - dbg(0, _("Error: No configuration found in config file '%s'\n"), config_file); + dbg(lvl_error, _("Error: No configuration found in config file '%s'\n"), config_file); } while (li) { g_free(li->data); @@ -212,19 +207,26 @@ } g_list_free(list); if (! (config && config_get_attr(config, attr_navit, &navit, NULL))) { - dbg(0, "%s", _("Internal initialization failed, exiting. Check previous error messages.\n")); + dbg(lvl_error, "%s", _("Internal initialization failed, exiting. Check previous error messages.\n")); exit(5); } conf.type=attr_config; conf.u.config=config; if (startup_file) { - FILE *f=fopen(startup_file,"r"); + FILE *f = fopen(startup_file,"r"); if (f) { char buffer[4096]; + int fclose_ret; while(fgets(buffer, sizeof(buffer), f)) { command_evaluate(&conf, buffer); } - } + fclose_ret = fclose(f); + if (fclose_ret != 0) { + dbg(lvl_error, "Could not close the specified startup file: %s\n", startup_file); + } + } else { + dbg(lvl_error, "Could not open the specified startup file: %s", startup_file); + } } if (command) { command_evaluate(&conf, command); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/track.c navit-0.5.0+dfsg.1/navit/track.c --- navit-0.5.0~svn5900+dfsg.1/navit/track.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/track.c 2016-01-02 22:29:50.000000000 +0000 @@ -155,7 +155,7 @@ int speed_num,i; if (cdf->hist_size == 0) { - dbg(1,"No CDF.\n"); + dbg(lvl_warning,"No CDF.\n"); *pout = *pin; *dirout = dirin; return; @@ -338,7 +338,7 @@ struct tracking_line *tl; int result=0; - dbg(1,"enter %s\n",attr_to_name(type)); + dbg(lvl_debug,"enter %s\n",attr_to_name(type)); if (_this->attr) { attr_free(_this->attr); _this->attr=NULL; @@ -471,7 +471,7 @@ struct coord_geo g; struct coord cc; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); h=mapset_open(tr->ms); while ((m=mapset_next(h,2))) { cc.x = pc->x; @@ -501,7 +501,7 @@ map_rect_destroy(mr); } mapset_close(h); - dbg(1, "exit\n"); + dbg(lvl_debug, "exit\n"); } @@ -509,7 +509,7 @@ tracking_flush(struct tracking *tr) { struct tracking_line *tl=tr->lines,*next; - dbg(1,"enter(tr=%p)\n", tr); + dbg(lvl_debug,"enter(tr=%p)\n", tr); while (tl) { next=tl->next; @@ -603,7 +603,7 @@ { int value=0; struct street_data *sd=t->street; - dbg(2, "%d: (0x%x,0x%x)-(0x%x,0x%x)\n", offset, sd->c[offset].x, sd->c[offset].y, sd->c[offset+1].x, sd->c[offset+1].y); + dbg(lvl_info, "%d: (0x%x,0x%x)-(0x%x,0x%x)\n", offset, sd->c[offset].x, sd->c[offset].y, sd->c[offset+1].x, sd->c[offset+1].y); if (flags & 1) { struct coord c1, c2, cp; c1.x = sd->c[offset].x; @@ -639,6 +639,14 @@ } +/** + * @brief Processes a position update. + * + * @param tr The {@code struct tracking} which will receive the position update + * @param v The vehicle whose position has changed + * @param vehicleprofile The vehicle profile to use + * @param pro The projection to use for transformations + */ void tracking_update(struct tracking *tr, struct vehicle *v, struct vehicleprofile *vehicleprofile, enum projection pro) { @@ -665,7 +673,7 @@ !vehicle_get_attr(tr->vehicle, attr_position_direction, &direction_attr, NULL) || !vehicle_get_attr(tr->vehicle, attr_position_coord_geo, &coord_geo, NULL) || !vehicle_get_attr(tr->vehicle, attr_position_time_iso8601, &time_attr, NULL)) { - dbg(0,"failed to get position data %d %d %d %d\n", + dbg(lvl_error,"failed to get position data %d %d %d %d\n", vehicle_get_attr(tr->vehicle, attr_position_speed, &speed_attr, NULL), vehicle_get_attr(tr->vehicle, attr_position_direction, &direction_attr, NULL), vehicle_get_attr(tr->vehicle, attr_position_coord_geo, &coord_geo, NULL), @@ -685,45 +693,45 @@ if (!vehicleprofile_get_attr(vehicleprofile,attr_static_speed,&static_speed,NULL) || !vehicleprofile_get_attr(vehicleprofile,attr_static_distance,&static_distance,NULL)) { static_speed.u.num=3; static_distance.u.num=10; - dbg(1,"Using defaults for static position detection\n"); + dbg(lvl_debug,"Using defaults for static position detection\n"); } - dbg(2,"Static speed: %ld, static distance: %ld\n",static_speed.u.num, static_distance.u.num); + dbg(lvl_info,"Static speed: %ld, static distance: %ld\n",static_speed.u.num, static_distance.u.num); time=iso8601_to_secs(time_attr.u.str); speed=*speed_attr.u.numd; direction=*direction_attr.u.numd; tr->valid=attr_position_valid_valid; transform_from_geo(pro, coord_geo.u.coord_geo, &tr->curr_in); if ((speed < static_speed.u.num && transform_distance(pro, &tr->last_in, &tr->curr_in) < static_distance.u.num )) { - dbg(1,"static speed %f coord 0x%x,0x%x vs 0x%x,0x%x\n",speed,tr->last_in.x,tr->last_in.y, tr->curr_in.x, tr->curr_in.y); + dbg(lvl_debug,"static speed %f coord 0x%x,0x%x vs 0x%x,0x%x\n",speed,tr->last_in.x,tr->last_in.y, tr->curr_in.x, tr->curr_in.y); tr->valid=attr_position_valid_static; tr->speed=0; return; } if (tr->tunnel) { tr->curr_in=tr->curr_out; - dbg(0,"tunnel extrapolation speed %f dir %f\n",tr->speed,tr->direction); - dbg(0,"old 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y); + dbg(lvl_debug,"tunnel extrapolation speed %f dir %f\n",tr->speed,tr->direction); + dbg(lvl_debug,"old 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y); speed=tr->speed; direction=tr->curr_line->angle[tr->pos]; transform_project(pro, &tr->curr_in, tr->speed*tr->tunnel_extrapolation/36, tr->direction, &tr->curr_in); - dbg(0,"new 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y); + dbg(lvl_debug,"new 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y); } else if (vehicle_get_attr(tr->vehicle, attr_lag, &lag, NULL) && lag.u.num > 0) { double espeed; int edirection; if (time-tr->time == 1) { - dbg(1,"extrapolating speed from %f and %f (%f)\n",tr->speed, speed, speed-tr->speed); + dbg(lvl_debug,"extrapolating speed from %f and %f (%f)\n",tr->speed, speed, speed-tr->speed); espeed=speed+(speed-tr->speed)*lag.u.num/10; - dbg(1,"extrapolating angle from %f and %f (%d)\n",tr->direction, direction, tracking_angle_diff(direction,tr->direction,360)); + dbg(lvl_debug,"extrapolating angle from %f and %f (%d)\n",tr->direction, direction, tracking_angle_diff(direction,tr->direction,360)); edirection=direction+tracking_angle_diff(direction,tr->direction,360)*lag.u.num/10; } else { - dbg(1,"no speed and direction extrapolation\n"); + dbg(lvl_debug,"no speed and direction extrapolation\n"); espeed=speed; edirection=direction; } - dbg(1,"lag %ld speed %f direction %d\n",lag.u.num,espeed,edirection); - dbg(1,"old 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y); + dbg(lvl_debug,"lag %ld speed %f direction %d\n",lag.u.num,espeed,edirection); + dbg(lvl_debug,"old 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y); transform_project(pro, &tr->curr_in, espeed*lag.u.num/36, edirection, &tr->curr_in); - dbg(1,"new 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y); + dbg(lvl_debug,"new 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y); } tr->time=time; tr->pro=pro; @@ -738,11 +746,11 @@ tr->last[0]=tr->curr[0]; tr->last[1]=tr->curr[1]; if (!tr->lines || transform_distance(pro, &tr->last_updated, &tr->curr_in) > 500) { - dbg(1, "update\n"); + dbg(lvl_debug, "update\n"); tracking_flush(tr); tracking_doupdate_lines(tr, &tr->curr_in, pro); tr->last_updated=tr->curr_in; - dbg(1,"update end\n"); + dbg(lvl_debug,"update end\n"); } tr->street_direction=0; @@ -761,7 +769,7 @@ tr->curr[0]=sd->c[i]; tr->curr[1]=sd->c[i+1]; tr->direction_matched=t->angle[i]; - dbg(1,"lpnt.x=0x%x,lpnt.y=0x%x pos=%d %d+%d+%d+%d=%d\n", lpnt.x, lpnt.y, i, + dbg(lvl_debug,"lpnt.x=0x%x,lpnt.y=0x%x pos=%d %d+%d+%d+%d=%d\n", lpnt.x, lpnt.y, i, transform_distance_line_sq(&sd->c[i], &sd->c[i+1], &cin, &lpnt_tmp), tracking_angle_delta(tr, tr->curr_angle, t->angle[i], 0)*tr->angle_pref, tracking_is_connected(tr, tr->last, &sd->c[i]) ? tr->connected_pref : 0, @@ -782,7 +790,7 @@ } t=t->next; } - dbg(1,"tr->curr_line=%p min=%d\n", tr->curr_line, min); + dbg(lvl_debug,"tr->curr_line=%p min=%d\n", tr->curr_line, min); if (!tr->curr_line || min > tr->offroad_limit_pref) { tr->curr_out=tr->curr_in; tr->coord_geo_valid=0; @@ -794,7 +802,7 @@ } else if (tr->tunnel) { tr->speed=0; } - dbg(1,"found 0x%x,0x%x\n", tr->curr_out.x, tr->curr_out.y); + dbg(lvl_debug,"found 0x%x,0x%x\n", tr->curr_out.x, tr->curr_out.y); callback_list_call_attr_0(tr->callback_list, attr_position_coord_geo); } @@ -981,7 +989,7 @@ struct map_rect_priv *this=priv_data; enum projection pro; int ret=0; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); while (this->ccount < 2 && count > 0) { pro = map_projection(this->curr->street->item.map); if (projection_mg != pro) { @@ -990,7 +998,7 @@ c ,projection_mg); } else *c=this->curr->street->c[this->ccount+this->coord]; - dbg(1,"coord %d 0x%x,0x%x\n",this->ccount,c->x,c->y); + dbg(lvl_debug,"coord %d 0x%x,0x%x\n",this->ccount,c->x,c->y); this->ccount++; ret++; c++; @@ -1168,7 +1176,7 @@ priv->item.type=type_tracking_10; else priv->item.type=type_tracking_0; - dbg(1,"item %d %d points\n", priv->coord, priv->curr->street->count); + dbg(lvl_debug,"item %d %d points\n", priv->coord, priv->curr->street->count); tracking_map_item_coord_rewind(priv); tracking_map_item_attr_rewind(priv); return ret; diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/transform.c navit-0.5.0+dfsg.1/navit/transform.c --- navit-0.5.0~svn5900+dfsg.1/navit/transform.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/transform.c 2016-01-02 22:29:50.000000000 +0000 @@ -104,7 +104,7 @@ int scale=t->scale; int order_dir=-1; - dbg(1,"yaw=%d pitch=%d center=0x%x,0x%x\n", t->yaw, t->pitch, t->map_center.x, t->map_center.y); + dbg(lvl_debug,"yaw=%d pitch=%d center=0x%x,0x%x\n", t->yaw, t->pitch, t->map_center.x, t->map_center.y); t->znear=1 << POST_SHIFT; t->zfar=300*t->znear; t->scale_shift=0; @@ -122,7 +122,7 @@ scale >>= 1; } fac=(1 << POST_SHIFT) * (1 << t->scale_shift) / t->scale; - dbg(1,"scale_shift=%d order=%d scale=%f fac=%f\n", t->scale_shift, t->order,t->scale,fac); + dbg(lvl_debug,"scale_shift=%d order=%d scale=%f fac=%f\n", t->scale_shift, t->order,t->scale,fac); t->m00=rollc*yawc*fac; t->m01=rollc*yaws*fac; @@ -139,7 +139,7 @@ if (t->pitch) { t->ddd=1; t->offz=t->screen_dist; - dbg(1,"near %d far %d\n",t->znear,t->zfar); + dbg(lvl_debug,"near %d far %d\n",t->znear,t->zfar); t->xscale=t->xscale3d; t->yscale=t->yscale3d; t->wscale=t->wscale3d; @@ -196,7 +196,7 @@ #ifdef ENABLE_ROLL this_->hog=hog; #else - dbg(0,"not supported\n"); + dbg(lvl_error,"not supported\n"); #endif } @@ -325,6 +325,18 @@ transform_from_geo(to, &g, cto); } + +/** + * @brief Transforms geodetic to Cartesian coordinates. + * + * This transforms geodetic coordinates (consisting of latitude and longitude) into ECEF Cartesian + * coordinates. + * + * @param geo The WGS84 coordinates to convert + * @param a Semi-minor axis of the ellipsoid + * @param b Semi-minor axis of the ellipsoid + * @param cart Points to a structure that will receive the Cartesian coordinates + */ void transform_geo_to_cart(struct coord_geo *geo, navit_float a, navit_float b, struct coord_geo_cart *cart) { @@ -335,6 +347,18 @@ cart->z=n*(1-ee)*navit_sin(geo->lat); } + +/** + * @brief Transforms Cartesian to geodetic coordinates. + * + * This transforms ECEF Cartesian coordinates into geodetic coordinates, consisting of latitude and + * longitude. + * + * @param cart The Cartesian coordinates + * @param a Semi-minor axis of the ellipsoid + * @param b Semi-minor axis of the ellipsoid + * @param geo Points to a structure that will receive the geodetic coordinates + */ void transform_cart_to_geo(struct coord_geo_cart *cart, navit_float a, navit_float b, struct coord_geo *geo) { @@ -355,14 +379,19 @@ } +/** + * @brief Converts UTM coords to lat/long. + * + * Equations from USGS Bulletin 1532. + * + * @author Chuck Gantz- chuck.gantz@globalstar.com + */ void transform_utm_to_geo(const double UTMEasting, const double UTMNorthing, int ZoneNumber, int NorthernHemisphere, struct coord_geo *geo) { -//converts UTM coords to lat/long. Equations from USGS Bulletin 1532 //East Longitudes are positive, West longitudes are negative. //North latitudes are positive, South latitudes are negative //Lat and Long are in decimal degrees. - //Written by Chuck Gantz- chuck.gantz@globalstar.com double Lat, Long; double k0 = 0.99960000000000004; @@ -451,7 +480,7 @@ result.y=c.x*t->m10+c.y*t->m11+HOG(*t)*t->m12; result.z=(c.x*t->m20+c.y*t->m21+HOG(*t)*t->m22); result.z+=t->offz << POST_SHIFT; - dbg(3, "result: (%d,%d,%d)\n", result.x,result.y,result.z); + dbg(lvl_debug, "result: (%d,%d,%d)\n", result.x,result.y,result.z); return result; } @@ -460,11 +489,11 @@ { struct coord_3d result; float clip_factor = ((float)zlimit-c.z)/(c_old.z-c.z); - dbg(3,"in (%d,%d,%d) - (%d,%d,%d)\n", c.x,c.y,c.z, c_old.x,c_old.y,c_old.z); + dbg(lvl_debug,"in (%d,%d,%d) - (%d,%d,%d)\n", c.x,c.y,c.z, c_old.x,c_old.y,c_old.z); result.x=c.x+(c_old.x-c.x)*clip_factor; result.y=c.y+(c_old.y-c.y)*clip_factor; result.z=zlimit; - dbg(3,"clip result: (%d,%d,%d)\n", result.x, result.y, result.z); + dbg(lvl_debug,"clip result: (%d,%d,%d)\n", result.x, result.y, result.z); return result; } @@ -473,7 +502,7 @@ { struct point result; #if 0 - dbg(0,"z=%d\n",c.z); + dbg(lvl_debug,"z=%d\n",c.z); #endif result.x = (long long)c.x*t->xscale/c.z; result.y = (long long)c.y*t->yscale/c.z; @@ -530,9 +559,9 @@ int zlimit=t->znear; struct z_clip_result clip_result, clip_result_old={{0,0}, -1, 0, 0}; int i,result_idx = 0,result_idx_last=0; - dbg(3,"count=%d\n", count); + dbg(lvl_debug,"count=%d\n", count); for (i=0; i < count; i++) { - dbg(3, "input coord %d: (%d, %d)\n", i, input[i].x, input[i].y); + dbg(lvl_debug, "input coord %d: (%d, %d)\n", i, input[i].x, input[i].y); #if 0 /* doesn't work as wanted */ if (i && input[i].x == input[0].x && input[i].y == input[0].y && result_idx && !width_result) { result[result_idx++]=result[0]; @@ -561,7 +590,7 @@ } screen_point.x+=t->offx; screen_point.y+=t->offy; - dbg(3,"result: (%d, %d)\n", screen_point.x, screen_point.y); + dbg(lvl_debug,"result: (%d, %d)\n", screen_point.x, screen_point.y); if (i != 0 && i != count-1 && (input[i+1].x != input[0].x || input[i+1].y != input[0].y)) { @@ -572,7 +601,7 @@ result[result_idx]=screen_point; if (width_result) { if (t->ddd) { - dbg(3,"width %d * %d / %d\n",width,t->wscale,clip_result.clipped_coord.z); + dbg(lvl_debug,"width %d * %d / %d\n",width,t->wscale,clip_result.clipped_coord.z); width_result[result_idx]=width*t->wscale/clip_result.clipped_coord.z; } else width_result[result_idx]=width; @@ -628,7 +657,7 @@ transform_reverse_near_far(struct transformation *t, struct point *p, struct coord *c, int near, int far) { double xc,yc; - dbg(1,"%d,%d\n",p->x,p->y); + dbg(lvl_debug,"%d,%d\n",p->x,p->y); if (t->ddd) { struct coord_geo_cart nearc,farc,nears,fars,intersection; transform_screen_to_3d(t, p, near, &nearc); @@ -727,12 +756,12 @@ if (this_->pro != pro) { transform_to_geo(this_->pro, &curri->u.c_rect.lu, &g); transform_from_geo(pro, &g, &curro->u.c_rect.lu); - dbg(1,"%f,%f", g.lat, g.lng); + dbg(lvl_debug,"%f,%f", g.lat, g.lng); transform_to_geo(this_->pro, &curri->u.c_rect.rl, &g); transform_from_geo(pro, &g, &curro->u.c_rect.rl); - dbg(1,": - %f,%f\n", g.lat, g.lng); + dbg(lvl_debug,": - %f,%f\n", g.lat, g.lng); } - dbg(1,"transform rect for %d is %d,%d - %d,%d\n", pro, curro->u.c_rect.lu.x, curro->u.c_rect.lu.y, curro->u.c_rect.rl.x, curro->u.c_rect.rl.y); + dbg(lvl_debug,"transform rect for %d is %d,%d - %d,%d\n", pro, curro->u.c_rect.lu.x, curro->u.c_rect.lu.y, curro->u.c_rect.rl.x, curro->u.c_rect.rl.y); curro->order+=order; #if 0 curro->u.c_rect.lu.x-=500; @@ -798,7 +827,7 @@ this_->roll=roll; transform_setup_matrix(this_); #else - dbg(0,"not supported\n"); + dbg(lvl_error,"not supported\n"); #endif } @@ -920,7 +949,7 @@ if (transform_zplane_intersection(&cg[edgenodes[i*2]], &cg[edgenodes[i*2+1]], HOG(*t), &tmp) == 1) { c.x=tmp.x*(1 << t->scale_shift)+t->map_center.x; c.y=tmp.y*(1 << t->scale_shift)+t->map_center.y; - dbg(1,"intersection with edge %d at 0x%x,0x%x\n",i,c.x,c.y); + dbg(lvl_debug,"intersection with edge %d at 0x%x,0x%x\n",i,c.x,c.y); if (valid) coord_rect_extend(&msm->u.c_rect, &c); else { @@ -928,20 +957,20 @@ msm->u.c_rect.rl=c; valid=1; } - dbg(1,"rect 0x%x,0x%x - 0x%x,0x%x\n",msm->u.c_rect.lu.x,msm->u.c_rect.lu.y,msm->u.c_rect.rl.x,msm->u.c_rect.rl.y); + dbg(lvl_debug,"rect 0x%x,0x%x - 0x%x,0x%x\n",msm->u.c_rect.lu.x,msm->u.c_rect.lu.y,msm->u.c_rect.rl.x,msm->u.c_rect.rl.y); } } } else { for (i = 0 ; i < 4 ; i++) { transform_reverse(t, &screen_pnt[i], &screen[i]); - dbg(1,"map(%d) %d,%d=0x%x,0x%x\n", i,screen_pnt[i].x, screen_pnt[i].y, screen[i].x, screen[i].y); + dbg(lvl_debug,"map(%d) %d,%d=0x%x,0x%x\n", i,screen_pnt[i].x, screen_pnt[i].y, screen[i].x, screen[i].y); } msm->u.c_rect.lu.x=min4(screen[0].x,screen[1].x,screen[2].x,screen[3].x); msm->u.c_rect.rl.x=max4(screen[0].x,screen[1].x,screen[2].x,screen[3].x); msm->u.c_rect.rl.y=min4(screen[0].y,screen[1].y,screen[2].y,screen[3].y); msm->u.c_rect.lu.y=max4(screen[0].y,screen[1].y,screen[2].y,screen[3].y); } - dbg(1,"%dx%d\n", msm->u.c_rect.rl.x-msm->u.c_rect.lu.x, + dbg(lvl_debug,"%dx%d\n", msm->u.c_rect.rl.x-msm->u.c_rect.lu.x, msm->u.c_rect.lu.y-msm->u.c_rect.rl.y); *msm_last=msm; msm_last=&msm->next; @@ -966,7 +995,7 @@ int transform_get_order(struct transformation *t) { - dbg(1,"order %d\n", t->order); + dbg(lvl_debug,"order %d\n", t->order); return t->order; } @@ -1086,7 +1115,7 @@ } else if (pro == projection_garmin) { return transform_distance_garmin(c1, c2); } else { - dbg(0,"Unknown projection: %d\n", pro); + dbg(lvl_error,"Unknown projection: %d\n", pro); return 0; } } @@ -1102,7 +1131,7 @@ res->y=c->y+distance*cos(angle*M_PI/180)*scale; break; default: - dbg(0,"Unsupported projection: %d\n", pro); + dbg(lvl_error,"Unsupported projection: %d\n", pro); return; } @@ -1368,6 +1397,15 @@ } #endif +/** + * @brief Gets the bearing from one point to another + * + * @param c1 The first coordinate + * @param c2 The second coordinate + * @param dir The direction: if it is -1, the bearing from c2 to c1 is returned, else the bearing from c1 to c2 + * + * @return The bearing in degrees, {@code 0 <= result < 360}. + */ int transform_get_angle_delta(struct coord *c1, struct coord *c2, int dir) { diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/util.c navit-0.5.0+dfsg.1/navit/util.c --- navit-0.5.0~svn5900+dfsg.1/navit/util.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/util.c 2016-01-02 22:29:50.000000000 +0000 @@ -62,7 +62,7 @@ s1_folded=g_utf8_casefold(s1,-1); s2_folded=g_utf8_casefold(s2,-1); cmpres=strcmp(s1_folded,s2_folded); - dbg(3,"Compared %s with %s, got %d\n",s1_folded,s2_folded,cmpres); + dbg(lvl_debug,"Compared %s with %s, got %d\n",s1_folded,s2_folded,cmpres); g_free(s1_folded); g_free(s2_folded); return cmpres; @@ -184,17 +184,15 @@ #ifndef HAVE_GETDELIM /** - * Read the part of a file up to a delimiter to a string. + * @brief Reads the part of a file up to a delimiter to a string. *

- * Read up to (and including) a DELIMITER from FP into *LINEPTR (and - NUL-terminate it). - * @param lineptr Pointer to a pointer returned from malloc (or - NULL), pointing to a buffer. It is realloc'ed as - necessary and will receive the data read. + * Read up to (and including) a DELIMITER from FP into *LINEPTR (and NUL-terminate it). + * + * @param lineptr Pointer to a pointer returned from malloc (or NULL), pointing to a buffer. It is + * realloc'ed as necessary and will receive the data read. * @param n Size of the buffer. * - * @return Number of characters read (not including - the null terminator), or -1 on error or EOF. + * @return Number of characters read (not including the null terminator), or -1 on error or EOF. */ ssize_t getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp) @@ -312,11 +310,11 @@ } #endif /** - * Convert an ISO 8601-style time string into epoch time. + * @brief Converts an ISO 8601-style time string into epoch time. * - * @param iso8601 Pointer to a string containing the time in ISO 8601 format. + * @param iso8601 Time in ISO 8601 format. * - * @return An unsigned integer representing the number of seconds elapsed since January 1, 1970, 00:00:00 UTC. + * @return The number of seconds elapsed since January 1, 1970, 00:00:00 UTC. */ unsigned int iso8601_to_secs(char *iso8601) @@ -347,9 +345,9 @@ } /** - * Output local system time in ISO 8601 format. + * @brief Outputs local system time in ISO 8601 format. * - * @return Pointer to a string containing the time in ISO 8601 format + * @return Time in ISO 8601 format */ char * current_to_iso8601(void) @@ -511,7 +509,7 @@ pid_t pid; sigset_t set, old; - dbg(1,"spawning process for '%s'\n", argv[0]); + dbg(lvl_debug,"spawning process for '%s'\n", argv[0]); sigemptyset(&set); sigaddset(&set,SIGCHLD); spawn_process_sigmask(SIG_BLOCK,&set,&old); @@ -525,7 +523,7 @@ r->pid=pid; spawn_process_children=g_list_prepend(spawn_process_children,r); } else { - dbg(0,"fork() returned error."); + dbg(lvl_error,"fork() returned error."); g_free(r); r=NULL; } @@ -552,7 +550,7 @@ args=newSysString(cmdline); cmd = newSysString(argv[0]); dwRet=CreateProcess(cmd, args, NULL, NULL, 0, 0, NULL, NULL, NULL, &(r->pr)); - dbg(0, "CreateProcess(%s,%s), PID=%i\n",argv[0],cmdline,r->pr.dwProcessId); + dbg(lvl_debug, "CreateProcess(%s,%s), PID=%i\n",argv[0],cmdline,r->pr.dwProcessId); g_free(cmd); #else TCHAR* args; @@ -562,7 +560,7 @@ cmdline=spawn_process_compose_cmdline(argv); args=newSysString(cmdline); dwRet=CreateProcess(NULL, args, NULL, NULL, 0, 0, NULL, NULL, &startupInfo, &(r->pr)); - dbg(0, "CreateProcess(%s), PID=%i\n",cmdline,r->pr.dwProcessId); + dbg(lvl_debug, "CreateProcess(%s), PID=%i\n",cmdline,r->pr.dwProcessId); #endif g_free(cmdline); g_free(args); @@ -572,7 +570,7 @@ { char *cmdline=spawn_process_compose_cmdline(argv); int status; - dbg(0,"Unblocked spawn_process isn't availiable on this platform.\n"); + dbg(lvl_error,"Unblocked spawn_process isn't availiable on this platform.\n"); status=system(cmdline); g_free(cmdline); r->status=status; @@ -595,7 +593,7 @@ int spawn_process_check_status(struct spawn_process_info *pi, int block) { if(pi==NULL) { - dbg(0,"Trying to get process status of NULL, assuming process is terminated.\n"); + dbg(lvl_error,"Trying to get process status of NULL, assuming process is terminated.\n"); return 255; } #ifdef HAVE_API_WIN32_BASE @@ -608,7 +606,7 @@ break; } } else { - dbg(0,"GetExitCodeProcess failed. Assuming the process is terminated."); + dbg(lvl_error,"GetExitCodeProcess failed. Assuming the process is terminated."); return 255; } if(!block) @@ -616,7 +614,7 @@ dw=WaitForSingleObject(pi->pr.hProcess,INFINITE); if(dw==WAIT_FAILED && failcount++==1) { - dbg(0,"WaitForSingleObject failed twice. Assuming the process is terminated."); + dbg(lvl_error,"WaitForSingleObject failed twice. Assuming the process is terminated."); return 0; break; } @@ -635,9 +633,9 @@ pi->status=WEXITSTATUS(status); return pi->status; if(WIFSTOPPED(status)) { - dbg(0,"child is stopped by %i signal\n",WSTOPSIG(status)); + dbg(lvl_debug,"child is stopped by %i signal\n",WSTOPSIG(status)); } else if (WIFSIGNALED(status)) { - dbg(0,"child terminated by signal %i\n",WEXITSTATUS(status)); + dbg(lvl_debug,"child terminated by signal %i\n",WEXITSTATUS(status)); pi->status=255; return 255; } @@ -649,12 +647,12 @@ } else { if(pi->status!=-1) // Signal handler has changed pi->status while in this function return pi->status; - dbg(0,"waitpid() indicated error, reporting process termination.\n"); + dbg(lvl_error,"waitpid() indicated error, reporting process termination.\n"); return 255; } } #else - dbg(0, "Non-blocking spawn_process isn't availiable for this platform, repoting process exit status.\n"); + dbg(lvl_error, "Non-blocking spawn_process isn't availiable for this platform, repoting process exit status.\n"); return pi->status; #endif #endif diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/util.h navit-0.5.0+dfsg.1/navit/util.h --- navit-0.5.0~svn5900+dfsg.1/navit/util.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/util.h 2016-01-02 22:29:50.000000000 +0000 @@ -23,6 +23,9 @@ #include #include "config.h" +#define max(a,b) ((a) > (b) ? (a) : (b)) +#define min(a,b) ((a) < (b) ? (a) : (b)) + void strtoupper(char *dest, const char *src); void strtolower(char *dest, const char *src); int navit_utf8_strcasecmp(const char *s1, const char *s2); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/android/vehicle_android.c navit-0.5.0+dfsg.1/navit/vehicle/android/vehicle_android.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/android/vehicle_android.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/android/vehicle_android.c 2016-01-02 22:29:50.000000000 +0000 @@ -37,57 +37,57 @@ struct vehicle_priv { struct callback_list *cbl; - struct coord_geo geo; - double speed; - double direction; - double height; - double radius; - int fix_type; - time_t fix_time; - char fixiso8601[128]; - int sats; - int sats_used; - int have_coords; + struct coord_geo geo; /**< The last known position of the vehicle **/ + double speed; /**< Speed in km/h **/ + double direction; /**< Bearing in degrees **/ + double height; /**< Elevation in meters **/ + double radius; /**< Position accuracy in meters **/ + int fix_type; /**< Type of last fix (1 = valid, 0 = invalid) **/ + time_t fix_time; /**< Timestamp of last fix (not used) **/ + char fixiso8601[128]; /**< Timestamp of last fix in ISO 8601 format **/ + int sats; /**< Number of satellites in view **/ + int sats_used; /**< Number of satellites used in fix **/ + int valid; /**< Whether the vehicle coordinates in {@code geo} are valid **/ struct attr ** attrs; - struct callback *cb; - jclass NavitVehicleClass; - jobject NavitVehicle; - jclass LocationClass; + struct callback *pcb; /**< The callback function for position updates **/ + struct callback *scb; /**< The callback function for status updates **/ + struct callback *fcb; /**< The callback function for fix status updates **/ + jclass NavitVehicleClass; /**< The {@code NavitVehicle} class **/ + jobject NavitVehicle; /**< An instance of {@code NavitVehicle} **/ + jclass LocationClass; /**< Android's {@code Location} class **/ jmethodID Location_getLatitude, Location_getLongitude, Location_getSpeed, Location_getBearing, Location_getAltitude, Location_getTime, Location_getAccuracy; }; /** * @brief Free the android_vehicle * - * @param priv + * @param priv vehicle_priv structure for the vehicle * @returns nothing */ static void vehicle_android_destroy(struct vehicle_priv *priv) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); g_free(priv); } /** - * @brief Provide the outside with information - * - * @param priv - * @param type TODO: What can this be? - * @param attr - * @returns true/false + * @brief Retrieves a vehicle attribute. + * + * @param priv vehicle_priv structure for the vehicle + * @param type The attribute type to retrieve + * @param attr Points to an attr structure that will receive the attribute data + * @returns True for success, false for failure */ static int vehicle_android_position_attr_get(struct vehicle_priv *priv, enum attr_type type, struct attr *attr) { - dbg(1,"enter %s\n",attr_to_name(type)); + dbg(lvl_debug,"enter %s\n",attr_to_name(type)); switch (type) { -#if 0 case attr_position_fix_type: attr->u.num = priv->fix_type; break; -#endif case attr_position_height: attr->u.numd = &priv->height; break; @@ -100,27 +100,27 @@ case attr_position_radius: attr->u.numd = &priv->radius; break; - -#if 0 case attr_position_qual: attr->u.num = priv->sats; break; case attr_position_sats_used: attr->u.num = priv->sats_used; break; -#endif case attr_position_coord_geo: attr->u.coord_geo = &priv->geo; - if (!priv->have_coords) + if (priv->valid == attr_position_valid_invalid) return 0; break; case attr_position_time_iso8601: attr->u.str=priv->fixiso8601; break; + case attr_position_valid: + attr->u.num = priv->valid; + break; default: return 0; } - dbg(1,"ok\n"); + dbg(lvl_debug,"ok\n"); attr->type = type; return 1; } @@ -130,12 +130,19 @@ vehicle_android_position_attr_get, }; +/** + * @brief Called when a new position has been reported + * + * This function is called by {@code NavitLocationListener} upon receiving a new {@code Location}. + * + * @param v The {@code struct_vehicle_priv} for the vehicle + * @param location A {@code Location} object describing the new position + */ static void -vehicle_android_callback(struct vehicle_priv *v, jobject location) -{ +vehicle_android_position_callback(struct vehicle_priv *v, jobject location) { time_t tnow; struct tm *tm; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); v->geo.lat = (*jnienv)->CallDoubleMethod(jnienv, location, v->Location_getLatitude); v->geo.lng = (*jnienv)->CallDoubleMethod(jnienv, location, v->Location_getLongitude); @@ -146,11 +153,65 @@ tnow=(*jnienv)->CallLongMethod(jnienv, location, v->Location_getTime)/1000; tm = gmtime(&tnow); strftime(v->fixiso8601, sizeof(v->fixiso8601), "%Y-%m-%dT%TZ", tm); - dbg(1,"lat %f lon %f time %s\n",v->geo.lat,v->geo.lng,v->fixiso8601); - v->have_coords=1; + dbg(lvl_debug,"lat %f lon %f time %s\n",v->geo.lat,v->geo.lng,v->fixiso8601); + if (v->valid != attr_position_valid_valid) { + v->valid = attr_position_valid_valid; + callback_list_call_attr_0(v->cbl, attr_position_valid); + } callback_list_call_attr_0(v->cbl, attr_position_coord_geo); } +/** + * @brief Called when a new GPS status has been reported + * + * This function is called by {@code NavitLocationListener} upon receiving a new {@code GpsStatus}. + * + * Note that {@code sats_used} should not be used to determine whether the vehicle's position is valid: + * some devices report non-zero numbers even when they do not have a fix. Position validity should be + * determined in {@code vehicle_android_fix_callback} (an invalid fix type means we have lost the fix) + * and {@code vehicle_android_position_callback} (receiving a position means we have a fix). + * + * @param v The {@code struct_vehicle_priv} for the vehicle + * @param sats_in_view The number of satellites in view + * @param sats_used The number of satellites currently used to determine the position + */ +static void +vehicle_android_status_callback(struct vehicle_priv *v, int sats_in_view, int sats_used) { + if (v->sats != sats_in_view) { + v->sats = sats_in_view; + callback_list_call_attr_0(v->cbl, attr_position_qual); + } + if (v->sats_used != sats_used) { + v->sats_used = sats_used; + callback_list_call_attr_0(v->cbl, attr_position_sats_used); + } +} + +/** + * @brief Called when a change in GPS fix status has been reported + * + * This function is called by {@code NavitLocationListener} upon receiving a new {@code android.location.GPS_FIX_CHANGE} broadcast. + * + * @param v The {@code struct_vehicle_priv} for the vehicle + * @param fix_type The fix type (1 = valid, 0 = invalid) + */ +static void +vehicle_android_fix_callback(struct vehicle_priv *v, int fix_type) { + if (v->fix_type != fix_type) { + v->fix_type = fix_type; + callback_list_call_attr_0(v->cbl, attr_position_fix_type); + if (!fix_type && (v->valid == attr_position_valid_valid)) { + v->valid = attr_position_valid_extrapolated_time; + callback_list_call_attr_0(v->cbl, attr_position_valid); + } + } +} + +/** + * @brief Initializes an Android vehicle + * + * @return True on success, false on failure + */ static int vehicle_android_init(struct vehicle_priv *ret) { @@ -174,19 +235,20 @@ return 0; if (!android_find_class_global("org/navitproject/navit/NavitVehicle", &ret->NavitVehicleClass)) return 0; - dbg(0,"at 3\n"); - cid = (*jnienv)->GetMethodID(jnienv, ret->NavitVehicleClass, "", "(Landroid/content/Context;I)V"); + dbg(lvl_debug,"at 3\n"); + cid = (*jnienv)->GetMethodID(jnienv, ret->NavitVehicleClass, "", "(Landroid/content/Context;III)V"); if (cid == NULL) { - dbg(0,"no method found\n"); + dbg(lvl_error,"no method found\n"); return 0; /* exception thrown */ } - dbg(0,"at 4 android_activity=%p\n",android_activity); - ret->NavitVehicle=(*jnienv)->NewObject(jnienv, ret->NavitVehicleClass, cid, android_activity, (int) ret->cb); - dbg(0,"result=%p\n",ret->NavitVehicle); + dbg(lvl_debug, "at 4 android_activity=%p\n", android_activity); + ret->NavitVehicle=(*jnienv)->NewObject(jnienv, ret->NavitVehicleClass, cid, android_activity, + (int) ret->pcb, (int) ret->scb, (int) ret->fcb); + dbg(lvl_debug,"result=%p\n",ret->NavitVehicle); if (!ret->NavitVehicle) return 0; if (ret->NavitVehicle) - ret->NavitVehicle = (*jnienv)->NewGlobalRef(jnienv, ret->NavitVehicle); + ret->NavitVehicle = (*jnienv)->NewGlobalRef(jnienv, ret->NavitVehicle); return 1; } @@ -206,13 +268,18 @@ { struct vehicle_priv *ret; - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); ret = g_new0(struct vehicle_priv, 1); ret->cbl = cbl; - ret->cb=callback_new_1(callback_cast(vehicle_android_callback), ret); + ret->pcb = callback_new_1(callback_cast(vehicle_android_position_callback), ret); + ret->scb = callback_new_1(callback_cast(vehicle_android_status_callback), ret); + ret->fcb = callback_new_1(callback_cast(vehicle_android_fix_callback), ret); + ret->valid = attr_position_valid_invalid; + ret->sats = 0; + ret->sats_used = 0; *meth = vehicle_android_methods; vehicle_android_init(ret); - dbg(0, "return\n"); + dbg(lvl_debug, "return\n"); return ret; } @@ -224,6 +291,6 @@ void plugin_init(void) { - dbg(0, "enter\n"); + dbg(lvl_debug, "enter\n"); plugin_register_vehicle_type("android", vehicle_android_new_android); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/demo/vehicle_demo.c navit-0.5.0+dfsg.1/navit/vehicle/demo/vehicle_demo.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/demo/vehicle_demo.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/demo/vehicle_demo.c 2016-01-02 22:29:50.000000000 +0000 @@ -49,6 +49,7 @@ struct event_timeout *timer; char *timep; char *nmea; + enum attr_position_valid valid; /**< Whether the vehicle has valid position data **/ }; @@ -126,6 +127,9 @@ g_free(rmc); attr->u.str=priv->nmea; break; + case attr_position_valid: + attr->u.num=priv->valid; + break; default: return 0; } @@ -154,8 +158,12 @@ break; case attr_position_coord_geo: priv->geo=*(attr->u.coord_geo); + if (priv->valid != attr_position_valid_valid) { + priv->valid = attr_position_valid_valid; + callback_list_call_attr_0(priv->cbl, attr_position_valid); + } priv->position_set=1; - dbg(1,"position_set %f %f\n", priv->geo.lat, priv->geo.lng); + dbg(lvl_debug,"position_set %f %f\n", priv->geo.lat, priv->geo.lng); break; case attr_profilename: case attr_source: @@ -163,7 +171,7 @@ // Ignore; used by Navit's infrastructure, but not relevant for this vehicle. break; default: - dbg(0,"unsupported attribute %s\n",attr_to_name(attr->type)); + dbg(lvl_error,"unsupported attribute %s\n",attr_to_name(attr->type)); return 0; } return 1; @@ -192,7 +200,7 @@ struct item *item=NULL; len = (priv->config_speed * priv->interval / 1000)/ 3.6; - dbg(1, "###### Entering simulation loop\n"); + dbg(lvl_debug, "###### Entering simulation loop\n"); if (!priv->config_speed) return; if (priv->route) @@ -211,10 +219,10 @@ item=map_rect_get_item(mr); if (item && item_coord_get(item, &pos, 1)) { priv->position_set=0; - dbg(1, "current pos=0x%x,0x%x\n", pos.x, pos.y); - dbg(1, "last pos=0x%x,0x%x\n", priv->last.x, priv->last.y); + dbg(lvl_debug, "current pos=0x%x,0x%x\n", pos.x, pos.y); + dbg(lvl_debug, "last pos=0x%x,0x%x\n", priv->last.x, priv->last.y); if (priv->last.x == pos.x && priv->last.y == pos.y) { - dbg(1, "endless loop\n"); + dbg(lvl_warning, "endless loop\n"); } priv->last = pos; while (item && priv->config_speed) { @@ -222,9 +230,9 @@ item=map_rect_get_item(mr); continue; } - dbg(1, "next pos=0x%x,0x%x\n", c.x, c.y); + dbg(lvl_debug, "next pos=0x%x,0x%x\n", c.x, c.y); slen = transform_distance(projection_mg, &pos, &c); - dbg(1, "len=%d slen=%d\n", len, slen); + dbg(lvl_debug, "len=%d slen=%d\n", len, slen); if (slen < len) { len -= slen; pos = c; @@ -241,11 +249,15 @@ ci.x = pos.x; ci.y = pos.y; priv->speed=0; - dbg(0,"destination reached\n"); + dbg(lvl_debug,"destination reached\n"); } - dbg(1, "ci=0x%x,0x%x\n", ci.x, ci.y); + dbg(lvl_debug, "ci=0x%x,0x%x\n", ci.x, ci.y); transform_to_geo(projection_mg, &ci, &priv->geo); + if (priv->valid != attr_position_valid_valid) { + priv->valid = attr_position_valid_valid; + callback_list_call_attr_0(priv->cbl, attr_position_valid); + } callback_list_call_attr_0(priv->cbl, attr_position_coord_geo); break; } @@ -267,12 +279,13 @@ { struct vehicle_priv *ret; - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); ret = g_new0(struct vehicle_priv, 1); ret->cbl = cbl; ret->interval=1000; ret->config_speed=40; ret->timer_callback=callback_new_1(callback_cast(vehicle_demo_timer), ret); + ret->valid = attr_position_valid_invalid; *meth = vehicle_demo_methods; while (attrs && *attrs) vehicle_demo_set_attr_do(ret, *attrs++); @@ -284,6 +297,6 @@ void plugin_init(void) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); plugin_register_vehicle_type("demo", vehicle_demo_new); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/file/vehicle_file.c navit-0.5.0+dfsg.1/navit/vehicle/file/vehicle_file.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/file/vehicle_file.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/file/vehicle_file.c 2016-01-02 22:29:50.000000000 +0000 @@ -148,7 +148,7 @@ int rc = 0; int dwBytes; - dbg(1, "enter, *priv='%x', priv->source='%s'\n", priv, priv->source); + dbg(lvl_debug, "enter, *priv='%x', priv->source='%s'\n", priv, priv->source); if ( priv->no_data_count > 5 ) { @@ -194,7 +194,7 @@ priv->no_data_count = 0; callback_list_call_attr_0(priv->cbl, attr_position_coord_geo); if (rc > 1) - dbg(0, "Can not keep with gps data delay is %d seconds\n", rc - 1); + dbg(lvl_error, "Can not keep with gps data delay is %d seconds\n", rc - 1); } } @@ -202,7 +202,7 @@ { priv->no_data_count++; } - dbg(2, "leave, return '1', priv->no_data_count='%d'\n", priv->no_data_count); + dbg(lvl_info, "leave, return '1', priv->no_data_count='%d'\n", priv->no_data_count); return 1; } #endif @@ -264,7 +264,7 @@ struct sockaddr_in sin; p=strchr(s,':'); if (!p) { - dbg(0,"port number missing in %s\n",s); + dbg(lvl_error,"port number missing in %s\n",s); g_free(s); return 0; } @@ -272,14 +272,14 @@ sin.sin_family=AF_INET; sin.sin_port=ntohs(atoi(p)); if (!inet_aton(s, &sin.sin_addr)) { - dbg(0,"failed to parse %s\n",s); + dbg(lvl_error,"failed to parse %s\n",s); g_free(s); return 0; } priv->fd = socket(PF_INET, SOCK_STREAM, 0); if (priv->fd != -1) { if (connect(priv->fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) { - dbg(0,"failed to connect to %s:%s\n",s,p); + dbg(lvl_error,"failed to connect to %s:%s\n",s,p); g_free(s); return 0; } @@ -309,7 +309,7 @@ g_free( raw_setting_str ); priv->file_type = file_type_serial; // Add the callback - dbg(2, "Add the callback ...\n", priv->source); + dbg(lvl_info, "Add the callback ...\n", priv->source); priv->timeout_callback=callback_new_1(callback_cast(vehicle_win32_serial_track), priv); #else //TODO - add linux serial @@ -329,7 +329,7 @@ static void vehicle_file_close(struct vehicle_priv *priv) { - dbg(1, "enter, priv->fd='%d'\n", priv->fd); + dbg(lvl_debug, "enter, priv->fd='%d'\n", priv->fd); vehicle_file_disable_watch(priv); #ifdef _WIN32 if(priv->file_type == file_type_serial) @@ -369,7 +369,7 @@ static int vehicle_file_enable_watch_timer(struct vehicle_priv *priv) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); vehicle_file_enable_watch(priv); return FALSE; @@ -400,10 +400,10 @@ int valid=0; int ret = 0; - dbg(2, "enter: buffer='%s'\n", buffer); + dbg(lvl_info, "enter: buffer='%s'\n", buffer); for (;;) { if (len < 4) { - dbg(0, "'%s' too short\n", buffer); + dbg(lvl_error, "'%s' too short\n", buffer); return ret; } if (buffer[len - 1] == '\r' || buffer[len - 1] == '\n') { @@ -414,22 +414,22 @@ break; } if (buffer[0] != '$') { - dbg(0, "no leading $ in '%s'\n", buffer); + dbg(lvl_error, "no leading $ in '%s'\n", buffer); return ret; } if (buffer[len - 3] != '*') { - dbg(0, "no *XX in '%s'\n", buffer); + dbg(lvl_error, "no *XX in '%s'\n", buffer); return ret; } for (i = 1; i < len - 3; i++) { csum ^= (unsigned char) (buffer[i]); } if (!sscanf(buffer + len - 2, "%x", &bcsum) && priv->checksum_ignore != 2) { - dbg(0, "no checksum in '%s'\n", buffer); + dbg(lvl_error, "no checksum in '%s'\n", buffer); return ret; } if (bcsum != csum && priv->checksum_ignore == 0) { - dbg(0, "wrong checksum in '%s was %x should be %x'\n", buffer,bcsum,csum); + dbg(lvl_error, "wrong checksum in '%s was %x should be %x'\n", buffer,bcsum,csum); return ret; } @@ -438,7 +438,7 @@ g_free(priv->nmea_data_buf); priv->nmea_data_buf=nmea_data_buf; } else { - dbg(0, "nmea buffer overflow (len %zu), discarding '%s'\n", priv->nmea_data_buf?strlen(priv->nmea_data_buf):-1,buffer); + dbg(lvl_error, "nmea buffer overflow (len %zu), discarding '%s'\n", priv->nmea_data_buf?strlen(priv->nmea_data_buf):-1,buffer); } i = 0; p = buffer; @@ -475,7 +475,7 @@ if (!g_ascii_strcasecmp(item[5],"W")) priv->geo.lng=-priv->geo.lng; priv->valid=attr_position_valid_valid; - dbg(2, "latitude '%2.4f' longitude %2.4f\n", priv->geo.lat, priv->geo.lng); + dbg(lvl_info, "latitude '%2.4f' longitude %2.4f\n", priv->geo.lat, priv->geo.lng); } else priv->valid=attr_position_valid_invalid; @@ -513,7 +513,7 @@ if (valid) { priv->direction = g_ascii_strtod( item[1], NULL ); priv->speed = g_ascii_strtod( item[7], NULL ); - dbg(2,"direction %lf, speed %2.1lf\n", priv->direction, priv->speed); + dbg(lvl_info,"direction %lf, speed %2.1lf\n", priv->direction, priv->speed); } } if (!strncmp(buffer, "$GPRMC", 6)) { @@ -603,7 +603,7 @@ */ if (item[1]) { priv->magnetic_direction = g_ascii_strtod( item[1], NULL ); - dbg(1,"magnetic %d\n", priv->magnetic_direction); + dbg(lvl_debug,"magnetic %d\n", priv->magnetic_direction); } } return ret; @@ -624,7 +624,7 @@ { int size, rc = 0; char *str, *tok; - dbg(1, "vehicle_file_io : enter\n"); + dbg(lvl_debug, "vehicle_file_io : enter\n"); if (priv->process_statefile) { unsigned char *data; @@ -657,12 +657,12 @@ } priv->buffer_pos += size; priv->buffer[priv->buffer_pos] = '\0'; - dbg(1, "size=%d pos=%d buffer='%s'\n", size, + dbg(lvl_debug, "size=%d pos=%d buffer='%s'\n", size, priv->buffer_pos, priv->buffer); str = priv->buffer; while ((tok = strchr(str, '\n'))) { *tok++ = '\0'; - dbg(1, "line='%s'\n", str); + dbg(lvl_debug, "line='%s'\n", str); rc +=vehicle_file_parse(priv, str); str = tok; if (priv->file_type == file_type_file && rc) @@ -673,10 +673,10 @@ size = priv->buffer + priv->buffer_pos - str; memmove(priv->buffer, str, size + 1); priv->buffer_pos = size; - dbg(1, "now pos=%d buffer='%s'\n", + dbg(lvl_debug, "now pos=%d buffer='%s'\n", priv->buffer_pos, priv->buffer); } else if (priv->buffer_pos == buffer_size - 1) { - dbg(0, + dbg(lvl_debug, "Overflow. Most likely wrong baud rate or no nmea protocol\n"); priv->buffer_pos = 0; } @@ -695,7 +695,7 @@ static void vehicle_file_enable_watch(struct vehicle_priv *priv) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); #ifdef _WIN32 // add an event : don't use glib timers and g_timeout_add if (priv->file_type == file_type_serial) @@ -703,7 +703,7 @@ if (priv->timeout_callback != NULL) priv->timeout = event_add_timeout(500, 1, priv->timeout_callback); else - dbg(1, "error : watch not enabled : priv->timeout_callback is null\n"); } + dbg(lvl_warning, "error : watch not enabled : priv->timeout_callback is null\n"); } else #endif { @@ -723,7 +723,7 @@ static void vehicle_file_disable_watch(struct vehicle_priv *priv) { - dbg(1, "vehicle_file_disable_watch : enter\n"); + dbg(lvl_debug, "vehicle_file_disable_watch : enter\n"); #ifdef _WIN32 if(priv->file_type == file_type_serial) { @@ -844,7 +844,7 @@ attr->u.str=priv->fixiso8601; break; case attr_position_sat_item: - dbg(0,"at here\n"); + dbg(lvl_debug,"at here\n"); priv->sat_item.id_lo++; if (priv->sat_item.id_lo > priv->current_count) { priv->sat_item.id_lo=0; @@ -951,11 +951,11 @@ struct attr *checksum_ignore; struct attr *state_file; - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); source = attr_search(attrs, NULL, attr_source); if(source == NULL){ - dbg(0,"Missing source attribute"); + dbg(lvl_error,"Missing source attribute"); return NULL; } ret = g_new0(struct vehicle_priv, 1); // allocate and initialize to 0 @@ -1009,7 +1009,7 @@ ret->on_eof=1; if (on_eof && !g_ascii_strcasecmp(on_eof->u.str, "exit")) ret->on_eof=2; - dbg(0,"on_eof=%d\n", ret->on_eof); + dbg(lvl_debug,"on_eof=%d\n", ret->on_eof); *meth = vehicle_file_methods; ret->cb=callback_new_1(callback_cast(vehicle_file_io), ret); ret->cbt=callback_new_1(callback_cast(vehicle_file_enable_watch_timer), ret); @@ -1025,15 +1025,15 @@ ret->no_data_count = 0; #endif - dbg(1, "vehicle_file_new_file:open\n"); + dbg(lvl_debug, "vehicle_file_new_file:open\n"); if (!vehicle_file_open(ret)) { - dbg(0, "Failed to open '%s'\n", ret->source); + dbg(lvl_error, "Failed to open '%s'\n", ret->source); } vehicle_file_enable_watch(ret); // vehicle_file_destroy(ret); // return NULL; - dbg(1, "leave\n"); + dbg(lvl_debug, "leave\n"); return ret; } @@ -1045,7 +1045,7 @@ **/ void plugin_init(void) { - dbg(1, "vehicle_file:plugin_init:enter\n"); + dbg(lvl_debug, "vehicle_file:plugin_init:enter\n"); plugin_register_vehicle_type("file", vehicle_file_new_file); plugin_register_vehicle_type("pipe", vehicle_file_new_file); plugin_register_vehicle_type("socket", vehicle_file_new_file); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/gpsd/vehicle_gpsd.c navit-0.5.0+dfsg.1/navit/vehicle/gpsd/vehicle_gpsd.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/gpsd/vehicle_gpsd.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/gpsd/vehicle_gpsd.c 2016-01-02 22:29:50.000000000 +0000 @@ -97,11 +97,11 @@ g_free(priv->nmea_data_buf); priv->nmea_data_buf=nmea_data_buf; } else { - dbg(0, "nmea buffer overflow, discarding '%s'\n", buffer); + dbg(lvl_error, "nmea buffer overflow, discarding '%s'\n", buffer); } } } - dbg(1,"data->set="LONGLONG_HEX_FMT"\n", data->set); + dbg(lvl_debug,"data->set="LONGLONG_HEX_FMT"\n", (unsigned long long)data->set); if (data->set & SPEED_SET) { priv->speed = data->fix.speed * 3.6; if(!isnan(data->fix.speed)) @@ -130,7 +130,11 @@ #else for( i=0;isatellites;i++) { #endif +#if GPSD_API_MAJOR_VERSION >= 6 + if (data->skyview[i].ss > 0) +#else if (data->ss[i] > 0) +#endif sats_signal++; } } @@ -164,12 +168,12 @@ } #ifdef HAVE_LIBGPS19 if (data->set & DOP_SET) { - dbg(1, "pdop : %g\n", data->dop.pdop); + dbg(lvl_debug, "pdop : %g\n", data->dop.pdop); priv->hdop = data->dop.pdop; data->set &= ~DOP_SET; #else if (data->set & PDOP_SET) { - dbg(1, "pdop : %g\n", data->pdop); + dbg(lvl_debug, "pdop : %g\n", data->pdop); priv->hdop = data->hdop; data->set &= ~PDOP_SET; #endif @@ -177,7 +181,7 @@ if (data->set & LATLON_SET) { priv->geo.lat = data->fix.latitude; priv->geo.lng = data->fix.longitude; - dbg(1,"lat=%f lng=%f\n", priv->geo.lat, priv->geo.lng); + dbg(lvl_debug,"lat=%f lng=%f\n", priv->geo.lat, priv->geo.lng); g_free(priv->nmea_data); priv->nmea_data=priv->nmea_data_buf; priv->nmea_data_buf=NULL; @@ -187,7 +191,7 @@ if (! isnan(data->fix.speed) && priv->fix_type > 0) { callback_list_call_attr_0(priv->cbl, attr_position_coord_geo); } - dbg(2,"speed ok\n"); + dbg(lvl_info,"speed ok\n"); } /** @@ -205,7 +209,7 @@ *colon = '\0'; port=colon+1; } - dbg(0,"Trying to connect to %s:%s\n",source+7,port?port:"default"); + dbg(lvl_debug,"Trying to connect to %s:%s\n",source+7,port?port:"default"); #if GPSD_API_MAJOR_VERSION >= 5 /* gps_open returns 0 on success */ @@ -214,7 +218,7 @@ priv->gps = gps_open(source + 7, port); if(!priv->gps) { #endif - dbg(0,"gps_open failed for '%s'. Retrying in %d seconds. Have you started gpsd?\n", priv->source, priv->retry_interval); + dbg(lvl_error,"gps_open failed for '%s'. Retrying in %d seconds. Have you started gpsd?\n", priv->source, priv->retry_interval); g_free(source); return TRUE; } @@ -236,9 +240,9 @@ priv->cbt = callback_new_1(callback_cast(vehicle_gpsd_try_open), priv); priv->evwatch = event_add_watch(priv->gps->gps_fd, event_watch_cond_read, priv->cb); if (!priv->gps->gps_fd) { - dbg(0,"Warning: gps_fd is 0, most likely you have used a gps.h incompatible to libgps"); + dbg(lvl_error,"Warning: gps_fd is 0, most likely you have used a gps.h incompatible to libgps"); } - dbg(0,"Connected to gpsd fd=%d evwatch=%p\n", priv->gps->gps_fd, priv->evwatch); + dbg(lvl_debug,"Connected to gpsd fd=%d evwatch=%p\n", priv->gps->gps_fd, priv->evwatch); event_remove_timeout(priv->retry_timer2); priv->retry_timer2=NULL; return FALSE; @@ -257,11 +261,11 @@ memset(&priv->context, 0, sizeof(gpsbt_t)); if(gpsbt_start(NULL, 0, 0, 0, errstr, sizeof(errstr), 0, &priv->context) < 0) { - dbg(0,"Error connecting to GPS with gpsbt: (%d) %s (%s)\n", + dbg(lvl_error,"Error connecting to GPS with gpsbt: (%d) %s (%s)\n", errno, strerror(errno), errstr); } sleep(1); /* give gpsd time to start */ - dbg(1,"gpsbt_start: completed\n"); + dbg(lvl_debug,"gpsbt_start: completed\n"); #endif priv->retry_timer2=NULL; if (vehicle_gpsd_try_open(priv)) @@ -301,21 +305,25 @@ #ifdef HAVE_GPSBT err = gpsbt_stop(&priv->context); if (err < 0) { - dbg(0,"Error %d while gpsbt_stop", err); + dbg(lvl_error,"Error %d while gpsbt_stop", err); } - dbg(1,"gpsbt_stop: completed, (%d)",err); + dbg(lvl_debug,"gpsbt_stop: completed, (%d)",err); #endif } static void vehicle_gpsd_io(struct vehicle_priv *priv) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); if (priv->gps) { vehicle_last = priv; #if GPSD_API_MAJOR_VERSION >= 5 - if(gps_read(priv->gps)==-1) { - dbg(0,"gps_poll failed\n"); + int read_result; + /* Read until EOF, in case we are lagging behind. + * No point in processing old GPS reports. */ + while((read_result=gps_read(priv->gps))>0); + if(read_result==-1) { + dbg(lvl_error,"gps_poll failed\n"); vehicle_gpsd_close(priv); vehicle_gpsd_open(priv); } @@ -326,7 +334,7 @@ } #else if (gps_poll(priv->gps)) { - dbg(0,"gps_poll failed\n"); + dbg(lvl_error,"gps_poll failed\n"); vehicle_gpsd_close(priv); vehicle_gpsd_open(priv); } @@ -427,7 +435,7 @@ struct vehicle_priv *ret; struct attr *source, *query, *retry_int; - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); source = attr_search(attrs, NULL, attr_source); ret = g_new0(struct vehicle_priv, 1); #if GPSD_API_MAJOR_VERSION >= 5 @@ -440,16 +448,16 @@ } else { ret->gpsd_query = g_strdup("w+x\n"); } - dbg(1,"Format string for gpsd_query: %s\n",ret->gpsd_query); + dbg(lvl_debug,"Format string for gpsd_query: %s\n",ret->gpsd_query); retry_int = attr_search(attrs, NULL, attr_retry_interval); if (retry_int) { ret->retry_interval = retry_int->u.num; if (ret->retry_interval < MIN_RETRY_INTERVAL) { - dbg(0, "Retry interval %d too small, setting to %d\n", ret->retry_interval, MIN_RETRY_INTERVAL); + dbg(lvl_error, "Retry interval %d too small, setting to %d\n", ret->retry_interval, MIN_RETRY_INTERVAL); ret->retry_interval = MIN_RETRY_INTERVAL; } } else { - dbg(1, "Retry interval not defined, setting to %d\n", DEFAULT_RETRY_INTERVAL); + dbg(lvl_debug, "Retry interval not defined, setting to %d\n", DEFAULT_RETRY_INTERVAL); ret->retry_interval = DEFAULT_RETRY_INTERVAL; } ret->cbl = cbl; @@ -462,6 +470,6 @@ void plugin_init(void) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); plugin_register_vehicle_type("gpsd", vehicle_gpsd_new_gpsd); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/gpsd_dbus/vehicle_gpsd_dbus.c navit-0.5.0+dfsg.1/navit/vehicle/gpsd_dbus/vehicle_gpsd_dbus.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/gpsd_dbus/vehicle_gpsd_dbus.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/gpsd_dbus/vehicle_gpsd_dbus.c 2016-01-02 22:29:50.000000000 +0000 @@ -114,7 +114,7 @@ priv->connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); } if (!priv->connection) { - dbg(0,"Failed to open connection to %s message bus: %s\n", priv->address?priv->address:"session",error.message); + dbg(lvl_error,"Failed to open connection to %s message bus: %s\n", priv->address?priv->address:"session",error.message); dbus_error_free(&error); return 0; } @@ -122,12 +122,12 @@ dbus_bus_add_match(priv->connection,"type='signal',interface='org.gpsd'",&error); dbus_connection_flush(priv->connection); if (dbus_error_is_set(&error)) { - dbg(0,"Failed to add match to connection: %s\n", error.message); + dbg(lvl_error,"Failed to add match to connection: %s\n", error.message); vehicle_gpsd_dbus_close(priv); return 0; } if (!dbus_connection_add_filter(priv->connection, vehicle_gpsd_dbus_filter, priv, NULL)) { - dbg(0,"Failed to add filter to connection\n"); + dbg(lvl_error,"Failed to add filter to connection\n"); vehicle_gpsd_dbus_close(priv); return 0; } @@ -187,7 +187,7 @@ switch (attr->type) { case attr_source: if (strncmp(vehicle_gpsd_dbus_prefix,attr->u.str,strlen(vehicle_gpsd_dbus_prefix))) { - dbg(0,"source must start with '%s'\n", vehicle_gpsd_dbus_prefix); + dbg(lvl_error,"source must start with '%s'\n", vehicle_gpsd_dbus_prefix); return 0; } g_free(priv->source); @@ -243,6 +243,6 @@ void plugin_init(void) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); plugin_register_vehicle_type("gpsd_dbus", vehicle_gpsd_dbus_new); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/gypsy/vehicle_gypsy.c navit-0.5.0+dfsg.1/navit/vehicle/gypsy/vehicle_gypsy.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/gypsy/vehicle_gypsy.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/gypsy/vehicle_gypsy.c 2016-01-02 22:29:50.000000000 +0000 @@ -286,7 +286,7 @@ } vehicle_last = priv; - dbg(0,"gypsy connected to %d\n", source+8); + dbg(lvl_debug,"gypsy connected to %d\n", source+8); g_free(source); return FALSE; } @@ -457,11 +457,11 @@ dbus_message_unref(message); dbus_connection_unref(conn); } else { - dbg(0,"failed to connect to session bus\n"); + dbg(lvl_error,"failed to connect to session bus\n"); } } #endif - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); source = attr_search(attrs, NULL, attr_source); ret = g_new0(struct vehicle_priv, 1); ret->have_cords = 0; @@ -471,11 +471,11 @@ if (retry_int) { ret->retry_interval = retry_int->u.num; if (ret->retry_interval < MIN_RETRY_INTERVAL) { - dbg(0, "Retry interval %d too small, setting to %d\n", ret->retry_interval, MIN_RETRY_INTERVAL); + dbg(lvl_error, "Retry interval %d too small, setting to %d\n", ret->retry_interval, MIN_RETRY_INTERVAL); ret->retry_interval = MIN_RETRY_INTERVAL; } } else { - dbg(0, "Retry interval not defined, setting to %d\n", DEFAULT_RETRY_INTERVAL); + dbg(lvl_error, "Retry interval not defined, setting to %d\n", DEFAULT_RETRY_INTERVAL); ret->retry_interval = DEFAULT_RETRY_INTERVAL; } ret->cbl = cbl; @@ -492,6 +492,6 @@ void plugin_init(void) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); plugin_register_vehicle_type("gypsy", vehicle_gypsy_new_gypsy); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/maemo/vehicle_maemo.c navit-0.5.0+dfsg.1/navit/vehicle/maemo/vehicle_maemo.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/maemo/vehicle_maemo.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/maemo/vehicle_maemo.c 2016-01-02 22:29:50.000000000 +0000 @@ -67,7 +67,7 @@ priv->sats_used=device->satellites_in_use; callback_list_call_attr_0(priv->cbl, attr_position_sats); - dbg(1,"Got update with %u/%u satellites\n",priv->sats_used,priv->sats); + dbg(lvl_debug,"Got update with %u/%u satellites\n",priv->sats_used,priv->sats); if (device->fix) { switch(device->fix->mode) { @@ -86,28 +86,28 @@ priv->geo.lng=device->fix->longitude; priv->hdop=device->fix->eph/100; callback_list_call_attr_0(priv->cbl, attr_position_coord_geo); - dbg(1,"Position: %f %f with error %f meters\n",priv->geo.lat,priv->geo.lng,priv->hdop); + dbg(lvl_debug,"Position: %f %f with error %f meters\n",priv->geo.lat,priv->geo.lng,priv->hdop); } if (device->fix->fields & LOCATION_GPS_DEVICE_SPEED_SET) { priv->speed=device->fix->speed; callback_list_call_attr_0(priv->cbl, attr_position_speed); - dbg(1,"Speed: %f\n ",priv->speed); + dbg(lvl_debug,"Speed: %f\n ",priv->speed); } if (device->fix->fields & LOCATION_GPS_DEVICE_TRACK_SET) { priv->direction=device->fix->track; - dbg(1,"Direction: %f\n",priv->direction); + dbg(lvl_debug,"Direction: %f\n",priv->direction); } if (device->fix->fields & LOCATION_GPS_DEVICE_TIME_SET) { priv->fix_time=device->fix->time; - dbg(1,"Time: %f\n",priv->fix_time); + dbg(lvl_debug,"Time: %f\n",priv->fix_time); } if (device->fix->fields & LOCATION_GPS_DEVICE_ALTITUDE_SET) { priv->height=device->fix->altitude; - dbg(1,"Elevation: %f\n",priv->height); + dbg(lvl_debug,"Elevation: %f\n",priv->height); } } @@ -119,19 +119,19 @@ { switch (error) { case LOCATION_ERROR_USER_REJECTED_DIALOG: - dbg(0,"User didn't enable requested methods\n"); + dbg(lvl_error,"User didn't enable requested methods\n"); break; case LOCATION_ERROR_USER_REJECTED_SETTINGS: - dbg(0,"User changed settings, which disabled location\n"); + dbg(lvl_error,"User changed settings, which disabled location\n"); break; case LOCATION_ERROR_BT_GPS_NOT_AVAILABLE: - dbg(0,"Problems with BT GPS\n"); + dbg(lvl_error,"Problems with BT GPS\n"); break; case LOCATION_ERROR_METHOD_NOT_ALLOWED_IN_OFFLINE_MODE: - dbg(0,"Requested method is not allowed in offline mode\n"); + dbg(lvl_error,"Requested method is not allowed in offline mode\n"); break; case LOCATION_ERROR_SYSTEM: - dbg(0,"System error\n"); + dbg(lvl_error,"System error\n"); break; } } @@ -148,54 +148,54 @@ if (!strcasecmp(priv->source+8,"cwp")) { g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_CWP, NULL); - dbg(1,"Method set: CWP\n"); + dbg(lvl_debug,"Method set: CWP\n"); } else if (!strcasecmp(priv->source+8,"acwp")) { g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_ACWP, NULL); - dbg(1,"Method set: ACWP\n"); + dbg(lvl_debug,"Method set: ACWP\n"); } else if (!strcasecmp(priv->source+8,"gnss")) { g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_GNSS, NULL); - dbg(1,"Method set: GNSS\n"); + dbg(lvl_debug,"Method set: GNSS\n"); } else if (!strcasecmp(priv->source+8,"agnss")) { g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_AGNSS, NULL); - dbg(1,"Method set: AGNSS\n"); + dbg(lvl_debug,"Method set: AGNSS\n"); } else { g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_USER_SELECTED, NULL); - dbg(1,"Method set: ANY\n"); + dbg(lvl_debug,"Method set: ANY\n"); } switch (priv->retry_interval) { case 2: g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_2S, NULL); - dbg(1,"Interval set: 2s\n"); + dbg(lvl_debug,"Interval set: 2s\n"); break; case 5: g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_5S, NULL); - dbg(1,"Interval set: 5s\n"); + dbg(lvl_debug,"Interval set: 5s\n"); break; case 10: g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_10S, NULL); - dbg(1,"Interval set: 10s\n"); + dbg(lvl_debug,"Interval set: 10s\n"); break; case 20: g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_20S, NULL); - dbg(1,"Interval set: 20s\n"); + dbg(lvl_debug,"Interval set: 20s\n"); break; case 30: g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_30S, NULL); - dbg(1,"Interval set: 30s\n"); + dbg(lvl_debug,"Interval set: 30s\n"); break; case 60: g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_60S, NULL); - dbg(1,"Interval set: 60s\n"); + dbg(lvl_debug,"Interval set: 60s\n"); break; case 120: g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_120S, NULL); - dbg(1,"Interval set: 120s\n"); + dbg(lvl_debug,"Interval set: 120s\n"); break; case 1: default: g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_1S, NULL); - dbg(1,"Interval set: 1s\n"); + dbg(lvl_debug,"Interval set: 1s\n"); break; } @@ -225,41 +225,41 @@ struct attr * active=NULL; switch (type) { case attr_position_fix_type: - dbg(1,"Attr requested: position_fix_type\n"); + dbg(lvl_debug,"Attr requested: position_fix_type\n"); attr->u.num = priv->fix_type; break; case attr_position_height: - dbg(1,"Attr requested: position_height\n"); + dbg(lvl_debug,"Attr requested: position_height\n"); attr->u.numd = &priv->height; break; case attr_position_speed: - dbg(1,"Attr requested: position_speed\n"); + dbg(lvl_debug,"Attr requested: position_speed\n"); attr->u.numd = &priv->speed; break; case attr_position_direction: - dbg(1,"Attr requested: position_direction\n"); + dbg(lvl_debug,"Attr requested: position_direction\n"); attr->u.numd = &priv->direction; break; case attr_position_hdop: - dbg(1,"Attr requested: position_hdop\n"); + dbg(lvl_debug,"Attr requested: position_hdop\n"); attr->u.numd = &priv->hdop; break; case attr_position_sats: - dbg(1,"Attr requested: position_sats_signal\n"); + dbg(lvl_debug,"Attr requested: position_sats\n"); attr->u.num = priv->sats; break; case attr_position_sats_used: - dbg(1,"Attr requested: position_sats_used\n"); + dbg(lvl_debug,"Attr requested: position_sats_used\n"); attr->u.num = priv->sats_used; break; case attr_position_coord_geo: - dbg(1,"Attr requested: position_coord_geo\n"); + dbg(lvl_debug,"Attr requested: position_coord_geo\n"); attr->u.coord_geo = &priv->geo; break; case attr_position_time_iso8601: { struct tm tm; - dbg(1,"Attr requested: position_time_iso8601\n"); + dbg(lvl_debug,"Attr requested: position_time_iso8601\n"); if (!priv->fix_time) return 0; if (gmtime_r(&priv->fix_time, &tm)) { @@ -271,7 +271,7 @@ } break; case attr_active: - dbg(1,"Attr requested: position_active\n"); + dbg(lvl_debug,"Attr requested: position_active\n"); active = attr_search(priv->attrs,NULL,attr_active); if(active != NULL) { attr->u.num=active->u.num; @@ -299,7 +299,7 @@ struct vehicle_priv *ret; struct attr *source, *retry_int; - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); source = attr_search(attrs, NULL, attr_source); ret = g_new0(struct vehicle_priv, 1); ret->source = g_strdup(source->u.str); @@ -307,13 +307,13 @@ if (retry_int) { ret->retry_interval = retry_int->u.num; if (ret->retry_interval !=1 && ret->retry_interval !=2 && ret->retry_interval !=5 && ret->retry_interval !=10 && ret->retry_interval !=20 && ret->retry_interval !=30 && ret->retry_interval !=60 && ret->retry_interval !=120 ) { - dbg(0, "Retry interval %d invalid, setting to 1\n", ret->retry_interval,1); + dbg(lvl_error, "Retry interval %d invalid, setting to 1\n", ret->retry_interval,1); ret->retry_interval = 1; } } else { ret->retry_interval = 1; } - dbg(1,"source: %s, interval: %u\n",ret->source,ret->retry_interval); + dbg(lvl_debug,"source: %s, interval: %u\n",ret->source,ret->retry_interval); ret->cbl = cbl; *meth = vehicle_maemo_methods; ret->attrs = attrs; @@ -324,6 +324,6 @@ void plugin_init(void) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); plugin_register_vehicle_type("maemo", vehicle_maemo_new_maemo); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/null/vehicle_null.c navit-0.5.0+dfsg.1/navit/vehicle/null/vehicle_null.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/null/vehicle_null.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/null/vehicle_null.c 2016-01-02 22:29:50.000000000 +0000 @@ -59,7 +59,7 @@ static void vehicle_null_destroy(struct vehicle_priv *priv) { - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); g_free(priv); } @@ -75,7 +75,7 @@ vehicle_null_position_attr_get(struct vehicle_priv *priv, enum attr_type type, struct attr *attr) { - dbg(1,"enter %s\n",attr_to_name(type)); + dbg(lvl_debug,"enter %s\n",attr_to_name(type)); switch (type) { #if 0 case attr_position_fix_type: @@ -114,7 +114,7 @@ default: return 0; } - dbg(1,"ok\n"); + dbg(lvl_debug,"ok\n"); attr->type = type; return 1; } @@ -162,11 +162,11 @@ { struct vehicle_priv *ret; - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); ret = g_new0(struct vehicle_priv, 1); ret->cbl = cbl; *meth = vehicle_null_methods; - dbg(1, "return\n"); + dbg(lvl_debug, "return\n"); return ret; } @@ -178,6 +178,6 @@ void plugin_init(void) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); plugin_register_vehicle_type("null", vehicle_null_new_null); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/webos/bluetooth.c navit-0.5.0+dfsg.1/navit/vehicle/webos/bluetooth.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/webos/bluetooth.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/webos/bluetooth.c 2016-01-02 22:29:50.000000000 +0000 @@ -25,10 +25,10 @@ mlPDL_ServiceCall_callback(struct callback_list *cbl, char *service, char *parameters/*, struct callback *fail_cb*/) { PDL_Err err; - dbg(1,"PDL_ServiceCall(%s) parameters(%s)\n",service,parameters); + dbg(lvl_debug,"PDL_ServiceCall(%s) parameters(%s)\n",service,parameters); err = PDL_ServiceCall(service, parameters); if (err != PDL_NOERROR) { - dbg(0,"PDL_ServiceCall to (%s) with (%s) failed with (%d): (%s)\n", service, parameters, err, PDL_GetError()); + dbg(lvl_error,"PDL_ServiceCall to (%s) with (%s) failed with (%d): (%s)\n", service, parameters, err, PDL_GetError()); } callback_list_destroy(cbl); @@ -50,7 +50,7 @@ callback_list_add(cbl, cb); -dbg(0,"event_call_callback(%p)\n",cbl); +dbg(lvl_debug,"event_call_callback(%p)\n",cbl); event_call_callback(cbl); } @@ -65,10 +65,10 @@ PDL_bool removeAfterResponse) { PDL_Err err; - dbg(1,"PDL_ServiceCallWithCallback(%s) parameters(%s)\n",service,parameters); + dbg(lvl_debug,"PDL_ServiceCallWithCallback(%s) parameters(%s)\n",service,parameters); err = PDL_ServiceCallWithCallback(service, parameters, callback, user, removeAfterResponse); if (err != PDL_NOERROR) { - dbg(0,"PDL_ServiceCallWithCallback to (%s) with (%s) failed with (%d): (%s)\n", service, parameters, err, PDL_GetError()); + dbg(lvl_error,"PDL_ServiceCallWithCallback to (%s) with (%s) failed with (%d): (%s)\n", service, parameters, err, PDL_GetError()); } callback_list_destroy(cbl); @@ -94,7 +94,7 @@ callback_list_add(cbl, cb); - dbg(0,"event_call_callback(%p)\n",cbl); + dbg(lvl_debug,"event_call_callback(%p)\n",cbl); event_call_callback(cbl); } @@ -107,11 +107,11 @@ priv->gps_type = param ? GPS_TYPE_INT: GPS_TYPE_NONE; - dbg(1,"Calling PDL_EnableLocationTracking(%i)\n",param); + dbg(lvl_debug,"Calling PDL_EnableLocationTracking(%i)\n",param); err = PDL_EnableLocationTracking(param); if (err != PDL_NOERROR) { - dbg(0,"PDL_EnableLocationTracking failed with (%d): (%s)\n", err, PDL_GetError()); + dbg(lvl_error,"PDL_EnableLocationTracking failed with (%d): (%s)\n", err, PDL_GetError()); // vehicle_webos_close(priv); // return 0; } @@ -146,10 +146,10 @@ int valid=0; int ret = 0; - dbg(2, "enter: buffer='%s'\n", buffer); + dbg(lvl_info, "enter: buffer='%s'\n", buffer); for (;;) { if (len < 4) { - dbg(0, "'%s' too short\n", buffer); + dbg(lvl_error, "'%s' too short\n", buffer); return ret; } if (buffer[len - 1] == '\r' || buffer[len - 1] == '\n') { @@ -160,22 +160,22 @@ break; } if (buffer[0] != '$') { - dbg(0, "no leading $ in '%s'\n", buffer); + dbg(lvl_error, "no leading $ in '%s'\n", buffer); return ret; } if (buffer[len - 3] != '*') { - dbg(0, "no *XX in '%s'\n", buffer); + dbg(lvl_error, "no *XX in '%s'\n", buffer); return ret; } for (i = 1; i < len - 3; i++) { csum ^= (unsigned char) (buffer[i]); } if (!sscanf(buffer + len - 2, "%x", &bcsum) /*&& priv->checksum_ignore != 2*/) { - dbg(0, "no checksum in '%s'\n", buffer); + dbg(lvl_error, "no checksum in '%s'\n", buffer); return ret; } if (bcsum != csum /*&& priv->checksum_ignore == 0*/) { - dbg(0, "wrong checksum in '%s was %x should be %x'\n", buffer,bcsum,csum); + dbg(lvl_error, "wrong checksum in '%s was %x should be %x'\n", buffer,bcsum,csum); return ret; } @@ -184,7 +184,7 @@ g_free(priv->nmea_data_buf); priv->nmea_data_buf=nmea_data_buf; } else { - dbg(0, "nmea buffer overflow, discarding '%s'\n", buffer); + dbg(lvl_error, "nmea buffer overflow, discarding '%s'\n", buffer); } i = 0; p = buffer; @@ -203,7 +203,7 @@ priv->delta = 0; // (unsigned int)difftime(tv.tv_sec, priv->fix_time); // priv->fix_time = tv.tv_sec; -// dbg(2,"delta(%i)\n",priv->delta); +// dbg(lvl_info,"delta(%i)\n",priv->delta); // } if (!strncmp(buffer, "$GPGGA", 6)) { @@ -230,7 +230,7 @@ if (!g_strcasecmp(item[5],"W")) priv->geo.lng=-priv->geo.lng; priv->valid=attr_position_valid_valid; - dbg(2, "latitude '%2.4f' longitude %2.4f\n", priv->geo.lat, priv->geo.lng); + dbg(lvl_info, "latitude '%2.4f' longitude %2.4f\n", priv->geo.lat, priv->geo.lng); } else priv->valid=attr_position_valid_invalid; @@ -275,7 +275,7 @@ if (valid) { priv->track = g_ascii_strtod( item[1], NULL ); priv->speed = g_ascii_strtod( item[7], NULL ); - dbg(2,"direction %lf, speed %2.1lf\n", priv->track, priv->speed); + dbg(lvl_info,"direction %lf, speed %2.1lf\n", priv->track, priv->speed); } } if (!strncmp(buffer, "$GPRMC", 6)) { @@ -380,7 +380,7 @@ */ if (item[1]) { priv->magnetic_direction = g_ascii_strtod( item[1], NULL ); - dbg(1,"magnetic %d\n", priv->magnetic_direction); + dbg(lvl_debug,"magnetic %d\n", priv->magnetic_direction); } } return ret; @@ -396,14 +396,14 @@ //PDL_Err err; size = PDL_GetParamInt(params, "dataLength"); if (size > buffer_size) { - dbg(0, "read returned too much data\n"); + dbg(lvl_error, "read returned too much data\n"); return; } char buffer[buffer_size]; PDL_GetParamString(params,"data",buffer,buffer_size); - dbg(9,"data(%s) dataLength(%i)\n",buffer,size); + dbg(lvl_debug,"data(%s) dataLength(%i)\n",buffer,size); memmove(priv->buffer + priv->buffer_pos, buffer, size); @@ -411,12 +411,12 @@ priv->buffer_pos += size; priv->buffer[priv->buffer_pos] = '\0'; - dbg(1, "size=%d pos=%d buffer='%s'\n", size, + dbg(lvl_debug, "size=%d pos=%d buffer='%s'\n", size, priv->buffer_pos, priv->buffer); str = priv->buffer; while ((tok = strchr(str, '\n'))) { *tok++ = '\0'; - dbg(1, "line='%s'\n", str); + dbg(lvl_debug, "line='%s'\n", str); rc += vehicle_webos_parse_nmea(priv, str); str = tok; // if (priv->file_type == file_type_file && rc) @@ -427,10 +427,10 @@ size = priv->buffer + priv->buffer_pos - str; memmove(priv->buffer, str, size + 1); priv->buffer_pos = size; - dbg(1,"now pos=%d buffer='%s'\n", + dbg(lvl_debug,"now pos=%d buffer='%s'\n", priv->buffer_pos, priv->buffer); } else if (priv->buffer_pos == buffer_size - 1) { - dbg(0,"Overflow. Most likely wrong baud rate or no nmea protocol\n"); + dbg(lvl_error,"Overflow. Most likely wrong baud rate or no nmea protocol\n"); priv->buffer_pos = 0; } if (rc) { @@ -466,7 +466,7 @@ ); #if 0 if (err != PDL_NOERROR) { - dbg(0,"PDL_ServiceCall failed with (%d): (%s)\n", err, PDL_GetError()); + dbg(lvl_error,"PDL_ServiceCall failed with (%d): (%s)\n", err, PDL_GetError()); vehicle_webos_close(priv); return; } @@ -481,7 +481,7 @@ if (!priv->buffer) priv->buffer = g_malloc(buffer_size); - dbg(1,"instanceId(%i)\n",priv->spp_instance_id); + dbg(lvl_debug,"instanceId(%i)\n",priv->spp_instance_id); priv->gps_type = GPS_TYPE_BT; @@ -497,27 +497,27 @@ char parameters[128]; const char *params_json = PDL_GetParamJson(params); - dbg(2,"params_json(%s)\n", params_json); + dbg(lvl_info,"params_json(%s)\n", params_json); if (PDL_ParamExists(params, "errorText")) { PDL_GetParamString(params, "errorText", notification, sizeof(notification)); - dbg(0,"errorText(%s)\n",notification); + dbg(lvl_error,"errorText(%s)\n",notification); return; } PDL_GetParamString(params, "notification", notification, sizeof(notification)); notification[sizeof(notification)-1] = '\0'; - dbg(1,"notification(%s) %i\n",notification,PDL_ParamExists(params, "notification")); + dbg(lvl_warning,"notification(%s) %i\n",notification,PDL_ParamExists(params, "notification")); if(strcmp(notification,"notifnservicenames") == 0) { int instance_id = PDL_GetParamInt(params, "instanceId"); - dbg(1,"instanceId(%i)\n", instance_id); + dbg(lvl_debug,"instanceId(%i)\n", instance_id); cJSON *root = cJSON_Parse(params_json); if (!root) { - dbg(0,"parsing json failed\n"); + dbg(lvl_error,"parsing json failed\n"); return; } @@ -544,7 +544,7 @@ PDL_TRUE); } else { - dbg(0,"notifnconnected error(%i)\n",PDL_GetParamInt(params,"error")); + dbg(lvl_error,"notifnconnected error(%i)\n",PDL_GetParamInt(params,"error")); } } else if(strcmp(notification,"notifndisconnected") == 0) { @@ -563,7 +563,7 @@ { char parameters[128]; - dbg(1,"subscribeNotifications\n"); + dbg(lvl_debug,"subscribeNotifications\n"); mlPDL_ServiceCallWithCallback("palm://com.palm.bluetooth/spp/subscribenotifications", "{\"subscribe\":true}", (PDL_ServiceCallbackFunc)vehicle_webos_spp_notify, @@ -571,7 +571,7 @@ PDL_FALSE); #if 0 if (err != PDL_NOERROR) { - dbg(0,"PDL_ServiceCallWithCallback failed with (%d): (%s)\n", err, PDL_GetError()); + dbg(lvl_error,"PDL_ServiceCallWithCallback failed with (%d): (%s)\n", err, PDL_GetError()); vehicle_webos_close(priv); return; } @@ -581,7 +581,7 @@ mlPDL_ServiceCall("palm://com.palm.bluetooth/spp/connect", parameters); #if 0 if (err != PDL_NOERROR) { - dbg(0,"PDL_ServiceCall failed with (%d): (%s)\n", err, PDL_GetError()); + dbg(lvl_error,"PDL_ServiceCall failed with (%d): (%s)\n", err, PDL_GetError()); vehicle_webos_close(priv); return; } @@ -598,38 +598,38 @@ char *device_addr = NULL; cJSON *root; - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); PDL_Err err; err = PDL_GetParamInt(params, "errorCode"); if (err != PDL_NOERROR) { - dbg(0,"BT GAP Callback errorCode %d\n", err); + dbg(lvl_error,"BT GAP Callback errorCode %d\n", err); return /*PDL_EOTHER*/; } params_json = PDL_GetParamJson(params); - dbg(2,"params_json(%s)\n",params_json); + dbg(lvl_info,"params_json(%s)\n",params_json); root = cJSON_Parse(params_json); if (!root) { - dbg(0,"parsing json failed\n"); + dbg(lvl_error,"parsing json failed\n"); return; } cJSON *trusted_devices = cJSON_GetObjectItem(root, "trusteddevices"); unsigned int i,c = cJSON_GetArraySize(trusted_devices); - dbg(1, "trusted_devices(%i)\n",c); + dbg(lvl_debug, "trusted_devices(%i)\n",c); for(i=0; i < c && !device_addr; i++) { cJSON *device = cJSON_GetArrayItem(trusted_devices,i); char *name = cJSON_GetObjectItem(device, "name")->valuestring; char *address = cJSON_GetObjectItem(device, "address")->valuestring; char *status = cJSON_GetObjectItem(device, "status")->valuestring; - dbg(1,"i(%i) name(%s) address(%s) status(%s)\n",i,name,address,status); + dbg(lvl_debug,"i(%i) name(%s) address(%s) status(%s)\n",i,name,address,status); if (/*strncmp(status, "connected",9) == 0 && */strstr(name, "GPS") != NULL) { - dbg(1,"choose name(%s) address(%s)\n",name,address); + dbg(lvl_debug,"choose name(%s) address(%s)\n",name,address); device_addr = g_strdup(address); break; } @@ -649,7 +649,7 @@ { // Try to connect to BT GPS, or use PDL method - dbg(1,"enter\n"); + dbg(lvl_debug,"enter\n"); PDL_Err err; err = PDL_ServiceCallWithCallback("palm://com.palm.bluetooth/gap/gettrusteddevices", @@ -658,7 +658,7 @@ priv, PDL_TRUE); if (err != PDL_NOERROR) { - dbg(0,"PDL_ServiceCallWithCallback failed with (%d): (%s)\n", err, PDL_GetError()); + dbg(lvl_error,"PDL_ServiceCallWithCallback failed with (%d): (%s)\n", err, PDL_GetError()); vehicle_webos_close(priv); return 0; } @@ -668,7 +668,7 @@ void vehicle_webos_bt_close(struct vehicle_priv *priv) { - dbg(0,"XXX\n"); + dbg(lvl_debug,"XXX\n"); char parameters[128]; if (priv->spp_instance_id) { snprintf(parameters, sizeof(parameters), "{\"instanceId\":%i}", priv->spp_instance_id); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/webos/vehicle_webos.c navit-0.5.0+dfsg.1/navit/vehicle/webos/vehicle_webos.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/webos/vehicle_webos.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/webos/vehicle_webos.c 2016-01-02 22:29:50.000000000 +0000 @@ -51,7 +51,7 @@ err = PDL_GetParamInt(params, "errorCode"); if (err != 0) { - dbg(0,"Location Callback errorCode %d\n", err); + dbg(lvl_error,"Location Callback errorCode %d\n", err); return /*PDL_EOTHER*/; } @@ -85,14 +85,14 @@ gettimeofday(&tv,NULL); priv->delta = (int)difftime(tv.tv_sec, priv->fix_time); - dbg(2,"delta(%i)\n",priv->delta); + dbg(lvl_info,"delta(%i)\n",priv->delta); priv->fix_time = tv.tv_sec; priv->geo.lat = location->latitude; /* workaround for webOS GPS bug following */ priv->geo.lng = (priv->pdk_version >= 200 && location->longitude >= -1 && location->longitude <= 1) ? -location->longitude : location->longitude; - dbg(2,"Location: %f %f %f %.12g %.12g +-%fm\n", + dbg(lvl_info,"Location: %f %f %f %.12g %.12g +-%fm\n", location->altitude, location->velocity, location->heading, @@ -126,7 +126,7 @@ int delta = (int)difftime(tv.tv_sec, priv->fix_time); if (delta >= priv->delta*2) { - dbg(1, "GPS timeout triggered cb(%p) delta(%d)\n", priv->timeout_cb, delta); + dbg(lvl_warning, "GPS timeout triggered cb(%p) delta(%d)\n", priv->timeout_cb, delta); priv->delta = -1; @@ -157,7 +157,7 @@ PDL_Err err; priv->pdk_version = PDL_GetPDKVersion(); - dbg(1,"pdk_version(%d)\n", priv->pdk_version); + dbg(lvl_debug,"pdk_version(%d)\n", priv->pdk_version); if (priv->pdk_version <= 100) { // Use Location Service via callback interface @@ -167,7 +167,7 @@ priv, PDL_FALSE); if (err != PDL_NOERROR) { - dbg(0,"PDL_ServiceCallWithCallback failed with (%d): (%s)\n", err, PDL_GetError()); + dbg(lvl_error,"PDL_ServiceCallWithCallback failed with (%d): (%s)\n", err, PDL_GetError()); vehicle_webos_close(priv); return 0; } @@ -176,7 +176,7 @@ PDL_Err err; err = PDL_EnableLocationTracking(PDL_TRUE); if (err != PDL_NOERROR) { - dbg(0,"PDL_EnableLocationTracking failed with (%d): (%s)\n", err, PDL_GetError()); + dbg(lvl_error,"PDL_EnableLocationTracking failed with (%d): (%s)\n", err, PDL_GetError()); // vehicle_webos_close(priv); // return 0; } @@ -206,15 +206,15 @@ { switch (type) { case attr_position_height: - dbg(2,"Altitude: %f\n", priv->altitude); + dbg(lvl_info,"Altitude: %f\n", priv->altitude); attr->u.numd = &priv->altitude; break; case attr_position_speed: - dbg(2,"Speed: %f\n", priv->speed); + dbg(lvl_info,"Speed: %f\n", priv->speed); attr->u.numd = &priv->speed; break; case attr_position_direction: - dbg(2,"Direction: %f\n", priv->track); + dbg(lvl_info,"Direction: %f\n", priv->track); attr->u.numd = &priv->track; break; case attr_position_magnetic_direction: @@ -238,11 +238,11 @@ } break; case attr_position_coord_geo: - dbg(2,"Coord: %.12g %.12g\n", priv->geo.lat, priv->geo.lng); + dbg(lvl_info,"Coord: %.12g %.12g\n", priv->geo.lat, priv->geo.lng); attr->u.coord_geo = &priv->geo; break; case attr_position_radius: - dbg(2,"Radius: %f\n", priv->radius); + dbg(lvl_info,"Radius: %f\n", priv->radius); attr->u.numd = &priv->radius; break; case attr_position_time_iso8601: @@ -257,10 +257,10 @@ priv->fix_time = 0; return 0; } - dbg(2,"Fix Time: %d %s\n", priv->fix_time, priv->fixiso8601); + dbg(lvl_info,"Fix Time: %d %s\n", priv->fix_time, priv->fixiso8601); } else { - dbg(2,"Fix Time: %d\n", priv->fix_time); + dbg(lvl_info,"Fix Time: %d\n", priv->fix_time); return 0; } @@ -318,7 +318,7 @@ switch (attr->type) { case attr_source: if (strncmp(vehicle_webos_prefix,attr->u.str,strlen(vehicle_webos_prefix))) { - dbg(1,"source must start with '%s'\n", vehicle_webos_prefix); + dbg(lvl_warning,"source must start with '%s'\n", vehicle_webos_prefix); return 0; } g_free(priv->source); @@ -380,7 +380,7 @@ void plugin_init(void) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); plugin_register_vehicle_type("webos", vehicle_webos_new); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle/wince/vehicle_wince.c navit-0.5.0+dfsg.1/navit/vehicle/wince/vehicle_wince.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle/wince/vehicle_wince.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle/wince/vehicle_wince.c 2016-01-02 22:29:50.000000000 +0000 @@ -146,7 +146,7 @@ priv->BthSetMode = (PFN_BthSetMode)GetProcAddress(priv->hBthDll, TEXT("BthSetMode") ); if( priv->BthSetMode && priv->BthSetMode(1) == ERROR_SUCCESS ) { - dbg(1, "bluetooth activated\n"); + dbg(lvl_debug, "bluetooth activated\n"); succeeded = TRUE; } } @@ -154,13 +154,13 @@ } else { - dbg(0, "Bluetooth library notfound\n"); + dbg(lvl_error, "Bluetooth library notfound\n"); } if ( !succeeded ) { - dbg(1, "Bluetooth already enabled or failed to enable it.\n"); + dbg(lvl_warning, "Bluetooth already enabled or failed to enable it.\n"); priv->BthSetMode = NULL; if ( priv->hBthDll ) { @@ -178,7 +178,7 @@ if ( priv->file_type == file_type_device ) { - dbg(0, "Init Device\n"); + dbg(lvl_debug, "Init Device\n"); /* GPD0 is the control port for the GPS driver */ hGPS = CreateFile(L"GPD0:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (hGPS != INVALID_HANDLE_VALUE) { @@ -199,7 +199,7 @@ NULL, OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE) { Sleep(1000); - dbg(0, "Waiting to connect to %s\n", priv->source); + dbg(lvl_debug, "Waiting to connect to %s\n", priv->source); } GetCommTimeouts (priv->m_hGPSDevice, &commTiming); commTiming.ReadIntervalTimeout = 20; @@ -230,11 +230,11 @@ } else { - dbg(0, "Open File\n"); + dbg(lvl_debug, "Open File\n"); priv->m_hGPSDevice = CreateFileW( A2W(priv->source), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0); if ( priv->m_hGPSDevice == INVALID_HANDLE_VALUE) { - dbg(0, "Could not open %s\n", priv->source); + dbg(lvl_error, "Could not open %s\n", priv->source); return 0; } } @@ -264,7 +264,7 @@ DWORD bytes_read; int waitcounter; - dbg(0, "GPS Port:[%s]\n", priv->source); + dbg(lvl_debug, "GPS Port:[%s]\n", priv->source); priv->thread_up = 1; if ( !initDevice(priv) ) { @@ -272,7 +272,7 @@ } while (priv->is_running) { - dbg(1,"readfile\n"); + dbg(lvl_debug,"readfile\n"); waitcounter = 0; status = ReadFile(priv->m_hGPSDevice, chunk_buffer, sizeof(chunk_buffer), @@ -280,7 +280,7 @@ if ( !status ) { - dbg(0,"Error reading file/device. Try again.\n"); + dbg(lvl_error,"Error reading file/device. Try again.\n"); initDevice(priv); continue; } @@ -290,24 +290,24 @@ /* TODO (rikky#1#): should use blocking */ if ( priv->file_type != file_type_file ) { - dbg(3, "GPS data comes too fast. Have to wait here\n"); + dbg(lvl_debug, "GPS data comes too fast. Have to wait here\n"); } Sleep(50); waitcounter++; if ( waitcounter % 8 == 0 ) { - dbg(1, "Remind them of the data\n"); + dbg(lvl_debug, "Remind them of the data\n"); event_call_callback(priv->priv_cbl); } if(waitcounter % 200 == 0) { - dbg(0,"Will main thread ever be ready for the GPS data? Already %d intervals gone.\n",waitcounter); + dbg(lvl_error,"Will main thread ever be ready for the GPS data? Already %d intervals gone.\n",waitcounter); } } if(waitcounter>2) - dbg(0,"Sent GPS data to the main thread after %d intervals delay.\n",waitcounter); + dbg(lvl_debug,"Sent GPS data to the main thread after %d intervals delay.\n",waitcounter); g_mutex_lock(&priv->lock); memcpy(priv->read_buffer + priv->read_buffer_pos , chunk_buffer, bytes_read ); @@ -348,11 +348,11 @@ regdevtype_length = sizeof(devicetype); if ( RegQueryValueEx( hkSubResult, L"Key", NULL, NULL, (LPBYTE)devicetype, ®devtype_length) == ERROR_SUCCESS ) { - dbg(0, "Found device '%s' (%s)\n", W2A(devicename), W2A(devicetype)); + dbg(lvl_debug, "Found device '%s' (%s)\n", W2A(devicename), W2A(devicetype)); } else { - dbg(0, "Found device '%s'\n", W2A(devicename)); + dbg(lvl_debug, "Found device '%s'\n", W2A(devicename)); } } RegCloseKey(hkSubResult); @@ -372,7 +372,7 @@ char* strport; char* strsettings; - dbg(1, "enter vehicle_wince_open, priv->source='%s'\n", priv->source); + dbg(lvl_debug, "enter vehicle_wince_open, priv->source='%s'\n", priv->source); if (priv->source ) { @@ -391,7 +391,7 @@ *strsettings = '\0'; strsettings++; - dbg(0, "serial('%s', '%s')\n", strport, strsettings ); + dbg(lvl_debug, "serial('%s', '%s')\n", strport, strsettings ); } if (raw_setting_str) g_free( raw_setting_str ); @@ -402,7 +402,7 @@ static void vehicle_wince_close(struct vehicle_priv *priv) { - dbg(1,"enter"); + dbg(lvl_debug,"enter"); } static int @@ -416,10 +416,10 @@ int valid=0; int ret = 0; - dbg(2, "enter: buffer='%s'\n", buffer); + dbg(lvl_info, "enter: buffer='%s'\n", buffer); for (;;) { if (len < 4) { - dbg(0, "'%s' too short\n", buffer); + dbg(lvl_error, "'%s' too short\n", buffer); return ret; } if (buffer[len - 1] == '\r' || buffer[len - 1] == '\n') { @@ -430,22 +430,22 @@ break; } if (buffer[0] != '$') { - dbg(0, "no leading $ in '%s'\n", buffer); + dbg(lvl_error, "no leading $ in '%s'\n", buffer); return ret; } if (buffer[len - 3] != '*') { - dbg(0, "no *XX in '%s'\n", buffer); + dbg(lvl_error, "no *XX in '%s'\n", buffer); return ret; } for (i = 1; i < len - 3; i++) { csum ^= (unsigned char) (buffer[i]); } if (!sscanf(buffer + len - 2, "%x", &bcsum) && priv->checksum_ignore != 2) { - dbg(0, "no checksum in '%s'\n", buffer); + dbg(lvl_error, "no checksum in '%s'\n", buffer); return ret; } if (bcsum != csum && priv->checksum_ignore == 0) { - dbg(0, "wrong checksum in '%s'\n", buffer); + dbg(lvl_error, "wrong checksum in '%s'\n", buffer); return ret; } @@ -454,7 +454,7 @@ g_free(priv->nmea_data_buf); priv->nmea_data_buf=nmea_data_buf; } else { - dbg(0, "nmea buffer overflow, discarding '%s'\n", buffer); + dbg(lvl_error, "nmea buffer overflow, discarding '%s'\n", buffer); } i = 0; p = buffer; @@ -491,7 +491,7 @@ if (!g_strcasecmp(item[5],"W")) priv->geo.lng=-priv->geo.lng; priv->valid=attr_position_valid_valid; - dbg(2, "latitude '%2.4f' longitude %2.4f\n", priv->geo.lat, priv->geo.lng); + dbg(lvl_info, "latitude '%2.4f' longitude %2.4f\n", priv->geo.lat, priv->geo.lng); } else priv->valid=attr_position_valid_invalid; @@ -523,7 +523,7 @@ if (valid) { priv->direction = g_ascii_strtod( item[1], NULL ); priv->speed = g_ascii_strtod( item[7], NULL ); - dbg(2,"direction %lf, speed %2.1lf\n", priv->direction, priv->speed); + dbg(lvl_info,"direction %lf, speed %2.1lf\n", priv->direction, priv->speed); } } if (!strncmp(buffer, "$GPRMC", 6)) { @@ -613,7 +613,7 @@ */ if (item[1]) { priv->magnetic_direction = g_ascii_strtod( item[1], NULL ); - dbg(1,"magnetic %d\n", priv->magnetic_direction); + dbg(lvl_debug,"magnetic %d\n", priv->magnetic_direction); } } return ret; @@ -625,7 +625,7 @@ int size, rc = 0; char *str, *tok; - dbg(1, "vehicle_file_io : enter\n"); + dbg(lvl_debug, "vehicle_file_io : enter\n"); size = read_win32(priv, priv->buffer + priv->buffer_pos, buffer_size - priv->buffer_pos - 1); @@ -646,12 +646,12 @@ } priv->buffer_pos += size; priv->buffer[priv->buffer_pos] = '\0'; - dbg(1, "size=%d pos=%d buffer='%s'\n", size, + dbg(lvl_debug, "size=%d pos=%d buffer='%s'\n", size, priv->buffer_pos, priv->buffer); str = priv->buffer; while ((tok = strchr(str, '\n'))) { *tok++ = '\0'; - dbg(1, "line='%s'\n", str); + dbg(lvl_debug, "line='%s'\n", str); rc +=vehicle_wince_parse(priv, str); str = tok; if (priv->file_type == file_type_file && rc) @@ -662,10 +662,10 @@ size = priv->buffer + priv->buffer_pos - str; memmove(priv->buffer, str, size + 1); priv->buffer_pos = size; - dbg(2, "now pos=%d buffer='%s'\n", + dbg(lvl_info, "now pos=%d buffer='%s'\n", priv->buffer_pos, priv->buffer); } else if (priv->buffer_pos == buffer_size - 1) { - dbg(0, + dbg(lvl_error, "Overflow. Most likely wrong baud rate or no nmea protocol\n"); priv->buffer_pos = 0; } @@ -676,7 +676,7 @@ static void vehicle_wince_enable_watch(struct vehicle_priv *priv) { - dbg(1, "enter"); + dbg(lvl_debug, "enter"); vehicle_wince_disable_watch(priv); priv->is_running = 1; @@ -697,7 +697,7 @@ { int wait = 5000; - dbg(1, "enter"); + dbg(lvl_debug, "enter"); priv->is_running = 0; while (wait-- > 0 && priv->thread_up) { @@ -710,6 +710,11 @@ } +/** + * @brief Frees the wince_vehicle + * + * @param priv vehicle_priv structure for the vehicle + */ static void vehicle_wince_destroy(struct vehicle_priv *priv) { @@ -729,6 +734,14 @@ g_free(priv); } +/** + * @brief Retrieves a vehicle attribute. + * + * @param priv vehicle_priv structure for the vehicle + * @param type The attribute type to retrieve + * @param attr Points to an attr structure that will receive the attribute data + * @returns True for success, false for failure + */ static int vehicle_wince_position_attr_get(struct vehicle_priv *priv, enum attr_type type, struct attr *attr) @@ -778,7 +791,7 @@ attr->u.str=priv->fixiso8601; break; case attr_position_sat_item: - dbg(0,"at here\n"); + dbg(lvl_debug,"at here\n"); priv->sat_item.id_lo++; if (priv->sat_item.id_lo > priv->current_count) { priv->sat_item.id_lo=0; @@ -846,6 +859,14 @@ NULL, }; +/** + * @brief Creates a new wince_vehicle + * + * @param meth + * @param cbl + * @param attrs + * @returns vehicle_priv + */ static struct vehicle_priv * vehicle_wince_new(struct vehicle_methods *meth, struct callback_list @@ -860,7 +881,7 @@ struct attr *handle_bluetooth; char *cp; - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); source = attr_search(attrs, NULL, attr_source); ret = g_new0(struct vehicle_priv, 1); ret->fd = -1; @@ -897,7 +918,7 @@ ret->on_eof=1; if (on_eof && !g_strcasecmp(on_eof->u.str, "exit")) ret->on_eof=2; - dbg(0,"on_eof=%d\n", ret->on_eof); + dbg(lvl_debug,"on_eof=%d\n", ret->on_eof); *meth = vehicle_wince_methods; ret->priv_cbl = callback_list_new(); callback_list_add(ret->priv_cbl, callback_new_1(callback_cast(vehicle_wince_io), ret)); @@ -916,15 +937,18 @@ vehicle_wince_enable_watch(ret); return ret; } - dbg(0, "Failed to open '%s'\n", ret->source); + dbg(lvl_error, "Failed to open '%s'\n", ret->source); vehicle_wince_destroy(ret); return NULL; } +/** + * @brief Registers the vehicle_wince plugin + */ void plugin_init(void) { - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); plugin_register_vehicle_type("wince", vehicle_wince_new); plugin_register_vehicle_type("file", vehicle_wince_new); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle.c navit-0.5.0+dfsg.1/navit/vehicle.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle.c 2016-01-02 22:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -/** +/* * Navit, a modular navigation system. * Copyright (C) 2005-2009 Navit Team * @@ -16,6 +16,16 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ + +/** @file vehicle.c + * @brief Generic components of the vehicle object. + * + * This file implements the generic vehicle interface, i.e. everything which is + * not specific to a single data source. + * + * @author Navit Team + * @date 2005-2014 + */ #include #include @@ -68,7 +78,7 @@ struct object_func vehicle_func; static void vehicle_set_default_name(struct vehicle *this); -static void vehicle_draw_do(struct vehicle *this_, int lazy); +static void vehicle_draw_do(struct vehicle *this_); static void vehicle_log_nmea(struct vehicle *this_, struct log *log); static void vehicle_log_gpx(struct vehicle *this_, struct log *log); static void vehicle_log_textfile(struct vehicle *this_, struct log *log); @@ -78,7 +88,13 @@ /** - * Creates a new vehicle + * @brief Creates a new vehicle + * + * @param parent + * @param attrs Points to a null-terminated array of pointers to the attributes + * for the new vehicle type. + * + * @return The newly created vehicle object */ struct vehicle * vehicle_new(struct attr *parent, struct attr **attrs) @@ -93,10 +109,10 @@ char *type, *colon; struct pcoord center; - dbg(1, "enter\n"); + dbg(lvl_debug, "enter\n"); source = attr_search(attrs, NULL, attr_source); if (!source) { - dbg(0, "incomplete vehicle definition: missing attribute 'source'\n"); + dbg(lvl_error, "incomplete vehicle definition: missing attribute 'source'\n"); return NULL; } @@ -104,11 +120,11 @@ colon = strchr(type, ':'); if (colon) *colon = '\0'; - dbg(1, "source='%s' type='%s'\n", source->u.str, type); + dbg(lvl_debug, "source='%s' type='%s'\n", source->u.str, type); vehicletype_new = plugin_get_vehicle_type(type); if (!vehicletype_new) { - dbg(0, "invalid source '%s': unknown type '%s'\n", source->u.str, type); + dbg(lvl_error, "invalid source '%s': unknown type '%s'\n", source->u.str, type); g_free(type); return NULL; } @@ -119,7 +135,7 @@ this_->cbl = callback_list_new(); this_->priv = vehicletype_new(&this_->meth, this_->cbl, attrs); if (!this_->priv) { - dbg(0, "vehicletype_new failed\n"); + dbg(lvl_error, "vehicletype_new failed\n"); callback_list_destroy(this_->cbl); g_free(this_); return NULL; @@ -132,20 +148,20 @@ this_->trans=transform_new(¢er, 16, 0); vehicle_set_default_name(this_); - dbg(1, "leave\n"); + dbg(lvl_debug, "leave\n"); this_->log_to_cb=g_hash_table_new(NULL,NULL); return this_; } /** - * Destroys a vehicle + * @brief Destroys a vehicle * * @param this_ The vehicle to destroy */ void vehicle_destroy(struct vehicle *this_) { - dbg(0,"enter\n"); + dbg(lvl_debug,"enter\n"); if (this_->animate_callback) { callback_destroy(this_->animate_callback); event_remove_timeout(this_->animate_timer); @@ -188,46 +204,46 @@ * * @param this_ Pointer to a vehicle structure * @param type The attribute type to look for - * @param attr Pointer to an attr structure to store the attribute - * @param iter A vehicle attr_iter + * @param attr Pointer to a {@code struct attr} to store the attribute + * @param iter A vehicle attr_iter. This is only used for generic attributes; for attributes specific to the vehicle object it is ignored. + * @return True for success, false for failure */ int vehicle_get_attr(struct vehicle *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter) { int ret; + if (type == attr_log_gpx_desc) { + attr->u.str = this_->gpx_desc; + return 1; + } if (this_->meth.position_attr_get) { ret=this_->meth.position_attr_get(this_->priv, type, attr); if (ret) return ret; } - if (type == attr_log_gpx_desc) { - attr->u.str = this_->gpx_desc; - return 1; - } return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter); } /** * Generic set function * - * @param this_ Pointer to a vehicle structure - * @param attr Pointer to an attr structure for the attribute to be set - * @return nonzero on success, zero on failure + * @param this_ A vehicle + * @param attr The attribute to set + * @return False on success, true on failure */ int vehicle_set_attr(struct vehicle *this_, struct attr *attr) { int ret=1; - if (this_->meth.set_attr) + if (attr->type == attr_log_gpx_desc) { + g_free(this_->gpx_desc); + this_->gpx_desc = g_strdup(attr->u.str); + } else if (this_->meth.set_attr) ret=this_->meth.set_attr(this_->priv, attr); /* attr_profilename probably is never used by vehicle itself but it's used to control the routing engine. So any vehicle should allow to set and read it. */ if(attr->type == attr_profilename) ret=1; - if (ret == 1 && attr->type == attr_log_gpx_desc) { - g_free(this_->gpx_desc); - this_->gpx_desc = attr->u.str; - } if (ret == 1 && attr->type != attr_navit && attr->type != attr_pdl_gps_update) this_->attrs=attr_generic_set_attr(this_->attrs, attr); return ret != 0; @@ -237,7 +253,9 @@ * Generic add function * * @param this_ A vehicle - * @param attr A struct attr + * @param attr The attribute to add + * + * @return true if the attribute was added, false if not. */ int vehicle_add_attr(struct vehicle *this_, struct attr *attr) @@ -321,7 +339,7 @@ if (cursor && this_->gra && this_->cursor) { this_->cursor_pnt.x+=(this_->cursor->w - cursor->w)/2; this_->cursor_pnt.y+=(this_->cursor->h - cursor->h)/2; - graphics_overlay_resize(this_->gra, &this_->cursor_pnt, cursor->w, cursor->h, 65535, 0); + graphics_overlay_resize(this_->gra, &this_->cursor_pnt, cursor->w, cursor->h, 0); } if (cursor) { @@ -345,17 +363,16 @@ * @param this_ The vehicle * @param gra The graphics * @param pnt Screen coordinates of the vehicle. - * @param lazy use lazy draw mode. * @param angle The angle relative to the map. * @param speed The speed of the vehicle. */ void -vehicle_draw(struct vehicle *this_, struct graphics *gra, struct point *pnt, int lazy, int angle, int speed) +vehicle_draw(struct vehicle *this_, struct graphics *gra, struct point *pnt, int angle, int speed) { if (angle < 0) angle+=360; - dbg(1,"enter this=%p gra=%p pnt=%p lazy=%d dir=%d speed=%d\n", this_, gra, pnt, lazy, angle, speed); - dbg(1,"point %d,%d\n", pnt->x, pnt->y); + dbg(lvl_debug,"enter this=%p gra=%p pnt=%p dir=%d speed=%d\n", this_, gra, pnt, angle, speed); + dbg(lvl_debug,"point %d,%d\n", pnt->x, pnt->y); this_->cursor_pnt=*pnt; this_->angle=angle; this_->speed=speed; @@ -365,7 +382,7 @@ this_->cursor_pnt.y-=this_->cursor->h/2; if (!this_->gra) { struct color c; - this_->gra=graphics_overlay_new(gra, &this_->cursor_pnt, this_->cursor->w, this_->cursor->h, 65535, 0); + this_->gra=graphics_overlay_new(gra, &this_->cursor_pnt, this_->cursor->w, this_->cursor->h, 0); if (this_->gra) { graphics_init(this_->gra); this_->bg=graphics_gc_new(this_->gra); @@ -374,7 +391,7 @@ graphics_background_gc(this_->gra, this_->bg); } } - vehicle_draw_do(this_, lazy); + vehicle_draw_do(this_); } int @@ -394,13 +411,13 @@ // Safe cast: attr_generic_set_attr does not modify its parameter. default_name.u.str=(char*)_("Unnamed vehicle"); this_->attrs=attr_generic_set_attr(this_->attrs, &default_name); - dbg(0, "Incomplete vehicle definition: missing attribute 'name'. Default name set.\n"); + dbg(lvl_error, "Incomplete vehicle definition: missing attribute 'name'. Default name set.\n"); } } static void -vehicle_draw_do(struct vehicle *this_, int lazy) +vehicle_draw_do(struct vehicle *this_) { struct point p; struct cursor *cursor=this_->cursor; @@ -429,7 +446,7 @@ while (*attr) { if ((*attr)->type == attr_itemgra) { struct itemgra *itm=(*attr)->u.itemgra; - dbg(1,"speed %d-%d %d\n", itm->speed_range.min, itm->speed_range.max, speed); + dbg(lvl_debug,"speed %d-%d %d\n", itm->speed_range.min, itm->speed_range.max, speed); if (speed >= itm->speed_range.min && speed <= itm->speed_range.max && angle >= itm->angle_range.min && angle <= itm->angle_range.max && sequence >= itm->sequence_range.min && sequence <= itm->sequence_range.max) { @@ -441,7 +458,7 @@ ++attr; } graphics_draw_drag(this_->gra, &this_->cursor_pnt); - graphics_draw_mode(this_->gra, lazy ? draw_mode_end_lazy : draw_mode_end); + graphics_draw_mode(this_->gra, draw_mode_end); if (this_->animate_callback) { ++this_->sequence; if (cursor->sequence_range && cursor->sequence_range->max < this_->sequence) @@ -452,10 +469,10 @@ } /** - * Writes to an NMEA log. + * @brief Writes to an NMEA log. * - * @param this_ Pointer to the vehicle structure of the data source - * @param log Pointer to a log structure for the log file + * @param this_ The vehicle supplying data + * @param log The log to write to */ static void vehicle_log_nmea(struct vehicle *this_, struct log *log) @@ -468,6 +485,15 @@ log_write(log, pos_attr.u.str, strlen(pos_attr.u.str), 0); } +/** + * Add a tag to the extensions section of a GPX trackpoint. + * + * @param tag The tag to add + * @param logstr Pointer to a pointer to a string to be inserted into the log. + * When calling this function, {@code *logstr} must point to the substring into which the new tag is + * to be inserted. If {@code *logstr} is NULL, a new string will be created for the extensions section. + * Upon returning, {@code *logstr} will point to the new string with the additional tag inserted. + */ void vehicle_log_gpx_add_tag(char *tag, char **logstr) { @@ -502,10 +528,10 @@ } /** - * Writes to a GPX log. + * @brief Writes a trackpoint to a GPX log. * - * @param this_ Pointer to the vehicle structure of the data source - * @param log Pointer to a log structure for the log file + * @param this_ The vehicle supplying data + * @param log The log to write to */ static void vehicle_log_gpx(struct vehicle *this_, struct log *log) @@ -580,10 +606,10 @@ } /** - * Writes to a text log. + * @brief Writes to a text log. * - * @param this_ Pointer to the vehicle structure of the data source - * @param log Pointer to a log structure for the log file + * @param this_ The vehicle supplying data + * @param log The log to write to */ static void vehicle_log_textfile(struct vehicle *this_, struct log *log) @@ -604,10 +630,10 @@ } /** - * Writes to a binary log. + * @brief Writes to a binary log. * - * @param this_ Pointer to the vehicle structure of the data source - * @param log Pointer to a log structure for the log file + * @param this_ The vehicle supplying data + * @param log The log to write to */ static void vehicle_log_binfile(struct vehicle *this_, struct log *log) @@ -641,7 +667,7 @@ buffer_new=g_malloc((buffer[0]+3)*sizeof(int)); memcpy(buffer_new, buffer, (buffer[0]+1)*sizeof(int)); } - dbg(1,"c=0x%x,0x%x\n",c.x,c.y); + dbg(lvl_debug,"c=0x%x,0x%x\n",c.x,c.y); buffer_new[buffer_new[0]+1]=c.x; buffer_new[buffer_new[0]+2]=c.y; buffer_new[0]+=2; @@ -664,10 +690,12 @@ } /** - * Register a new log to receive data. + * @brief Registers a new log to receive data. + * + * @param this_ The vehicle supplying data + * @param log The log to write to * - * @param this_ Pointer to the vehicle structure of the data source - * @param log Pointer to a log structure for the log file + * @return False if the log is of an unknown type, true otherwise (including when {@code attr_type} is missing). */ static int vehicle_add_log(struct vehicle *this_, struct log *log) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicle.h navit-0.5.0+dfsg.1/navit/vehicle.h --- navit-0.5.0~svn5900+dfsg.1/navit/vehicle.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicle.h 2016-01-02 22:29:50.000000000 +0000 @@ -50,7 +50,7 @@ int vehicle_add_attr(struct vehicle *this_, struct attr *attr); int vehicle_remove_attr(struct vehicle *this_, struct attr *attr); void vehicle_set_cursor(struct vehicle *this_, struct cursor *cursor, int overwrite); -void vehicle_draw(struct vehicle *this_, struct graphics *gra, struct point *pnt, int lazy, int angle, int speed); +void vehicle_draw(struct vehicle *this_, struct graphics *gra, struct point *pnt, int angle, int speed); int vehicle_get_cursor_data(struct vehicle *this_, struct point *pnt, int *angle, int *speed); void vehicle_log_gpx_add_tag(char *tag, char **logstr); struct vehicle * vehicle_ref(struct vehicle *this_); diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicleprofile.c navit-0.5.0+dfsg.1/navit/vehicleprofile.c --- navit-0.5.0~svn5900+dfsg.1/navit/vehicleprofile.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicleprofile.c 2016-01-02 22:29:50.000000000 +0000 @@ -30,7 +30,7 @@ static void vehicleprofile_set_attr_do(struct vehicleprofile *this_, struct attr *attr) { - dbg(1,"%s:%ld\n", attr_to_name(attr->type), attr->u.num); + dbg(lvl_debug,"%s:%ld\n", attr_to_name(attr->type), attr->u.num); switch (attr->type) { case attr_flags: this_->flags=attr->u.num; @@ -119,7 +119,7 @@ this_->flags_forward_mask=0; this_->flags_reverse_mask=0; this_->flags=0; - this_->maxspeed_handling=0; + this_->maxspeed_handling = maxspeed_enforce; this_->static_speed=0; this_->static_distance=0; g_free(this_->name); @@ -147,14 +147,14 @@ struct navit_object *oldrp; /* Maptool won't place any access flags for roads which don't have default access flags set. Warn user. */ if(!item_get_default_flags(*types)) - dbg(0,"On '%s' roads used in '%s' vehicleprofile access restrictions are ignored. You might even be directed to drive in wrong direction on a one-way road. " + dbg(lvl_error,"On '%s' roads used in '%s' vehicleprofile access restrictions are ignored. You might even be directed to drive in wrong direction on a one-way road. " "Please define default access flags for above road type to item.c and rebuild the map.\n", item_to_name(*types), this_->name); oldrp=g_hash_table_lookup(this_->roadprofile_hash, (void *)(long)(*types)); if (is_option && oldrp) { struct navit_object *newrp; struct attr_iter *iter=rp->func->iter_new(NULL); struct attr attr; - dbg(1,"patching roadprofile\n"); + dbg(lvl_debug,"patching roadprofile\n"); newrp=oldrp->func->dup(oldrp); while (rp->func->get_attr(rp, attr_any, &attr, iter)) newrp->func->set_attr(newrp, &attr); @@ -177,7 +177,7 @@ struct attr attr; struct attr_iter *iter=obj->func->iter_new(NULL); while (obj->func->get_attr(obj, attr_any, &attr, iter)) { - dbg(1,"%s\n",attr_to_name(attr.type)); + dbg(lvl_debug,"%s\n",attr_to_name(attr.type)); if (attr.type == attr_roadprofile) vehicleprofile_apply_roadprofile(this_, attr.u.navit_object, is_option); else if (attr.type != attr_profile_option) @@ -190,7 +190,7 @@ vehicleprofile_debug_roadprofile(gpointer key, gpointer value, gpointer user_data) { struct roadprofile *rp=value; - dbg(3,"type %s avg %d weight %d max %d\n",item_to_name((int)(long)key),rp->speed,rp->route_weight,rp->maxspeed); + dbg(lvl_debug,"type %s avg %d weight %d max %d\n",item_to_name((int)(long)key),rp->speed,rp->route_weight,rp->maxspeed); } static void @@ -198,7 +198,7 @@ { struct attr_iter *iter=vehicleprofile_attr_iter_new(); struct attr profile_option; - dbg(3,"enter\n"); + dbg(lvl_debug,"enter\n"); vehicleprofile_clear(this_); vehicleprofile_apply_attrs(this_, (struct navit_object *)this_, 0); while (vehicleprofile_get_attr(this_, attr_profile_option, &profile_option, iter)) { @@ -206,13 +206,13 @@ if (!profile_option.u.navit_object->func->get_attr(profile_option.u.navit_object, attr_active, &active, NULL)) active.u.num=0; if (profile_option.u.navit_object->func->get_attr(profile_option.u.navit_object, attr_name, &name, NULL)) - dbg(3,"%p %s %ld\n",profile_option.u.navit_object,name.u.str,active.u.num); + dbg(lvl_debug,"%p %s %ld\n",profile_option.u.navit_object,name.u.str,active.u.num); if (active.u.num) vehicleprofile_apply_attrs(this_, profile_option.u.navit_object, 1); } vehicleprofile_attr_iter_destroy(iter); - dbg(3,"result l %d w %d h %d wg %d awg %d pen %d\n",this_->length,this_->width,this_->height,this_->weight,this_->axle_weight,this_->through_traffic_penalty); - dbg(3,"m %d fwd 0x%x rev 0x%x flags 0x%x max %d stsp %d stdst %d dg %d\n",this_->mode,this_->flags_forward_mask,this_->flags_reverse_mask, this_->flags, this_->maxspeed_handling, this_->static_speed, this_->static_distance, this_->dangerous_goods); + dbg(lvl_debug,"result l %d w %d h %d wg %d awg %d pen %d\n",this_->length,this_->width,this_->height,this_->weight,this_->axle_weight,this_->through_traffic_penalty); + dbg(lvl_debug,"m %d fwd 0x%x rev 0x%x flags 0x%x max %d stsp %d stdst %d dg %d\n",this_->mode,this_->flags_forward_mask,this_->flags_reverse_mask, this_->flags, this_->maxspeed_handling, this_->static_speed, this_->static_distance, this_->dangerous_goods); g_hash_table_foreach(this_->roadprofile_hash, vehicleprofile_debug_roadprofile, NULL); } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/vehicleprofile.h navit-0.5.0+dfsg.1/navit/vehicleprofile.h --- navit-0.5.0~svn5900+dfsg.1/navit/vehicleprofile.h 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/vehicleprofile.h 2016-01-02 22:29:50.000000000 +0000 @@ -21,13 +21,22 @@ #ifdef __cplusplus extern "C" { #endif + + +enum maxspeed_handling { + maxspeed_enforce = 0, /*!< Always enforce maxspeed of segment */ + maxspeed_restrict = 1, /*!< Enforce maxspeed of segment only if it restricts the speed */ + maxspeed_ignore = 2, /*!< Ignore maxspeed of segment, always use {@code route_weight} of road profile */ +}; + + struct vehicleprofile { NAVIT_OBJECT int mode; /**< 0 = Auto, 1 = On-Road, 2 = Off-Road */ int flags_forward_mask; /**< Flags mask for moving in positive direction */ int flags_reverse_mask; /**< Flags mask for moving in reverse direction */ int flags; /**< Required flags to move through a segment */ - int maxspeed_handling; /**< 0 = Always, 1 = Only if lower, 2 = Never */ + int maxspeed_handling; /**< How to handle maxspeed of segment, see {@code enum maxspeed_handling} */ int static_speed; /**< Maximum speed of vehicle to consider it stationary */ int static_distance; /**< Maximum distance of previous position of vehicle to consider it stationary */ char *name; /**< the vehicle profile name */ diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/version.h.in navit-0.5.0+dfsg.1/navit/version.h.in --- navit-0.5.0~svn5900+dfsg.1/navit/version.h.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/version.h.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,2 +1,2 @@ -#cmakedefine SVN_VERSION "@SVN_VERSION@" +#cmakedefine GIT_VERSION "@GIT_VERSION@" #cmakedefine NAVIT_VARIANT "@NAVIT_VARIANT@" diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xmlconfig.c navit-0.5.0+dfsg.1/navit/xmlconfig.c --- navit-0.5.0~svn5900+dfsg.1/navit/xmlconfig.c 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xmlconfig.c 2016-01-02 22:29:50.000000000 +0000 @@ -118,7 +118,7 @@ if (! strcmp(name, attr_fixme[0])) { name=attr_fixme[1]; if (fixme_count++ < 10) - dbg(0,"Please change attribute '%s' to '%s' in <%s />\n", attr_fixme[0], attr_fixme[1], fixme->element); + dbg(lvl_error,"Please change attribute '%s' to '%s' in <%s />\n", attr_fixme[0], attr_fixme[1], fixme->element); break; } attr_fixme+=2; @@ -128,12 +128,12 @@ if (ret[count]) count++; else if (strcmp(*attribute_name,"enabled") && strcmp(*attribute_name,"xmlns:xi")) - dbg(0,"failed to create attribute '%s' with value '%s'\n", *attribute_name,*attribute_value); + dbg(lvl_error,"failed to create attribute '%s' with value '%s'\n", *attribute_name,*attribute_value); attribute_name++; attribute_value++; } ret[count]=NULL; - dbg(3,"ret=%p\n", ret); + dbg(lvl_debug,"ret=%p\n", ret); return ret; } @@ -209,7 +209,7 @@ if (itype!=type_none) { navigation_set_announce(state->parent->element_attr.u.data, itype, level); } else { - dbg(0, "Invalid type for announcement: %s\n",tok); + dbg(lvl_error, "Invalid type for announcement: %s\n",tok); } str=NULL; } @@ -238,7 +238,7 @@ { attr_coord, NEW(coord_new_from_attrs)}, { attr_cursor, NEW(cursor_new), NULL, NULL, NULL, NULL, ADD(cursor_add_attr)}, { attr_debug, NEW(debug_new)}, - { attr_graphics, NEW(graphics_new)}, + { attr_graphics, NEW(graphics_new), GET(graphics_get_attr)}, { attr_gui, NEW(gui_new), GET(gui_get_attr), NULL, NULL, SET(gui_set_attr), ADD(gui_add_attr)}, { attr_icon, NEW(icon_new), NULL, NULL, NULL, NULL, ADD(element_add_attr)}, { attr_image, NEW(image_new)}, @@ -586,7 +586,7 @@ const char *parent_name=NULL; char *s,*sep="",*possible_parents; struct attr *parent_attr; - dbg(2,"name='%s' parent='%s'\n", element_name, *parent ? (*parent)->element:NULL); + dbg(lvl_info,"name='%s' parent='%s'\n", element_name, *parent ? (*parent)->element:NULL); if (!strcmp(element_name,"xml")) return; @@ -604,7 +604,7 @@ if (!strcmp(element_name,element_fixme[0])) { element_name=element_fixme[1]; if (fixme_count++ < 10) - dbg(0,"Please change <%s /> to <%s /> in config file\n", element_fixme[0], element_fixme[1]); + dbg(lvl_error,"Please change <%s /> to <%s /> in config file\n", element_fixme[0], element_fixme[1]); } element_fixme+=2; } @@ -676,7 +676,7 @@ return; new->element_attr.type=attr_from_name(element_name); if (new->element_attr.type == attr_none) - dbg(0,"failed to create object of type '%s'\n", element_name); + dbg(lvl_error,"failed to create object of type '%s'\n", element_name); if (new->element_attr.type == attr_tracking) new->element_attr.type=attr_trackingo; if (new->parent && new->parent->object_func && new->parent->object_func->add_attr) @@ -697,7 +697,7 @@ if (!strcmp(element_name,"xml")) return; - dbg(2,"name='%s'\n", element_name); + dbg(lvl_info,"name='%s'\n", element_name); curr=*state; if (curr->object_func && curr->object_func->init) curr->object_func->init(curr->element_attr.u.data); @@ -752,27 +752,27 @@ doc_new.level=doc_old->level+1; doc_new.user_data=doc_old->user_data; if (! href) { - dbg(1,"no href, using '%s'\n", doc_old->href); + dbg(lvl_debug,"no href, using '%s'\n", doc_old->href); doc_new.href=doc_old->href; if (file_exists(doc_new.href)) { parse_file(&doc_new, error); } else { - dbg(0,"Unable to include %s\n",doc_new.href); + dbg(lvl_error,"Unable to include %s\n",doc_new.href); } } else { - dbg(1,"expanding '%s'\n", href); + dbg(lvl_debug,"expanding '%s'\n", href); we=file_wordexp_new(href); we_files=file_wordexp_get_array(we); count=file_wordexp_get_count(we); - dbg(1,"%d results\n", count); + dbg(lvl_debug,"%d results\n", count); if (file_exists(we_files[0])) { for (i = 0 ; i < count ; i++) { - dbg(1,"result[%d]='%s'\n", i, we_files[i]); + dbg(lvl_debug,"result[%d]='%s'\n", i, we_files[i]); doc_new.href=we_files[i]; parse_file(&doc_new, error); } } else { - dbg(0,"Unable to include %s\n",we_files[0]); + dbg(lvl_error,"Unable to include %s\n",we_files[0]); } file_wordexp_destroy(we); @@ -787,7 +787,7 @@ char c[s1len+1]; strncpy(c, s1, s1len); c[s1len]='\0'; - dbg(0,"'%s' vs '%s'\n", c, s2); + dbg(lvl_debug,"'%s' vs '%s'\n", c, s2); #endif ret=strncmp(s1, s2, s1len); @@ -832,7 +832,7 @@ strncpy(test2, test, len); test2[len]='\0'; - dbg(0,"%s\n", test2); + dbg(lvl_debug,"%s\n", test2); #endif if (!len) return 0; @@ -886,7 +886,7 @@ { const char *c; int s; - dbg(2,"%s\n", xpointer); + dbg(lvl_info,"%s\n", xpointer); if (xpointer[0] != '/') return 0; c=xpointer+1; @@ -1067,12 +1067,12 @@ context = g_markup_parse_context_new (&parser, 0, data, NULL); if (!document){ - dbg(0, "FATAL: No XML data supplied (looks like incorrect configuration for internal GUI).\n"); + dbg(lvl_error, "FATAL: No XML data supplied (looks like incorrect configuration for internal GUI).\n"); exit(1); } result = g_markup_parse_context_parse (context, document, strlen(document), NULL); if (!result){ - dbg(0, "FATAL: Cannot parse data as XML: '%s'\n", document); + dbg(lvl_error, "FATAL: Cannot parse data as XML: '%s'\n", document); exit(1); } g_markup_parse_context_free (context); @@ -1115,7 +1115,7 @@ gboolean result; char *xmldir,*newxmldir,*xmlfile,*newxmlfile,*sep; - dbg(1,"enter filename='%s'\n", document->href); + dbg(lvl_debug,"enter filename='%s'\n", document->href); #if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 12 #define G_MARKUP_TREAT_CDATA_AS_TEXT 0 #endif @@ -1159,7 +1159,7 @@ unsetenv("XMLFILE"); g_free(newxmldir); g_free(newxmlfile); - dbg(1,"return %d\n", result); + dbg(lvl_debug,"return %d\n", result); return result; } @@ -1219,7 +1219,7 @@ item_create_hash(); initStatic(); - dbg(1,"enter filename='%s'\n", filename); + dbg(lvl_debug,"enter filename='%s'\n", filename); memset(&document, 0, sizeof(document)); document.href=filename; document.user_data=&curr; @@ -1230,7 +1230,7 @@ } attr_destroy_hash(); item_destroy_hash(); - dbg(1,"return %d\n", result); + dbg(lvl_debug,"return %d\n", result); return result; } @@ -1264,7 +1264,7 @@ navit_object_ref(struct navit_object *obj) { obj->refcount++; - dbg(1,"refcount %s %p %d\n",attr_to_name(obj->func->type),obj,obj->refcount); + dbg(lvl_debug,"refcount %s %p %d\n",attr_to_name(obj->func->type),obj,obj->refcount); return obj; } @@ -1273,7 +1273,7 @@ { if (obj) { obj->refcount--; - dbg(1,"refcount %s %p %d\n",attr_to_name(obj->func->type),obj,obj->refcount); + dbg(lvl_debug,"refcount %s %p %d\n",attr_to_name(obj->func->type),obj,obj->refcount); if (obj->refcount <= 0 && obj->func && obj->func->destroy) obj->func->destroy(obj); } @@ -1295,6 +1295,31 @@ g_free(iter); } +/** + * @brief Generic get function + * + * This function searches an attribute list for an attribute of a given type and stores it in the {@code attr} + * parameter. Internally it calls + * {@link attr_generic_get_attr(struct attr **, struct attr **, enum attr_type, struct attr *, struct attr_iter *)} + * to retrieve the attribute; see its documentation for details. + *

+ * Searching for attr_any or attr_any_xml is supported. + *

+ * An iterator can be specified to get multiple attributes of the same type: + * The first call will return the first match; each subsequent call + * with the same iterator will return the next match. If no more matching + * attributes are found in either of them, false is returned. + * + * @param obj The object to return an attribute for. This can be any Navit object type, but the parameter should + * be cast to {@code struct navit_object *} to avoid compiler warnings. + * @param type The attribute type to search for. Searching for {@code attr_any} or {@code attr_any_xml} is + * possible. + * @param attr Points to a {@code struct attr} which will receive the attribute + * @param iter An iterator to receive multiple attributes of the same type with subsequent calls. If {@code NULL}, + * the first matching attribute will be retrieved. + * + * @return True if a matching attribute was found, false if not. + */ int navit_object_get_attr(struct navit_object *obj, enum attr_type type, struct attr *attr, struct attr_iter *iter) { @@ -1311,6 +1336,7 @@ int navit_object_set_attr(struct navit_object *obj, struct attr *attr) { + dbg(lvl_debug, "enter, obj=%p, attr=%p (%s)\n", obj, attr, attr_to_name(attr->type)); obj->attrs=attr_generic_set_attr(obj->attrs, attr); navit_object_callbacks(obj, attr); return 1; @@ -1319,6 +1345,7 @@ int navit_object_add_attr(struct navit_object *obj, struct attr *attr) { + dbg(lvl_debug, "enter, obj=%p, attr=%p (%s)\n", obj, attr, attr_to_name(attr->type)); if (attr->type == attr_callback) { struct callback_list *cbl; if (obj->attrs && obj->attrs[0] && obj->attrs[0]->type == attr_callback_list) diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/CMakeLists.txt navit-0.5.0+dfsg.1/navit/xpm/CMakeLists.txt --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/CMakeLists.txt 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/CMakeLists.txt 2016-01-02 22:29:50.000000000 +0000 @@ -54,13 +54,15 @@ else() set (IMAGE_DST ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}_${CURRENT_SCALE}_${CURRENT_SCALE}.png) endif() - - convert_to_png( - ${CMAKE_CURRENT_SOURCE_DIR}/${IMAGE_SRC} - ${IMAGE_DST} - ${CURRENT_SCALE} - ) - list(APPEND IMAGE_TARGETS ${IMAGE_DST}) + + if(NOT CURRENT_SCALE EQUAL -1) + convert_to_png( + ${CMAKE_CURRENT_SOURCE_DIR}/${IMAGE_SRC} + ${IMAGE_DST} + ${CURRENT_SCALE} + ) + list(APPEND IMAGE_TARGETS ${IMAGE_DST}) + endif() endforeach() endmacro() diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/Makefile.am navit-0.5.0+dfsg.1/navit/xpm/Makefile.am --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/Makefile.am 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/Makefile.am 2016-01-02 22:29:50.000000000 +0000 @@ -184,6 +184,18 @@ svgs += skiing.svg svgs += sport.svg svgs += stadium.svg +svgs += status_calculating_bk.svg +svgs += status_calculating_wh.svg +svgs += status_no_destination_bk.svg +svgs += status_no_destination_wh.svg +svgs += status_no_route_bk.svg +svgs += status_no_route_wh.svg +svgs += status_position_wait_bk.svg +svgs += status_position_wait_wh.svg +svgs += status_recalculating_bk.svg +svgs += status_recalculating_wh.svg +svgs += status_routing_bk.svg +svgs += status_routing_wh.svg svgs += swimming.svg svgs += taoist.svg svgs += taxi.svg diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_exit_left_bk.svg navit-0.5.0+dfsg.1/navit/xpm/nav_exit_left_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_exit_left_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_exit_left_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,114 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_exit_left_wh.svg navit-0.5.0+dfsg.1/navit/xpm/nav_exit_left_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_exit_left_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_exit_left_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,114 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_exit_right_bk.svg navit-0.5.0+dfsg.1/navit/xpm/nav_exit_right_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_exit_right_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_exit_right_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,113 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_exit_right_wh.svg navit-0.5.0+dfsg.1/navit/xpm/nav_exit_right_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_exit_right_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_exit_right_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,113 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/navit.svg navit-0.5.0+dfsg.1/navit/xpm/navit.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/navit.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/navit.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,393 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/navit_svg2png navit-0.5.0+dfsg.1/navit/xpm/navit_svg2png --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/navit_svg2png 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/navit_svg2png 2016-01-02 22:29:50.000000000 +0000 @@ -13,7 +13,7 @@ $svgtopng --without-gui --export-width=$1 --export-height=$2 --export-png=$BUILDDIR/$4 $3 ;; *convert) - $svgtopng $3 -resize $1x$2 $4 + $svgtopng -alpha on -background none $3 -resize $1x$2 $4 ;; esac } diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_keep_left_bk.svg navit-0.5.0+dfsg.1/navit/xpm/nav_keep_left_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_keep_left_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_keep_left_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,85 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_keep_left_wh.svg navit-0.5.0+dfsg.1/navit/xpm/nav_keep_left_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_keep_left_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_keep_left_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_keep_right_bk.svg navit-0.5.0+dfsg.1/navit/xpm/nav_keep_right_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_keep_right_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_keep_right_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_keep_right_wh.svg navit-0.5.0+dfsg.1/navit/xpm/nav_keep_right_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_keep_right_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_keep_right_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_merge_left_bk.svg navit-0.5.0+dfsg.1/navit/xpm/nav_merge_left_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_merge_left_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_merge_left_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,112 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_merge_left_wh.svg navit-0.5.0+dfsg.1/navit/xpm/nav_merge_left_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_merge_left_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_merge_left_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,112 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_merge_right_bk.svg navit-0.5.0+dfsg.1/navit/xpm/nav_merge_right_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_merge_right_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_merge_right_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,112 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_merge_right_wh.svg navit-0.5.0+dfsg.1/navit/xpm/nav_merge_right_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/nav_merge_right_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/nav_merge_right_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,112 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_calculating_bk.svg navit-0.5.0+dfsg.1/navit/xpm/status_calculating_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_calculating_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_calculating_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_calculating_wh.svg navit-0.5.0+dfsg.1/navit/xpm/status_calculating_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_calculating_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_calculating_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_no_destination_bk.svg navit-0.5.0+dfsg.1/navit/xpm/status_no_destination_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_no_destination_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_no_destination_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,97 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_no_destination_wh.svg navit-0.5.0+dfsg.1/navit/xpm/status_no_destination_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_no_destination_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_no_destination_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,97 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_no_route_bk.svg navit-0.5.0+dfsg.1/navit/xpm/status_no_route_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_no_route_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_no_route_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_no_route_wh.svg navit-0.5.0+dfsg.1/navit/xpm/status_no_route_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_no_route_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_no_route_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,69 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_position_wait_bk.svg navit-0.5.0+dfsg.1/navit/xpm/status_position_wait_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_position_wait_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_position_wait_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,67 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_position_wait_wh.svg navit-0.5.0+dfsg.1/navit/xpm/status_position_wait_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_position_wait_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_position_wait_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_recalculating_bk.svg navit-0.5.0+dfsg.1/navit/xpm/status_recalculating_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_recalculating_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_recalculating_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_recalculating_wh.svg navit-0.5.0+dfsg.1/navit/xpm/status_recalculating_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_recalculating_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_recalculating_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_routing_bk.svg navit-0.5.0+dfsg.1/navit/xpm/status_routing_bk.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_routing_bk.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_routing_bk.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,67 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_routing_wh.svg navit-0.5.0+dfsg.1/navit/xpm/status_routing_wh.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/status_routing_wh.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/status_routing_wh.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/tec_common.svg navit-0.5.0+dfsg.1/navit/xpm/tec_common.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/tec_common.svg 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/tec_common.svg 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,6 @@ + + inkscape:window-y="24" + inkscape:current-layer="svg1961" + inkscape:window-maximized="0" /> + id="g4074" + transform="matrix(0.45833,0,0,0.45833,0.09537765,0.20735403)"> + d="M 112.60846,250.59757 C 112.19594,124.33283 206.65435,17.92223 331.72332,2.0110029 474.76675,-16.138613 604.57352,90.733 613.07847,234.94719 622.43271,379.23416 507.44593,501.2648 363.02544,501.00397 225.13231,501.4104 112.04429,388.588 112.60846,250.59757" + inkscape:connector-curvature="0" /> + d="M 178.5674,250.52998 C 178.28835,157.95605 248.14182,78.466576 340.17371,67.456704 445.3998,53.91728 541.01081,133.02461 547.2773,238.88318 553.98057,345.65772 469.7014,434.54957 363.10433,435.05912 260.7112,434.24626 179.0345,353.31308 178.5674,250.52998" + inkscape:connector-curvature="0" /> + d="m 291.59905,142.76359 34.57794,0 -46.22523,92.08258 c 24.38047,-9.02021 48.97932,-0.78253 62.60425,21.47378 12.43591,22.89934 9.46343,69.26213 -12.73924,86.98712 -27.01324,24.57356 -65.88612,21.80137 -89.90261,-5.45943 -11.7565,-15.27431 -14.80784,-29.96627 -13.83118,-48.77102 l 0,-2.9117 0.36399,-5.82341 1.09193,-5.45944 1.45591,-5.45946 2.18387,-5.45943 1.09193,-2.54774 59.32844,-118.65185 z m -34.9419,146.31303 c -5.50819,50.11162 59.20712,53.30234 61.51231,9.46303 6.12697,-50.88806 -59.29204,-53.33267 -61.51231,-9.46303 z m 119.38484,9.46303 c 6.43028,-58.07633 -25.86671,-141.44807 53.86879,-157.23193 36.49486,-4.34935 69.39243,24.07009 69.15585,61.14576 -6.41209,58.84671 25.86672,140.81113 -53.86877,157.23192 -37.04692,4.16737 -69.11946,-23.62727 -69.15587,-61.14575 z m 30.57417,0 0,-96.08617 0.36399,-2.18378 0.36396,-3.63963 0.72798,-3.63963 1.45589,-3.63962 1.81989,-3.63964 c 6.27864,-8.09817 11.9021,-12.16848 22.20268,-13.83058 18.73275,-2.37183 34.61432,11.79846 34.57792,30.57288 l 0,97.90599 -0.36397,4.00359 -1.09194,3.63962 -1.45591,3.63963 -1.81988,3.27566 c -4.59827,7.898 -13.27915,12.95102 -22.20267,14.19455 -8.95387,0.92204 -18.33237,-1.929 -24.75053,-8.37115 -7.78913,-7.44302 -8.7112,-12.11388 -9.82741,-22.20172" + inkscape:connector-curvature="0" /> + transform="translate(737.14592,106.67382)" + d="M 105,65 C 105,87.09139 87.09139,105 65,105 42.90861,105 25,87.09139 25,65 25,42.90861 42.90861,25 65,25 c 22.09139,0 40,17.90861 40,40 z" /> + transform="translate(737.14592,106.67382)" + d="m 105,165 c 0,22.09139 -17.90861,40 -40,40 -22.09139,0 -40,-17.90861 -40,-40 0,-22.09139 17.90861,-40 40,-40 22.09139,0 40,17.90861 40,40 z" /> + transform="translate(737.14592,106.67382)" + d="m 105,265 c 0,22.09139 -17.90861,40 -40,40 -22.09139,0 -40,-17.90861 -40,-40 0,-22.09139 17.90861,-40 40,-40 22.09139,0 40,17.90861 40,40 z" /> + d="m 45.014,57.186 c -4.356,0 -7.888,-1.297 -7.888,-2.896 0,-1.6 3.532,-2.897 7.888,-2.897 4.357,0 7.889,1.297 7.889,2.897 -10e-4,1.598 -3.532,2.896 -7.889,2.896 z" + inkscape:connector-curvature="0" /> + d="m 119.951,51.413 -39.378,0 c -2.108,0 -3.867,1.397 -4.46,3.31 l -42.002,0 c -2.591,0 -4.691,2.101 -4.691,4.692 l 0,49.404 c 0,2.592 2.1,4.691 4.691,4.691 l 85.84,0 c 2.593,0 4.692,-2.1 4.692,-4.691 l 0,-52.715 c 0.001,-2.59 -2.099,-4.691 -4.692,-4.691 z" + inkscape:connector-curvature="0" /> + d="m 119.698,62.499 c 0,0.391 -0.292,0.707 -0.652,0.707 l -9.141,0 c -0.361,0 -0.652,-0.316 -0.652,-0.707 l 0,-6.249 c 0,-0.391 0.291,-0.708 0.652,-0.708 l 9.141,0 c 0.36,0 0.652,0.316 0.652,0.708 l 0,6.249 z" + inkscape:connector-curvature="0" /> + d="m 119.306,62.263 c 0,0.363 -0.27,0.655 -0.603,0.655 l -8.454,0 c -0.333,0 -0.604,-0.292 -0.604,-0.655 l 0,-5.776 c 0,-0.362 0.271,-0.655 0.604,-0.655 l 8.454,0 c 0.333,0 0.603,0.292 0.603,0.655 l 0,5.776 z" + inkscape:connector-curvature="0" /> + d="m 118.389,56.034 -7.825,0 c -0.311,0 -0.56,0.272 -0.56,0.605 l 0,4.459 c 0.97,0.107 2.675,0.021 4.403,-1.391 1.897,-1.547 3.683,-2.111 4.541,-2.305 l 0,-0.762 c 0,-0.334 -0.25,-0.606 -0.559,-0.606 z" + a:adobe-blending-mode="screen" + inkscape:connector-curvature="0" /> @@ -2434,7 +2448,8 @@ + d="m 104.38,57.077 c -1.286,0 -2.331,0.978 -2.331,2.18 0,1.202 1.045,2.178 2.331,2.178 1.287,0 2.334,-0.977 2.334,-2.178 0,-1.201 -1.047,-2.18 -2.334,-2.18 z" + inkscape:connector-curvature="0" /> + d="m 106.24,59.256 c 0,0.959 -0.834,1.737 -1.86,1.737 -1.025,0 -1.858,-0.777 -1.858,-1.737 0,-0.96 0.833,-1.737 1.858,-1.736 1.027,0 1.86,0.776 1.86,1.736 z" + inkscape:connector-curvature="0" /> + d="m 102.435,59.256 c 0,1.003 0.873,1.819 1.945,1.819 1.075,0 1.949,-0.815 1.948,-1.819 10e-4,-1.003 -0.873,-1.821 -1.948,-1.821 -1.072,0 -1.946,0.818 -1.945,1.821 z m 0.175,0 c 0,-0.912 0.794,-1.655 1.77,-1.655 0.978,0 1.771,0.743 1.771,1.654 0,0.912 -0.793,1.654 -1.771,1.654 -0.976,0 -1.77,-0.742 -1.77,-1.653 z" + inkscape:connector-curvature="0" /> + d="m 104.389,59.305 c 0.647,-0.447 1.254,-0.598 1.522,-0.647 -0.257,-0.541 -0.836,-0.917 -1.51,-0.917 -0.913,0 -1.652,0.691 -1.652,1.542 0,0.134 0.018,0.263 0.051,0.388 0.268,0.047 0.924,0.094 1.589,-0.366 z" + inkscape:connector-curvature="0" /> @@ -2491,7 +2509,8 @@ + d="m 106.24,59.256 c 0,0.959 -0.834,1.737 -1.86,1.737 -1.025,0 -1.858,-0.777 -1.858,-1.737 0,-0.96 0.833,-1.737 1.858,-1.736 1.027,0 1.86,0.776 1.86,1.736 z" + inkscape:connector-curvature="0" /> + d="m 102.435,59.256 c 0,1.003 0.873,1.819 1.945,1.819 1.075,0 1.949,-0.815 1.948,-1.819 10e-4,-1.003 -0.873,-1.821 -1.948,-1.821 -1.072,0 -1.946,0.818 -1.945,1.821 z m 0.175,0 c 0,-0.912 0.794,-1.655 1.77,-1.655 0.978,0 1.771,0.743 1.771,1.654 0,0.912 -0.793,1.654 -1.771,1.654 -0.976,0 -1.77,-0.742 -1.77,-1.653 z" + inkscape:connector-curvature="0" /> + d="m 104.389,59.305 c 0.647,-0.447 1.254,-0.598 1.522,-0.647 -0.257,-0.541 -0.836,-0.917 -1.51,-0.917 -0.913,0 -1.652,0.691 -1.652,1.542 0,0.134 0.018,0.263 0.051,0.388 0.268,0.047 0.924,0.094 1.589,-0.366 z" + inkscape:connector-curvature="0" /> @@ -2555,7 +2576,8 @@ + d="m 29.458,106.97 59.574,0 0,-49.517 -59.574,0 0,49.517 z" + inkscape:connector-curvature="0" /> + d="m 87.977,82.43 0,-12.899 -58.173,0 0,35.914 94.34,0 0,-23.015 -36.167,0 z" + inkscape:connector-curvature="0" /> + d="m 54.489,69.416 -0.737,0 0,35.981 0.737,0 0,-35.981 z" + inkscape:connector-curvature="0" /> + d="m 53.647,69.416 -0.737,0 0,35.981 0.737,0 0,-35.981 z" + inkscape:connector-curvature="0" /> + d="m 124.837,106.955 0,-0.737 -95.382,0 0,0.737 95.382,0 z" + inkscape:connector-curvature="0" /> + d="m 124.837,106.112 0,-0.737 -95.382,0 0,0.737 95.382,0 z" + inkscape:connector-curvature="0" /> + d="m 112.278,82.032 c 0,13.65 -11.064,24.717 -24.717,24.717 -13.65,0 -24.716,-11.066 -24.716,-24.717 0,-13.651 11.066,-24.718 24.716,-24.718 13.653,0 24.717,11.067 24.717,24.718 z" + inkscape:connector-curvature="0" /> + d="m 62.635,82.032 c 0,13.744 11.182,24.927 24.927,24.927 13.744,0 24.927,-11.183 24.927,-24.927 0,-13.745 -11.183,-24.928 -24.927,-24.928 -13.746,0 -24.927,11.183 -24.927,24.928 z m 0.421,0 c 0,-13.514 10.993,-24.507 24.506,-24.507 13.513,0 24.506,10.994 24.506,24.507 0,13.513 -10.993,24.506 -24.506,24.506 -13.513,0 -24.506,-10.993 -24.506,-24.506 z" + inkscape:connector-curvature="0" /> + d="m 104.687,82.032 c 0,9.458 -7.667,17.124 -17.125,17.124 -9.458,0 -17.126,-7.666 -17.126,-17.124 0,-9.459 7.668,-17.125 17.126,-17.125 9.458,0 17.125,7.666 17.125,17.125 z" + inkscape:connector-curvature="0" /> + d="m 70.246,82.032 c 0,9.548 7.768,17.315 17.315,17.315 9.549,0 17.315,-7.768 17.315,-17.315 0,-9.549 -7.767,-17.316 -17.315,-17.316 -9.547,0 -17.315,7.767 -17.315,17.316 z m 0.382,0 c 0,-9.338 7.597,-16.936 16.934,-16.936 9.338,0 16.934,7.598 16.934,16.936 0,9.338 -7.596,16.934 -16.934,16.934 -9.337,0 -16.934,-7.596 -16.934,-16.934 z" + inkscape:connector-curvature="0" /> + d="m 102.649,82.032 c 0,8.333 -6.755,15.087 -15.088,15.087 -8.333,0 -15.087,-6.754 -15.087,-15.087 0,-8.334 6.754,-15.088 15.087,-15.088 8.333,0 15.088,6.754 15.088,15.088 z" + inkscape:connector-curvature="0" /> + d="m 100.176,82.032 c 0,6.967 -5.647,12.614 -12.614,12.614 -6.966,0 -12.614,-5.647 -12.614,-12.614 0,-6.967 5.648,-12.615 12.614,-12.615 6.966,0 12.614,5.648 12.614,12.615 z" + inkscape:connector-curvature="0" /> + d="m 97.999,82.032 c 0,5.766 -4.671,10.438 -10.438,10.438 -5.766,0 -10.438,-4.672 -10.438,-10.438 0,-5.766 4.673,-10.439 10.438,-10.439 5.767,0 10.438,4.674 10.438,10.439 z" + inkscape:connector-curvature="0" /> + d="m 97.09,82.032 c 0,5.263 -4.264,9.528 -9.528,9.528 -5.264,0 -9.528,-4.266 -9.528,-9.528 0,-5.264 4.265,-9.529 9.528,-9.529 5.264,0 9.528,4.266 9.528,9.529 z" + inkscape:connector-curvature="0" /> + d="m 93.685,82.032 c 0,3.382 -2.741,6.123 -6.124,6.123 -3.38,0 -6.124,-2.741 -6.124,-6.123 0,-3.383 2.744,-6.124 6.124,-6.124 3.382,0 6.124,2.741 6.124,6.124 z" + inkscape:connector-curvature="0" /> + d="m 92.081,79.905 c 0,2.006 -2.024,3.632 -4.521,3.632 -2.495,0 -4.518,-1.626 -4.518,-3.632 0,-2.007 2.022,-3.634 4.518,-3.634 2.497,0 4.521,1.627 4.521,3.634 z" + a:adobe-blending-mode="screen" + inkscape:connector-curvature="0" /> + d="m 121.345,51.624 c 0.137,0.44 0.211,0.907 0.211,1.394 l 0,52.715 c 0,2.591 -2.1,4.691 -4.691,4.691 l -85.843,0 c -0.485,0 -0.952,-0.074 -1.393,-0.21 0.594,1.91 2.375,3.297 4.481,3.297 l 85.84,0 c 2.593,0 4.692,-2.1 4.692,-4.691 l 0,-52.716 c 0.002,-2.105 -1.385,-3.888 -3.297,-4.48 z" + a:adobe-blending-mode="multiply" + inkscape:connector-curvature="0" /> + d="m 31.807,61.8 c 0,-2.59 2.1,-4.691 4.691,-4.691 l 42.002,0 C 79.092,55.197 80.853,53.8 82.96,53.8 l 39.379,0 c 0.677,0 1.318,0.145 1.9,0.403 -0.729,-1.642 -2.373,-2.79 -4.288,-2.79 l -39.378,0 c -2.108,0 -3.867,1.397 -4.46,3.31 l -42.002,0 c -2.591,0 -4.691,2.101 -4.691,4.692 l 0,49.404 c 0,1.915 1.148,3.559 2.792,4.287 -0.259,-0.581 -0.405,-1.224 -0.405,-1.899 l 0,-49.407 z" + a:adobe-blending-mode="screen" + inkscape:connector-curvature="0" /> + d="m 80.573,50.992 c -2.128,0 -3.961,1.331 -4.716,3.31 -0.506,0 -41.747,0 -41.747,0 -2.818,0 -5.112,2.293 -5.112,5.114 l 0,49.404 c 0,2.82 2.293,5.113 5.112,5.113 l 85.84,0 c 2.82,0 5.113,-2.293 5.113,-5.113 l 0,-52.716 c 0,-2.819 -2.293,-5.112 -5.113,-5.112 l -39.377,0 z m -50.732,57.827 0,-49.404 c 0,-2.355 1.916,-4.271 4.27,-4.271 l 42.314,0 0.092,-0.296 c 0.558,-1.802 2.188,-3.014 4.057,-3.014 l 39.378,0 c 2.356,0 4.271,1.917 4.271,4.271 l 0,52.715 c 0,2.355 -1.914,4.271 -4.271,4.271 l -85.84,0 c -2.355,0 -4.271,-1.916 -4.271,-4.272 z" + inkscape:connector-curvature="0" /> diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xpm/zipcode.svg navit-0.5.0+dfsg.1/navit/xpm/zipcode.svg --- navit-0.5.0~svn5900+dfsg.1/navit/xpm/zipcode.svg 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xpm/zipcode.svg 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + ZIP + + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xslt/android.xslt navit-0.5.0+dfsg.1/navit/xslt/android.xslt --- navit-0.5.0~svn5900+dfsg.1/navit/xslt/android.xslt 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xslt/android.xslt 2016-01-02 22:29:50.000000000 +0000 @@ -35,6 +35,14 @@ + + + + @@ -57,10 +65,60 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + - 1 + + 1 + + + -2 + + + -1 + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xslt/map_sdcard_navitmap_bin.xslt navit-0.5.0+dfsg.1/navit/xslt/map_sdcard_navitmap_bin.xslt --- navit-0.5.0~svn5900+dfsg.1/navit/xslt/map_sdcard_navitmap_bin.xslt 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xslt/map_sdcard_navitmap_bin.xslt 2016-01-02 22:29:50.000000000 +0000 @@ -1,6 +1,6 @@ - + diff -Nru navit-0.5.0~svn5900+dfsg.1/navit/xslt/osd_minimum.xslt navit-0.5.0+dfsg.1/navit/xslt/osd_minimum.xslt --- navit-0.5.0~svn5900+dfsg.1/navit/xslt/osd_minimum.xslt 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/navit/xslt/osd_minimum.xslt 2016-01-02 22:29:50.000000000 +0000 @@ -4,13 +4,15 @@ - + - + - + - + + + diff -Nru navit-0.5.0~svn5900+dfsg.1/po/af.po.in navit-0.5.0+dfsg.1/po/af.po.in --- navit-0.5.0~svn5900+dfsg.1/po/af.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/af.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,29 +1,27 @@ -# Afrikaans translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Afrikaans translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Andre Hugo https://launchpad.net/~cortexhugo # KaZeR https://launchpad.net/~kazer # Kobus https://launchpad.net/~kobuswolf +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Stephan Wessels https://launchpad.net/~slwessels # Wimpie Hall https://launchpad.net/~gotek # mdhull https://launchpad.net/~mark-emsafrica - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:39+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Afrikaans \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: af\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -78,14 +76,6 @@ msgstr "sesde uitgang" #, c-format -msgid "%d m" -msgstr "%d meter" - -#, c-format -msgid "in %d m" -msgstr "na %d meter" - -#, c-format msgid "%d feet" msgstr "" @@ -94,14 +84,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d meter" - -#, c-format -msgid "in %d meters" -msgstr "na %d meter" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -110,14 +92,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d, %d kilometer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "na %d.%d kilometer" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -130,6 +104,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d meter" + +#, c-format +msgid "in %d meters" +msgstr "na %d meter" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d, %d kilometer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "na %d.%d kilometer" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "een kilometer" @@ -141,64 +131,72 @@ msgstr[0] "na een kilometer" msgstr[1] "na %d kilometer" -msgid "exit" -msgstr "afrit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" -msgid "into the ramp" -msgstr "na die afrit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sin die straat %s%s%s in" +msgid "%sinto %s%s%s" +msgstr "%sin die %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%sin die %s%s%s|" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sin die %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%sin die %s%s%s|" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sin die %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%sin die %s%s%s|" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sin die %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%sin die %s in" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "regs" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "links" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "maklik " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "skerp " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "regtig sterk " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "onbekend " - msgid "When possible, please turn around" msgstr "Draai asseblief om wanneer moontlik" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Volg die pad vir die volgende %s" + msgid "Enter the roundabout soon" msgstr "Gaan kortliks in die sirkel in" @@ -207,56 +205,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "verlaat dan die sirkel by die %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Verlaat die sirkel by die %1$s %2$s" +msgid "soon" +msgstr "kortliks" + +msgid "now" +msgstr "nou" + +msgid "then" +msgstr "dan" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Verlaat die sirkel by die %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Volg die pad vir die volgende %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "kortliks" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Neem die %1$s pad na %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "na %i paaie" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Neem die afrit %1$s %2$s %3$s" -msgid "now" -msgstr "nou" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Neem die afrit %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "by die afrit" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "regs" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "links" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "maklik " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "skerp " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "neem dan die %1$s pad na %2$s" +msgstr "" -msgid "error" -msgstr "fout" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Neem die %1$s pad na %2$s" + +#, c-format +msgid "after %i roads" +msgstr "na %i paaie" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Draai %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "draai dan %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "draai dan om" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Draai om %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "draai dan om" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Draai om %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "dan het jy jou bestemming bereik." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Jy het jou bestemming bereik %s" -msgid "then you have reached your destination." -msgstr "dan het jy jou bestemming bereik." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Afrit" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1316,11 +1434,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1457,6 +1577,12 @@ msgid "Opens address search dialog" msgstr "Toon adres soek skerm" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Stop Navigasie" @@ -1499,6 +1625,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1810,12 +2030,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2186,13 +2425,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2357,6 +2599,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2482,3 +2728,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "verlaat dan die sirkel by die %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ar.po.in navit-0.5.0+dfsg.1/po/ar.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ar.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ar.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,28 +1,26 @@ -# Arabic translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Arabic translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer # Magd Addin M. Almuntaser https://launchpad.net/~ttmtt-team +# dargirov https://launchpad.net/~dargirov # drsaudi https://launchpad.net/~mon7b6 # metehyi https://launchpad.net/~metehyi - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-11-10 01:24+0000\n" -"Last-Translator: metehyi \n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" +"Last-Translator: dargirov \n" "Language-Team: Arabic \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 && n % 100 <= 99 ? 4 : 5;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: ar\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -77,14 +75,6 @@ msgstr "المخرج السادس" #, c-format -msgid "%d m" -msgstr "%d م" - -#, c-format -msgid "in %d m" -msgstr "بعد %d متر" - -#, c-format msgid "%d feet" msgstr "%dقدم" @@ -93,14 +83,6 @@ msgstr "بعد %d قدم" #, c-format -msgid "%d meters" -msgstr "%d متر" - -#, c-format -msgid "in %d meters" -msgstr "بعد %d متر" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d أميال" @@ -109,14 +91,6 @@ msgstr "بعد %d.%d أميال" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d كلم" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "بعد %d%d كلم" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "مايل واحد" @@ -137,6 +111,22 @@ msgstr[5] "بعد %d أميال" #, c-format +msgid "%d meters" +msgstr "%d متر" + +#, c-format +msgid "in %d meters" +msgstr "بعد %d متر" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d كلم" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "بعد %d%d كلم" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "كلم واحد" @@ -156,30 +146,53 @@ msgstr[4] "بعد %d كلم" msgstr[5] "بعد %d كلم" -msgid "exit" -msgstr "خروج" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" -msgstr "إلى داخل الطريق المنحدر" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%s إلى داخل الشارع %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sإلى داخل %s%s%s|صفة الذكر" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sإلى داخل %s%s%s|صفة الأنثى" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sإلى داخل %s%s%s|غير محدد الجنس" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -187,92 +200,197 @@ msgid "%sinto the %s" msgstr "%s إلى داخل %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "إلى اليمين" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "إلى اليسار" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "بسهولة " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "بكل شدة " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "بشدة حادة " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "غير معروف " - msgid "When possible, please turn around" msgstr "حيث ممكن الرجاء اللف" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "تجاه %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "تابع الطريق لل- %s التالية" + msgid "Enter the roundabout soon" msgstr "قريباً الدخول إلى المستديرة" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "أدخل المسافة %s إلى المستديرة" +msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "ثم أخرج من المستديرة عند الــ%s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "أخرج من المستديرة عند الــ %1$s %2$s" + +msgid "soon" +msgstr "قريبا" + +msgid "now" +msgstr "الآن" +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "أخرج من المستديرة عند الــ %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "تابع الطريق لل- %s التالية" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "قريبا" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "خذ الطريق %1$s إلى ال%2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "بعد %i طرقات" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "الآن" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "إلى اليمين" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "إلى اليسار" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "بسهولة " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "بكل شدة " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "ثم خذ الطريق %1$s إلى ال- %2$s" +msgstr "" -msgid "error" -msgstr "خطء" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "خذ الطريق %1$s إلى ال%2$s" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "بعد %i طرقات" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "حوّل %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "ثم حوّل %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" -msgstr "لقد وصلت إلى هدفك %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" msgid "then you have reached your destination." msgstr "و بعدها تكون قد وصلت إلى هدفك" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "لقد وصلت إلى هدفك %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "خروج" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "الموقع" @@ -1331,11 +1449,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1472,6 +1592,12 @@ msgid "Opens address search dialog" msgstr "إفتح حوار البحث عن عنوان" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "قف الملاحة" @@ -1514,6 +1640,100 @@ msgid "Data" msgstr "المعطيات" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "ش." @@ -1825,12 +2045,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "الخرائط المنزلة" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "إلغاء" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "كامل القرة الأرضية" @@ -2201,13 +2440,16 @@ msgid "ready" msgstr "جاهز" -msgid "Error downloading map!" -msgstr "خطأ أثناء تنزيل الخريطة!" +msgid "Media selected for map storage is not available" +msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "لا يوجد مجال فارغ كافي" +msgid "Error downloading map!" +msgstr "خطأ أثناء تنزيل الخريطة!" + msgid "Error writing map!" msgstr "خطأ عند كتابة الخريطة!" @@ -2370,6 +2612,10 @@ #. Android resource: @strings/optionsmenu_backup_restore msgid "Backup / Restore" +msgstr "النسخ الاحتياطي والاستعادة" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" msgstr "" #. Android resource: @strings/map_delete @@ -2497,3 +2743,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "استعادة" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "ثم أخرج من المستديرة عند الــ%1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ast.po.in navit-0.5.0+dfsg.1/po/ast.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ast.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ast.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,21 @@ -# Asturian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Asturian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Xuacu Saturio https://launchpad.net/~xuacusk8 - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:39+0000\n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" "Last-Translator: Xuacu Saturio \n" "Language-Team: Asturian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: ast\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -73,14 +70,6 @@ msgstr "sesta salida" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "en %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -89,14 +78,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metros" - -#, c-format -msgid "in %d meters" -msgstr "en %d metros" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -105,14 +86,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d,%d quilómetros" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "en %d,%d quilómetros" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -125,6 +98,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metros" + +#, c-format +msgid "in %d meters" +msgstr "en %d metros" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d,%d quilómetros" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "en %d,%d quilómetros" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "un quilómetru" @@ -136,64 +125,72 @@ msgstr[0] "nun quilómetru" msgstr[1] "en %d quilómetros" -msgid "exit" -msgstr "salida" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "pal enllaz" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%s pa la cai %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s pal %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" +msgstr "%s pal %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s pa la %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" +msgstr "%s pa la %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s pal %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" +msgstr "%s pal %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%s pa la %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "drecha" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "izquierda" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "selemente " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "enforma " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "dafechu " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "desconocío " - msgid "When possible, please turn around" msgstr "Cuando seya posible, de la vuelta" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Siga pela carretera los siguientes %s" + msgid "Enter the roundabout soon" msgstr "Entre ceo na rotonda" @@ -202,56 +199,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "llueu dexe la rotonda pola %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Dexe la rotonda pola %1$s %2$s" +msgid "soon" +msgstr "aína" + +msgid "now" +msgstr "agora" + +msgid "then" +msgstr "llueu" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Dexe la rotonda pola %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Siga pela carretera los siguientes %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "aína" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Tome la carretera %1$s dica %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "tres %i carreteres" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "agora" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Tome la salida %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "drecha" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "izquierda" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "selemente " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "enforma " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "llueu tome la carretera %1$s dica %2$s" +msgstr "" -msgid "error" -msgstr "error" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Tome la carretera %1$s dica %2$s" + +#, c-format +msgid "after %i roads" +msgstr "tres %i carreteres" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Xire %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "llueu xire %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "llueu de la vuelta" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "De la vuelta %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "llueu de la vuelta" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "De la vuelta %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "siga" +msgid "then you have reached your destination." +msgstr "entós llegará al destín." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Llegó al destín %s" -msgid "then you have reached your destination." -msgstr "entós llegará al destín." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Salida" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1311,11 +1428,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1452,6 +1571,12 @@ msgid "Opens address search dialog" msgstr "Abre'l diálogu de guetar direición" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Parar navegación" @@ -1494,6 +1619,100 @@ msgid "Data" msgstr "Datos" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1805,12 +2024,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2181,13 +2419,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2352,6 +2593,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2477,3 +2722,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "llueu dexe la rotonda pola %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/be.po.in navit-0.5.0+dfsg.1/po/be.po.in --- navit-0.5.0~svn5900+dfsg.1/po/be.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/be.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,24 @@ -# Belarusian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Belarusian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Anatoli Putseyeu https://launchpad.net/~st-shadow-by - +# KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2011-10-11 19:19+0000\n" -"Last-Translator: Anatoli Putseyeu \n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Belarusian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: be\n" msgid "Running from source directory\n" msgstr "" @@ -73,14 +72,6 @@ msgstr "шосты выхад" #, c-format -msgid "%d m" -msgstr "" - -#, c-format -msgid "in %d m" -msgstr "праз %d м" - -#, c-format msgid "%d feet" msgstr "" @@ -89,14 +80,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d метраў" - -#, c-format -msgid "in %d meters" -msgstr "праз %d метраў" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -105,14 +88,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d кіламетраў" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "праз %d.%d кіламетраў" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -125,10 +100,27 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d метраў" + +#, c-format +msgid "in %d meters" +msgstr "праз %d метраў" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d кіламетраў" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "праз %d.%d кіламетраў" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d кіламетр" +msgstr[1] "%d кіламетраў" +msgstr[2] "%d кіламетраў" #, c-format msgid "in one kilometer" @@ -136,30 +128,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" -msgstr "выхад" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -167,92 +182,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "направа" +msgid "When possible, please turn around" +msgstr "Развярніцеся, калі будзе магчымасць" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "налева" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "мацней " +msgid "Enter the roundabout soon" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" -msgstr "Развярніцеся, калі будзе магчымасць" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" +msgstr "скора" + +msgid "now" +msgstr "зараз" + +msgid "then" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" -msgstr "скора" +msgid "on your left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" -msgstr "зараз" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "направа" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "налева" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "мацней " #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" -msgstr "памылка" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" +msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "Развярніцеся %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "Развярніцеся %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Выхад" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "Размяшчэнне" @@ -1311,11 +1431,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1452,6 +1574,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1494,6 +1622,100 @@ msgid "Data" msgstr "Дадзеныя" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1805,12 +2027,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2181,13 +2422,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2348,6 +2592,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2473,3 +2721,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/bg.po.in navit-0.5.0+dfsg.1/po/bg.po.in --- navit-0.5.0~svn5900+dfsg.1/po/bg.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/bg.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ -# Bulgarian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Bulgarian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Alex Stanev https://launchpad.net/~realender @@ -8,21 +8,17 @@ # Lyudmil Bonev https://launchpad.net/~bonev-j # MalamiR https://launchpad.net/~mamut-killer - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:39+0000\n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" "Last-Translator: Alex Stanev \n" "Language-Team: Bulgarian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: bg\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -78,14 +74,6 @@ msgstr "шестия изход" #, c-format -msgid "%d m" -msgstr "%d м" - -#, c-format -msgid "in %d m" -msgstr "след %d м" - -#, c-format msgid "%d feet" msgstr "" @@ -94,14 +82,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d метра" - -#, c-format -msgid "in %d meters" -msgstr "след %d метра" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -110,14 +90,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d километра" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "след %d.%d километра" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -130,6 +102,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d метра" + +#, c-format +msgid "in %d meters" +msgstr "след %d метра" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d километра" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "след %d.%d километра" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "един километър" @@ -141,122 +129,250 @@ msgstr[0] "след един километър" msgstr[1] "след %d километра" -msgid "exit" -msgstr "изход" - -msgid "into the ramp" -msgstr "на рампата" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sпо улица %s%s%s" +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%1$sonto %2$s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%1$sonto %2$s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%1$sonto %2$s|feminine form" msgstr "" -#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s" +msgid "%1$sonto %2$s|neuter form" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "надясно" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "на рампата" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "наляво" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "%sпо улица %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "леко " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%sпо улица %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "силно " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%sпо улица %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "наистина силно " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "непознат " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%sпо улица %s%s%s" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "" msgid "When possible, please turn around" msgstr "Когато е възможно обърнете" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Следвайте пътя през следващите %s" + msgid "Enter the roundabout soon" msgstr "Скоро навлизате в кръгово" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" +msgstr "Навлизате в кръгово %s" + +msgid "then enter the roundabout" msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "след това излезте от кръговото на %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Излезте от кръговото на %1$s %2$s" + +msgid "soon" +msgstr "скоро" +msgid "now" +msgstr "сега" + +msgid "then" +msgstr "след това" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Излезте от кръговото на %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Следвайте пътя през следващите %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "скоро" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Тръгнете по %1$s път към %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "след %i пресечки" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "сега" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "надясно" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "наляво" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "леко " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "силно " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "тогава хванете пътя %1$s към %2$s" +msgstr "" -msgid "error" -msgstr "грешка" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Тръгнете по %1$s път към %2$s" + +#, c-format +msgid "after %i roads" +msgstr "след %i пресечки" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Завийте %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "тогава завийте %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "след това обърнете" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Обърнете %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "след това обърнете" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Обърнете %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "след това пристигате на местоназначението" +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Достигнахте до целта %s" -msgid "then you have reached your destination." -msgstr "след това пристигате на местоназначението" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Изход" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1316,11 +1432,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1457,6 +1575,12 @@ msgid "Opens address search dialog" msgstr "Отваря прозорец Търсене на адрес" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Спри Навигацията" @@ -1499,6 +1623,100 @@ msgid "Data" msgstr "Данни" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "С" @@ -1810,12 +2028,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2186,13 +2423,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2357,6 +2597,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2482,3 +2726,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "след това излезте от кръговото на %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/bs.po.in navit-0.5.0+dfsg.1/po/bs.po.in --- navit-0.5.0~svn5900+dfsg.1/po/bs.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/bs.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,24 @@ -# Bosnian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Bosnian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: +# KaZeR https://launchpad.net/~kazer # Kenan https://launchpad.net/~kahrickenan - +# Michael von Glasow https://launchpad.net/~michael-vonglasow msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2012-01-15 18:27+0000\n" -"Last-Translator: Kenan \n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Bosnian \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-Launchpad-Export-Date: 2014-08-08 22:21+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: bs\n" msgid "Running from source directory\n" msgstr "" @@ -73,14 +72,6 @@ msgstr "" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "u %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -89,14 +80,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metara" - -#, c-format -msgid "in %d meters" -msgstr "u %d metara" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -105,14 +88,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometara" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "u %d.%d kilometara" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -125,6 +100,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metara" + +#, c-format +msgid "in %d meters" +msgstr "u %d metara" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometara" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "u %d.%d kilometara" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d kilometar" @@ -138,30 +129,53 @@ msgstr[1] "u %d kilometara" msgstr[2] "u %d kilometara" -msgid "exit" -msgstr "izlaz" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "u rampu" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -169,92 +183,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" +msgid "on your left" +msgstr "" + +msgid "on your right" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Izlaz" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1313,11 +1432,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1454,6 +1575,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1496,6 +1623,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1807,12 +2028,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2183,13 +2423,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2350,6 +2593,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2475,3 +2722,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ca.po.in navit-0.5.0+dfsg.1/po/ca.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ca.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ca.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,34 +1,31 @@ -# Catalan translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Catalan translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Ferran Roig https://launchpad.net/~ferro9 # Frans https://launchpad.net/~francesc-galbany +# Joan Montané https://launchpad.net/~jmontane # KaZeR https://launchpad.net/~kazer # Marc Coll Carrillo https://launchpad.net/~marc-coll-carrillo # Sergi Gomis https://launchpad.net/~paloky3 # Xevib https://launchpad.net/~xbarnada # beamspot https://launchpad.net/~benrouravkg -# jmontane https://launchpad.net/~jmontane # juliwoodbcn https://launchpad.net/~julianlozano # kualsevol https://launchpad.net/~ojuanv # peremayol@gmail.com https://launchpad.net/~peremayol - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2014-07-09 18:11+0000\n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" "Last-Translator: Sergi Gomis \n" "Language-Team: Catalan \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: ca\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -83,14 +80,6 @@ msgstr "sisena sortida" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "d'aquí a %d m" - -#, c-format msgid "%d feet" msgstr "%d peus" @@ -99,14 +88,6 @@ msgstr "en %d peus" #, c-format -msgid "%d meters" -msgstr "%d metres" - -#, c-format -msgid "in %d meters" -msgstr "d'aquí a %d metres" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d milles" @@ -115,14 +96,6 @@ msgstr "en %d.%d milles" #, c-format -msgid "%d.%d kilometers" -msgstr "%d,%d quilòmetres" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "d'aquí a %d,%d quilòmetres" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "una milla" @@ -135,6 +108,22 @@ msgstr[1] "en %d milles" #, c-format +msgid "%d meters" +msgstr "%d metres" + +#, c-format +msgid "in %d meters" +msgstr "d'aquí a %d metres" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d,%d quilòmetres" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "d'aquí a %d,%d quilòmetres" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "un quilòmetre" @@ -146,122 +135,250 @@ msgstr[0] "d'aquí a un quilòmetre" msgstr[1] "d'aquí a %d quilòmetres" -msgid "exit" -msgstr "surt" - -msgid "into the ramp" -msgstr "a la sortida" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s al carrer %s %s %s" +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s al %s %s %s" +msgid "%1$sonto %2$s" +msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s a la %s %s %s" +msgid "%1$sonto %2$s|masculine form" +msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s a %s %s %s" +msgid "%1$sonto %2$s|feminine form" +msgstr "" -#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s" -msgstr "%s cap a la %s" +msgid "%1$sonto %2$s|neuter form" +msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "dreta" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "esquerra" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "%sal carrer %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "fàcilment " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%sal %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "fortament " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%sa la %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%sa %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "realment fort " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "desconegut " +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "%scap a la %s" msgid "When possible, please turn around" msgstr "Quan sigui possible, doneu mitja volta" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "cap a %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Seguiu per la carretera durant els propers %s" + msgid "Enter the roundabout soon" msgstr "Entreu a la rotonda vinent" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" +msgstr "Entreu a la rotonda %s" + +msgid "then enter the roundabout" msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "aleshores deixeu la rotonda a la %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Deixeu la rotonda a la %1$s %2$s" + +msgid "soon" +msgstr "aviat" + +msgid "now" +msgstr "ara" +msgid "then" +msgstr "aleshores" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Deixeu la rotonda a la %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Seguiu per la carretera durant els propers %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "aviat" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Preneu el %1$s carrer a la %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "a l'esquerra" +msgid "on your right" +msgstr "a la dreta" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "després de %i carrers" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Preneu la sortida %1$s %2$s %3$s" -msgid "now" -msgstr "ara" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Preneu la sortida %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "a l'intersecció" + +msgid "at exit" +msgstr "a la sortida" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "dreta" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "esquerra" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "fàcilment " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "fortament " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "després, agafeu la %1$s carretera a la %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Preneu el %1$s carrer a la %2$s" -msgid "error" -msgstr "error" +#, c-format +msgid "after %i roads" +msgstr "després de %i carrers" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Gireu %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "després, gireu %1$s%2$s%3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "després, doneu mitja volta" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Doneu mitja volta %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "després, doneu mitja volta" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Doneu mitja volta %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "seguiu" +msgid "then you have reached your destination." +msgstr "aleshores heu arribat a destí" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Heu arribat a la destinació %s" -msgid "then you have reached your destination." -msgstr "aleshores heu arribat a destí" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Intersecció" + +msgid "Exit" +msgstr "Sortida" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1321,11 +1438,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1462,6 +1581,12 @@ msgid "Opens address search dialog" msgstr "Obre el diàleg de cercar adreces" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Atura la navegació" @@ -1504,6 +1629,100 @@ msgid "Data" msgstr "Dades" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "Jutjats" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1815,12 +2034,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2191,13 +2429,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2362,6 +2603,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2487,3 +2732,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "aleshores deixeu la rotonda a la %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ckb.po.in navit-0.5.0+dfsg.1/po/ckb.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ckb.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ckb.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,15 +1,13 @@ -# Kurdish (Sorani) translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Kurdish (Sorani) translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # kosar https://launchpad.net/~kosar-belana - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2013-06-22 23:00+0000\n" "Last-Translator: kosar \n" "Language-Team: Kurdish (Sorani) \n" @@ -17,8 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: ckb\n" msgid "Running from source directory\n" msgstr "" @@ -72,35 +69,39 @@ msgstr "" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" +msgid "%d meters" msgstr "" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -112,18 +113,6 @@ msgstr "" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -135,30 +124,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -166,92 +178,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" +msgid "on your left" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1618,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2717,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/cs.po.in navit-0.5.0+dfsg.1/po/cs.po.in --- navit-0.5.0~svn5900+dfsg.1/po/cs.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/cs.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,10 +1,11 @@ -# translation of navit_cs.po to Čeština -# Copyright (C) 2006-2014 The Navit Team +# Čeština translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # 72ka https://launchpad.net/~2hp # Aleš Janda https://launchpad.net/~kyblicek # Ivan Kološ https://launchpad.net/~ivan-kolos +# Jakuje https://launchpad.net/~jakuje # MMlosh https://launchpad.net/~mmlosh # Mike Crash https://launchpad.net/~mike-mikecrash # T.lama https://launchpad.net/~klacl @@ -15,22 +16,18 @@ # stritek https://launchpad.net/~stritek # talmik https://launchpad.net/~mikatom - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-12-09 13:46+0000\n" -"Last-Translator: MMlosh \n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" +"Last-Translator: Jakuje \n" "Language-Team: Čeština\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-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" -"Language: \n" +"Language: cs\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -85,14 +82,6 @@ msgstr "šestý výjezd" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "za %d m" - -#, c-format msgid "%d feet" msgstr "%d stop" @@ -101,14 +90,6 @@ msgstr "za %d stop" #, c-format -msgid "%d meters" -msgstr "%d metrů" - -#, c-format -msgid "in %d meters" -msgstr "za %d metrů" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d mílí" @@ -117,14 +98,6 @@ msgstr "za %d.%d mílí" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometrů" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "za %d.%d kilometrů" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "%d míle" @@ -139,6 +112,22 @@ msgstr[2] "za %d mílí" #, c-format +msgid "%d meters" +msgstr "%d metrů" + +#, c-format +msgid "in %d meters" +msgstr "za %d metrů" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometrů" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "za %d.%d kilometrů" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d kilometr" @@ -152,30 +141,53 @@ msgstr[1] "za %d kilometry" msgstr[2] "za %d kilometrů" -msgid "exit" -msgstr "ukončit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$sna %2$s%3$s%4$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$sna %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$sna %2$s" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$sna %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$sna %2$s" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "na přivadeč" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sdo ulice %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sdo %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s do %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sdo %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sdo %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sdo %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -183,91 +195,196 @@ msgid "%sinto the %s" msgstr "%sna %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "vpravo" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "vlevo" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "mírně " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "silně " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "opravdu silně " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "neurčitě " - msgid "When possible, please turn around" msgstr "Až to bude možné, otočte se" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Pokračujte po cestě dalších %s" + msgid "Enter the roundabout soon" msgstr "Brzy najeďte na kruhový objezd" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "Najeďte na kruhový objezd %s" +msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "pak sjeďte na %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Sjeďte na %1$s %2$s" + +msgid "soon" +msgstr "brzy" + +msgid "now" +msgstr "nyní" + +msgid "then" +msgstr "pak" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Sjeďte na %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Pokračujte po cestě dalších %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "brzy" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Jeďte na %1$s silnici %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "za %i silnice" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "nyní" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "vpravo" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "vlevo" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "mírně " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "silně " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "pak jeďte %1$s silnici %2$s" +msgstr "" -msgid "error" -msgstr "chyba" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Jeďte na %1$s silnici %2$s" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "za %i silnice" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Zabočte %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "pak odbočte %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "pak otočte se" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Otočte se %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "pak otočte se" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Otočte se %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "pak budete v cíli." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "%s dorazíte do cíle" -msgid "then you have reached your destination." -msgstr "pak budete v cíli." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Ukončit" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1327,19 +1444,14 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"Použití navit:\n" -"navit [volby] [konfigurační soubor]\n" -"\t-c : Použijte jako konfigurační soubor\n" -"\t-d : Nastavení souhrnné výstupní ladící úrovně v (0-3). Přepíše " -"nastavení z konfiguračního souboru.\n" -"\t-h: Zobrazí tuto nápovědu a skončí.\n" -"\t-v: Zobrazí verzy a skončí.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1355,7 +1467,7 @@ #, c-format msgid "Error: No configuration found in config file '%s'\n" -msgstr "" +msgstr "Chyba: Nenalezena žádná konfigurace v konfiguračním souboru '%s'\n" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" @@ -1477,6 +1589,12 @@ msgid "Opens address search dialog" msgstr "Otevře vyhledávání adres" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "Otevře dialog vyhledávání POI" + msgid "_Stop Navigation" msgstr "Přestat navigovat" @@ -1519,6 +1637,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "Lékárna" + +msgid "Restaurant" +msgstr "Restaurace" + +msgid "Restaurant. Fast food" +msgstr "Restaurace. Rychlé občerstvení" + +msgid "Hotel" +msgstr "Hotel" + +msgid "Car parking" +msgstr "Parkoviště" + +msgid "Fuel station" +msgstr "Čerpací stanice" + +msgid "Bank" +msgstr "Banka" + +msgid "Hospital" +msgstr "Nemocnice" + +msgid "Cinema" +msgstr "Kino" + +msgid "Train station" +msgstr "Vlaková stanice" + +msgid "School" +msgstr "Škola" + +msgid "Police" +msgstr "Policie" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "Taxi" + +msgid "Shopping" +msgstr "Nakupování" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Nastav cíl na %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Posuň mapu na %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "Nastav další zastavení na %ld, %ld \n" + +msgid "POI search" +msgstr "Vyhledávání POI" + +msgid "Select a category" +msgstr "Vyberte kategorii" + +msgid "Select a distance to look for (km)" +msgstr "Vyberte vzdálenost ve které hledat (km)" + +msgid "Select a POI" +msgstr "Vyberte POI" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Kategorie" + +msgid "Direction" +msgstr "Směr" + +msgid "Distance(m)" +msgstr "Vzdálenost (m)" + +msgid "Name" +msgstr "Název" + +msgid "Visit Before" +msgstr "Navštívit před" + msgid "N" msgstr "S" @@ -1736,7 +1948,7 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Zeměpisná délka a šířka" msgid "Enter coordinates, for example:" msgstr "Zadejte souřadnice, například:" @@ -1830,12 +2042,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Mapová data (c) přispěvatelé OpenStreetMap, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "Stažené mapy" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "Storno" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "Celá planeta" @@ -2206,13 +2437,16 @@ msgid "ready" msgstr "mapa připravena" -msgid "Error downloading map!" -msgstr "Chyba při stahování mapy!" +msgid "Media selected for map storage is not available" +msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Není dostatek volného místa" +msgid "Error downloading map!" +msgstr "Chyba při stahování mapy!" + msgid "Error writing map!" msgstr "Chyba při zápisu mapy!" @@ -2392,6 +2626,10 @@ msgid "Backup / Restore" msgstr "Zálohovat / Obnovit" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Smazat tuto mapu?" @@ -2519,3 +2757,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Obnova" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "pak sjeďte na %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/cy.po.in navit-0.5.0+dfsg.1/po/cy.po.in --- navit-0.5.0~svn5900+dfsg.1/po/cy.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/cy.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,24 @@ -# Welsh translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Welsh translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: +# Michael von Glasow https://launchpad.net/~michael-vonglasow +# Padi Phillips https://launchpad.net/~padi # Simon Hewison https://launchpad.net/~simon-hewison-6 - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-02-19 14:30+0000\n" -"Last-Translator: Simon Hewison \n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Welsh \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 != 8 && n != 11) ? " "2 : 3;\n" -"X-Launchpad-Export-Date: 2014-08-08 22:21+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: cy\n" msgid "Running from source directory\n" msgstr "" @@ -73,35 +72,39 @@ msgstr "allanfa chweched" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" +msgid "%d meters" msgstr "" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -113,18 +116,6 @@ msgstr "" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "un cilometr" @@ -137,33 +128,54 @@ msgid_plural "in %d kilometers" msgstr[0] "" msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgid "exit" -msgstr "allanfa" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -171,92 +183,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" +msgstr "Dilynwch yr heol am y %s nesaf" + +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +msgid "then enter the roundabout" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "When possible, please turn around" +msgid "soon" +msgstr "yn fuan" + +msgid "now" +msgstr "nawr" + +msgid "then" msgstr "" -msgid "Enter the roundabout soon" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "then merge%1$s|left" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Leave the roundabout at the %s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "Follow the road for the next %s" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "soon" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "then continue straight%1$s" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "after %i roads" +msgid "Continue straight %1$s%2$s%3$s" msgstr "" -msgid "now" -msgstr "nawr" +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "yn cryf " #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Allanfa" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1315,11 +1432,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1456,6 +1575,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1498,6 +1623,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1809,12 +2028,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2185,13 +2423,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2352,6 +2593,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2477,3 +2722,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/da.po.in navit-0.5.0+dfsg.1/po/da.po.in --- navit-0.5.0~svn5900+dfsg.1/po/da.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/da.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ -# Danish translation for Navit -# Copyright (C) 2006-2014 The Navit Team +# Danish translation for Navit translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Fennek https://launchpad.net/~ng-fennek @@ -12,21 +12,18 @@ # Tomas Groth https://launchpad.net/~tomasgroth # Uffe Kjems https://launchpad.net/~uffekjems - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:40+0000\n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" "Last-Translator: Lasse Luttermann \n" "Language-Team: Glenn Sommer \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-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: da\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -81,14 +78,6 @@ msgstr "sjette afkørsel" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "om %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -97,14 +86,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d meter" - -#, c-format -msgid "in %d meters" -msgstr "om %d meter" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -113,14 +94,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "om %d.%d kilometer" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -133,6 +106,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d meter" + +#, c-format +msgid "in %d meters" +msgstr "om %d meter" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "om %d.%d kilometer" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "én kilometer" @@ -144,122 +133,250 @@ msgstr[0] "om én kilometer" msgstr[1] "om %d kilometer" -msgid "exit" -msgstr "afkørsel" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "op på rampen" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s ind i gaden %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sind i %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s ind i %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sind i %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s ind i %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sind i %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s ind i %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sind i %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%sind i %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "højre" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "venstre" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "blødt " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "skarpt " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "meget kraftigt " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "ukendt " - msgid "When possible, please turn around" msgstr "Når muligt, vend venligst om" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Følg vejen de næste %s" + msgid "Enter the roundabout soon" msgstr "Kør snart ind i rundkørslen" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" +msgstr "Kør ind i rundkørslen %s" + +msgid "then enter the roundabout" msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "forlad så rundkørslen ved den %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Forlad rundkørslen ved den %1$s %2$s" + +msgid "soon" +msgstr "snart" + +msgid "now" +msgstr "nu" +msgid "then" +msgstr "så" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Forlad rundkørslen ved den %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Følg vejen de næste %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "snart" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Tag den %1$s vej til %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "efter %i veje" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Tag den afkørslen %1$s %2$s %3$s" -msgid "now" -msgstr "nu" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Tag den afkørslen %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "højre" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "venstre" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "blødt " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "skarpt " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "tag så den %1$s vej til %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Tag den %1$s vej til %2$s" -msgid "error" -msgstr "fejl" +#, c-format +msgid "after %i roads" +msgstr "efter %i veje" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Drej %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "drej så %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "vend så om" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Vend om %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "vend så om" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Vend om %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "følg" +msgid "then you have reached your destination." +msgstr "og så ankommer du til din destination" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Du er fremme ved destinationen %s" -msgid "then you have reached your destination." -msgstr "og så ankommer du til din destination" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Motorvejskryds" + +msgid "Exit" +msgstr "Afkørsel" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1319,11 +1436,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1460,6 +1579,12 @@ msgid "Opens address search dialog" msgstr "Åbner adressesøgning" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Stop Navigation" @@ -1502,6 +1627,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1813,12 +2032,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2189,13 +2427,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2360,6 +2601,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2485,3 +2730,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "forlad så rundkørslen ved den %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/de_CH.po.in navit-0.5.0+dfsg.1/po/de_CH.po.in --- navit-0.5.0~svn5900+dfsg.1/po/de_CH.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/de_CH.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,14 +1,12 @@ -# German (Switzerland) translation for navit -# Copyright (C) 2006-2014 The Navit Team +# German (Switzerland) translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" "PO-Revision-Date: 2010-05-18 08:49+0000\n" "Last-Translator: \n" "Language-Team: German (Switzerland) \n" @@ -16,9 +14,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" -"Language: \n" +"Language: de_CH\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -73,35 +69,39 @@ msgstr "" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" +msgid "%d meters" msgstr "" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -113,18 +113,6 @@ msgstr "" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -136,30 +124,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -167,92 +178,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" +msgid "on your left" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1311,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1452,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1494,6 +1618,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1805,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2181,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2348,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2473,3 +2717,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/de.po.in navit-0.5.0+dfsg.1/po/de.po.in --- navit-0.5.0~svn5900+dfsg.1/po/de.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/de.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,8 +1,9 @@ # German translations for navit -# Copyright (C) 2006-2014 The Navit Team +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Achim Behrens https://launchpad.net/~k1l +# Artem Anufrij https://launchpad.net/~artem-anufrij # Bernhard Reiter https://launchpad.net/~ockham-razor # Christian Moll https://launchpad.net/~christian-chrmoll # Clemens Kiener https://launchpad.net/~clemens-kiener @@ -17,13 +18,16 @@ # Lars Hennig https://launchpad.net/~elhennig # Lukas Bögelein https://launchpad.net/~lukas-boegelein # MUrks https://launchpad.net/~tabstop +# Manuel Hohmann https://launchpad.net/~mhohmann +# Mathias Klein https://launchpad.net/~ma-klein +# Paulodile https://launchpad.net/~stuff4tschaka # Roadrunner IN https://launchpad.net/~online +# Robotaxi https://launchpad.net/~robotaxi # Roschkor https://launchpad.net/~bound-one2000 # S.E. https://launchpad.net/~stephan-evert # Stefan Sordon https://launchpad.net/~stefan-sordon # Thuttle https://launchpad.net/~archibald-thuttle # Tobias Bannert https://launchpad.net/~toba -# Tschaka https://launchpad.net/~stuff4tschaka # Usul https://launchpad.net/~usul1 # everyone https://launchpad.net/~anonymus1338 # lopho https://launchpad.net/~lopho @@ -32,21 +36,18 @@ # spaetz https://launchpad.net/~spaetz # vsandre https://launchpad.net/~riedel-andre - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-12-12 16:07+0000\n" -"Last-Translator: Martin Schaller \n" +"PO-Revision-Date: 2015-09-14 07:17+0000\n" +"Last-Translator: Mathias Klein \n" "Language-Team: Martin Schaller \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-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: de\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -101,36 +102,40 @@ msgstr "sechsten Ausfahrt" #, c-format -msgid "%d m" -msgstr "%d m" +msgid "%d feet" +msgstr "%d Fuss" #, c-format -msgid "in %d m" -msgstr "in %d m" +msgid "in %d feet" +msgstr "In %d Fuss" #, c-format -msgid "%d feet" -msgstr "%d Fuss" +msgid "%d.%d miles" +msgstr "%d,%d Meilen" #, c-format -msgid "in %d feet" -msgstr "in %d Fuss" +msgid "in %d.%d miles" +msgstr "in %d,%d Meilen" #, c-format -msgid "%d meters" -msgstr "%d Meter" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "eine Meile" +msgstr[1] "%d Meilen" #, c-format -msgid "in %d meters" -msgstr "In %d Metern" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "In einer Meile" +msgstr[1] "In %d Meilen" #, c-format -msgid "%d.%d miles" -msgstr "%d.%d Meilen" +msgid "%d meters" +msgstr "%d Meter" #, c-format -msgid "in %d.%d miles" -msgstr "in %d.%d Meilen" +msgid "in %d meters" +msgstr "In %d Metern" #, c-format msgid "%d.%d kilometers" @@ -141,18 +146,6 @@ msgstr "In %d,%d Kilometern" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "eine Meile" -msgstr[1] "%d Meilen" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "in einer Meile" -msgstr[1] "in %d Meilen" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "einen Kilometer" @@ -164,30 +157,53 @@ msgstr[0] "In einem Kilometer" msgstr[1] "In %d Kilometern" -msgid "exit" -msgstr "Ausfahrt" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$sauf die %2$s%3$s%4$s" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$sauf die Straße %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$sauf den %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$sauf die %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$sauf das %2$s" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "auf die Auffahrt" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%sauf die Straße %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sauf den %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sauf die %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sauf das %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -195,34 +211,19 @@ msgid "%sinto the %s" msgstr "%sauf die %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "rechts" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "links" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "leicht " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "scharf " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "scharf " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "unbekannt " - # msgid "When possible, please turn around" msgstr "Wenn möglich, bitte wenden" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "Richtung %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Dem Straßenverlauf %s folgen" + msgid "Enter the roundabout soon" msgstr "Demnächst in den Kreisverkehr einfahren" @@ -231,57 +232,176 @@ msgid "Enter the roundabout %s" msgstr "%s in den Kreisverkehr einfahren" +msgid "then enter the roundabout" +msgstr "dann in den Kreisverkehr einfahren" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "dann verlassen Sie den Kreisverkehr an der %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Verlassen Sie den Kreisverkehr an der %1$s %2$s" + +msgid "soon" +msgstr "Demnächst" + +msgid "now" +msgstr "Jetzt" + +msgid "then" +msgstr "dann" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Den Kreisverkehr an der %s verlassen" +msgid "then merge%1$s|right" +msgstr "dann%1$s auffahren" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Dem Straßenverlauf %s folgen" +msgid "Merge %1$s%2$s|right" +msgstr "Fahren Sie %1$s%2$s auf" -msgid "soon" -msgstr "Demnächst" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "dann%1$s auffahren" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Die %1$s Straße %2$s abbiegen" +msgid "Merge %1$s%2$s|left" +msgstr "Fahren Sie %1$s%2$s auf" +msgid "on your left" +msgstr "links" + +msgid "on your right" +msgstr "rechts" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "nach %i Straßen" +msgid "Take exit %1$s %2$s %3$s" +msgstr "%3$s nehmen Sie %2$s die Ausfahrt %1$s" -msgid "now" -msgstr "Jetzt" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "%2$s nehmen Sie %1$s die Ausfahrt %3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "am Autobahnknoten" + +msgid "at exit" +msgstr "an der Ausfahrt" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "dann%1$s geradeaus fahren" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "%1$s%2$s geradeaus fahren%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "dann rechts halten%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "%1$s rechts halten%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "dann links halten%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "%1$s links halten%2$s%3$s" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "rechts" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "links" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "leicht " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "scharf " #, c-format msgid "then take the %1$s road to the %2$s" msgstr "dann die %1$s Straße %2$s abbiegen" -msgid "error" -msgstr "Fehler" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Die %1$s Straße %2$s abbiegen" + +#, c-format +msgid "after %i roads" +msgstr "nach %i Straßen" -# c-format -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "%3$s %1$s%2$s abbiegen%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "dann %3$s %1$s%2$s abbiegen%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "dann wenden" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Wenden Sie %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "dann wenden" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Wenden Sie %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "folgen" +msgid "then you have reached your destination." +msgstr "dann haben Sie Ihr Ziel erreicht." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" -msgstr "Sie haben Ihr Ziel %s erreicht" +msgstr "%s haben Sie Ihr Ziel erreicht" -msgid "then you have reached your destination." -msgstr "dann haben Sie Ihr Ziel erreicht." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Autobahnknoten" + +msgid "Exit" +msgstr "Ausfahrt" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1343,19 +1463,24 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"navit Benutzung:\n" -"navit [Optionen] [Konfigdatei]\n" -"\t-c : als Konfigdatei benutzen\n" -"\t-d : Den globalen Debug-Level auf (0-3) setzen. Überschreibt die " -"Einstellung aus der Konfigurationsdatei.\n" -"\t-h: Diesen Text ausgeben und das Programm beenden.\n" -"\t-v: Die Version ausgeben und das Programm beenden.\n" +"navit Verwendung:\n" +"navit [Option] [configfile]\n" +"\t-c : benutze als Konfigurationsdatei, anstatt der " +"Standardkonfigurationsdatei.\n" +"\t-d : setze den globalen debug-level auf (0=Fehler, 1=Warnung, " +"2=Info, 3=Debug).\n" +"\tEinstellungen der Konfigurationsdatei werden weiterhin gültig sein, wenn " +"sie einen höheren Wert angeben.\n" +"\t-h: zeige diesen Hilfetext und beende.\n" +"\t-v: zeige die Version und beende.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1371,7 +1496,7 @@ #, c-format msgid "Error: No configuration found in config file '%s'\n" -msgstr "" +msgstr "Fehler: Keine Konfiguration in der Datei '%s' gefunden\n" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" @@ -1494,6 +1619,12 @@ msgid "Opens address search dialog" msgstr "Öffnet Adresssuche-Dialog" +msgid "_POI search" +msgstr "_POI Suche" + +msgid "Opens POI search dialog" +msgstr "Öffnet POI Suche" + msgid "_Stop Navigation" msgstr "Navigation be_enden" @@ -1537,6 +1668,100 @@ msgid "Data" msgstr "Daten" +msgid "Pharmacy" +msgstr "Apotheke" + +msgid "Restaurant" +msgstr "Restaurant" + +msgid "Restaurant. Fast food" +msgstr "Fast-Food Restaurant" + +msgid "Hotel" +msgstr "Hotel" + +msgid "Car parking" +msgstr "Parkplatz" + +msgid "Fuel station" +msgstr "Tankstelle" + +msgid "Bank" +msgstr "Bank" + +msgid "Hospital" +msgstr "Krankenhaus" + +msgid "Cinema" +msgstr "Kino" + +msgid "Train station" +msgstr "Bahnhof" + +msgid "School" +msgstr "Schule" + +msgid "Police" +msgstr "Polizei" + +msgid "Justice" +msgstr "Gericht" + +msgid "Taxi" +msgstr "Taxi" + +msgid "Shopping" +msgstr "Einkaufen" + +msgid "Distance from screen center (km)" +msgstr "Entfernung vom Bildschirmmittelpunkt (km)" + +#, c-format +msgid "POI %s. %s" +msgstr "POI %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Setze Ziel auf %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Setze Karte auf %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "POI Suche" + +msgid "Select a category" +msgstr "Eine Kategorie auswählen" + +msgid "Select a distance to look for (km)" +msgstr "Wählen Sie eine Suchdistanz (km)" + +msgid "Select a POI" +msgstr "Wählen Sie ein POI" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Kategorie" + +msgid "Direction" +msgstr "Richtung" + +msgid "Distance(m)" +msgstr "Entfernung (m)" + +msgid "Name" +msgstr "Bezeichnung" + +msgid "Visit Before" +msgstr "vorherige Ziele" + msgid "N" msgstr "N" @@ -1754,7 +1979,7 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Breitengrad Längengrad" msgid "Enter coordinates, for example:" msgstr "Koordinaten eingeben, z.B.:" @@ -1848,12 +2073,38 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Kartendaten (c) von OpenStreetMap unter ODbL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" +"Der Speicherpfad für die Karte ist nicht verfügbar.\n" +"Setzen Sie eine SD Karte ein und starten Sie Navit erneut\n" +"oder wählen Sie einen anderen Pfad aus." + msgid "Downloaded maps" msgstr "Heruntergeladene Karten" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" +"Entschuldigung. Derzeit untestützen wir auf Android keine Karten die größer " +"als 3,8Gigabyte sind. Bitte wählen Sie eine kleinere Karte aus." + msgid "Cancel" msgstr "Abbrechen" +msgid "filenamePath" +msgstr "Dateipfad" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" +"Karten-Speicherort ist %s\n" +"Starten Sie Navit erneut." + msgid "Whole Planet" msgstr "Ganze Welt" @@ -1960,7 +2211,7 @@ msgstr "Poitou-Charentes" msgid "Provence-Alpes-Cote-d-Azur" -msgstr "" +msgstr "Provence-Alpes-Cote-d-Azur" msgid "Rhone-Alpes" msgstr "Rhone-Alpen" @@ -2056,7 +2307,7 @@ msgstr "Cumbria" msgid "East yorkshire with hull" -msgstr "" +msgstr "East Yorkshire und Hull" msgid "Essex" msgstr "Essex" @@ -2224,13 +2475,17 @@ msgid "ready" msgstr "Fertig in" -msgid "Error downloading map!" -msgstr "Fehler beim Kartendownload" +msgid "Media selected for map storage is not available" +msgstr "" +"Der eingestellte Speicherort für das Kartenmaterial ist nicht verfügbar." #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Nicht genug freier Speicher" +msgid "Error downloading map!" +msgstr "Fehler beim Kartendownload" + msgid "Error writing map!" msgstr "Fehler beim speichern der Karte!" @@ -2410,6 +2665,10 @@ msgid "Backup / Restore" msgstr "Sichern / Wiederherstellen" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "Kartenort festlegen" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Diese Karte löschen?" @@ -2496,7 +2755,7 @@ #. Android resource: @strings/backup_failed msgid "Backup failed" -msgstr "Sicherung Fehlgeschlagen" +msgstr "Sicherung fehlgeschlagen" #. Android resource: @strings/no_backup_found msgid "No backup found" @@ -2537,3 +2796,29 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Wiederherstellen" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "System-Sprachausgabedaten sind nicht verfügbar" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" +"Navit kann jede text-to-speech Engine nutzen, die installiert ist. Die " +"derzeit angewählte Engine kann Ihre Sprache nicht wiedergeben. Soll das " +"System den Voice-Download Dialog öffnen?" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "anschließend verlassen Sie den Kreisverkehr an der %1$s %2$s" + +#, c-format +#~ msgid "in %d m" +#~ msgstr "in %d m" + +#, c-format +#~ msgid "%d m" +#~ msgstr "%d m" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/el.po.in navit-0.5.0+dfsg.1/po/el.po.in --- navit-0.5.0~svn5900+dfsg.1/po/el.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/el.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,29 +1,27 @@ -# Greek translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Greek translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Roadrunner IN https://launchpad.net/~online # aitolos https://launchpad.net/~yang-hellug # alichani https://launchpad.net/~alichani # okiroi https://launchpad.net/~g-theodoroy # vassilis https://launchpad.net/~kagemarou - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:41+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Greek \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: el\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -78,36 +76,40 @@ msgstr "έκτη έξοδο" #, c-format -msgid "%d m" -msgstr "%d μ" +msgid "%d feet" +msgstr "%d πόδια" #, c-format -msgid "in %d m" -msgstr "σε %d μ" +msgid "in %d feet" +msgstr "σε %d πόδια" #, c-format -msgid "%d feet" -msgstr "" +msgid "%d.%d miles" +msgstr "%d.%d μίλια" #, c-format -msgid "in %d feet" -msgstr "" +msgid "in %d.%d miles" +msgstr "σε %d.%d μίλια" #, c-format -msgid "%d meters" -msgstr "%d μέτρα" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "ένα μίλι" +msgstr[1] "%d μίλια" #, c-format -msgid "in %d meters" -msgstr "σε %d μέτρα" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "σε ένα μίλι" +msgstr[1] "σε %d μίλια" #, c-format -msgid "%d.%d miles" -msgstr "" +msgid "%d meters" +msgstr "%d μέτρα" #, c-format -msgid "in %d.%d miles" -msgstr "" +msgid "in %d meters" +msgstr "σε %d μέτρα" #, c-format msgid "%d.%d kilometers" @@ -118,18 +120,6 @@ msgstr "σε %d %d χιλιόμετρα" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "Ένα χιλιόμετρο" @@ -141,64 +131,72 @@ msgstr[0] "σε ένα χιλιόμετρο" msgstr[1] "σε %d χιλιόμετρα" -msgid "exit" -msgstr "έξοδος" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "στη ράμπα" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s στην οδό %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sστην οδό %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sστον %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sστην %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sστο %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" -msgstr "%s στην %s" - -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "δεξιά" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "αριστερά" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "ελαφρά " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "Κλειστά " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "πολύ κλειστά " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "άγνωστο " +msgstr "%sστην %s" msgid "When possible, please turn around" msgstr "Όταν είναι δυνατόν, κάνε αναστροφή" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Ακολουθήστε το δρόμο για τα επόμενα %s" + msgid "Enter the roundabout soon" msgstr "Μπές στη κυκλική πορεία άμεσα" @@ -207,56 +205,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "και βγείτε απο την κυκλική πορεία στην %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Εξοδος απο την κυκλική πορεία στην %1$s %2$s" +msgid "soon" +msgstr "σύντομα" + +msgid "now" +msgstr "τώρα" + +msgid "then" +msgstr "και" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Εξοδος απο την κυκλική πορεία στην %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Ακολουθήστε το δρόμο για τα επόμενα %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "σύντομα" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Πάρτε τον %1$s δρόμο για το %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "μετά από %i δρόμους" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "τώρα" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "δεξιά" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "αριστερά" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "ελαφρά " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "κλειστά " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "στη συνέχεια πάρτε το %1$s δρόμο για το %2$s" +msgstr "" -msgid "error" -msgstr "σφάλμα" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Πάρτε τον %1$s δρόμο για το %2$s" + +#, c-format +msgid "after %i roads" +msgstr "μετά από %i δρόμους" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Στρίψτε %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "και στρίψτε %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "και κάνε αναστροφή" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Κάνε αναστροφή %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "και κάνε αναστροφή" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Κάνε αναστροφή %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "τότε έχετε φτάσει στον προορισμό σας." +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Φτάσατε στον προορισμό σας %s" -msgid "then you have reached your destination." -msgstr "τότε έχετε φτάσει στον προορισμό σας." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Εξοδος" #. Android resource: @strings/position_popup_title msgid "Position" @@ -856,7 +974,7 @@ #. 434 msgid "Libya" -msgstr "" +msgstr "Λιβύη" #. 504 msgid "Morocco" @@ -1144,7 +1262,7 @@ #. 728 msgid "South Sudan" -msgstr "" +msgstr "Νότιο Σουδάν" #. 678 msgid "Sao Tome and Principe" @@ -1316,11 +1434,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1344,7 +1464,7 @@ msgstr "" msgid "unknown street" -msgstr "" +msgstr "άγνωστος δρόμος" #. Safe cast: attr_generic_set_attr does not modify its parameter. msgid "Unnamed vehicle" @@ -1457,6 +1577,12 @@ msgid "Opens address search dialog" msgstr "Ανοιγμα διαλόγου αναζήτησης διεύθυνσης" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Διακοπή πλοήγησης" @@ -1499,6 +1625,100 @@ msgid "Data" msgstr "Δεδομένα" +msgid "Pharmacy" +msgstr "Φαρμακείο" + +msgid "Restaurant" +msgstr "Εστιατόριο" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "Ξενοδοχείο" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "Βενζινάδικο" + +msgid "Bank" +msgstr "Τράπεζα" + +msgid "Hospital" +msgstr "Νοσοκομείο" + +msgid "Cinema" +msgstr "Κινηματογράφος" + +msgid "Train station" +msgstr "Σταθμός τρένου" + +msgid "School" +msgstr "Σχολείο" + +msgid "Police" +msgstr "Αστυνομία" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "Ταξί" + +msgid "Shopping" +msgstr "Αγορές" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "Επιλέξτε μια κατηγορία" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "Β" @@ -1810,12 +2030,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2186,13 +2425,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2355,6 +2597,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2480,3 +2726,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "και βγείτε απο την κυκλική πορεία στην %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/en_AU.po.in navit-0.5.0+dfsg.1/po/en_AU.po.in --- navit-0.5.0~svn5900+dfsg.1/po/en_AU.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/en_AU.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,23 @@ -# English (Australia) translation for navit -# Copyright (C) 2006-2014 The Navit Team +# English (Australia) translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Athol Mullen https://launchpad.net/~athol-mullen # KaZeR https://launchpad.net/~kazer - +# Michael von Glasow https://launchpad.net/~michael-vonglasow msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:41+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: English (Australia) \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: en_AU\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -74,14 +72,6 @@ msgstr "sixth exit" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "in %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -90,14 +80,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metres" - -#, c-format -msgid "in %d meters" -msgstr "in %d metres" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -106,14 +88,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometres" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "in %d.%d kilometres" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -126,6 +100,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metres" + +#, c-format +msgid "in %d meters" +msgstr "in %d metres" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometres" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "in %d.%d kilometres" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "one kilometre" @@ -137,64 +127,72 @@ msgstr[0] "in one kilometre" msgstr[1] "in %d kilometres" -msgid "exit" -msgstr "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$sonto %2$s" -msgid "into the ramp" -msgstr "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "onto the motorway ramp" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" +msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%sinto the %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sinto %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%sinto the %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sinto %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%sinto the %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sinto %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%sinto the %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "right" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "left" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "easily " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "strongly " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "really strongly " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "unknown " - msgid "When possible, please turn around" msgstr "When possible, please turn around" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Follow the road for the next %s" + msgid "Enter the roundabout soon" msgstr "" @@ -203,56 +201,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "then leave the roundabout at the %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "" + +msgid "soon" +msgstr "soon" +msgid "now" +msgstr "now" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Leave the roundabout at the %s" +msgid "then merge%1$s|right" +msgstr "then merge%1$s" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Follow the road for the next %s" +msgid "Merge %1$s%2$s|right" +msgstr "Merge %1$s%2$s" -msgid "soon" -msgstr "soon" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "then merge%1$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Take the %1$s road to the %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "Merge %1$s%2$s" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "after %i roads" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "now" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "right" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "left" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "easily " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "strongly " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "then take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Take the %1$s road to the %2$s" -msgid "error" -msgstr "error" +#, c-format +msgid "after %i roads" +msgstr "after %i roads" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Turn %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "then turn %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "then make a U-turn" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Make a U-turn %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "then make a U-turn" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Make a U-turn %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "then you will have reached your destination" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "You have reached your destination %s" -msgid "then you have reached your destination." -msgstr "then you will have reached your destination" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Interchange" + +msgid "Exit" +msgstr "Exit" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1312,11 +1430,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1453,6 +1573,12 @@ msgid "Opens address search dialog" msgstr "Opens address search dialogue" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Stop Navigation" @@ -1495,6 +1621,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1806,12 +2026,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2182,13 +2421,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2353,6 +2595,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2478,3 +2724,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/en_CA.po.in navit-0.5.0+dfsg.1/po/en_CA.po.in --- navit-0.5.0~svn5900+dfsg.1/po/en_CA.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/en_CA.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,21 @@ -# English (Canada) translation for navit -# Copyright (C) 2006-2014 The Navit Team +# English (Canada) translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Frank Bax https://launchpad.net/~drw06g0w-qaens-52bk9e55 - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2012-11-20 02:05+0000\n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 03:57+0000\n" "Last-Translator: Frank Bax \n" "Language-Team: English (Canada) \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: en_CA\n" msgid "Running from source directory\n" msgstr "Running from source directory\n" @@ -72,14 +69,6 @@ msgstr "sixth exit" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "in %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -88,14 +77,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d meters" - -#, c-format -msgid "in %d meters" -msgstr "in %d meters" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -104,14 +85,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometres" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "in %d.%d kilometres" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -124,6 +97,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d meters" + +#, c-format +msgid "in %d meters" +msgstr "in %d meters" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometres" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "in %d.%d kilometres" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "one kilometre" @@ -135,64 +124,72 @@ msgstr[0] "in one kilometre" msgstr[1] "in %d kilometres" -msgid "exit" -msgstr "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$sonto %2$s" -msgid "into the ramp" -msgstr "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "onto the motorway ramp" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" +msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sinto %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sinto %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sinto %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%sinto the %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "right" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "left" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "easily " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "strongly " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "really strongly " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "unknown " - msgid "When possible, please turn around" msgstr "When possible, please turn around" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Follow the road for the next %s" + msgid "Enter the roundabout soon" msgstr "" @@ -201,56 +198,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "then leave the roundabout at the %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "" + +msgid "soon" +msgstr "soon" +msgid "now" +msgstr "now" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Leave the roundabout at the %s" +msgid "then merge%1$s|right" +msgstr "then merge%1$s" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Follow the road for the next %s" +msgid "Merge %1$s%2$s|right" +msgstr "Merge %1$s%2$s" -msgid "soon" -msgstr "soon" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "then merge%1$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Take the %1$s road to the %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "Merge %1$s%2$s" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "after %i roads" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "now" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "right" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "left" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "easily " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "strongly " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "then take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Take the %1$s road to the %2$s" -msgid "error" -msgstr "error" +#, c-format +msgid "after %i roads" +msgstr "after %i roads" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Turn %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "then turn %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "then make a U-turn" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Make a U-turn %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "then make a U-turn" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Make a U-turn %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "then you have reached your destination." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "You have reached your destination %s" -msgid "then you have reached your destination." -msgstr "then you have reached your destination." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Interchange" + +msgid "Exit" +msgstr "Exit" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1310,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "Opens address search dialog" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1618,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1804,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2717,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/en_GB.po.in navit-0.5.0+dfsg.1/po/en_GB.po.in --- navit-0.5.0~svn5900+dfsg.1/po/en_GB.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/en_GB.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,30 +1,29 @@ -# English (United Kingdom) translation for navit -# Copyright (C) 2006-2014 The Navit Team +# English (United Kingdom) translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: +# Andi Chandler https://launchpad.net/~bing # Jeff Bailes https://launchpad.net/~thepizzaking # Kaustav Das Modak https://launchpad.net/~kaustav-dasmodak # Matthew Gall https://launchpad.net/~matthewgall # Roadrunner IN https://launchpad.net/~online # Stephen Irons https://launchpad.net/~stephen-irons # half_monkey https://launchpad.net/~d-r-williams-01 +# jan https://launchpad.net/~jandegr1 # lopho https://launchpad.net/~lopho - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:41+0000\n" -"Last-Translator: Matthew Gall \n" +"PO-Revision-Date: 2015-08-29 12:36+0000\n" +"Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: en_GB\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -79,36 +78,40 @@ msgstr "sixth exit" #, c-format -msgid "%d m" -msgstr "%d m" +msgid "%d feet" +msgstr "%d feet" #, c-format -msgid "in %d m" -msgstr "in %d m" +msgid "in %d feet" +msgstr "in %d feet" #, c-format -msgid "%d feet" -msgstr "" +msgid "%d.%d miles" +msgstr "%d.%d miles" #, c-format -msgid "in %d feet" -msgstr "" +msgid "in %d.%d miles" +msgstr "in %d.%d miles" #, c-format -msgid "%d meters" -msgstr "%d metres" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "one mile" +msgstr[1] "%d miles" #, c-format -msgid "in %d meters" -msgstr "in %d metres" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "in one mile" +msgstr[1] "in %d miles" #, c-format -msgid "%d.%d miles" -msgstr "" +msgid "%d meters" +msgstr "%d metres" #, c-format -msgid "in %d.%d miles" -msgstr "" +msgid "in %d meters" +msgstr "in %d metres" #, c-format msgid "%d.%d kilometers" @@ -119,18 +122,6 @@ msgstr "in %d.%d kilometres" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "one kilometre" @@ -142,122 +133,250 @@ msgstr[0] "in one kilometre" msgstr[1] "in %d kilometres" -msgid "exit" -msgstr "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$sonto the %2$s%3$s%4$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$sonto %2$s" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "onto the slip road" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sonto the street %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sinto %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%sonto the %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sinto %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%sonto the %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sinto %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%sonto the %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sinto %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%sonto the %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "right" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "left" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "easily " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "strongly " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "really strongly " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "unknown " - msgid "When possible, please turn around" msgstr "When possible, please turn around" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "towards %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Follow the road for the next %s" + msgid "Enter the roundabout soon" msgstr "Enter the roundabout soon" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" +msgstr "Enter the roundabout %s" + +msgid "then enter the roundabout" msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "then leave the roundabout at the %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Leave the roundabout at the %1$s %2$s" + +msgid "soon" +msgstr "soon" + +msgid "now" +msgstr "now" + +msgid "then" +msgstr "then" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Leave the roundabout at the %s" +msgid "then merge%1$s|right" +msgstr "then merge%1$s" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Follow the road for the next %s" +msgid "Merge %1$s%2$s|right" +msgstr "Merge %1$s%2$s" -msgid "soon" -msgstr "soon" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "then merge%1$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Take the %1$s road to the %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "Merge %1$s%2$s" + +msgid "on your left" +msgstr "on your left" +msgid "on your right" +msgstr "on your right" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "after %i roads" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Take exit %1$s %2$s %3$s" -msgid "now" -msgstr "now" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Take the exit %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "at interchange" + +msgid "at exit" +msgstr "at exit" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "then continue straight%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "Continue straight %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "then keep right%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "Keep right %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "then keep left%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "Keep left %1$s%2$s%3$s" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "right" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "left" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "slightly " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "strongly " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "then take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Take the %1$s road to the %2$s" -msgid "error" -msgstr "error" +#, c-format +msgid "after %i roads" +msgstr "after %i roads" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Turn %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "then turn %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "then make a U-turn" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Make a U-turn %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "then make a U-turn" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Make a U-turn %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "follow" +msgid "then you have reached your destination." +msgstr "then you have reached your destination" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "You have reached your destination %s" -msgid "then you have reached your destination." -msgstr "then you have reached your destination" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Interchange" + +msgid "Exit" +msgstr "Exit" #. Android resource: @strings/position_popup_title msgid "Position" @@ -289,10 +408,10 @@ #, c-format msgid "Waypoint %d" -msgstr "" +msgstr "Waypoint %d" msgid "Visit before..." -msgstr "" +msgstr "Visit before..." msgid "Set as position" msgstr "Set as position" @@ -433,7 +552,7 @@ #. 535 msgid "Bonaire, Sint Eustatius and Saba" -msgstr "" +msgstr "Bonaire, Sint Eustatius and Saba" #. 076 msgid "Brazil" @@ -525,7 +644,7 @@ #. 531 msgid "Curacao" -msgstr "" +msgstr "Curacao" #. 162 msgid "Christmas Island" @@ -857,7 +976,7 @@ #. 434 msgid "Libya" -msgstr "" +msgstr "Libya" #. 504 msgid "Morocco" @@ -1145,7 +1264,7 @@ #. 728 msgid "South Sudan" -msgstr "" +msgstr "South Sudan" #. 678 msgid "Sao Tome and Principe" @@ -1157,7 +1276,7 @@ #. 534 msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Sint Maarten (Dutch part)" #. 760 msgid "Syrian Arab Republic" @@ -1317,42 +1436,54 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" +"navit usage:\n" +"navit [options] [configfile]\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" +"\t-h: print this usage info and exit.\n" +"\t-v: print the version and exit.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" -msgstr "" +msgstr "No config file navit.xml, navit.xml.local found\n" #, c-format msgid "Error parsing config file '%s': %s\n" -msgstr "" +msgstr "Error parsing config file '%s': %s\n" #, c-format msgid "Using config file '%s'\n" -msgstr "" +msgstr "Using config file '%s'\n" #, c-format msgid "Error: No configuration found in config file '%s'\n" -msgstr "" +msgstr "Error: No configuration found in config file '%s'\n" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" msgstr "" +"Internal initialisation failed, exiting. Check previous error messages.\n" msgid "unknown street" -msgstr "" +msgstr "unknown street" #. Safe cast: attr_generic_set_attr does not modify its parameter. msgid "Unnamed vehicle" -msgstr "" +msgstr "Unnamed vehicle" msgid "Failed to write bookmarks file" -msgstr "" +msgstr "Failed to write bookmarks file" #. Strings from navit_shipped.xml msgid "Map Point" @@ -1453,11 +1584,17 @@ msgstr "Info" msgid "Set _destination" -msgstr "" +msgstr "Set _destination" msgid "Opens address search dialog" msgstr "Opens address search dialogue" +msgid "_POI search" +msgstr "_POI search" + +msgid "Opens POI search dialog" +msgstr "Opens POI search dialogue" + msgid "_Stop Navigation" msgstr "Stop navigation" @@ -1471,13 +1608,13 @@ msgstr "Quit the application" msgid "Show position _cursor" -msgstr "" +msgstr "Show position _cursor" msgid "_Lock on Road" msgstr "Lock on road" msgid "_Keep orientation to the North" -msgstr "" +msgstr "_Keep orientation to the North" msgid "Switches map orientation to the north or the vehicle" msgstr "Switches map orientation to the north or the vehicle" @@ -1500,6 +1637,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "Pharmacy" + +msgid "Restaurant" +msgstr "Restaurant" + +msgid "Restaurant. Fast food" +msgstr "Restaurant. Fast food" + +msgid "Hotel" +msgstr "Hotel" + +msgid "Car parking" +msgstr "Car parking" + +msgid "Fuel station" +msgstr "Fuel station" + +msgid "Bank" +msgstr "Bank" + +msgid "Hospital" +msgstr "Hospital" + +msgid "Cinema" +msgstr "Cinema" + +msgid "Train station" +msgstr "Railway station" + +msgid "School" +msgstr "School" + +msgid "Police" +msgstr "Police" + +msgid "Justice" +msgstr "Justice" + +msgid "Taxi" +msgstr "Taxi" + +msgid "Shopping" +msgstr "Shopping" + +msgid "Distance from screen center (km)" +msgstr "Distance from screen centre (km)" + +#, c-format +msgid "POI %s. %s" +msgstr "POI %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Set destination to %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Set map to %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "Set next visit to %ld, %ld \n" + +msgid "POI search" +msgstr "POI search" + +msgid "Select a category" +msgstr "Select a category" + +msgid "Select a distance to look for (km)" +msgstr "Select a distance to look for (km)" + +msgid "Select a POI" +msgstr "Select a POI" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Category" + +msgid "Direction" +msgstr "Direction" + +msgid "Distance(m)" +msgstr "Distance(m)" + +msgid "Name" +msgstr "Name" + +msgid "Visit Before" +msgstr "Visit Before" + msgid "N" msgstr "N" @@ -1549,16 +1780,16 @@ #, c-format msgid "Waypoint %s" -msgstr "" +msgstr "Waypoint %s" msgid "Select waypoint to insert the new one before" -msgstr "" +msgstr "Select waypoint to insert the new one before" msgid "View in Browser" msgstr "View in browser" msgid "Item type" -msgstr "" +msgstr "Item type" #. Android resource: @strings/address_search_streets msgid "Streets" @@ -1571,7 +1802,7 @@ msgstr "View attributes" msgid "Set as position (and deactivate vehicle)" -msgstr "" +msgstr "Set as position (and deactivate vehicle)" msgid "POIs" msgstr "POIs" @@ -1580,10 +1811,10 @@ msgstr "View on map" msgid "Remove search results from the map" -msgstr "" +msgstr "Remove search results from the map" msgid "Show results on the map" -msgstr "" +msgstr "Show results on the map" msgid "Cut Bookmark" msgstr "Cut bookmark" @@ -1601,22 +1832,22 @@ msgstr "Delete bookmark" msgid "Delete waypoint" -msgstr "" +msgstr "Delete waypoint" msgid "Bookmarks" msgstr "Bookmarks" msgid "Bookmarks as waypoints" -msgstr "" +msgstr "Bookmarks as waypoints" msgid "Save waypoints" -msgstr "" +msgstr "Save waypoints" msgid "Replace with waypoints" -msgstr "" +msgstr "Replace with waypoints" msgid "Delete Folder" -msgstr "" +msgstr "Delete Folder" #. Adds the Bookmark folders msgid "Add Bookmark folder" @@ -1632,19 +1863,19 @@ #, c-format msgid "Download %s" -msgstr "" +msgstr "Download %s" msgid "Map Download" -msgstr "" +msgstr "Map Download" msgid "Active" -msgstr "" +msgstr "Active" msgid "Download Enabled" -msgstr "" +msgstr "Download Enabled" msgid "Download completely" -msgstr "" +msgstr "Download completely" msgid "Show Satellite Status" msgstr "Show satellite status" @@ -1705,10 +1936,10 @@ msgstr "members and contributors." msgid "Waypoints" -msgstr "" +msgstr "Waypoints" msgid "Enter Coordinates" -msgstr "" +msgstr "Enter Coordinates" #. #. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) @@ -1717,10 +1948,10 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Latitude Longitude" msgid "Enter coordinates, for example:" -msgstr "" +msgstr "Enter coordinates, for example:" msgid "Vehicle" msgstr "Vehicle" @@ -1738,7 +1969,7 @@ msgstr "Map follows vehicle" msgid "Plan with Waypoints" -msgstr "" +msgstr "Plan with Waypoints" msgid "Maps" msgstr "Maps" @@ -1759,7 +1990,7 @@ msgstr "Former Destinations" msgid "- No former destinations available -" -msgstr "" +msgstr "- No former destinations available -" msgid "Message" msgstr "Message" @@ -1777,436 +2008,465 @@ msgstr "House number" msgid "Next" -msgstr "" +msgstr "Next" msgid "Prev" -msgstr "" +msgstr "Prev" msgid "Return to route!" -msgstr "" +msgstr "Return to route!" #. warning told msgid "Look out! Camera!" -msgstr "" +msgstr "Look out! Camera!" #. warning told msgid "Please decrease your speed" -msgstr "" +msgstr "Please decrease your speed" msgid "partial match" -msgstr "" +msgstr "partial match" #. Android resource: @strings/address_search_button msgid "Search" -msgstr "" +msgstr "Search" #. Android resource: @strings/address_search_towns msgid "Towns" -msgstr "" +msgstr "Towns" #. Android resource: @strings/position_popup_drive_here msgid "Route to here" -msgstr "" +msgstr "Route to here" msgid "Map data (c) OpenStreetMap contributors, ODBL" -msgstr "" +msgstr "Map data (c) OpenStreetMap contributors, ODBL" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." msgid "Downloaded maps" +msgstr "Downloaded maps" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." msgstr "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." msgid "Cancel" +msgstr "Cancel" + +msgid "filenamePath" +msgstr "filenamePath" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." msgstr "" +"New location set to %s\n" +"Restart Navit to apply the changes." msgid "Whole Planet" -msgstr "" +msgstr "Whole Planet" msgid "Africa" -msgstr "" +msgstr "Africa" msgid "Canary Islands" -msgstr "" +msgstr "Canary Islands" msgid "Asia" -msgstr "" +msgstr "Asia" msgid "Korea" -msgstr "" +msgstr "Korea" msgid "Taiwan" -msgstr "" +msgstr "Taiwan" msgid "UAE+Other" -msgstr "" +msgstr "UAE+Other" msgid "Oceania" -msgstr "" +msgstr "Oceania" msgid "Tasmania" -msgstr "" +msgstr "Tasmania" msgid "Victoria" -msgstr "" +msgstr "Victoria" msgid "New South Wales" -msgstr "" +msgstr "New South Wales" msgid "Europe" -msgstr "" +msgstr "Europe" msgid "Western Europe" -msgstr "" +msgstr "Western Europe" msgid "Azores" -msgstr "" +msgstr "Azores" msgid "BeNeLux" -msgstr "" +msgstr "BeNeLux" msgid "Alsace" -msgstr "" +msgstr "Alsace" msgid "Aquitaine" -msgstr "" +msgstr "Aquitaine" msgid "Auvergne" -msgstr "" +msgstr "Auvergne" msgid "Basse-Normandie" -msgstr "" +msgstr "Basse-Normandie" msgid "Bourgogne" -msgstr "" +msgstr "Bourgogne" msgid "Bretagne" -msgstr "" +msgstr "Bretagne" msgid "Centre" -msgstr "" +msgstr "Centre" msgid "Champagne-Ardenne" -msgstr "" +msgstr "Champagne-Ardenne" msgid "Corse" -msgstr "" +msgstr "Corse" msgid "Franche-Comte" -msgstr "" +msgstr "Franche-Comte" msgid "Haute-Normandie" -msgstr "" +msgstr "Haute-Normandie" msgid "Ile-de-France" -msgstr "" +msgstr "Ile-de-France" msgid "Languedoc-Roussillon" -msgstr "" +msgstr "Languedoc-Roussillon" msgid "Limousin" -msgstr "" +msgstr "Limousin" msgid "Lorraine" -msgstr "" +msgstr "Lorraine" msgid "Midi-Pyrenees" -msgstr "" +msgstr "Midi-Pyrenees" msgid "Nord-pas-de-Calais" -msgstr "" +msgstr "Nord-pas-de-Calais" msgid "Pays-de-la-Loire" -msgstr "" +msgstr "Pays-de-la-Loire" msgid "Picardie" -msgstr "" +msgstr "Picardie" msgid "Poitou-Charentes" -msgstr "" +msgstr "Poitou-Charentes" msgid "Provence-Alpes-Cote-d-Azur" -msgstr "" +msgstr "Provence-Alpes-Cote-d-Azur" msgid "Rhone-Alpes" -msgstr "" +msgstr "Rhone-Alpes" msgid "Baden-Wuerttemberg" -msgstr "" +msgstr "Baden-Wuerttemberg" msgid "Bayern" -msgstr "" +msgstr "Bayern" msgid "Mittelfranken" -msgstr "" +msgstr "Mittelfranken" msgid "Niederbayern" -msgstr "" +msgstr "Niederbayern" msgid "Oberbayern" -msgstr "" +msgstr "Oberbayern" msgid "Oberfranken" -msgstr "" +msgstr "Oberfranken" msgid "Oberpfalz" -msgstr "" +msgstr "Oberpfalz" msgid "Schwaben" -msgstr "" +msgstr "Schwaben" msgid "Unterfranken" -msgstr "" +msgstr "Unterfranken" msgid "Berlin" -msgstr "" +msgstr "Berlin" msgid "Brandenburg" -msgstr "" +msgstr "Brandenburg" msgid "Bremen" -msgstr "" +msgstr "Bremen" msgid "Hamburg" -msgstr "" +msgstr "Hamburg" msgid "Hessen" -msgstr "" +msgstr "Hessen" msgid "Mecklenburg-Vorpommern" -msgstr "" +msgstr "Mecklenburg-Vorpommern" msgid "Niedersachsen" -msgstr "" +msgstr "Niedersachsen" msgid "Nordrhein-westfalen" -msgstr "" +msgstr "Nordrhein-westfalen" msgid "Rheinland-Pfalz" -msgstr "" +msgstr "Rheinland-Pfalz" msgid "Saarland" -msgstr "" +msgstr "Saarland" msgid "Sachsen-Anhalt" -msgstr "" +msgstr "Sachsen-Anhalt" msgid "Sachsen" -msgstr "" +msgstr "Sachsen" msgid "Schleswig-Holstein" -msgstr "" +msgstr "Schleswig-Holstein" msgid "Thueringen" -msgstr "" +msgstr "Thueringen" msgid "Mallorca" -msgstr "" +msgstr "Mallorca" msgid "Galicia" -msgstr "" +msgstr "Galicia" msgid "Scandinavia" -msgstr "" +msgstr "Scandinavia" msgid "England" -msgstr "" +msgstr "England" msgid "Buckinghamshire" -msgstr "" +msgstr "Buckinghamshire" msgid "Cambridgeshire" -msgstr "" +msgstr "Cambridgeshire" msgid "Cumbria" -msgstr "" +msgstr "Cumbria" msgid "East yorkshire with hull" -msgstr "" +msgstr "East Yorkshire with Hull" msgid "Essex" -msgstr "" +msgstr "Essex" msgid "Herefordshire" -msgstr "" +msgstr "Herefordshire" msgid "Kent" -msgstr "" +msgstr "Kent" msgid "Lancashire" -msgstr "" +msgstr "Lancashire" msgid "Leicestershire" -msgstr "" +msgstr "Leicestershire" msgid "Norfolk" -msgstr "" +msgstr "Norfolk" msgid "Nottinghamshire" -msgstr "" +msgstr "Nottinghamshire" msgid "Oxfordshire" -msgstr "" +msgstr "Oxfordshire" msgid "Shropshire" -msgstr "" +msgstr "Shropshire" msgid "Somerset" -msgstr "" +msgstr "Somerset" msgid "South yorkshire" -msgstr "" +msgstr "South Yorkshire" msgid "Suffolk" -msgstr "" +msgstr "Suffolk" msgid "Surrey" -msgstr "" +msgstr "Surrey" msgid "Wiltshire" -msgstr "" +msgstr "Wiltshire" msgid "Scotland" -msgstr "" +msgstr "Scotland" msgid "Wales" -msgstr "" +msgstr "Wales" msgid "Crete" -msgstr "" +msgstr "Crete" msgid "North America" -msgstr "" +msgstr "North America" msgid "Alaska" -msgstr "" +msgstr "Alaska" msgid "Hawaii" -msgstr "" +msgstr "Hawaii" msgid "USA" -msgstr "" +msgstr "USA" msgid " (except Alaska and Hawaii)" -msgstr "" +msgstr " (except Alaska and Hawaii)" msgid "Midwest" -msgstr "" +msgstr "Midwest" msgid "Michigan" -msgstr "" +msgstr "Michigan" msgid "Ohio" -msgstr "" +msgstr "Ohio" msgid "Northeast" -msgstr "" +msgstr "Northeast" msgid "Massachusetts" -msgstr "" +msgstr "Massachusetts" msgid "Vermont" -msgstr "" +msgstr "Vermont" msgid "Pacific" -msgstr "" +msgstr "Pacific" msgid "South" -msgstr "" +msgstr "South" msgid "Arkansas" -msgstr "" +msgstr "Arkansas" msgid "District of Columbia" -msgstr "" +msgstr "District of Columbia" msgid "Florida" -msgstr "" +msgstr "Florida" msgid "Louisiana" -msgstr "" +msgstr "Louisiana" msgid "Maryland" -msgstr "" +msgstr "Maryland" msgid "Mississippi" -msgstr "" +msgstr "Mississippi" msgid "Oklahoma" -msgstr "" +msgstr "Oklahoma" msgid "Texas" -msgstr "" +msgstr "Texas" msgid "Virginia" -msgstr "" +msgstr "Virginia" msgid "West Virginia" -msgstr "" +msgstr "West Virginia" msgid "West" -msgstr "" +msgstr "West" msgid "Arizona" -msgstr "" +msgstr "Arizona" msgid "California" -msgstr "" +msgstr "California" msgid "Colorado" -msgstr "" +msgstr "Colorado" msgid "Idaho" -msgstr "" +msgstr "Idaho" msgid "Montana" -msgstr "" +msgstr "Montana" msgid "New Mexico" -msgstr "" +msgstr "New Mexico" msgid "Nevada" -msgstr "" +msgstr "Nevada" msgid "Oregon" -msgstr "" +msgstr "Oregon" msgid "Utah" -msgstr "" +msgstr "Utah" msgid "Washington State" -msgstr "" +msgstr "Washington State" msgid "South+Middle America" -msgstr "" +msgstr "South+Middle America" msgid "Guyane Francaise" -msgstr "" +msgstr "Guyane Francaise" msgid "downloading" -msgstr "" +msgstr "downloading" #. Android resource: @strings/map_download_ready msgid "ready" -msgstr "" +msgstr "ready" -msgid "Error downloading map!" -msgstr "" +msgid "Media selected for map storage is not available" +msgstr "Media selected for map storage is not available" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" -msgstr "" +msgstr "Not enough free space" + +msgid "Error downloading map!" +msgstr "Error downloading map!" msgid "Error writing map!" -msgstr "" +msgstr "Error writing map!" msgid "Map download aborted!" -msgstr "" +msgstr "Map download aborted!" #. Android resource: @strings/map_download_eta msgid "ETA" -msgstr "" +msgstr "ETA" #. Android resource: @strings/map_download_title msgid "Map download" -msgstr "" +msgstr "Map download" msgid "Vehicle Position" msgstr "Vehicle Position" @@ -2241,9 +2501,11 @@ "Former\n" "Destinations" msgstr "" +"Former\n" +"Destinations" msgid "Coordinates" -msgstr "" +msgstr "Coordinates" msgid "" "Stop\n" @@ -2266,49 +2528,53 @@ "Drop last \n" "Waypoint" msgstr "" +"Drop last \n" +"Waypoint" msgid "" "Drop next \n" "Waypoint" msgstr "" +"Drop next \n" +"Waypoint" msgid "Satellite Status" -msgstr "" +msgstr "Satellite Status" msgid "NMEA Data" -msgstr "" +msgstr "NMEA Data" msgid "car_shortest" -msgstr "" +msgstr "car_shortest" msgid "car_avoid_tolls" -msgstr "" +msgstr "car_avoid_tolls" msgid "car_pedantic" -msgstr "" +msgstr "car_pedantic" msgid "horse" msgstr "horse" msgid "Truck" -msgstr "" +msgstr "Truck" #. Strings from android/res/values/strings.xml #. Android resource: @strings/yes msgid "Yes" -msgstr "" +msgstr "Yes" #. Android resource: @strings/notification_ticker msgid "Navit started" -msgstr "" +msgstr "Navit started" #. Android resource: @strings/notification_event_default msgid "Navit running" -msgstr "" +msgstr "Navit running" #. Android resource: @strings/initial_info_box_title msgid "Welcome to Navit" -msgstr "" +msgstr "Welcome to Navit" #. Android resource: @strings/initial_info_box_message msgid "" @@ -2321,161 +2587,193 @@ "\n" "Enjoy Navit!" msgstr "" +"Thank you for installing Navit!\n" +"\n" +"To start, select \"Download maps\" from the menu to download a map. Note: " +"The map file size may be large (>50MB) - a WiFi connection is recommended.\n" +"\n" +"Mapdata: (c) OpenStreetMap contributors\n" +"\n" +"Enjoy Navit!" #. Android resource: @strings/initial_info_box_OK msgid "OK" -msgstr "" +msgstr "OK" #. Android resource: @strings/initial_info_box_more_info msgid "More info" -msgstr "" +msgstr "More info" #. Android resource: @strings/optionsmenu_zoom_in msgid "Zoom in" -msgstr "" +msgstr "Zoom in" #. Android resource: @strings/optionsmenu_zoom_out msgid "Zoom out" -msgstr "" +msgstr "Zoom out" #. Android resource: @strings/optionsmenu_download_maps msgid "Download maps" -msgstr "" +msgstr "Download maps" #. Android resource: @strings/optionsmenu_toggle_poi msgid "Toggle POIs" -msgstr "" +msgstr "Toggle POIs" #. Android resource: @strings/optionsmenu_exit_navit msgid "Exit Navit" -msgstr "" +msgstr "Exit Navit" #. Android resource: @strings/optionsmenu_backup_restore msgid "Backup / Restore" -msgstr "" +msgstr "Backup / Restore" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "Set map location" #. Android resource: @strings/map_delete msgid "Delete this map?" -msgstr "" +msgstr "Delete this map?" #. Android resource: @strings/map_download_downloading msgid "Downloading:" -msgstr "" +msgstr "Downloading:" #. Android resource: @strings/map_download_download_error msgid "Error downloading map." -msgstr "" +msgstr "Error downloading map." #. Android resource: @strings/map_download_download_aborted msgid "Map download aborted" -msgstr "" +msgstr "Map download aborted" #. Android resource: @strings/map_no_fix msgid "No location. Reopen after location fix." -msgstr "" +msgstr "No location. Reopen after location fix." #. Android resource: @strings/maps_for_current_location msgid "Maps containing current location" -msgstr "" +msgstr "Maps containing current location" #. Android resource: @strings/address_search_title msgid "Address search" -msgstr "" +msgstr "Address search" #. Android resource: @strings/address_enter_destination msgid "Enter destination" -msgstr "" +msgstr "Enter destination" #. Android resource: @strings/address_partial_match msgid "Match partial address" -msgstr "" +msgstr "Match partial address" #. Android resource: @strings/address_search_searching msgid "Searching..." -msgstr "" +msgstr "Searching..." #. Android resource: @strings/address_search_not_found msgid "Address not found" -msgstr "" +msgstr "Address not found" #. Android resource: @strings/address_search_getting_results msgid "Getting search results" -msgstr "" +msgstr "Getting search results" #. Android resource: @strings/address_search_loading_results msgid "Loading search results" -msgstr "" +msgstr "Loading search results" #. Android resource: @strings/address_search_no_results msgid "No results found" -msgstr "" +msgstr "No results found" #. Android resource: @strings/address_search_no_text_entered msgid "No text entered" -msgstr "" +msgstr "No text entered" #. Android resource: @strings/address_search_set_destination msgid "Setting destination to:" -msgstr "" +msgstr "Setting destination to:" #. Android resource: @strings/choose_an_action msgid "Choose an action" -msgstr "" +msgstr "Choose an action" #. Android resource: @strings/please_insert_an_sd_card msgid "Please insert an SD Card" -msgstr "" +msgstr "Please insert an SD Card" #. Android resource: @strings/backing_up msgid "Backing up..." -msgstr "" +msgstr "Backing up..." #. Android resource: @strings/restoring msgid "Restoring..." -msgstr "" +msgstr "Restoring..." #. Android resource: @strings/failed_to_create_backup_directory msgid "Failed to create backup directory" -msgstr "" +msgstr "Failed to create backup directory" #. Android resource: @strings/backup_failed msgid "Backup failed" -msgstr "" +msgstr "Backup failed" #. Android resource: @strings/no_backup_found msgid "No backup found" -msgstr "" +msgstr "No backup found" #. Android resource: @strings/failed_to_restore msgid "Failed to restore" -msgstr "" +msgstr "Failed to restore" #. Android resource: @strings/backup_successful msgid "Backup successful" -msgstr "" +msgstr "Backup successful" #. Android resource: @strings/restore_successful_please_restart_navit msgid "" "Restore Successful\n" "Please restart Navit" msgstr "" +"Restore Successful\n" +"Please restart Navit" #. Android resource: @strings/backup_not_found msgid "Backup not found" -msgstr "" +msgstr "Backup not found" #. Android resource: @strings/restore_failed msgid "Restore failed" -msgstr "" +msgstr "Restore failed" #. Android resource: @strings/select_backup msgid "Select backup" -msgstr "" +msgstr "Select backup" #. Android resource: @strings/backup msgid "Backup" -msgstr "" +msgstr "Backup" #. Android resource: @strings/restore msgid "Restore" +msgstr "Restore" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "System text to speech engine data is missing" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" msgstr "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "then leave the roundabout at the %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/en.po.in navit-0.5.0+dfsg.1/po/en.po.in --- navit-0.5.0~svn5900+dfsg.1/po/en.po.in 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/en.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,2736 @@ +# English translations for navit +# Copyright (C) 2006-2015 The Navit Team +# This file is distributed under the same license as the navit package. +msgid "" +msgstr "" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-05-03 02:23+0200\n" +"PO-Revision-Date: 2015-05-14 13:03+0200\n" +"Last-Translator: Michael von Glasow \n" +"Language-Team: English \n" +"Language: en\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-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" + +msgid "Running from source directory\n" +msgstr "Running from source directory\n" + +#, c-format +msgid "setting '%s' to '%s'\n" +msgstr "setting '%s' to '%s'\n" + +#. TRANSLATORS: the following counts refer to streets +msgid "zeroth" +msgstr "zeroth" + +msgid "first" +msgstr "first" + +msgid "second" +msgstr "second" + +msgid "third" +msgstr "third" + +msgid "fourth" +msgstr "fourth" + +msgid "fifth" +msgstr "fifth" + +msgid "sixth" +msgstr "sixth" + +#. TRANSLATORS: the following counts refer to roundabout exits +msgid "zeroth exit" +msgstr "zeroth exit" + +msgid "first exit" +msgstr "first exit" + +msgid "second exit" +msgstr "second exit" + +msgid "third exit" +msgstr "third exit" + +msgid "fourth exit" +msgstr "fourth exit" + +msgid "fifth exit" +msgstr "fifth exit" + +msgid "sixth exit" +msgstr "sixth exit" + +#, c-format +msgid "%d m" +msgstr "%d m" + +#, c-format +msgid "in %d m" +msgstr "in %d m" + +#, c-format +msgid "%d feet" +msgstr "" + +#, c-format +msgid "in %d feet" +msgstr "" + +#, c-format +msgid "%d meters" +msgstr "%d meters" + +#, c-format +msgid "in %d meters" +msgstr "in %d meters" + +#, c-format +msgid "%d.%d miles" +msgstr "" + +#, c-format +msgid "in %d.%d miles" +msgstr "" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometers" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "in %d.%d kilometers" + +#, c-format +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" + +#, c-format +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" + +#, c-format +msgid "one kilometer" +msgid_plural "%d kilometers" +msgstr[0] "one kilometer" +msgstr[1] "%d kilometers" + +#, c-format +msgid "in one kilometer" +msgid_plural "in %d kilometers" +msgstr[0] "in one kilometer" +msgstr[1] "in %d kilometers" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$sonto %2$s" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "onto the motorway ramp" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%sinto %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%sinto %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%sinto %s%s%s" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "%sinto the %s" + +msgid "When possible, please turn around" +msgstr "When possible, please turn around" + +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Follow the road for the next %s" + +msgid "Enter the roundabout soon" +msgstr "" + +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "then leave the roundabout at the %1$s %2$s" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "" + +msgid "soon" +msgstr "soon" + +msgid "now" +msgstr "now" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" +msgstr "then merge%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|right" +msgstr "Merge %1$s%2$s" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "then merge%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "Merge %1$s%2$s" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance +#, c-format +msgid "Take exit %1$s %2$s %3$s" +msgstr "" + +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "right" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "left" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "easily " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "strongly " + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Take the %1$s road to the %2$s" + +#, c-format +msgid "after %i roads" +msgstr "after %i roads" + +#. cave: no else - may come from 'if (skip_roads)' above ! +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination +#, c-format +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "Turn %1$s%2$s %3$s%4$s" + +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "then make a U-turn" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Make a U-turn %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "then make a U-turn" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Make a U-turn %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give usefull info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "then you have reached your destination." + +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "You have reached your destination %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Interchange" + +msgid "Exit" +msgstr "Exit" + +#. Android resource: @strings/position_popup_title +msgid "Position" +msgstr "" + +msgid "Command" +msgstr "" + +msgid "Length" +msgstr "" + +msgid "km" +msgstr "" + +msgid "m" +msgstr "" + +msgid "Time" +msgstr "" + +msgid "Destination Length" +msgstr "" + +msgid "Destination Time" +msgstr "" + +msgid "Roadbook" +msgstr "" + +#, c-format +msgid "Waypoint %d" +msgstr "" + +msgid "Visit before..." +msgstr "" + +msgid "Set as position" +msgstr "" + +msgid "Set as destination" +msgstr "" + +msgid "Add as bookmark" +msgstr "" + +#, c-format +msgid "Point 0x%x 0x%x" +msgstr "" + +#, c-format +msgid "Screen coord : %d %d" +msgstr "" + +#. 020 +msgid "Andorra" +msgstr "" + +#. 784 +msgid "United Arab Emirates" +msgstr "" + +#. 004 +msgid "Afghanistan" +msgstr "" + +#. 028 +msgid "Antigua and Barbuda" +msgstr "" + +#. 660 +msgid "Anguilla" +msgstr "" + +#. 008 +msgid "Albania" +msgstr "" + +#. 051 +msgid "Armenia" +msgstr "" + +#. 530 +msgid "Netherlands Antilles" +msgstr "" + +#. 024 +msgid "Angola" +msgstr "" + +#. 010 +msgid "Antarctica" +msgstr "" + +#. 032 +msgid "Argentina" +msgstr "" + +#. 016 +msgid "American Samoa" +msgstr "" + +#. 040 +msgid "Austria" +msgstr "" + +#. 036 +msgid "Australia" +msgstr "" + +#. 533 +msgid "Aruba" +msgstr "" + +#. 248 +msgid "Aland Islands" +msgstr "" + +#. 031 +msgid "Azerbaijan" +msgstr "" + +#. 070 +msgid "Bosnia and Herzegovina" +msgstr "" + +#. 052 +msgid "Barbados" +msgstr "" + +#. 050 +msgid "Bangladesh" +msgstr "" + +#. 056 +msgid "Belgium" +msgstr "" + +#. 854 +msgid "Burkina Faso" +msgstr "" + +#. 100 +msgid "Bulgaria" +msgstr "" + +#. 048 +msgid "Bahrain" +msgstr "" + +#. 108 +msgid "Burundi" +msgstr "" + +#. 204 +msgid "Benin" +msgstr "" + +#. 652 +msgid "Saint Barthelemy" +msgstr "" + +#. 060 +msgid "Bermuda" +msgstr "" + +#. 096 +msgid "Brunei Darussalam" +msgstr "" + +#. 068 +msgid "Bolivia" +msgstr "" + +#. 535 +msgid "Bonaire, Sint Eustatius and Saba" +msgstr "" + +#. 076 +msgid "Brazil" +msgstr "" + +#. 044 +msgid "Bahamas" +msgstr "" + +#. 064 +msgid "Bhutan" +msgstr "" + +#. 074 +msgid "Bouvet Island" +msgstr "" + +#. 072 +msgid "Botswana" +msgstr "" + +#. 112 +msgid "Belarus" +msgstr "" + +#. 084 +msgid "Belize" +msgstr "" + +#. 124 +msgid "Canada" +msgstr "" + +#. 166 +msgid "Cocos (Keeling) Islands" +msgstr "" + +#. 180 +msgid "Congo, Democratic Republic of the" +msgstr "" + +#. 140 +msgid "Central African Republic" +msgstr "" + +#. 178 +msgid "Congo" +msgstr "" + +#. 756 +msgid "Switzerland" +msgstr "" + +#. 384 +msgid "Cote d'Ivoire" +msgstr "" + +#. 184 +msgid "Cook Islands" +msgstr "" + +#. 152 +msgid "Chile" +msgstr "" + +#. 120 +msgid "Cameroon" +msgstr "" + +#. 156 +msgid "China" +msgstr "" + +#. 170 +msgid "Colombia" +msgstr "" + +#. 188 +msgid "Costa Rica" +msgstr "" + +#. 192 +msgid "Cuba" +msgstr "" + +#. 132 +msgid "Cape Verde" +msgstr "" + +#. 531 +msgid "Curacao" +msgstr "" + +#. 162 +msgid "Christmas Island" +msgstr "" + +#. 196 +msgid "Cyprus" +msgstr "" + +#. 203 +msgid "Czech Republic" +msgstr "" + +#. 276 +msgid "Germany" +msgstr "" + +#. 262 +msgid "Djibouti" +msgstr "" + +#. 208 +msgid "Denmark" +msgstr "" + +#. 212 +msgid "Dominica" +msgstr "" + +#. 214 +msgid "Dominican Republic" +msgstr "" + +#. 012 +msgid "Algeria" +msgstr "" + +#. 218 +msgid "Ecuador" +msgstr "" + +#. 233 +msgid "Estonia" +msgstr "" + +#. 818 +msgid "Egypt" +msgstr "" + +#. 732 +msgid "Western Sahara" +msgstr "" + +#. 232 +msgid "Eritrea" +msgstr "" + +#. 724 +msgid "Spain" +msgstr "" + +#. 231 +msgid "Ethiopia" +msgstr "" + +#. 246 +msgid "Finland" +msgstr "" + +#. 242 +msgid "Fiji" +msgstr "" + +#. 238 +msgid "Falkland Islands (Malvinas)" +msgstr "" + +#. 583 +msgid "Micronesia, Federated States of" +msgstr "" + +#. 234 +msgid "Faroe Islands" +msgstr "" + +#. 250 +msgid "France" +msgstr "" + +#. 266 +msgid "Gabon" +msgstr "" + +#. 826 +msgid "United Kingdom" +msgstr "" + +#. 308 +msgid "Grenada" +msgstr "" + +#. 268 +msgid "Georgia" +msgstr "" + +#. 254 +msgid "French Guiana" +msgstr "" + +#. 831 +msgid "Guernsey" +msgstr "" + +#. 288 +msgid "Ghana" +msgstr "" + +#. 292 +msgid "Gibraltar" +msgstr "" + +#. 304 +msgid "Greenland" +msgstr "" + +#. 270 +msgid "Gambia" +msgstr "" + +#. 324 +msgid "Guinea" +msgstr "" + +#. 312 +msgid "Guadeloupe" +msgstr "" + +#. 226 +msgid "Equatorial Guinea" +msgstr "" + +#. 300 +msgid "Greece" +msgstr "" + +#. 239 +msgid "South Georgia and the South Sandwich Islands" +msgstr "" + +#. 320 +msgid "Guatemala" +msgstr "" + +#. 316 +msgid "Guam" +msgstr "" + +#. 624 +msgid "Guinea-Bissau" +msgstr "" + +#. 328 +msgid "Guyana" +msgstr "" + +#. 344 +msgid "Hong Kong" +msgstr "" + +#. 334 +msgid "Heard Island and McDonald Islands" +msgstr "" + +#. 340 +msgid "Honduras" +msgstr "" + +#. 191 +msgid "Croatia" +msgstr "" + +#. 332 +msgid "Haiti" +msgstr "" + +#. 348 +msgid "Hungary" +msgstr "" + +#. 360 +msgid "Indonesia" +msgstr "" + +#. 372 +msgid "Ireland" +msgstr "" + +#. 376 +msgid "Israel" +msgstr "" + +#. 833 +msgid "Isle of Man" +msgstr "" + +#. 356 +msgid "India" +msgstr "" + +#. 086 +msgid "British Indian Ocean Territory" +msgstr "" + +#. 368 +msgid "Iraq" +msgstr "" + +#. 364 +msgid "Iran, Islamic Republic of" +msgstr "" + +#. 352 +msgid "Iceland" +msgstr "" + +#. 380 +msgid "Italy" +msgstr "" + +#. 832 +msgid "Jersey" +msgstr "" + +#. 388 +msgid "Jamaica" +msgstr "" + +#. 400 +msgid "Jordan" +msgstr "" + +#. 392 +msgid "Japan" +msgstr "" + +#. 404 +msgid "Kenya" +msgstr "" + +#. 417 +msgid "Kyrgyzstan" +msgstr "" + +#. 116 +msgid "Cambodia" +msgstr "" + +#. 296 +msgid "Kiribati" +msgstr "" + +#. 174 +msgid "Comoros" +msgstr "" + +#. 659 +msgid "Saint Kitts and Nevis" +msgstr "" + +#. 408 +msgid "Korea, Democratic People's Republic of" +msgstr "" + +#. 410 +msgid "Korea, Republic of" +msgstr "" + +#. 414 +msgid "Kuwait" +msgstr "" + +#. 136 +msgid "Cayman Islands" +msgstr "" + +#. 398 +msgid "Kazakhstan" +msgstr "" + +#. 418 +msgid "Lao People's Democratic Republic" +msgstr "" + +#. 422 +msgid "Lebanon" +msgstr "" + +#. 662 +msgid "Saint Lucia" +msgstr "" + +#. 438 +msgid "Liechtenstein" +msgstr "" + +#. 144 +msgid "Sri Lanka" +msgstr "" + +#. 430 +msgid "Liberia" +msgstr "" + +#. 426 +msgid "Lesotho" +msgstr "" + +#. 440 +msgid "Lithuania" +msgstr "" + +#. 442 +msgid "Luxembourg" +msgstr "" + +#. 428 +msgid "Latvia" +msgstr "" + +#. 434 +msgid "Libya" +msgstr "" + +#. 504 +msgid "Morocco" +msgstr "" + +#. 492 +msgid "Monaco" +msgstr "" + +#. 498 +msgid "Moldova, Republic of" +msgstr "" + +#. 499 +msgid "Montenegro" +msgstr "" + +#. 663 +msgid "Saint Martin (French part)" +msgstr "" + +#. 450 +msgid "Madagascar" +msgstr "" + +#. 584 +msgid "Marshall Islands" +msgstr "" + +#. 807 +msgid "Macedonia, the former Yugoslav Republic of" +msgstr "" + +#. 466 +msgid "Mali" +msgstr "" + +#. 104 +msgid "Myanmar" +msgstr "" + +#. 496 +msgid "Mongolia" +msgstr "" + +#. 446 +msgid "Macao" +msgstr "" + +#. 580 +msgid "Northern Mariana Islands" +msgstr "" + +#. 474 +msgid "Martinique" +msgstr "" + +#. 478 +msgid "Mauritania" +msgstr "" + +#. 500 +msgid "Montserrat" +msgstr "" + +#. 470 +msgid "Malta" +msgstr "" + +#. 480 +msgid "Mauritius" +msgstr "" + +#. 462 +msgid "Maldives" +msgstr "" + +#. 454 +msgid "Malawi" +msgstr "" + +#. 484 +msgid "Mexico" +msgstr "" + +#. 458 +msgid "Malaysia" +msgstr "" + +#. 508 +msgid "Mozambique" +msgstr "" + +#. 516 +msgid "Namibia" +msgstr "" + +#. 540 +msgid "New Caledonia" +msgstr "" + +#. 562 +msgid "Niger" +msgstr "" + +#. 574 +msgid "Norfolk Island" +msgstr "" + +#. 566 +msgid "Nigeria" +msgstr "" + +#. 558 +msgid "Nicaragua" +msgstr "" + +#. 528 +msgid "Netherlands" +msgstr "" + +#. 578 +msgid "Norway" +msgstr "" + +#. 524 +msgid "Nepal" +msgstr "" + +#. 520 +msgid "Nauru" +msgstr "" + +#. 570 +msgid "Niue" +msgstr "" + +#. 554 +msgid "New Zealand" +msgstr "" + +#. 512 +msgid "Oman" +msgstr "" + +#. 591 +msgid "Panama" +msgstr "" + +#. 604 +msgid "Peru" +msgstr "" + +#. 258 +msgid "French Polynesia" +msgstr "" + +#. 598 +msgid "Papua New Guinea" +msgstr "" + +#. 608 +msgid "Philippines" +msgstr "" + +#. 586 +msgid "Pakistan" +msgstr "" + +#. 616 +msgid "Poland" +msgstr "" + +#. 666 +msgid "Saint Pierre and Miquelon" +msgstr "" + +#. 612 +msgid "Pitcairn" +msgstr "" + +#. 630 +msgid "Puerto Rico" +msgstr "" + +#. 275 +msgid "Palestinian Territory, Occupied" +msgstr "" + +#. 620 +msgid "Portugal" +msgstr "" + +#. 585 +msgid "Palau" +msgstr "" + +#. 600 +msgid "Paraguay" +msgstr "" + +#. 634 +msgid "Qatar" +msgstr "" + +#. 638 +msgid "Reunion" +msgstr "" + +#. 642 +msgid "Romania" +msgstr "" + +#. 688 +msgid "Serbia" +msgstr "" + +#. 643 +msgid "Russian Federation" +msgstr "" + +#. 646 +msgid "Rwanda" +msgstr "" + +#. 682 +msgid "Saudi Arabia" +msgstr "" + +#. 090 +msgid "Solomon Islands" +msgstr "" + +#. 690 +msgid "Seychelles" +msgstr "" + +#. 736 +msgid "Sudan" +msgstr "" + +#. 752 +msgid "Sweden" +msgstr "" + +#. 702 +msgid "Singapore" +msgstr "" + +#. 654 +msgid "Saint Helena" +msgstr "" + +#. 705 +msgid "Slovenia" +msgstr "" + +#. 744 +msgid "Svalbard and Jan Mayen" +msgstr "" + +#. 703 +msgid "Slovakia" +msgstr "" + +#. 694 +msgid "Sierra Leone" +msgstr "" + +#. 674 +msgid "San Marino" +msgstr "" + +#. 686 +msgid "Senegal" +msgstr "" + +#. 706 +msgid "Somalia" +msgstr "" + +#. 740 +msgid "Suriname" +msgstr "" + +#. 728 +msgid "South Sudan" +msgstr "" + +#. 678 +msgid "Sao Tome and Principe" +msgstr "" + +#. 222 +msgid "El Salvador" +msgstr "" + +#. 534 +msgid "Sint Maarten (Dutch part)" +msgstr "" + +#. 760 +msgid "Syrian Arab Republic" +msgstr "" + +#. 748 +msgid "Swaziland" +msgstr "" + +#. 796 +msgid "Turks and Caicos Islands" +msgstr "" + +#. 148 +msgid "Chad" +msgstr "" + +#. 260 +msgid "French Southern Territories" +msgstr "" + +#. 768 +msgid "Togo" +msgstr "" + +#. 764 +msgid "Thailand" +msgstr "" + +#. 762 +msgid "Tajikistan" +msgstr "" + +#. 772 +msgid "Tokelau" +msgstr "" + +#. 626 +msgid "Timor-Leste" +msgstr "" + +#. 795 +msgid "Turkmenistan" +msgstr "" + +#. 788 +msgid "Tunisia" +msgstr "" + +#. 776 +msgid "Tonga" +msgstr "" + +#. 792 +msgid "Turkey" +msgstr "" + +#. 780 +msgid "Trinidad and Tobago" +msgstr "" + +#. 798 +msgid "Tuvalu" +msgstr "" + +#. 158 +msgid "Taiwan, Province of China" +msgstr "" + +#. 834 +msgid "Tanzania, United Republic of" +msgstr "" + +#. 804 +msgid "Ukraine" +msgstr "" + +#. 800 +msgid "Uganda" +msgstr "" + +#. 581 +msgid "United States Minor Outlying Islands" +msgstr "" + +#. 840 +msgid "United States" +msgstr "" + +#. 858 +msgid "Uruguay" +msgstr "" + +#. 860 +msgid "Uzbekistan" +msgstr "" + +#. 336 +msgid "Holy See (Vatican City State)" +msgstr "" + +#. 670 +msgid "Saint Vincent and the Grenadines" +msgstr "" + +#. 862 +msgid "Venezuela" +msgstr "" + +#. 092 +msgid "Virgin Islands, British" +msgstr "" + +#. 850 +msgid "Virgin Islands, U.S." +msgstr "" + +#. 704 +msgid "Viet Nam" +msgstr "" + +#. 548 +msgid "Vanuatu" +msgstr "" + +#. 876 +msgid "Wallis and Futuna" +msgstr "" + +#. 882 +msgid "Samoa" +msgstr "" + +#. 887 +msgid "Yemen" +msgstr "" + +#. 175 +msgid "Mayotte" +msgstr "" + +#. 710 +msgid "South Africa" +msgstr "" + +#. 894 +msgid "Zambia" +msgstr "" + +#. 716 +msgid "Zimbabwe" +msgstr "" + +msgid "* Unknown, add is_in tags to those cities" +msgstr "" + +msgid "" +"navit usage:\n" +"navit [options] [configfile]\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" +"\t-h: print this usage info and exit.\n" +"\t-v: print the version and exit.\n" +msgstr "" + +#. We have not found an existing config file from all possibilities +msgid "No config file navit.xml, navit.xml.local found\n" +msgstr "" + +#, c-format +msgid "Error parsing config file '%s': %s\n" +msgstr "" + +#, c-format +msgid "Using config file '%s'\n" +msgstr "" + +#, c-format +msgid "Error: No configuration found in config file '%s'\n" +msgstr "" + +msgid "" +"Internal initialization failed, exiting. Check previous error messages.\n" +msgstr "" + +msgid "unknown street" +msgstr "" + +#. Safe cast: attr_generic_set_attr does not modify its parameter. +msgid "Unnamed vehicle" +msgstr "" + +msgid "Failed to write bookmarks file" +msgstr "" + +#. Strings from navit_shipped.xml +msgid "Map Point" +msgstr "" + +msgid "Car" +msgstr "" + +msgid "Iso2" +msgstr "" + +msgid "Iso3" +msgstr "" + +msgid "Country" +msgstr "" + +msgid "Postal" +msgstr "" + +msgid "Town" +msgstr "" + +msgid "District" +msgstr "" + +msgid "Street" +msgstr "" + +msgid "Number" +msgstr "" + +msgid "Enter Destination" +msgstr "" + +msgid "Zip Code" +msgstr "" + +msgid "City" +msgstr "" + +msgid "District/Township" +msgstr "" + +msgid "Map" +msgstr "" + +msgid "Bookmark" +msgstr "" + +msgid "Destination" +msgstr "" + +#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired). +msgid "_Display" +msgstr "" + +msgid "_Route" +msgstr "" + +msgid "_Former Destinations" +msgstr "" + +msgid "_Bookmarks" +msgstr "" + +msgid "_Map" +msgstr "" + +msgid "_Layout" +msgstr "" + +msgid "_Projection" +msgstr "" + +msgid "_Vehicle" +msgstr "" + +msgid "Zoom_Out" +msgstr "" + +msgid "Decrease zoom level" +msgstr "" + +msgid "Zoom_In" +msgstr "" + +msgid "Increase zoom level" +msgstr "" + +msgid "_Recalculate" +msgstr "" + +msgid "Redraw map" +msgstr "" + +msgid "_Info" +msgstr "" + +msgid "Set _destination" +msgstr "" + +msgid "Opens address search dialog" +msgstr "" + +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + +msgid "_Stop Navigation" +msgstr "" + +msgid "Test" +msgstr "" + +msgid "_Quit" +msgstr "" + +msgid "Quit the application" +msgstr "" + +msgid "Show position _cursor" +msgstr "" + +msgid "_Lock on Road" +msgstr "" + +msgid "_Keep orientation to the North" +msgstr "" + +msgid "Switches map orientation to the north or the vehicle" +msgstr "" + +msgid "_Roadbook" +msgstr "" + +msgid "Show/hide route description" +msgstr "" + +msgid "_Autozoom" +msgstr "" + +msgid "Enable/disable automatic zoom level changing" +msgstr "" + +msgid "_Fullscreen" +msgstr "" + +msgid "Data" +msgstr "" + +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + +msgid "N" +msgstr "" + +msgid "NE" +msgstr "" + +msgid "E" +msgstr "" + +msgid "SE" +msgstr "" + +msgid "S" +msgstr "" + +msgid "SW" +msgstr "" + +msgid "W" +msgstr "" + +msgid "NW" +msgstr "" + +#. Android resource: @strings/no +msgid "No" +msgstr "" + +msgid "2D" +msgstr "" + +msgid "3D" +msgstr "" + +msgid "OT" +msgstr "" + +#, c-format +msgid "Route %4.0fkm %02d:%02d ETA" +msgstr "" + +msgid "Route 0000km 0+00:00 ETA" +msgstr "" + +msgid "Help" +msgstr "" + +#, c-format +msgid "Waypoint %s" +msgstr "" + +msgid "Select waypoint to insert the new one before" +msgstr "" + +msgid "View in Browser" +msgstr "" + +msgid "Item type" +msgstr "" + +#. Android resource: @strings/address_search_streets +msgid "Streets" +msgstr "" + +msgid "House numbers" +msgstr "" + +msgid "View Attributes" +msgstr "" + +msgid "Set as position (and deactivate vehicle)" +msgstr "" + +msgid "POIs" +msgstr "" + +msgid "View on map" +msgstr "" + +msgid "Remove search results from the map" +msgstr "" + +msgid "Show results on the map" +msgstr "" + +msgid "Cut Bookmark" +msgstr "" + +msgid "Copy Bookmark" +msgstr "" + +msgid "Rename Bookmark" +msgstr "" + +msgid "Paste Bookmark" +msgstr "" + +msgid "Delete Bookmark" +msgstr "" + +msgid "Delete waypoint" +msgstr "" + +msgid "Bookmarks" +msgstr "" + +msgid "Bookmarks as waypoints" +msgstr "" + +msgid "Save waypoints" +msgstr "" + +msgid "Replace with waypoints" +msgstr "" + +msgid "Delete Folder" +msgstr "" + +#. Adds the Bookmark folders +msgid "Add Bookmark folder" +msgstr "" + +#. Pastes the Bookmark +msgid "Paste bookmark" +msgstr "" + +#, c-format +msgid "Bookmark %s" +msgstr "" + +#, c-format +msgid "Download %s" +msgstr "" + +msgid "Map Download" +msgstr "" + +msgid "Active" +msgstr "" + +msgid "Download Enabled" +msgstr "" + +msgid "Download completely" +msgstr "" + +msgid "Show Satellite Status" +msgstr "" + +msgid " Elevation " +msgstr "" + +msgid " Azimuth " +msgstr "" + +msgid "Show NMEA Data" +msgstr "" + +msgid "car" +msgstr "" + +msgid "bike" +msgstr "" + +msgid "pedestrian" +msgstr "" + +#, c-format +msgid "Current profile: %s" +msgstr "" + +#, c-format +msgid "Change profile to: %s" +msgstr "" + +msgid "Set as active" +msgstr "" + +msgid "Show Satellite status" +msgstr "" + +msgid "Show NMEA data" +msgstr "" + +msgid "Add Bookmark" +msgstr "" + +msgid "Rename" +msgstr "" + +msgid "About Navit" +msgstr "" + +#. Authors +msgid "By" +msgstr "" + +#. Contributors +msgid "And all the Navit Team" +msgstr "" + +msgid "members and contributors." +msgstr "" + +msgid "Waypoints" +msgstr "" + +msgid "Enter Coordinates" +msgstr "" + +#. +#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill); +#. gui_internal_widget_append(wb, w); +#. +#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill); +#. gui_internal_widget_append(w, we); +msgid "Latitude Longitude" +msgstr "" + +msgid "Enter coordinates, for example:" +msgstr "" + +msgid "Vehicle" +msgstr "" + +msgid "Rules" +msgstr "" + +msgid "Lock on road" +msgstr "" + +msgid "Northing" +msgstr "" + +msgid "Map follows Vehicle" +msgstr "" + +msgid "Plan with Waypoints" +msgstr "" + +msgid "Maps" +msgstr "" + +msgid "Layout" +msgstr "" + +msgid "Height Profile" +msgstr "" + +msgid "Route Description" +msgstr "" + +msgid "Show Locale" +msgstr "" + +msgid "Former Destinations" +msgstr "" + +msgid "- No former destinations available -" +msgstr "" + +msgid "Message" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Back to map" +msgstr "" + +msgid "Main Menu" +msgstr "" + +msgid "House number" +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Prev" +msgstr "" + +msgid "Return to route!" +msgstr "" + +#. warning told +msgid "Look out! Camera!" +msgstr "" + +#. warning told +msgid "Please decrease your speed" +msgstr "" + +msgid "partial match" +msgstr "" + +#. Android resource: @strings/address_search_button +msgid "Search" +msgstr "" + +#. Android resource: @strings/address_search_towns +msgid "Towns" +msgstr "" + +#. Android resource: @strings/position_popup_drive_here +msgid "Route to here" +msgstr "" + +msgid "Map data (c) OpenStreetMap contributors, ODBL" +msgstr "" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + +msgid "Downloaded maps" +msgstr "" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + +msgid "Whole Planet" +msgstr "" + +msgid "Africa" +msgstr "" + +msgid "Canary Islands" +msgstr "" + +msgid "Asia" +msgstr "" + +msgid "Korea" +msgstr "" + +msgid "Taiwan" +msgstr "" + +msgid "UAE+Other" +msgstr "" + +msgid "Oceania" +msgstr "" + +msgid "Tasmania" +msgstr "" + +msgid "Victoria" +msgstr "" + +msgid "New South Wales" +msgstr "" + +msgid "Europe" +msgstr "" + +msgid "Western Europe" +msgstr "" + +msgid "Azores" +msgstr "" + +msgid "BeNeLux" +msgstr "" + +msgid "Alsace" +msgstr "" + +msgid "Aquitaine" +msgstr "" + +msgid "Auvergne" +msgstr "" + +msgid "Basse-Normandie" +msgstr "" + +msgid "Bourgogne" +msgstr "" + +msgid "Bretagne" +msgstr "" + +msgid "Centre" +msgstr "" + +msgid "Champagne-Ardenne" +msgstr "" + +msgid "Corse" +msgstr "" + +msgid "Franche-Comte" +msgstr "" + +msgid "Haute-Normandie" +msgstr "" + +msgid "Ile-de-France" +msgstr "" + +msgid "Languedoc-Roussillon" +msgstr "" + +msgid "Limousin" +msgstr "" + +msgid "Lorraine" +msgstr "" + +msgid "Midi-Pyrenees" +msgstr "" + +msgid "Nord-pas-de-Calais" +msgstr "" + +msgid "Pays-de-la-Loire" +msgstr "" + +msgid "Picardie" +msgstr "" + +msgid "Poitou-Charentes" +msgstr "" + +msgid "Provence-Alpes-Cote-d-Azur" +msgstr "" + +msgid "Rhone-Alpes" +msgstr "" + +msgid "Baden-Wuerttemberg" +msgstr "" + +msgid "Bayern" +msgstr "" + +msgid "Mittelfranken" +msgstr "" + +msgid "Niederbayern" +msgstr "" + +msgid "Oberbayern" +msgstr "" + +msgid "Oberfranken" +msgstr "" + +msgid "Oberpfalz" +msgstr "" + +msgid "Schwaben" +msgstr "" + +msgid "Unterfranken" +msgstr "" + +msgid "Berlin" +msgstr "" + +msgid "Brandenburg" +msgstr "" + +msgid "Bremen" +msgstr "" + +msgid "Hamburg" +msgstr "" + +msgid "Hessen" +msgstr "" + +msgid "Mecklenburg-Vorpommern" +msgstr "" + +msgid "Niedersachsen" +msgstr "" + +msgid "Nordrhein-westfalen" +msgstr "" + +msgid "Rheinland-Pfalz" +msgstr "" + +msgid "Saarland" +msgstr "" + +msgid "Sachsen-Anhalt" +msgstr "" + +msgid "Sachsen" +msgstr "" + +msgid "Schleswig-Holstein" +msgstr "" + +msgid "Thueringen" +msgstr "" + +msgid "Mallorca" +msgstr "" + +msgid "Galicia" +msgstr "" + +msgid "Scandinavia" +msgstr "" + +msgid "England" +msgstr "" + +msgid "Buckinghamshire" +msgstr "" + +msgid "Cambridgeshire" +msgstr "" + +msgid "Cumbria" +msgstr "" + +msgid "East yorkshire with hull" +msgstr "" + +msgid "Essex" +msgstr "" + +msgid "Herefordshire" +msgstr "" + +msgid "Kent" +msgstr "" + +msgid "Lancashire" +msgstr "" + +msgid "Leicestershire" +msgstr "" + +msgid "Norfolk" +msgstr "" + +msgid "Nottinghamshire" +msgstr "" + +msgid "Oxfordshire" +msgstr "" + +msgid "Shropshire" +msgstr "" + +msgid "Somerset" +msgstr "" + +msgid "South yorkshire" +msgstr "" + +msgid "Suffolk" +msgstr "" + +msgid "Surrey" +msgstr "" + +msgid "Wiltshire" +msgstr "" + +msgid "Scotland" +msgstr "" + +msgid "Wales" +msgstr "" + +msgid "Crete" +msgstr "" + +msgid "North America" +msgstr "" + +msgid "Alaska" +msgstr "" + +msgid "Hawaii" +msgstr "" + +msgid "USA" +msgstr "" + +msgid " (except Alaska and Hawaii)" +msgstr "" + +msgid "Midwest" +msgstr "" + +msgid "Michigan" +msgstr "" + +msgid "Ohio" +msgstr "" + +msgid "Northeast" +msgstr "" + +msgid "Massachusetts" +msgstr "" + +msgid "Vermont" +msgstr "" + +msgid "Pacific" +msgstr "" + +msgid "South" +msgstr "" + +msgid "Arkansas" +msgstr "" + +msgid "District of Columbia" +msgstr "" + +msgid "Florida" +msgstr "" + +msgid "Louisiana" +msgstr "" + +msgid "Maryland" +msgstr "" + +msgid "Mississippi" +msgstr "" + +msgid "Oklahoma" +msgstr "" + +msgid "Texas" +msgstr "" + +msgid "Virginia" +msgstr "" + +msgid "West Virginia" +msgstr "" + +msgid "West" +msgstr "" + +msgid "Arizona" +msgstr "" + +msgid "California" +msgstr "" + +msgid "Colorado" +msgstr "" + +msgid "Idaho" +msgstr "" + +msgid "Montana" +msgstr "" + +msgid "New Mexico" +msgstr "" + +msgid "Nevada" +msgstr "" + +msgid "Oregon" +msgstr "" + +msgid "Utah" +msgstr "" + +msgid "Washington State" +msgstr "" + +msgid "South+Middle America" +msgstr "" + +msgid "Guyane Francaise" +msgstr "" + +msgid "downloading" +msgstr "" + +#. Android resource: @strings/map_download_ready +msgid "ready" +msgstr "" + +msgid "Media selected for map storage is not available" +msgstr "" + +#. Android resource: @strings/map_download_not_enough_free_space +msgid "Not enough free space" +msgstr "" + +msgid "Error downloading map!" +msgstr "" + +msgid "Error writing map!" +msgstr "" + +msgid "Map download aborted!" +msgstr "" + +#. Android resource: @strings/map_download_eta +msgid "ETA" +msgstr "" + +#. Android resource: @strings/map_download_title +msgid "Map download" +msgstr "" + +msgid "Vehicle Position" +msgstr "" + +msgid "Main menu" +msgstr "" + +msgid "" +"Show\n" +"Map" +msgstr "" + +msgid "Settings" +msgstr "" + +msgid "Tools" +msgstr "" + +msgid "Route" +msgstr "" + +msgid "About" +msgstr "" + +msgid "Quit" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "" +"Former\n" +"Destinations" +msgstr "" + +msgid "Coordinates" +msgstr "" + +msgid "" +"Stop\n" +"Navigation" +msgstr "" + +msgid "Display" +msgstr "" + +msgid "Fullscreen" +msgstr "" + +msgid "Window Mode" +msgstr "" + +msgid "Description" +msgstr "" + +msgid "" +"Drop last \n" +"Waypoint" +msgstr "" + +msgid "" +"Drop next \n" +"Waypoint" +msgstr "" + +msgid "Satellite Status" +msgstr "" + +msgid "NMEA Data" +msgstr "" + +msgid "car_shortest" +msgstr "" + +msgid "car_avoid_tolls" +msgstr "" + +msgid "car_pedantic" +msgstr "" + +msgid "horse" +msgstr "" + +msgid "Truck" +msgstr "" + +#. Strings from android/res/values/strings.xml +#. Android resource: @strings/yes +msgid "Yes" +msgstr "" + +#. Android resource: @strings/notification_ticker +msgid "Navit started" +msgstr "" + +#. Android resource: @strings/notification_event_default +msgid "Navit running" +msgstr "" + +#. Android resource: @strings/initial_info_box_title +msgid "Welcome to Navit" +msgstr "" + +#. Android resource: @strings/initial_info_box_message +msgid "" +"Thank you for installing Navit!\n" +"\n" +"To start, select \"Download maps\" from the menu to download a map. Note: " +"The map filesize may be large (>50MB) - a wifi connection is recommended.\n" +"\n" +"Mapdata: (c) OpenStreetMap contributors\n" +"\n" +"Enjoy Navit!" +msgstr "" + +#. Android resource: @strings/initial_info_box_OK +msgid "OK" +msgstr "" + +#. Android resource: @strings/initial_info_box_more_info +msgid "More info" +msgstr "" + +#. Android resource: @strings/optionsmenu_zoom_in +msgid "Zoom in" +msgstr "" + +#. Android resource: @strings/optionsmenu_zoom_out +msgid "Zoom out" +msgstr "" + +#. Android resource: @strings/optionsmenu_download_maps +msgid "Download maps" +msgstr "" + +#. Android resource: @strings/optionsmenu_toggle_poi +msgid "Toggle POIs" +msgstr "" + +#. Android resource: @strings/optionsmenu_exit_navit +msgid "Exit Navit" +msgstr "" + +#. Android resource: @strings/optionsmenu_backup_restore +msgid "Backup / Restore" +msgstr "" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + +#. Android resource: @strings/map_delete +msgid "Delete this map?" +msgstr "" + +#. Android resource: @strings/map_download_downloading +msgid "Downloading:" +msgstr "" + +#. Android resource: @strings/map_download_download_error +msgid "Error downloading map." +msgstr "" + +#. Android resource: @strings/map_download_download_aborted +msgid "Map download aborted" +msgstr "" + +#. Android resource: @strings/map_no_fix +msgid "No location. Reopen after location fix." +msgstr "" + +#. Android resource: @strings/maps_for_current_location +msgid "Maps containing current location" +msgstr "" + +#. Android resource: @strings/address_search_title +msgid "Address search" +msgstr "" + +#. Android resource: @strings/address_enter_destination +msgid "Enter destination" +msgstr "" + +#. Android resource: @strings/address_partial_match +msgid "Match partial address" +msgstr "" + +#. Android resource: @strings/address_search_searching +msgid "Searching..." +msgstr "" + +#. Android resource: @strings/address_search_not_found +msgid "Address not found" +msgstr "" + +#. Android resource: @strings/address_search_getting_results +msgid "Getting search results" +msgstr "" + +#. Android resource: @strings/address_search_loading_results +msgid "Loading search results" +msgstr "" + +#. Android resource: @strings/address_search_no_results +msgid "No results found" +msgstr "" + +#. Android resource: @strings/address_search_no_text_entered +msgid "No text entered" +msgstr "" + +#. Android resource: @strings/address_search_set_destination +msgid "Setting destination to:" +msgstr "" + +#. Android resource: @strings/choose_an_action +msgid "Choose an action" +msgstr "" + +#. Android resource: @strings/please_insert_an_sd_card +msgid "Please insert an SD Card" +msgstr "" + +#. Android resource: @strings/backing_up +msgid "Backing up..." +msgstr "" + +#. Android resource: @strings/restoring +msgid "Restoring..." +msgstr "" + +#. Android resource: @strings/failed_to_create_backup_directory +msgid "Failed to create backup directory" +msgstr "" + +#. Android resource: @strings/backup_failed +msgid "Backup failed" +msgstr "" + +#. Android resource: @strings/no_backup_found +msgid "No backup found" +msgstr "" + +#. Android resource: @strings/failed_to_restore +msgid "Failed to restore" +msgstr "" + +#. Android resource: @strings/backup_successful +msgid "Backup successful" +msgstr "" + +#. Android resource: @strings/restore_successful_please_restart_navit +msgid "" +"Restore Successful\n" +"Please restart Navit" +msgstr "" + +#. Android resource: @strings/backup_not_found +msgid "Backup not found" +msgstr "" + +#. Android resource: @strings/restore_failed +msgid "Restore failed" +msgstr "" + +#. Android resource: @strings/select_backup +msgid "Select backup" +msgstr "" + +#. Android resource: @strings/backup +msgid "Backup" +msgstr "" + +#. Android resource: @strings/restore +msgid "Restore" +msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/eo.po.in navit-0.5.0+dfsg.1/po/eo.po.in --- navit-0.5.0~svn5900+dfsg.1/po/eo.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/eo.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,27 +1,24 @@ -# Esperanto translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Esperanto translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer # Lucas Larson https://launchpad.net/~lucaslarson # Michael Moroni https://launchpad.net/~airon90 +# Michael von Glasow https://launchpad.net/~michael-vonglasow # OlivierWeb https://launchpad.net/~olivierweb - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-27 21:43+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Esperanto \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: eo\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -77,14 +74,6 @@ msgstr "sesa eliro" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "en %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -93,14 +82,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metroj" - -#, c-format -msgid "in %d meters" -msgstr "en %d metrojn" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -109,14 +90,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometrojn" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "en %d.%d kilometrojn" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -129,6 +102,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metroj" + +#, c-format +msgid "in %d meters" +msgstr "en %d metrojn" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometrojn" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "en %d.%d kilometrojn" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "unu kilometro" @@ -140,30 +129,53 @@ msgstr[0] "en unu kilometron" msgstr[1] "en %d kilometrojn" -msgid "exit" -msgstr "eliro" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "al la ramplon" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sal la straton %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sal la %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sal la %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sal la %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sal la %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -171,33 +183,18 @@ msgid "%sinto the %s" msgstr "%sal la %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "dekstren" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "maldekstren" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "facile " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "forte " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "vere forte " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "nekonata " - msgid "When possible, please turn around" msgstr "Kiam eble, bonvole ĉirkaŭturnu" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Sekvu la straton ĝis la sekva %s" + msgid "Enter the roundabout soon" msgstr "" @@ -206,56 +203,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "do lasu la trafikcirklon ĉe la %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Lasu la trafikcirklon ĉe la %1$s %2$s" +msgid "soon" +msgstr "baldaŭ" + +msgid "now" +msgstr "nun" + +msgid "then" +msgstr "do" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Lasu la trafikcirklon ĉe la %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Sekvu la straton ĝis la sekva %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "baldaŭ" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Turnu %2$s ĉe la strato %1$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "post %i stratoj" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "nun" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "dekstren" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "maldekstren" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "facile " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "forte " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "do iru %2$s al la strato %1$s" +msgstr "" -msgid "error" -msgstr "eraro" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Turnu %2$s ĉe la strato %1$s" + +#, c-format +msgid "after %i roads" +msgstr "post %i stratoj" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Turnu %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "do %1$s turnu %2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "do ĉirkaŭturnu" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Ĉirkaŭturnu %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "do ĉirkaŭturnu" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Ĉirkaŭturnu %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "sekvu" +msgid "then you have reached your destination." +msgstr "do vi atingis la celon" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Vi atingis la celon %s" -msgid "then you have reached your destination." -msgstr "do vi atingis la celon" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Eliro" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1315,11 +1432,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1456,6 +1575,12 @@ msgid "Opens address search dialog" msgstr "Ĝi malfermas dialogon por serĉi adreson" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1498,6 +1623,100 @@ msgid "Data" msgstr "Datumoj" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1809,12 +2028,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2185,13 +2423,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2356,6 +2597,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2481,3 +2726,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "do lasu la trafikcirklon ĉe la %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/es.po.in navit-0.5.0+dfsg.1/po/es.po.in --- navit-0.5.0~svn5900+dfsg.1/po/es.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/es.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ # Spanish translations for navit -# Copyright (C) 2006-2014 The Navit Team +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Benjamín Valero Espinosa https://launchpad.net/~benjavalero @@ -11,6 +11,7 @@ # Jonay https://launchpad.net/~jonay-santana # KaZeR https://launchpad.net/~kazer # Luis Alejandro Rangel Sánchez https://launchpad.net/~xlarsx +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Paco Molinero https://launchpad.net/~franciscomol # Ricardo Jurado https://launchpad.net/~ricky131313 # agerio https://launchpad.net/~agerio @@ -20,22 +21,18 @@ # pataquets https://launchpad.net/~pataquets # singesang https://launchpad.net/~singesang - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-12-18 16:54+0000\n" -"Last-Translator: iceman75 \n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Chris Eubank \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-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" -"Language: \n" +"Language: es\n" msgid "Running from source directory\n" msgstr "Ejecutando desde el directorio fuente\n" @@ -89,14 +86,6 @@ msgstr "sexta salida" #, c-format -msgid "%d m" -msgstr "%d metros" - -#, c-format -msgid "in %d m" -msgstr "en %d metros" - -#, c-format msgid "%d feet" msgstr "%d pies" @@ -105,14 +94,6 @@ msgstr "en %d pies" #, c-format -msgid "%d meters" -msgstr "%d metros" - -#, c-format -msgid "in %d meters" -msgstr "en %d metros" - -#, c-format msgid "%d.%d miles" msgstr "%d,%d millas" @@ -121,14 +102,6 @@ msgstr "en %d,%d millas" #, c-format -msgid "%d.%d kilometers" -msgstr "%d,%d kilómetros" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "en %d,%d kilómetros" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "una milla" @@ -141,6 +114,22 @@ msgstr[1] "en %d millas" #, c-format +msgid "%d meters" +msgstr "%d metros" + +#, c-format +msgid "in %d meters" +msgstr "en %d metros" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d,%d kilómetros" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "en %d,%d kilómetros" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "un kilómetro" @@ -152,122 +141,250 @@ msgstr[0] "en un kilómetro" msgstr[1] "en %d kilómetros" -msgid "exit" -msgstr "salir" - -msgid "into the ramp" -msgstr "en la salida" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s en la calle %s %s %s" +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$sen la %2$s%3$s%4$s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s en el %s%s%s" +msgid "%1$sonto %2$s" +msgstr "%1$sen la carretera %2$s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s en la %s%s%s" +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$sen el %2$s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s en %s%s%s" +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$sen la %2$s" -#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s" -msgstr "%s en la %s" +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$sen la carretera %2$s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "a la derecha" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "en el carril de entrada" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "a la izquierda" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "%sen la calle %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "ligeramente " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%sen el %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "bruscamente " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%sen la %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "de forma muy pronunciada " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "desconocido " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%sen la calle %s%s%s" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "%sen la %s" msgid "When possible, please turn around" msgstr "Dé la vuelta cuando sea posible" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "hacia %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Continúe en esta carretera durante %s" + msgid "Enter the roundabout soon" msgstr "Entre en la próxima rotonda" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "Entre en la rotonda %s" +msgstr "" + +msgid "then enter the roundabout" +msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "después salga de la rotonda por la %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Salga de la rotonda por la %1$s %2$s" +msgid "soon" +msgstr "próximamente" + +msgid "now" +msgstr "ahora" + +msgid "then" +msgstr "luego" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Salga de la rotonda por la %s" +msgid "then merge%1$s|right" +msgstr "luego entre%1$s" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Continúe en esta carretera durante %s" +msgid "Merge %1$s%2$s|right" +msgstr "Entre%2$s %1$s" -msgid "soon" -msgstr "próximamente" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "luego entre%1$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Tome la %1$s carretera %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "Entre%2$s %1$s" +msgid "on your left" +msgstr "a la izquierda" + +msgid "on your right" +msgstr "a la derecha" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "después de %i carreteras" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Tome la salida %1$s %2$s %3$s" -msgid "now" -msgstr "ahora" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Tome la salida %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "al enlace" + +msgid "at exit" +msgstr "a la salida" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "luego continúe todo recto%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "Continúe todo recto %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "luego manténgase por la derecha%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "Manténgase por la derecha %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "luego manténgase por la izquierda%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "Manténgase por la izquierda %1$s%2$s%3$s" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "a la derecha" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "a la izquierda" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "ligeramente " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "bruscamente " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "entonces tome la %1$s salida %2$s" +msgstr "" -msgid "error" -msgstr "error" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Tome la %1$s carretera %2$s" + +#, c-format +msgid "after %i roads" +msgstr "después de %i carreteras" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Gire %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "luego gire %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "luego dé la vuelta" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Dé la vuelta %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "luego dé la vuelta" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Dé la vuelta %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "continúe" + +msgid "then you have reached your destination." +msgstr "entonces ha llegado a su destino." +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Ha llegado a su destino %s" -msgid "then you have reached your destination." -msgstr "entonces ha llegado a su destino." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Enlace" + +msgid "Exit" +msgstr "Salida" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1327,19 +1444,14 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"Uso de navit:\n" -"navit[opciones][archivo de configuración]\n" -"\t-c : usa como archivo de configuración.\n" -"\t-d : configura en nivel de debug a (0-3). Sobreescribe lo indicado " -"en el archivo de configuracion.\n" -"\t-h: muestra esta informacion de uso y sale.\n" -"\t-v: Muestra la version y sale..\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1478,6 +1590,12 @@ msgid "Opens address search dialog" msgstr "Abre el dialogo de busqueda de dirección" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "_Detener navegación" @@ -1520,6 +1638,100 @@ msgid "Data" msgstr "Datos" +msgid "Pharmacy" +msgstr "Farmacia" + +msgid "Restaurant" +msgstr "Restaurante" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "Hotel" + +msgid "Car parking" +msgstr "Estacionamiento" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "Cine" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "Escuela" + +msgid "Police" +msgstr "Policía" + +msgid "Justice" +msgstr "Juzgado" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1807,7 +2019,7 @@ #. warning told msgid "Look out! Camera!" -msgstr "!Atención! Radar" +msgstr "¡Atención! Radar" #. warning told msgid "Please decrease your speed" @@ -1831,12 +2043,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Datos de Mapa (c) contribuyentes de OpenStreetMap, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "Mapas descargados" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "Cancelar" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "Todo el Planeta" @@ -1952,16 +2183,16 @@ msgstr "Baden-Wuerttemberg" msgid "Bayern" -msgstr "Bayern" +msgstr "Baviera" msgid "Mittelfranken" msgstr "Franconia Media" msgid "Niederbayern" -msgstr "Bajo Bayern" +msgstr "Baja Baviera" msgid "Oberbayern" -msgstr "Alto Bayern" +msgstr "Alta Baviera" msgid "Oberfranken" msgstr "Alta Franconia" @@ -2207,13 +2438,16 @@ msgid "ready" msgstr "listo" -msgid "Error downloading map!" -msgstr "Error al descargar el mapa" +msgid "Media selected for map storage is not available" +msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "No hay suficiente espacio libre" +msgid "Error downloading map!" +msgstr "Error al descargar el mapa" + msgid "Error writing map!" msgstr "Error al guardar el mapa" @@ -2393,6 +2627,10 @@ msgid "Backup / Restore" msgstr "Respaldar / Restaurar" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "¿Borrar este mapa?" @@ -2520,3 +2758,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Restaurar" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "después salga de la rotonda por la %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/et.po.in navit-0.5.0+dfsg.1/po/et.po.in --- navit-0.5.0~svn5900+dfsg.1/po/et.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/et.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ -# Estonian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Estonian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Andres Kaaber https://launchpad.net/~imapi @@ -8,21 +8,18 @@ # lyyser https://launchpad.net/~lyyser # thucar https://launchpad.net/~rait - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-12-05 21:25+0000\n" -"Last-Translator: Jalakas \n" +"PO-Revision-Date: 2015-12-22 07:09+0000\n" +"Last-Translator: Manuel Hohmann \n" "Language-Team: Estonian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: et\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -77,14 +74,6 @@ msgstr "kuuendast mahasõidust" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "%d m pärast" - -#, c-format msgid "%d feet" msgstr "%d jalga" @@ -93,14 +82,6 @@ msgstr "%d jala pärast" #, c-format -msgid "%d meters" -msgstr "%d meetrit" - -#, c-format -msgid "in %d meters" -msgstr "%d meetri pärast" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d miili" @@ -109,14 +90,6 @@ msgstr "%d.%d miili pärast" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilomeetrit" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "%d.%d kilomeetri pärast" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "üks miil" @@ -129,6 +102,22 @@ msgstr[1] "%d miili pärast" #, c-format +msgid "%d meters" +msgstr "%d meetrit" + +#, c-format +msgid "in %d meters" +msgstr "%d meetri pärast" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilomeetrit" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "%d.%d kilomeetri pärast" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "üks kilomeeter" @@ -140,30 +129,53 @@ msgstr[0] "ühe kilomeetri pärast" msgstr[1] "%d kilomeetri pärast" -msgid "exit" -msgstr "mahasõit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "kaldteele" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%s %s%s%s tänavale" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%s %s%s%s tänavale" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%s %s%s%s tänavale" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%s %s%s%s tänavale" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -171,91 +183,196 @@ msgid "%sinto the %s" msgstr "%steele %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "paremale" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "vasakule" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "laugelt " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "järsult " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "väga järsult " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "teadmata " - msgid "When possible, please turn around" msgstr "Kui võimalik, palun pööra ümber" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Mööda teed järgmised %s" + msgid "Enter the roundabout soon" msgstr "Sõida varsti ringteele" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "Ringteeni %s" +msgstr "Sõida ringteele %s" + +msgid "then enter the roundabout" +msgstr "siis sõida ringteele" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "ning lahku ringteelt %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Lahku ringteelt %1$s %2$s" + +msgid "soon" +msgstr "varsti" + +msgid "now" +msgstr "nüüd" + +msgid "then" +msgstr "siis" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Lahku ringteelt %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Mööda teed järgmised %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "varsti" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Vali %1$s tee, mis viib %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "vasakul pool" +msgid "on your right" +msgstr "paremal pool" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "pärast %i teed" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "nüüd" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "paremale" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "vasakule" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "laugelt " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "järsult " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "siis vali %1$s tee %2$s-sse" +msgstr "" -msgid "error" -msgstr "viga" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Vali %1$s tee, mis viib %2$s" + +#, c-format +msgid "after %i roads" +msgstr "pärast %i teed" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Pööra %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "siis pööra %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "siis pööra ümber" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Pööra ümber %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "siis pööra ümber" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Pööra ümber %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "siis oled jõudnud sihtpunkti." +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Sa oled jõudnud sihtpunkti %s" -msgid "then you have reached your destination." -msgstr "siis oled jõudnud sihtpunkti." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Mahasõit" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1315,19 +1432,14 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"navit kasutamine:\n" -"navit [valikud] [konfiguratsioonifail]\n" -"\t-c : kasutab konfiguratsioonifaili .\n" -"\t-d : määrab globaalse veasilumisinfo väljundi taseme (0-3). " -"Tühistab konfiguratsioonifaili määratud taseme.\n" -"\t-h: Prindib praeguse info ja väljub programmist.\n" -"\t-v: Prindib versiooniinfo ja väljub programmist.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1465,6 +1577,12 @@ msgid "Opens address search dialog" msgstr "Ava aadressiotsingu aken" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "_Peata navigeerimine" @@ -1507,6 +1625,100 @@ msgid "Data" msgstr "Andmed" +msgid "Pharmacy" +msgstr "Apteek" + +msgid "Restaurant" +msgstr "Restoran" + +msgid "Restaurant. Fast food" +msgstr "Restoran. Kiirtoit" + +msgid "Hotel" +msgstr "Hotell" + +msgid "Car parking" +msgstr "Autoparkla" + +msgid "Fuel station" +msgstr "Bensiinijaam" + +msgid "Bank" +msgstr "Pank" + +msgid "Hospital" +msgstr "Haigla" + +msgid "Cinema" +msgstr "Kino" + +msgid "Train station" +msgstr "Raudteejaam" + +msgid "School" +msgstr "Kool" + +msgid "Police" +msgstr "Politsei" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "Takso" + +msgid "Shopping" +msgstr "kauplus" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "POI otsing" + +msgid "Select a category" +msgstr "Vali kategooria" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "Vali POI" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Kategooria" + +msgid "Direction" +msgstr "Suund" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "Nimi" + +msgid "Visit Before" +msgstr "Külasta enne" + msgid "N" msgstr "N" @@ -1724,7 +1936,7 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Laiuskraad Pikkuskraad" msgid "Enter coordinates, for example:" msgstr "Sisesta koordinaadid, näiteks:" @@ -1818,12 +2030,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Kaardi andmed (c) OpenStreetMap kaasautorid, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "Allalaetud kaardid" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "Keeldu" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "Kogu planeet" @@ -2194,13 +2425,16 @@ msgid "ready" msgstr "valmis" -msgid "Error downloading map!" -msgstr "Viga kaardi allalaadimisel!" +msgid "Media selected for map storage is not available" +msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Pole piisavalt vaba ruumi!" +msgid "Error downloading map!" +msgstr "Viga kaardi allalaadimisel!" + msgid "Error writing map!" msgstr "Viga kaardi kirjutamisel!" @@ -2379,6 +2613,10 @@ msgid "Backup / Restore" msgstr "Loo varukoopia/taasta" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Kustuta see kaart?" @@ -2506,3 +2744,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Taasta" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "siis lahku ringteelt %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/eu.po.in navit-0.5.0+dfsg.1/po/eu.po.in --- navit-0.5.0~svn5900+dfsg.1/po/eu.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/eu.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,22 @@ -# Basque translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Basque translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Inaki Saez https://launchpad.net/~inaki-saez # mikel https://launchpad.net/~mikel85 - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:42+0000\n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" "Last-Translator: Inaki Saez \n" "Language-Team: Basque \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: eu\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -74,14 +71,6 @@ msgstr "seigarren irteera" #, c-format -msgid "%d m" -msgstr "%d metro" - -#, c-format -msgid "in %d m" -msgstr "%d metrotan" - -#, c-format msgid "%d feet" msgstr "" @@ -90,14 +79,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metro" - -#, c-format -msgid "in %d meters" -msgstr "%d metrotan" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -106,14 +87,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d,%d kilometro" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "%d,%d kilometrotan" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -126,6 +99,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metro" + +#, c-format +msgid "in %d meters" +msgstr "%d metrotan" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d,%d kilometro" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "%d,%d kilometrotan" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "kilometro bat" @@ -137,30 +126,53 @@ msgstr[0] "kilometro batean" msgstr[1] "%d kilometrotan" -msgid "exit" -msgstr "irteera" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "maldan" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%s %s %s %s kalean" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%s %s%s%s-an" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%s %s%s%s-an" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%s %s%s%s-en" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -168,33 +180,18 @@ msgid "%sinto the %s" msgstr "%s %s-an" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "eskuina" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "ezkerra" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "pizka bat " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "gogorki " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "benetan gogor " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "ezezaguna " - msgid "When possible, please turn around" msgstr "Ahal duzunean eman itzulia, mesedez" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Jarraitu bidean urrengo %s-arte" + msgid "Enter the roundabout soon" msgstr "" @@ -203,57 +200,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "gero, irten errotondatik %s-ean" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Irten errotondatik %1$s-ean %2$s" + +msgid "soon" +msgstr "hurrengotan" + +msgid "now" +msgstr "orain" +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Irten errotondatik %s-ean" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Jarraitu bidean urrengo %s-arte" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "hurrengotan" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Hartu %1$s bidea %2$s-ean" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "%i bideen ondoren" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "orain" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "eskuina" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "ezkerra" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "pizka bat " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "gogorki " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "orduan hartu %1$s irteera %2$s-era" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Hartu %1$s bidea %2$s-ean" -msgid "error" -msgstr "akatsa" +#, c-format +msgid "after %i roads" +msgstr "%i bideen ondoren" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Biratu %1$s%2$s-ra %3$s%4$s-tan" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "ondoren biratu %1$s %2$s-ra %3$s%4$s-raino" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" -msgstr "%s helburura iritsi zara" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" msgid "then you have reached your destination." msgstr "dagoeneko helburura iritsi zara" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "%s helburura iritsi zara" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Irteera" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "kokalekua" @@ -1312,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1453,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "Ireki helbidea bilatzeko lehioa" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Nabigazioa Gelditu" @@ -1495,6 +1620,100 @@ msgid "Data" msgstr "Datuak" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "I" @@ -1806,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2182,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2353,6 +2594,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2478,3 +2723,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "gero, irten errotondatik %1$s-ean %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/fa.po.in navit-0.5.0+dfsg.1/po/fa.po.in --- navit-0.5.0~svn5900+dfsg.1/po/fa.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/fa.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,23 @@ -# Persian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Persian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: -# salix https://launchpad.net/~s-shahsa +# Michael von Glasow https://launchpad.net/~michael-vonglasow +# reza ghasemirad https://launchpad.net/~regh778 # the_cephalex https://launchpad.net/~ali-rashidi - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2014-06-28 21:57+0000\n" -"Last-Translator: the_cephalex \n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Persian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: fa\n" msgid "Running from source directory\n" msgstr "" @@ -73,14 +71,6 @@ msgstr "ششمین راه" #, c-format -msgid "%d m" -msgstr "%d دقیقه" - -#, c-format -msgid "in %d m" -msgstr "" - -#, c-format msgid "%d feet" msgstr "" @@ -89,14 +79,6 @@ msgstr "%d فوت" #, c-format -msgid "%d meters" -msgstr "%d متر" - -#, c-format -msgid "in %d meters" -msgstr "" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -105,14 +87,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -125,6 +99,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d متر" + +#, c-format +msgid "in %d meters" +msgstr "" + +#, c-format +msgid "%d.%d kilometers" +msgstr "" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -136,64 +126,72 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" -msgstr "بیرون" - -msgid "into the ramp" -msgstr "به سوی شیب" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%1$sonto the %2$s%3$s%4$s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%1$sonto %2$s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%1$sonto %2$s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%1$sonto %2$s|feminine form" msgstr "" -#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s" +msgid "%1$sonto %2$s|neuter form" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "راست" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "به سوی شیب" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "چپ" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "به آسانی " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "به سختی " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "گمنام " +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "" msgid "When possible, please turn around" msgstr "هنگامیکه توانستید برگردید." +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "" + msgid "Enter the roundabout soon" msgstr "به زودی به فلکه بروید" @@ -202,57 +200,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" +msgid "soon" +msgstr "به زودی" + +msgid "now" +msgstr "اکنون" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|right" msgstr "" -msgid "soon" -msgstr "به زودی" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" +msgid "Take exit %1$s %2$s %3$s" msgstr "" -msgid "now" -msgstr "اکنون" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "راست" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "چپ" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "به آسانی " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "به سختی " #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" -msgstr "نادرست" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" +msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "سپس شما به خواستگاه خود رسیده اید." +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "بیرون" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "جایگاه" @@ -1311,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1452,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1494,6 +1620,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1805,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2181,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2348,6 +2590,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2473,3 +2719,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/fil.po.in navit-0.5.0+dfsg.1/po/fil.po.in --- navit-0.5.0~svn5900+dfsg.1/po/fil.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/fil.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,21 @@ -# Filipino translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Filipino translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # chito https://launchpad.net/~cnuarin - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2012-09-26 07:21+0000\n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" "Last-Translator: chito \n" "Language-Team: Filipino \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: fil\n" msgid "Running from source directory\n" msgstr "" @@ -72,35 +69,39 @@ msgstr "pang-anim na labasan" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" +msgid "%d meters" msgstr "" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -112,18 +113,6 @@ msgstr "%d.%d kilometro" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -135,123 +124,251 @@ msgstr[0] "sa loob ng isang kilometro" msgstr[1] "sa loob ng %d kilometro" -msgid "exit" -msgstr "labasan" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%s sa kalyeng %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%s sa kalyeng %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%s sa kalyeng %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%s sa kalyeng %s%s%s" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "" + +msgid "When possible, please turn around" +msgstr "Kung maari ay bumalik" + +#. TRANSLATORS: the argument is the destination to follow #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "towards %s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "Follow the road for the next %s" +msgstr "Sundan ang kalye sa susunod na %s" + +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: %s is the distance to the roundabout #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "%sinto the %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Lisanin ang rotonda sa may %1$s %2$s" + +msgid "soon" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "kanan" +msgid "now" +msgstr "ngayon na" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "Kaliwa" +msgid "then" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "ng marahan " +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|right" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "When possible, please turn around" -msgstr "kung maari ay bumalik" +msgid "on your left" +msgstr "" -msgid "Enter the roundabout soon" +msgid "on your right" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Enter the roundabout %s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "then leave the roundabout at the %s" -msgstr "pagkatapos ay lumabas sa rotonda sa may %s" +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Lisanin ang rotonda sa may %s" +msgid "then continue straight%1$s" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "Follow the road for the next %s" -msgstr "Sundan ang kalye sa susunod na %s" +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" -msgid "soon" +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Keep right %1$s%2$s%3$s" msgstr "" +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "after %i roads" +msgid "then keep left%1$s" msgstr "" -msgid "now" -msgstr "ngayon na" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "kanan" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "Kaliwa" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "ng marahan " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "pagkatapos ay gamitin ang %1$s hanggang %2$s" +msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Labasan" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1618,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2717,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "pagkatapos ay lumabas sa rotonda sa may %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/fi.po.in navit-0.5.0+dfsg.1/po/fi.po.in --- navit-0.5.0~svn5900+dfsg.1/po/fi.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/fi.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ # Finnish translations for navit -# Copyright (C) 2006-2014 The Navit Team +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Eero https://launchpad.net/~eero+launchpad @@ -10,21 +10,18 @@ # Roadrunner IN https://launchpad.net/~online # Timo Jyrinki https://launchpad.net/~timo-jyrinki - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:42+0000\n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" "Last-Translator: Timo Jyrinki \n" "Language-Team: Ossi Berg \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-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: fi\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -79,14 +76,6 @@ msgstr "kuudennesta liittymästä" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "%d m päästä" - -#, c-format msgid "%d feet" msgstr "" @@ -95,14 +84,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metriä" - -#, c-format -msgid "in %d meters" -msgstr "%d metrin päästä" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -111,14 +92,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometriä" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "%d,%d kilometrin päästä" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -131,6 +104,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metriä" + +#, c-format +msgid "in %d meters" +msgstr "%d metrin päästä" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometriä" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "%d,%d kilometrin päästä" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "yksi kilometri" @@ -142,30 +131,53 @@ msgstr[0] "Yhden kilometrin päästä" msgstr[1] "%d kilometrin päästä" -msgid "exit" -msgstr "poistumistie" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "rampille" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%skadulle %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%skadulle %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%skadulle %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%skadulle %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -173,33 +185,18 @@ msgid "%sinto the %s" msgstr "%stielle %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "oikealle" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "vasemmalle" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "loivasti " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "jyrkästi " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "todella voimakkaasti " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "tuntematon " - msgid "When possible, please turn around" msgstr "Kun mahdollista, tee u-käännös" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Seuraa tätä tietä %s" + msgid "Enter the roundabout soon" msgstr "Liity liikenneympyrään pian" @@ -208,56 +205,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "poistu sitten liikenneympyrästä %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "" +msgid "soon" +msgstr "pian" + +msgid "now" +msgstr "nyt" + +msgid "then" +msgstr "sitten" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Poistu liikenneympyrästä %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Seuraa tätä tietä %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "pian" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Valitse %1$s tie suuntaan %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "%i tien jälkeen" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "nyt" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "oikealle" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "vasemmalle" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "loivasti " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "jyrkästi " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "valitse sitten %1$s tie suuntaan %2$s" +msgstr "" -msgid "error" -msgstr "virhe" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Valitse %1$s tie suuntaan %2$s" + +#, c-format +msgid "after %i roads" +msgstr "%i tien jälkeen" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Käänny %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "käänny sitten %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "tee sitten u-käännös" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Tee u-käännös %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "tee sitten u-käännös" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Tee u-käännös %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "sitten olet perillä." +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Olet saavuttanut kohteesi %s" -msgid "then you have reached your destination." -msgstr "sitten olet perillä." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Poistumistie" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1318,11 +1435,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1462,6 +1581,12 @@ msgid "Opens address search dialog" msgstr "Avaa osoitehaun ikkunan" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Lopeta navigointi" @@ -1505,6 +1630,100 @@ msgid "Data" msgstr "Tieto" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1816,12 +2035,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2192,13 +2430,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2363,6 +2604,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2488,3 +2733,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/fo.po.in navit-0.5.0+dfsg.1/po/fo.po.in --- navit-0.5.0~svn5900+dfsg.1/po/fo.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/fo.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,21 @@ -# Faroese translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Faroese translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Cyberish https://launchpad.net/~cyberish # Gunleif Joensen https://launchpad.net/~gunleif - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:42+0000\n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" "Last-Translator: Cyberish \n" "Language-Team: Faroese \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: fo\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -75,14 +71,6 @@ msgstr "sætta avkoyring" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "um %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -91,14 +79,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metrar" - -#, c-format -msgid "in %d meters" -msgstr "um %d metrar" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -107,14 +87,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometrar" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "um %d.%d kilometrar" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -127,6 +99,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metrar" + +#, c-format +msgid "in %d meters" +msgstr "um %d metrar" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometrar" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "um %d.%d kilometrar" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "ein kilometur" @@ -138,30 +126,53 @@ msgstr[0] "um ein kilometur" msgstr[1] "um %d kilometrar" -msgid "exit" -msgstr "avkoyring" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "uppá rampuna" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%sinná gøtuna %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%sinto the %s%s%sur" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sinná %s%s%sur" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%sinto the %s%s%sa" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sinná %s%s%sa" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sinná %s%s%si" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -169,32 +180,17 @@ msgid "%sinto the %s" msgstr "%sinná %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "Høgra" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "Vinstra" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "lætt " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "knapt " +msgid "When possible, please turn around" +msgstr "Vend um skótast tilber" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "sera knapt " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "ókent " +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -msgid "When possible, please turn around" -msgstr "vend um skótast tilber" +#, c-format +msgid "Follow the road for the next %s" +msgstr "fylg vegnum tær næstu %s" msgid "Enter the roundabout soon" msgstr "Um lítið bil verður koyrt inní rundkoyringina" @@ -204,56 +200,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "far so út úr rundkoyring við %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Far so út úr rundkoyring við %1$s %2$s" + +msgid "soon" +msgstr "skjótt" + +msgid "now" +msgstr "nú" +msgid "then" +msgstr "so" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "far út úr rundkoyring við %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "fylg vegnum tær næstu %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "skjótt" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "tak tann %1$s vegin til %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "eftir %i vegir" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "nú" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "Høgra" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "Vinstra" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "lætt " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "knapt " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "so tak tann %1$s vegin til %2$s" +msgstr "" -msgid "error" -msgstr "feilur" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "tak tann %1$s vegin til %2$s" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "eftir %i vegir" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "dreya %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "dreya síðan %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "vend so um" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Vend um %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "vend so um" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Vend um %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "tá hevur tú nátt tínum ferðamáli" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Tú hevur nátt tínum ferðamáli %s" -msgid "then you have reached your destination." -msgstr "tá hevur tú nátt tínum ferðamáli" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Avkoyring" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1313,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1454,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "Opnar bústaðar leiting" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Stegga Navigering" @@ -1496,6 +1620,100 @@ msgid "Data" msgstr "Dáta" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1807,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2183,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2350,6 +2590,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2475,3 +2719,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "far so út úr rundkoyring við %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/fr_CH.po.in navit-0.5.0+dfsg.1/po/fr_CH.po.in --- navit-0.5.0~svn5900+dfsg.1/po/fr_CH.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/fr_CH.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,22 @@ # French/Switzerland translations for navit -# Copyright (C) 2006-2014 The Navit Team +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer - +# Michael von Glasow https://launchpad.net/~michael-vonglasow msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:42+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: KaZeR \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" -"Language: \n" +"Language: fr_CH\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -74,14 +71,6 @@ msgstr "la sixième sortie" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "dans %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -90,14 +79,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d mètres" - -#, c-format -msgid "in %d meters" -msgstr "dans %d mètres" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -106,14 +87,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilomètres" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "dans %d.%d kilomètres" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -126,6 +99,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d mètres" + +#, c-format +msgid "in %d meters" +msgstr "dans %d mètres" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilomètres" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "dans %d.%d kilomètres" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "un kilomètre" @@ -137,68 +126,72 @@ msgstr[0] "dans un kilomètre" msgstr[1] "dans %d kilomètres" -msgid "exit" -msgstr "sortie" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$svers %2$s%3$s%4$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$svers %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$svers le %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$svers la %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$svers l'%2$s" -msgid "into the ramp" -msgstr "vers la sortie" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "vers la bretelle" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%ssur %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%ssur le %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" +msgstr "%ssur le %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%ssur la %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" +msgstr "%ssur la %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%ssur l'%s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" +msgstr "%ssur l'%s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%svers la %s" -# tournez à droite -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "à droite" - -# tournez à gauche -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "à gauche" - -# utilisé pour les changements de voie pour les sorties? -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "légèrement " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "fortement " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "très fortement " - -# attention à l'espace à la fin -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "inconnu " - msgid "When possible, please turn around" msgstr "Dès que possible, faites demi-tour" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "vers %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Suivez la route sur %s" + msgid "Enter the roundabout soon" msgstr "Préparez vous à vous engager dans le rond-point" @@ -207,58 +200,180 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "puis sortez du rond-point à la %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Sortez du rond-point à la %1$s %2$s" + +msgid "soon" +msgstr "bientôt" + +msgid "now" +msgstr "maintenant" +msgid "then" +msgstr "puis" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Sortez du rond-point à la %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Suivez la route sur %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "bientôt" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Prenez la %1$s route vers la %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "après %i rues" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Prenez la sortie %1$s %2$s %3$s" -msgid "now" -msgstr "maintenant" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Prenez la sortie %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "à l'èchangeur" + +msgid "at exit" +msgstr "à la sortie" +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "then take the %1$s road to the %2$s" -msgstr "puis prenez la %1$s route à %2$s" +msgid "then continue straight%1$s" +msgstr "" -msgid "error" -msgstr "erreur" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" -# espace important après le 2 -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "Turn %1$s%2$s %3$s%4$s" -msgstr "%3$s, tournez %1$s%2$s %4$s" +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "puis tournez %1$s%2$s %3$s%4$s" +msgid "then keep left%1$s" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "You have reached your destination %s" -msgstr "Vous êtes arrivé à destination : %s" +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +# tournez à droite +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "à droite" + +# tournez à gauche +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "à gauche" + +# utilisé pour les changements de voie pour les sorties? +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "légèrement " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "fortement " + +#, c-format +msgid "then take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Prenez la %1$s route vers la %2$s" + +#, c-format +msgid "after %i roads" +msgstr "après %i rues" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination +#, c-format +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "" + +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "puis faites demi-tour" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Faites demi-tour %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "puis faites demi-tour" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Faites demi-tour %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "suivez" msgid "then you have reached your destination." msgstr "ensuite vous serez à destination" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "Vous êtes arrivé à destination %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Echangeur" + +msgid "Exit" +msgstr "Sortie" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "Position" @@ -1317,11 +1432,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1458,6 +1575,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Annuler le trajet" @@ -1500,6 +1623,100 @@ msgid "Data" msgstr "Données" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1811,12 +2028,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2187,13 +2423,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2358,6 +2597,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2483,3 +2726,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "puis sortez du rond-point à la %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/fr.po.in navit-0.5.0+dfsg.1/po/fr.po.in --- navit-0.5.0~svn5900+dfsg.1/po/fr.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/fr.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ -# French (fr) translations for navit -# Copyright (C) 2006-2014 The Navit Team +# French (fr) translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Arnaud https://launchpad.net/~arnaud-lemeur @@ -8,48 +8,48 @@ # Elodie https://launchpad.net/~elodie # Fred https://launchpad.net/~jelk # Gaël Ecorchard https://launchpad.net/~galou-breizh +# Jean-Marc https://launchpad.net/~m-balthazar # Jérôme BLUM https://launchpad.net/~jblum # KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Roadrunner IN https://launchpad.net/~online # Thibault Lemaitre https://launchpad.net/~thibault.lemaitre +# Thjazi https://launchpad.net/~pa2l # alexb38 https://launchpad.net/~alexb38 # alfred002 https://launchpad.net/~alfred002 # boism https://launchpad.net/~boism # cyp https://launchpad.net/~cyprien-d -# icaunais https://launchpad.net/~linux4cyril # mercier133 https://launchpad.net/~mercierdamien # metehyi https://launchpad.net/~metehyi # pierre https://launchpad.net/~pmghost4 +# quent57 https://launchpad.net/~quent57 +# tuxi https://launchpad.net/~tux-i # yannick56 https://launchpad.net/~yleny - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2014-08-11 17:45+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-11-25 21:48+0000\n" +"Last-Translator: Jean-Marc \n" "Language-Team: KaZeR \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-Launchpad-Export-Date: 2014-08-11 19:08+0000\n" -"X-Generator: Launchpad (build 17156)\n" -"Language: \n" +"Language: fr\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" -msgstr "Execution depuis le dossier d'origine\n" +msgstr "Éxecution depuis le dossier d'origine\n" #, c-format msgid "setting '%s' to '%s'\n" -msgstr "Paramètre '%s' changé en '%s'\n" +msgstr "Paramètre « %s » changé en « %s »\n" #. TRANSLATORS: the following counts refer to streets msgid "zeroth" -msgstr "zéroième" +msgstr "prochaine" msgid "first" msgstr "première" @@ -71,7 +71,7 @@ #. TRANSLATORS: the following counts refer to roundabout exits msgid "zeroth exit" -msgstr "zéroième sortie" +msgstr "prochaine sortie" msgid "first exit" msgstr "première sortie" @@ -92,14 +92,6 @@ msgstr "sixième sortie" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "dans %d m" - -#, c-format msgid "%d feet" msgstr "%d pieds" @@ -108,40 +100,40 @@ msgstr "dans %d pieds" #, c-format -msgid "%d meters" -msgstr "%d mètres" +msgid "%d.%d miles" +msgstr "%d.%d miles" #, c-format -msgid "in %d meters" -msgstr "dans %d mètres" +msgid "in %d.%d miles" +msgstr "dans %d.%d miles" #, c-format -msgid "%d.%d miles" -msgstr "%d.%d milles" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "un mile" +msgstr[1] "%d miles" #, c-format -msgid "in %d.%d miles" -msgstr "dans %d.%d milles" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "dans un mile" +msgstr[1] "dans %d miles" #, c-format -msgid "%d.%d kilometers" -msgstr "%d kilomètres %d" +msgid "%d meters" +msgstr "%d mètres" #, c-format -msgid "in %d.%d kilometers" -msgstr "dans %d kilomètres %d" +msgid "in %d meters" +msgstr "dans %d mètres" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "un mille" -msgstr[1] "%d milles" +msgid "%d.%d kilometers" +msgstr "%d kilomètres %d" #, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "dans un mille" -msgstr[1] "dans %d milles" +msgid "in %d.%d kilometers" +msgstr "dans %d kilomètres %d" #, c-format msgid "one kilometer" @@ -155,30 +147,53 @@ msgstr[0] "dans un kilomètre" msgstr[1] "dans %d kilomètres" -msgid "exit" -msgstr "sortie" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$svers %2$s%3$s%4$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$svers %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$svers le %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$svers la %2$s" -msgid "into the ramp" -msgstr "vers la sortie" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$svers l'%2$s" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "et prendre la bretelle" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sdans %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%ssur %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%ssur le %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" +msgstr "%ssur le %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%sdans la %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%ssur la %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%ssur l'%s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -186,96 +201,199 @@ msgid "%sinto the %s" msgstr "%svers la %s" -# tournez à droite -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "à droite" - -# tournez à gauche -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "à gauche" - -# utilisé pour les changements de voie pour les sorties? -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "légèrement " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "fortement " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "très fortement " - -# attention à l'espace à la fin -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "inconnu " - msgid "When possible, please turn around" msgstr "Dès que possible, faites demi-tour" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "vers %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Suivez la route sur %s" + msgid "Enter the roundabout soon" msgstr "Préparez vous à vous engager dans le rond-point" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "Entrer dans le rond-point %s" +msgstr "%s Entrez dans le rond-point" + +msgid "then enter the roundabout" +msgstr "puis engagez-vous dans le rond-point" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "puis prenez la %s du rond-point." +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Sortez du rond-point à la %1$s %2$s" + +msgid "soon" +msgstr "bientôt" +msgid "now" +msgstr "maintenant" + +msgid "then" +msgstr "puis" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Sortez du rond-point à la %s" +msgid "then merge%1$s|right" +msgstr "Puis prendre à droite %1$s" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Suivez la route sur %s" +msgid "Merge %1$s%2$s|right" +msgstr "%1$s prendre à droite %2$s" -msgid "soon" -msgstr "bientôt" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "Puis prendre à gauche %1$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Empreintez la %1$s rue en direction de %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "%1$s prendre à gauche %2$s" + +msgid "on your left" +msgstr "sur votre gauche" +msgid "on your right" +msgstr "sur votre droite" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "après %i rues" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Prenez la sortie %1$s %2$s %3$s" -msgid "now" -msgstr "maintenant" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Prenez la sortie %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "à l'èchangeur" + +msgid "at exit" +msgstr "à la sortie" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "puis continuez tout droit %1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "%1$s continuez tout droit %2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "puis restez sur les voies de droite %1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "%1$s Restez sur les voies de droite %2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "puis restez sur les voies de gauche %1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "%1$s Restez sur les voies de gauche %2$s%3$s" + +# tournez à droite +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "à droite" + +# tournez à gauche +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "à gauche" + +# utilisé pour les changements de voie pour les sorties? +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "légèrement " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "fortement " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "puis empreintez la %1$s rue en direction de %2$s" +msgstr "puis prenez la %1$s route à %2$s" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Empreintez la %1$s rue en direction de %2$s" -msgid "error" -msgstr "erreur" +#, c-format +msgid "after %i roads" +msgstr "après %i rues" -# espace important après le 2 -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "%3$s, tournez %1$s%2$s %4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "puis tournez %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "puis faites demi-tour" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Faites demi-tour %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "puis faites demi-tour" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Faites demi-tour %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "suivre" + +msgid "then you have reached your destination." +msgstr "puis vous arriverez à destination" +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" -msgstr "Vous êtes arrivé à destination : %s" +msgstr "Vous êtes arrivé à destination %s" -msgid "then you have reached your destination." -msgstr "puis vous arriverez à destination" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Echangeur" + +msgid "Exit" +msgstr "Sortie" #. Android resource: @strings/position_popup_title msgid "Position" @@ -359,7 +477,7 @@ #. 530 msgid "Netherlands Antilles" -msgstr "Antilles Néérlandaises" +msgstr "Antilles néerlandaises" #. 024 msgid "Angola" @@ -487,7 +605,7 @@ #. 166 msgid "Cocos (Keeling) Islands" -msgstr "Iles Cocos" +msgstr "Îles Cocos" #. 180 msgid "Congo, Democratic Republic of the" @@ -507,7 +625,7 @@ #. 384 msgid "Cote d'Ivoire" -msgstr "Cote d'Ivoire" +msgstr "Côte d'Ivoire" #. 184 msgid "Cook Islands" @@ -583,7 +701,7 @@ #. 218 msgid "Ecuador" -msgstr "Equateur" +msgstr "Équateur" #. 233 msgid "Estonia" @@ -619,7 +737,7 @@ #. 238 msgid "Falkland Islands (Malvinas)" -msgstr "Les Malouines (les Malvinas)" +msgstr "Îles Malouines" #. 583 msgid "Micronesia, Federated States of" @@ -627,7 +745,7 @@ #. 234 msgid "Faroe Islands" -msgstr "Îles Feroe" +msgstr "Îles Féroé" #. 250 msgid "France" @@ -711,11 +829,11 @@ #. 344 msgid "Hong Kong" -msgstr "Hong-kong" +msgstr "Hong Kong" #. 334 msgid "Heard Island and McDonald Islands" -msgstr "Heard, Île et McDonald, Îles" +msgstr "Îles Heard-et-McDonald" #. 340 msgid "Honduras" @@ -727,7 +845,7 @@ #. 332 msgid "Haiti" -msgstr "Haiti" +msgstr "Haïti" #. 348 msgid "Hungary" @@ -755,7 +873,7 @@ #. 086 msgid "British Indian Ocean Territory" -msgstr "Océan Indien, Territoire britannique de l'" +msgstr "Territoire britannique de l'océan Indien" #. 368 msgid "Iraq" @@ -779,7 +897,7 @@ #. 388 msgid "Jamaica" -msgstr "Jamaique" +msgstr "Jamaïque" #. 400 msgid "Jordan" @@ -807,11 +925,11 @@ #. 174 msgid "Comoros" -msgstr "Comores, Les" +msgstr "Comores" #. 659 msgid "Saint Kitts and Nevis" -msgstr "Saint Kitts et Nevis" +msgstr "Saint-Christophe-et-Niévès" #. 408 msgid "Korea, Democratic People's Republic of" @@ -947,7 +1065,7 @@ #. 480 msgid "Mauritius" -msgstr "Iles Maurice" +msgstr "Île Maurice" #. 462 msgid "Maldives" @@ -1063,7 +1181,7 @@ #. 275 msgid "Palestinian Territory, Occupied" -msgstr "Palestine" +msgstr "Territoire palestinien, occupé" #. 620 msgid "Portugal" @@ -1107,7 +1225,7 @@ #. 090 msgid "Solomon Islands" -msgstr "Îles Solomon" +msgstr "Îles Salomon" #. 690 msgid "Seychelles" @@ -1115,7 +1233,7 @@ #. 736 msgid "Sudan" -msgstr "Sudan" +msgstr "Soudan" #. 752 msgid "Sweden" @@ -1131,11 +1249,11 @@ #. 705 msgid "Slovenia" -msgstr "Slovènie" +msgstr "Slovénie" #. 744 msgid "Svalbard and Jan Mayen" -msgstr "Svalbard et île Jan Mayen" +msgstr "Svalbard et Jan Mayen" #. 703 msgid "Slovakia" @@ -1243,7 +1361,7 @@ #. 158 msgid "Taiwan, Province of China" -msgstr "Taiwan, province de la Chine" +msgstr "Taïwan, province de Chine" #. 834 msgid "Tanzania, United Republic of" @@ -1259,7 +1377,7 @@ #. 581 msgid "United States Minor Outlying Islands" -msgstr "Îles périphériques mineures des Etats-Unis" +msgstr "Îles mineures éloignées des États-Unis" #. 840 msgid "United States" @@ -1311,7 +1429,7 @@ #. 887 msgid "Yemen" -msgstr "Yemen" +msgstr "Yémen" #. 175 msgid "Mayotte" @@ -1335,17 +1453,14 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"Utilisation de navit;\n" -"navit [options] [fichier de configuration]\n" -"\t-c : utiliser comme fichier de configuration\n" -"\t-h: afficher les informations d'utilisation et quitter\n" -"\t-v: afficher la version et quitter\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1469,7 +1584,7 @@ msgstr "Augmenter le zoom" msgid "_Recalculate" -msgstr "Recalculer" +msgstr "Recalcul de l'itinéraire" msgid "Redraw map" msgstr "Redessiner la carte" @@ -1483,6 +1598,12 @@ msgid "Opens address search dialog" msgstr "Ouvrir la fenêtre de recherche d'adresse" +msgid "_POI search" +msgstr "recherche de points d'intérêt" + +msgid "Opens POI search dialog" +msgstr "Ouvrir la recherche des points d'intérêts" + msgid "_Stop Navigation" msgstr "Annuler le trajet" @@ -1525,6 +1646,100 @@ msgid "Data" msgstr "Données" +msgid "Pharmacy" +msgstr "Pharmacie" + +msgid "Restaurant" +msgstr "Restaurant" + +msgid "Restaurant. Fast food" +msgstr "Restauration rapide" + +msgid "Hotel" +msgstr "Hôtel" + +msgid "Car parking" +msgstr "Parking" + +msgid "Fuel station" +msgstr "Station-service" + +msgid "Bank" +msgstr "Banque" + +msgid "Hospital" +msgstr "Hôpital" + +msgid "Cinema" +msgstr "Cinéma" + +msgid "Train station" +msgstr "Gare" + +msgid "School" +msgstr "École" + +msgid "Police" +msgstr "Poste de police" + +msgid "Justice" +msgstr "Police" + +msgid "Taxi" +msgstr "Taxi" + +msgid "Shopping" +msgstr "Courses" + +msgid "Distance from screen center (km)" +msgstr "Distance du centre de l'ecran (Kilomètre)" + +#, c-format +msgid "POI %s. %s" +msgstr "point d'intérêt %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Définir la destination vers %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "sélectionner la carte de %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "recherche de point d'intérêt" + +msgid "Select a category" +msgstr "Sélectionnez une catégorie" + +msgid "Select a distance to look for (km)" +msgstr "Sélectionnez une distance à chercher (km)" + +msgid "Select a POI" +msgstr "Sélectionnez un point d'intérêt" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Catégorie" + +msgid "Direction" +msgstr "Direction" + +msgid "Distance(m)" +msgstr "Distance (m)" + +msgid "Name" +msgstr "Nom" + +msgid "Visit Before" +msgstr "Visitez avant" + msgid "N" msgstr "N" @@ -1808,11 +2023,11 @@ msgstr "Précédent" msgid "Return to route!" -msgstr "Retour à la route!" +msgstr "Retournez sur la route" #. warning told msgid "Look out! Camera!" -msgstr "Attention! Radar!" +msgstr "Attention ! Contrôle radar !" #. warning told msgid "Please decrease your speed" @@ -1836,12 +2051,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Données cartographiques (c) OpenStreetMap contributors, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "Cartes téléchargées" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "Annuler" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "redémarrer Navit pour appliquer les modifications" + msgid "Whole Planet" msgstr "Terre entière" @@ -2212,13 +2446,17 @@ msgid "ready" msgstr "prêt" -msgid "Error downloading map!" -msgstr "Erreur de téléchargement de carte !" +msgid "Media selected for map storage is not available" +msgstr "" +"Le support sélectionné pour le stockage de la carte n'est pas disponible" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Pas assez d'espace libre" +msgid "Error downloading map!" +msgstr "Erreur de téléchargement de carte !" + msgid "Error writing map!" msgstr "Erreur d'écriture de carte !" @@ -2398,6 +2636,10 @@ msgid "Backup / Restore" msgstr "Sauvegarde / Restauration" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "sélectionner le chemin de la carte" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Supprimer cette carte?" @@ -2436,7 +2678,7 @@ #. Android resource: @strings/address_search_searching msgid "Searching..." -msgstr "Recherche en cours..." +msgstr "Recherche..." #. Android resource: @strings/address_search_not_found msgid "Address not found" @@ -2452,7 +2694,7 @@ #. Android resource: @strings/address_search_no_results msgid "No results found" -msgstr "Pas de résultats trouvés" +msgstr "Aucun résultat trouvé" #. Android resource: @strings/address_search_no_text_entered msgid "No text entered" @@ -2472,7 +2714,7 @@ #. Android resource: @strings/backing_up msgid "Backing up..." -msgstr "Sauvegarde en cours..." +msgstr "Sauvegarde..." #. Android resource: @strings/restoring msgid "Restoring..." @@ -2525,3 +2767,26 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Restaurer" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "puis sortez du rond-point à la %1$s %2$s" + +#, c-format +#~ msgid "in %d m" +#~ msgstr "dans %d m" + +#, c-format +#~ msgid "%d m" +#~ msgstr "%d m" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/fy.po.in navit-0.5.0+dfsg.1/po/fy.po.in --- navit-0.5.0~svn5900+dfsg.1/po/fy.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/fy.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,15 +1,13 @@ -# Frisian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Frisian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # 205 https://launchpad.net/~205-z - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2011-08-12 12:18+0000\n" "Last-Translator: 205 \n" "Language-Team: Frisian \n" @@ -17,8 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: fy\n" msgid "Running from source directory\n" msgstr "" @@ -72,35 +69,39 @@ msgstr "" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" +msgid "%d meters" msgstr "" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -112,18 +113,6 @@ msgstr "" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -135,30 +124,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -166,92 +178,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" +msgid "on your left" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1618,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2717,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/gl.po.in navit-0.5.0+dfsg.1/po/gl.po.in --- navit-0.5.0~svn5900+dfsg.1/po/gl.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/gl.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ -# Galician translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Galician translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Iván Pérez https://launchpad.net/~ivan.perez-keera.es @@ -7,21 +7,17 @@ # Xosé https://launchpad.net/~ubuntu-galizaweb # andreout https://launchpad.net/~andre-outeiro - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:42+0000\n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" "Last-Translator: andreout \n" "Language-Team: Galician \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: gl\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -77,14 +73,6 @@ msgstr "sexta saída" #, c-format -msgid "%d m" -msgstr "%d m." - -#, c-format -msgid "in %d m" -msgstr "en %d m." - -#, c-format msgid "%d feet" msgstr "" @@ -93,14 +81,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metros" - -#, c-format -msgid "in %d meters" -msgstr "en %d metros" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -109,14 +89,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d quilómetros" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "en %d.%d quilómetros" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -129,6 +101,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metros" + +#, c-format +msgid "in %d meters" +msgstr "en %d metros" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d quilómetros" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "en %d.%d quilómetros" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "un quilómetro" @@ -140,30 +128,53 @@ msgstr[0] "nun quilómetro" msgstr[1] "en %d quilómetros" -msgid "exit" -msgstr "saída" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "na rampa" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%s na rúa %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%s no %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%s na %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%s no %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -171,33 +182,18 @@ msgid "%sinto the %s" msgstr "%s na %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "á dereita" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "á esquerda" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "suavemente " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "bruscamente " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "moi bruscamente " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "descoñecido " - msgid "When possible, please turn around" msgstr "Cando sexa posible, dea a volta" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Siga a estrada durante os próximos %s" + msgid "Enter the roundabout soon" msgstr "Métase pronto na rotonda" @@ -206,56 +202,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "logo saia da rotonda pola %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Saia da rotonda pola %1$s %2$s" +msgid "soon" +msgstr "cedo" + +msgid "now" +msgstr "agora" + +msgid "then" +msgstr "logo" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Saia da rotonda pola %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Siga a estrada durante os próximos %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "cedo" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Tome a estrada %1$s cara o %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "despois de %i estradas" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Tome a saida %1$s %2$s %3$s" -msgid "now" -msgstr "agora" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Tome a saida %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "á dereita" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "á esquerda" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "suavemente " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "bruscamente " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "logo tome a estrada %1$s cara %2$s" +msgstr "" -msgid "error" -msgstr "erro" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Tome a estrada %1$s cara o %2$s" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "despois de %i estradas" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Xire %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "despois vire %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "logo dea a volta" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Dea a volta %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "logo dea a volta" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Dea a volta %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "despois xa chega ao seu destino" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Chegou ao seu destino %s" -msgid "then you have reached your destination." -msgstr "despois xa chega ao seu destino" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Saída" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1315,11 +1431,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1456,6 +1574,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1498,6 +1622,100 @@ msgid "Data" msgstr "Datos" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1809,12 +2027,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2185,13 +2422,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2354,6 +2594,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2479,3 +2723,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "logo saia da rotonda pola %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/he.po.in navit-0.5.0+dfsg.1/po/he.po.in --- navit-0.5.0~svn5900+dfsg.1/po/he.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/he.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ -# Hebrew translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Hebrew translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Evgeniy Ginzburg https://launchpad.net/~nad-oby @@ -9,21 +9,18 @@ # Yaron https://launchpad.net/~sh-yaron # rintintin https://launchpad.net/~yonatanhak-gmail - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2014-05-26 10:31+0000\n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" "Last-Translator: Yaron \n" "Language-Team: Hebrew \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: he\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -78,14 +75,6 @@ msgstr "היציאה השישית" #, c-format -msgid "%d m" -msgstr "%d מ'" - -#, c-format -msgid "in %d m" -msgstr "בעוד %d מ'" - -#, c-format msgid "%d feet" msgstr "%d רגל" @@ -94,14 +83,6 @@ msgstr "בעוד %d רגל" #, c-format -msgid "%d meters" -msgstr "%d מטרים" - -#, c-format -msgid "in %d meters" -msgstr "בעוד %d מטרים" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d מיילים" @@ -110,14 +91,6 @@ msgstr "בעוד %d.%d מיילים" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d קילומטרים" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "בעוד %d.%d קילומטרים" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "מייל אחד" @@ -130,6 +103,22 @@ msgstr[1] "בעוד %d מיילם" #, c-format +msgid "%d meters" +msgstr "%d מטרים" + +#, c-format +msgid "in %d meters" +msgstr "בעוד %d מטרים" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d קילומטרים" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "בעוד %d.%d קילומטרים" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "קילומטר אחד" @@ -141,64 +130,72 @@ msgstr[0] "בעוד קילומטר אחד" msgstr[1] "בעוד %d קילומטרים" -msgid "exit" -msgstr "יציאה" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "אל הרמפה" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s אל רחוב %s %s %s" +msgid "%sinto %s%s%s" +msgstr "%s אל רחוב %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s אל רחוב %s %s %s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%s אל רחוב %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s אל רחוב %s %s %s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%s אל רחוב %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s אל רחוב %s %s %s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%s אל רחוב %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%sאל תוך ה%s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "ימינה" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "שמאלה" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "מעט " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "בצורה חדה " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "באופן חזק מאד " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "לא ידוע " - msgid "When possible, please turn around" msgstr "כשיתאפשר לך, פנה חזרה" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "המשך בדרך זו למשך %s" + msgid "Enter the roundabout soon" msgstr "הכנס לכיכר הקרובה" @@ -207,57 +204,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "אחר כך צא מהכיכר ב%s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "צא מהכיכר ב%1$s %2$s" + +msgid "soon" +msgstr "בקרוב" + +msgid "now" +msgstr "כעת" + +msgid "then" +msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "צא מהכיכר ב%s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "המשך בדרך זו למשך %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "בקרוב" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "קח את הכביש ה%1$s אל %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "לאחר %i כבישים" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "כעת" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "ימינה" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "שמאלה" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "מעט " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "בצורה חדה " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "ואז קח את הכביש ה%1$s אל ה%2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "קח את הכביש ה%1$s אל %2$s" -msgid "error" -msgstr "שגיאה" +#, c-format +msgid "after %i roads" +msgstr "לאחר %i כבישים" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "פנה %1$s %2$s %4$s %3$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "ואז פנה %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" -msgstr "הגעת ליעדך %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" msgid "then you have reached your destination." msgstr "ואז הגעת ליעד." +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "הגעת ליעדך %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "יציאה" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "מיקום" @@ -1316,11 +1433,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1457,6 +1576,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "עצור ניווט" @@ -1499,6 +1624,100 @@ msgid "Data" msgstr "מידע" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "צ'" @@ -1810,12 +2029,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2186,13 +2424,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2357,6 +2598,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2482,3 +2727,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "אחר כך צא מהכיכר ב%1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/hi.po.in navit-0.5.0+dfsg.1/po/hi.po.in --- navit-0.5.0~svn5900+dfsg.1/po/hi.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/hi.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,23 @@ -# Hindi translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Hindi translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: +# KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow # desh deep https://launchpad.net/~singhdeepdesh - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2011-09-16 09:59+0000\n" -"Last-Translator: desh deep \n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Hindi \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: hi\n" msgid "Running from source directory\n" msgstr "" @@ -72,14 +71,6 @@ msgstr "chatha nikas" #, c-format -msgid "%d m" -msgstr "%d meter" - -#, c-format -msgid "in %d m" -msgstr "%d meter mein" - -#, c-format msgid "%d feet" msgstr "" @@ -88,14 +79,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d meters" - -#, c-format -msgid "in %d meters" -msgstr "%d meters mein" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -104,14 +87,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometero mein" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "%d.%d kilometero mein" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -124,75 +99,99 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d meters" + +#, c-format +msgid "in %d meters" +msgstr "%d meters mein" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometero mein" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "%d.%d kilometero mein" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "ek kilometer" +msgstr[1] "%d kilometero" #, c-format msgid "in one kilometer" msgid_plural "in %d kilometers" -msgstr[0] "" -msgstr[1] "" - -msgid "exit" -msgstr "nikas" - -msgid "into the ramp" -msgstr "dhalan mein" +msgstr[0] "ek kilometer mein" +msgstr[1] "%d kilometero mein" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s sheher mein%s%s%s" +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%1$sonto %2$s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%1$sonto %2$s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%1$sonto %2$s|feminine form" msgstr "" -#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s" +msgid "%1$sonto %2$s|neuter form" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "दायाँ" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "dhalan mein" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "बांया" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "%ssheher mein %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "आसानी से " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%ssheher mein %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "दृढ़ता से " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%ssheher mein %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "दृढ़ता से वास्तव में " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "अज्ञात " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%ssheher mein %s%s%s" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "" msgid "When possible, please turn around" msgstr "जब संभव हो, कृपया चारों ओर मोड़" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "अगले%s के लिए सड़क का पालन करें" + msgid "Enter the roundabout soon" msgstr "" @@ -201,57 +200,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "तो% s के राउंडअबाउट छोड़" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "%1$s %2$s के राउंडअबाउट छोड़ें" +msgid "soon" +msgstr "जल्दी" + +msgid "now" +msgstr "अब" + +msgid "then" +msgstr "तो" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "%s के राउंडअबाउट छोड़ें" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "अगले%s के लिए सड़क का पालन करें" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "जल्दी" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "%1$s %2$s के लिए सड़क ले लो" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "%i के बाद सड़कों" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "अब" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "दायाँ" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "बांया" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "आसानी से " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "दृढ़ता से " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "तब %1$s %2$s के लिए सड़क ले" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "%1$s %2$s के लिए सड़क ले लो" -msgid "error" -msgstr "त्रुटि" +#, c-format +msgid "after %i roads" +msgstr "%i के बाद सड़कों" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "तो चारों ओर मोड़" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "चारों ओर मोड़ %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "तो चारों ओर मोड़" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "चारों ओर मोड़ %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" +msgid "then you have reached your destination." +msgstr "" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "" -msgid "then you have reached your destination." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" msgstr "" +msgid "Exit" +msgstr "Nikas" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1620,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2590,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2719,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "तो %1$s %2$s के राउंडअबाउट छोड़" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/hr.po.in navit-0.5.0+dfsg.1/po/hr.po.in --- navit-0.5.0~svn5900+dfsg.1/po/hr.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/hr.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,27 +1,25 @@ -# Croatian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Croatian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer # Marjan Vrban https://launchpad.net/~mvrban +# gogo https://launchpad.net/~trebelnik-stefina # klajo https://launchpad.net/~klaudio - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:42+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" +"Last-Translator: gogo \n" "Language-Team: Croatian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: hr\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -76,14 +74,6 @@ msgstr "šesti izlaz" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "za %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -92,14 +82,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metara" - -#, c-format -msgid "in %d meters" -msgstr "za %d metara" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -108,14 +90,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometara" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "za %d.%d kilometara" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -128,6 +102,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metara" + +#, c-format +msgid "in %d meters" +msgstr "za %d metara" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometara" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "za %d.%d kilometara" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d kilometar" @@ -141,64 +131,72 @@ msgstr[1] "za %d kilometara" msgstr[2] "za %d kilometara" -msgid "exit" -msgstr "izlaz" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "na rampu" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%su ulicu %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%su %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" +msgstr "%su %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%su %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" +msgstr "%su %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%su %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" +msgstr "%su %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%su %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "desno" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "lijevo" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "jednostavno " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "teško " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "vrlo teško " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "nepoznatno " - msgid "When possible, please turn around" msgstr "Ako je moguće okrenite se" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Pratite cestu za idući %s" + msgid "Enter the roundabout soon" msgstr "" @@ -207,56 +205,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "onda napustite kružni tok na %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Napustite kružni tok na %1$s %2$s" + +msgid "soon" +msgstr "uskoro" +msgid "now" +msgstr "sada" + +msgid "then" +msgstr "onda" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Napustite kružni tok na %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Pratite cestu za idući %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "uskoro" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Vozite cestom %1$s do %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "nakon %i ceste" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "sada" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "desno" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "lijevo" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "jednostavno " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "teško " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "onda krenite na cestu %1$s do %2$s" +msgstr "" -msgid "error" -msgstr "greška" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Vozite cestom %1$s do %2$s" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "nakon %i ceste" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Krenite %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "onda krenite %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "onda okrenite se" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Okrenite se %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "onda okrenite se" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Okrenite se %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "nakon toga ste stigli do cilja" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Stigli ste na cilj %s" -msgid "then you have reached your destination." -msgstr "nakon toga ste stigli do cilja" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Izlaz" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1316,11 +1434,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1457,6 +1577,12 @@ msgid "Opens address search dialog" msgstr "Otvara dijalog za pretragu adresa" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Stop navigaciju" @@ -1494,11 +1620,105 @@ msgstr "Omogući/onemogući automatski zoom" msgid "_Fullscreen" -msgstr "Cijeli ekran" +msgstr "_Cijeli zaslon" msgid "Data" msgstr "Podaci" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "S" @@ -1810,12 +2030,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2186,13 +2425,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2357,6 +2599,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2482,3 +2728,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "onda napustite kružni tok na %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/hu.po.in navit-0.5.0+dfsg.1/po/hu.po.in --- navit-0.5.0~svn5900+dfsg.1/po/hu.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/hu.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ -# Hungarian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Hungarian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Bernath Marci https://launchpad.net/~bernath-marci @@ -10,21 +10,18 @@ # dandor https://launchpad.net/~dandorfs # kalmarzs https://launchpad.net/~kalmarzs - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2014-05-12 16:58+0000\n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" "Last-Translator: György Balló \n" "Language-Team: Hungarian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: hu\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -79,14 +76,6 @@ msgstr "hatodik kijáraton" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "%d m után" - -#, c-format msgid "%d feet" msgstr "%d láb" @@ -95,14 +84,6 @@ msgstr "%d láb múlva" #, c-format -msgid "%d meters" -msgstr "%d méter" - -#, c-format -msgid "in %d meters" -msgstr "%d méter után" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d mérföld" @@ -111,14 +92,6 @@ msgstr "%d.%d mérföld múlva" #, c-format -msgid "%d.%d kilometers" -msgstr "%d,%d kilométer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "%d,%d kilométer után" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "egy mérföld" @@ -131,6 +104,22 @@ msgstr[1] "%d mérföld múlva" #, c-format +msgid "%d meters" +msgstr "%d méter" + +#, c-format +msgid "in %d meters" +msgstr "%d méter után" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d,%d kilométer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "%d,%d kilométer után" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "egy kilométer" @@ -142,30 +131,53 @@ msgstr[0] "egy kilométer után" msgstr[1] "%d kilométer után" -msgid "exit" -msgstr "kijárat" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "a felhajtóra" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%sa(z) %s%s%s utcába" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sa(z) %s%s%s útra" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sa(z) %s%s%s útra" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sa(z) %s%s%s útra" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -173,91 +185,196 @@ msgid "%sinto the %s" msgstr "%shajtson rá a(z) %s útra" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "jobbra" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "balra" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "enyhén " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "élesen " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "nagyon élesen " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "ismeretlen " - msgid "When possible, please turn around" msgstr "Amint lehet, fordujon meg" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Haladjon az úton a következő %sig" + msgid "Enter the roundabout soon" msgstr "Hajtson be a körforgalomba hamarosan." #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "Hajtson be a körforgalomba %s" +msgstr "" + +msgid "then enter the roundabout" +msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "majd hagyja el a körforgalmat a(z) %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Hagyja el a körforgalmat a(z) %1$s %2$s" + +msgid "soon" +msgstr "hamarosan" +msgid "now" +msgstr "most" + +msgid "then" +msgstr "aztán" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Hagyja el a körforgalmat a(z) %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Haladjon az úton a következő %sig" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "hamarosan" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "A(z) %1$s útnál forduljon %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "%i út után" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "most" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "jobbra" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "balra" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "enyhén " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "élesen " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "aztán a(z) %1$s útnál forduljon %2$s" +msgstr "" -msgid "error" -msgstr "hiba" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "A(z) %1$s útnál forduljon %2$s" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "%i út után" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Forduljon %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "aztán forduljon %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "aztán fordujon meg" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Fordujon meg %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "aztán fordujon meg" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Fordujon meg %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "majd eléri az úticélját." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Elérte az úticélját: %s" -msgid "then you have reached your destination." -msgstr "majd eléri az úticélját." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Kijárat" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1317,19 +1434,14 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"navit használata:\n" -"navit [opciók] [konfigurációs állomány]\n" -"\t-c : használja a -t mint konfigurációs állomány\n" -"\t-d : a globális hibakeresési kimeneti szintet -re állítja (0-3). " -"Felülbírálja a konfigurációs állomány beállításait.\n" -"\t-h: kinyomtatja ezt a használati útmutatót és kilép.\n" -"\t-v: kinyomtatja a verzióinformációt és kilép.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1467,6 +1579,12 @@ msgid "Opens address search dialog" msgstr "Címkeresés" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Navigálás vége" @@ -1509,6 +1627,100 @@ msgid "Data" msgstr "Adat" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "É" @@ -1820,12 +2032,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Térkép adatok (c) OpenStreeMap közreműködők, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "Letöltött térképek" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "Mégse" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "Teljes bolygó" @@ -2196,13 +2427,16 @@ msgid "ready" msgstr "kész" -msgid "Error downloading map!" -msgstr "Hiba térképletöltés közben!" +msgid "Media selected for map storage is not available" +msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Kevés a szabad terület" +msgid "Error downloading map!" +msgstr "Hiba térképletöltés közben!" + msgid "Error writing map!" msgstr "Hiba a térkép mentése közben!" @@ -2375,6 +2609,10 @@ msgid "Backup / Restore" msgstr "Mentés / Visszaállítás" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Töröljük ezt a térképet?" @@ -2502,3 +2740,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Visszaállítás" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "majd hagyja el a körforgalmat a(z) %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/id.po.in navit-0.5.0+dfsg.1/po/id.po.in --- navit-0.5.0~svn5900+dfsg.1/po/id.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/id.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,27 +1,25 @@ -# Indonesian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Indonesian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Joel-apobae.com https://launchpad.net/~amanda2000 # KaZeR https://launchpad.net/~kazer # M Bambang I https://launchpad.net/~mbi-lawang +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Steve Kartantya https://launchpad.net/~jack-haz - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:43+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Indonesian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: id\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -76,14 +74,6 @@ msgstr "exit keenam" #, c-format -msgid "%d m" -msgstr "%d meter" - -#, c-format -msgid "in %d m" -msgstr "dalam %d meter" - -#, c-format msgid "%d feet" msgstr "" @@ -92,14 +82,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d meter" - -#, c-format -msgid "in %d meters" -msgstr "dalam %d meter" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -108,14 +90,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "dalam %d.%d kilometer" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -128,6 +102,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d meter" + +#, c-format +msgid "in %d meters" +msgstr "dalam %d meter" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "dalam %d.%d kilometer" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -138,30 +128,53 @@ msgid_plural "in %d kilometers" msgstr[0] "dalam %d kilometer" -msgid "exit" -msgstr "keluar" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "menuju jalur yang melandai" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s menuju jalan %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%smenuju ke %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%smenuju ke%s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%smenuju ke %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%smenuju ke %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%smenuju ke %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -169,32 +182,17 @@ msgid "%sinto the %s" msgstr "%smenuju ke %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "kanan" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "Kiri" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "dengan mudah " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "Sangat " +msgid "When possible, please turn around" +msgstr "Bila memungkinkan, balik arah" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "amat sangat " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "tidak diketahui " +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -msgid "When possible, please turn around" -msgstr "bila memungkinkan, balik arah" +#, c-format +msgid "Follow the road for the next %s" +msgstr "ikuti jalan untuk ke tujuan berikutnya %s" msgid "Enter the roundabout soon" msgstr "segera memasuki bundaran" @@ -204,56 +202,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "kemudian tinggalkan bundaran pada %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Tinggalkan bundaran pada %1$s %2$s" + +msgid "soon" +msgstr "segera" +msgid "now" +msgstr "saat ini" + +msgid "then" +msgstr "kemudian" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Tinggalkan bundaran pada %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "ikuti jalan untuk ke tujuan berikutnya %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "segera" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Ambil %1$s jalan ke %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "setelah %i jalan" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "saat ini" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "kanan" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "Kiri" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "dengan mudah " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "Sangat " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "kemudian ambil %1$s jalan menuju %2$s" +msgstr "" -msgid "error" -msgstr "kesalahan" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Ambil %1$s jalan ke %2$s" + +#, c-format +msgid "after %i roads" +msgstr "setelah %i jalan" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Beloklah %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "kemudian beloklah %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "kemudian balik arah" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Balik arah %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "kemudian balik arah" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Balik arah %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "kini anda telah sampai pada tujuan" +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "anda telah sampai pada tujuan %s" -msgid "then you have reached your destination." -msgstr "kini anda telah sampai pada tujuan" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Keluar" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1313,11 +1431,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1454,6 +1574,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Navigasi berhenti" @@ -1496,6 +1622,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "Utara" @@ -1807,12 +2027,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2183,13 +2422,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2354,6 +2596,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2479,3 +2725,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "kemudian tinggalkan bundaran pada %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/it.po.in navit-0.5.0+dfsg.1/po/it.po.in --- navit-0.5.0~svn5900+dfsg.1/po/it.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/it.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,14 +1,14 @@ -# translation of it.po to Italiano -# Copyright (C) 2006-2014 The Navit Team +# Italian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # AndreaCr https://launchpad.net/~andij-cr # Davide Gobbi https://launchpad.net/~hobbie -# Francesco de Virgilio https://launchpad.net/~fradeve # Marco Ciampa https://launchpad.net/~ciampix # Marco Lazzaroni https://launchpad.net/~marcolazzaroni # Matteo Zaffo '80 https://launchpad.net/~zaffo80 # MeltingShell https://launchpad.net/~meltingshell +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Michele Olivo https://launchpad.net/~micheleolivo # Niccolo Rigacci https://launchpad.net/~niccolo # Stefano Angeleri https://launchpad.net/~weltall @@ -20,21 +20,18 @@ # jackyes https://launchpad.net/~jackthebest # tomas https://launchpad.net/~tracks-tomyt - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-11-04 01:52+0000\n" -"Last-Translator: giardia \n" +"PO-Revision-Date: 2015-07-19 03:58+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Italiano\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-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: it\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -89,14 +86,6 @@ msgstr "sesta uscita" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "tra %d m" - -#, c-format msgid "%d feet" msgstr "%d piedi" @@ -105,14 +94,6 @@ msgstr "tra %d piedi" #, c-format -msgid "%d meters" -msgstr "%d metri" - -#, c-format -msgid "in %d meters" -msgstr "tra %d metri" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d miglia" @@ -121,14 +102,6 @@ msgstr "tra %d.%d miglia" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d chilometri" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "tra %d,%d chilometri" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "un miglio" @@ -141,6 +114,22 @@ msgstr[1] "tra %d miglia" #, c-format +msgid "%d meters" +msgstr "%d metri" + +#, c-format +msgid "in %d meters" +msgstr "tra %d metri" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d chilometri" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "tra %d,%d chilometri" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "un chilometro" @@ -152,30 +141,53 @@ msgstr[0] "tra un chilometro" msgstr[1] "tra %d chilometri" -msgid "exit" -msgstr "uscire" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$ssulla %2$s%3$s%4$s" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$ssulla strada %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$ssul %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$ssulla %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$ssulla strada %2$s" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "nella rampa" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%sin %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sin %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sin %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sin %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -183,91 +195,196 @@ msgid "%sinto the %s" msgstr "%sin %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "destra" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "sinistra" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "leggermente " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "decisamente " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "molto decisamente " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "facendo quasi inversione " - msgid "When possible, please turn around" msgstr "Appena possibile, invertire il senso di marcia" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "verso %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Seguire la strada per i prossimi %s" + msgid "Enter the roundabout soon" msgstr "Tra poco si entrerà in rotonda" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "Imboccare la rotonda %s" +msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "e alla rotonda prendere la %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Alla rotonda prendere la %1$s %2$s" + +msgid "soon" +msgstr "tra poco" + +msgid "now" +msgstr "adesso" + +msgid "then" +msgstr "poi" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Alla rotonda prendere la %s" +msgid "then merge%1$s|right" +msgstr "poi entrare%1$s" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Seguire la strada per i prossimi %s" +msgid "Merge %1$s%2$s|right" +msgstr "Entrare %1$s%2$s" -msgid "soon" -msgstr "tra poco" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "poi entrare%1$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Prendere la %1$s strada a %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "Entrare %1$s%2$s" + +msgid "on your left" +msgstr "a sinistra" + +msgid "on your right" +msgstr "a destra" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "tra %i strade" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Prendere l'uscita %1$s %2$s %3$s" -msgid "now" -msgstr "adesso" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Prendere l'uscita %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "all'intersezione" + +msgid "at exit" +msgstr "all'uscita" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "poi procedere dritto%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "Procedere dritto %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "poi tenere la destra%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "Tenere la destra %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "poi tenere la sinistra%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "Tenere la sinistra %1$s%2$s%3$s" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "destra" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "sinistra" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "leggermente " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "decisamente " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "poi prendere la %1$s strada a %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Prendere la %1$s strada a %2$s" -msgid "error" -msgstr "errore" +#, c-format +msgid "after %i roads" +msgstr "tra %i strade" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Svoltare %1$s %2$s %3$s %4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "poi girare %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "poi invertire il senso di marcia" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Invertire il senso di marcia %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "poi invertire il senso di marcia" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Invertire il senso di marcia %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "seguire" + +msgid "then you have reached your destination." +msgstr "poi sarete arrivati a destinazione" +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Siete arrivati a destinazione %s" -msgid "then you have reached your destination." -msgstr "poi sarete arrivati a destinazione" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Intersezione" + +msgid "Exit" +msgstr "Uscita" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1327,19 +1444,14 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"utilizzo di navit:\n" -"navit [opzioni] [file di configurazione]\n" -"\t-c : usa come file di configurazione\n" -"\t-d : imposta il livello dell'output di debug globale a (0-3). " -"Sovrascrive i settaggi del file di configurazione.\n" -"\t-h: stampa questa guida di utilizzo ed esce.\n" -"\t-v: Stampa la versione ed esce.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1356,7 +1468,7 @@ #, c-format msgid "Error: No configuration found in config file '%s'\n" -msgstr "" +msgstr "Errore: Nessuna configurazione trovata nel file config '%s'\n" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" @@ -1478,6 +1590,12 @@ msgid "Opens address search dialog" msgstr "Apri la finestra di ricerca indirizzo" +msgid "_POI search" +msgstr "_Ricerca POI" + +msgid "Opens POI search dialog" +msgstr "Apri la finestra di ricerca POI" + msgid "_Stop Navigation" msgstr "Interrompi la navigazione" @@ -1521,6 +1639,100 @@ msgid "Data" msgstr "Dati" +msgid "Pharmacy" +msgstr "Farmacia" + +msgid "Restaurant" +msgstr "Ristorante" + +msgid "Restaurant. Fast food" +msgstr "Ristorante. Fast food" + +msgid "Hotel" +msgstr "Albergo" + +msgid "Car parking" +msgstr "Parcheggio per auto" + +msgid "Fuel station" +msgstr "Benzinaio" + +msgid "Bank" +msgstr "Banca" + +msgid "Hospital" +msgstr "Ospedale" + +msgid "Cinema" +msgstr "Cinema" + +msgid "Train station" +msgstr "Stazione ferroviaria" + +msgid "School" +msgstr "Scuola" + +msgid "Police" +msgstr "Polizia" + +msgid "Justice" +msgstr "Tribunale" + +msgid "Taxi" +msgstr "Taxi" + +msgid "Shopping" +msgstr "Negozi" + +msgid "Distance from screen center (km)" +msgstr "Distanza dal centro dello schermo (km)" + +#, c-format +msgid "POI %s. %s" +msgstr "POI %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Imposta la destinazione a %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Imposta la mappa a %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "Imposta la prossima tappa a %ld, %ld \n" + +msgid "POI search" +msgstr "Ricerca POI" + +msgid "Select a category" +msgstr "Selezionare una categoria" + +msgid "Select a distance to look for (km)" +msgstr "Selezionare la distanza in cui cercare (km)" + +msgid "Select a POI" +msgstr "Selezionare un POI" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Categoria" + +msgid "Direction" +msgstr "Direzione" + +msgid "Distance(m)" +msgstr "Distanza (m)" + +msgid "Name" +msgstr "Nome" + +msgid "Visit Before" +msgstr "Visita prima" + msgid "N" msgstr "N" @@ -1738,7 +1950,7 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Latitudine Longitudine" msgid "Enter coordinates, for example:" msgstr "Inserire coordinate, ad esempio:" @@ -1832,10 +2044,29 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Dati Mappa (c) Contributori OpenStreetMap, licenza ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "Mappe scaricate" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" +msgstr "Annulla" + +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." msgstr "" msgid "Whole Planet" @@ -1857,7 +2088,7 @@ msgstr "Taiwan" msgid "UAE+Other" -msgstr "" +msgstr "Emirati Arabi Uniti+altro" msgid "Oceania" msgstr "Oceania" @@ -1902,7 +2133,7 @@ msgstr "Bretagna" msgid "Centre" -msgstr "" +msgstr "Centro" msgid "Champagne-Ardenne" msgstr "Champagne-Ardenne" @@ -2196,7 +2427,7 @@ msgstr "Washington (stato)" msgid "South+Middle America" -msgstr "" +msgstr "America Centrale" msgid "Guyane Francaise" msgstr "Guyana francese" @@ -2208,13 +2439,16 @@ msgid "ready" msgstr "pronto" -msgid "Error downloading map!" -msgstr "Errore nello scaricamento della mappa!" +msgid "Media selected for map storage is not available" +msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Spazio libero non sufficiente" +msgid "Error downloading map!" +msgstr "Errore nello scaricamento della mappa!" + msgid "Error writing map!" msgstr "Errore nel salvataggio della mappa!" @@ -2264,8 +2498,8 @@ "Former\n" "Destinations" msgstr "" -"Precedenti\n" -"Destinazioni" +"Destinazioni\n" +"precedenti" msgid "Coordinates" msgstr "Coordinate" @@ -2382,7 +2616,7 @@ #. Android resource: @strings/optionsmenu_toggle_poi msgid "Toggle POIs" -msgstr "" +msgstr "Mostra/nascondi POI" #. Android resource: @strings/optionsmenu_exit_navit msgid "Exit Navit" @@ -2392,6 +2626,10 @@ msgid "Backup / Restore" msgstr "Backup / Ripristino" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Cancellare questa mappa?" @@ -2519,3 +2757,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Ripristino" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "e alla rotonda prendere la %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ja.po.in navit-0.5.0+dfsg.1/po/ja.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ja.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ja.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,16 +1,14 @@ -# Japanese translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Japanese translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer # MontBlanc https://launchpad.net/~osm-gatinho - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" "PO-Revision-Date: 2013-09-28 01:43+0000\n" "Last-Translator: KaZeR \n" "Language-Team: Japanese \n" @@ -18,8 +16,6 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: ja\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -75,14 +71,6 @@ msgstr "" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "" - -#, c-format msgid "%d feet" msgstr "" @@ -91,14 +79,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d メートル" - -#, c-format -msgid "in %d meters" -msgstr "" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -107,14 +87,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -127,6 +99,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d メートル" + +#, c-format +msgid "in %d meters" +msgstr "" + +#, c-format +msgid "%d.%d kilometers" +msgstr "" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -138,30 +126,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -169,90 +180,195 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "右" +msgid "When possible, please turn around" +msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "左" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" +msgstr "まもなく" + +msgid "now" +msgstr "今" + +msgid "then" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" -msgstr "まもなく" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" -msgstr "今" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "右" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "左" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "目的地の%sにつきました" -msgid "then you have reached your destination." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" msgstr "" #. Android resource: @strings/position_popup_title @@ -1313,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1454,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "案内中止" @@ -1496,6 +1620,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "北" @@ -1807,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2183,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2350,6 +2590,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2475,3 +2719,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/jv.po.in navit-0.5.0+dfsg.1/po/jv.po.in --- navit-0.5.0~svn5900+dfsg.1/po/jv.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/jv.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,29 +1,24 @@ -# Javanese translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Javanese translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Leonardus Priyo Handono https://launchpad.net/~leonardus-ymail - +# Michael von Glasow https://launchpad.net/~michael-vonglasow msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:43+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:59+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Javanese \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 != 0;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: jv\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" -msgid "exit" -msgstr "metu" - msgid "now" msgstr "saiki" @@ -79,35 +74,39 @@ msgstr "metu kaenem" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" +msgid "%d meters" msgstr "" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -119,18 +118,6 @@ msgstr "" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -142,85 +129,187 @@ msgstr[0] "" msgstr[1] "ing %d kilometer" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%s ing dalan %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%s ing dalan %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%s ing dalan %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%s ing dalan %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" -msgstr "%s ing dalan %s" +msgstr "%sing dalan %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "nengen" +msgid "When possible, please turn around" +msgstr "Yen biso, mutero" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "ngiwa" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "kanthi gampang " +#, c-format +msgid "Follow the road for the next %s" +msgstr "Tetep ing dalan iki nganti %s" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "ora dikenal " +msgid "then enter the roundabout" +msgstr "" -msgid "When possible, please turn around" -msgstr "Yen biso, mutero" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Metu soko puteran ing cawang kaping %1$s %2$s" -msgid "Enter the roundabout soon" +msgid "soon" +msgstr "sedhelo maneh" + +msgid "then" +msgstr "terus" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" -msgstr "terus metu soko puteran ing cawang kaping %s" +msgid "then merge%1$s|left" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "metu soko puteran ing cawang kaping %s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Follow the road for the next %s" -msgstr "tetep ing dalan iki nganti %s" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "soon" -msgstr "sedhelo maneh" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "nengen" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "ngiwa" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "kanthi gampang " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "" + +#, c-format +msgid "then take the %1$s road to the %2$s" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction #, c-format msgid "Take the %1$s road to the %2$s" msgstr "Jupuk dalan kaping %1$s ing %2$s" @@ -229,30 +318,59 @@ msgid "after %i roads" msgstr "sakwise %i dalan" +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format -msgid "then take the %1$s road to the %2$s" -msgstr "Jupuk dalan kaping %1$s neng %2$s" +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "" -msgid "error" -msgstr "salah" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "Turn %1$s%2$s %3$s%4$s" -msgstr "menggok %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "terus menggok %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "terus panjenengan tekan tujuan" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Metu" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "dunung" @@ -1311,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1452,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1494,6 +1620,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1805,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2181,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2348,6 +2590,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2473,3 +2719,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "terus metu soko puteran ing cawang kaping %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/kk.po.in navit-0.5.0+dfsg.1/po/kk.po.in --- navit-0.5.0~svn5900+dfsg.1/po/kk.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/kk.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,14 +1,12 @@ -# Kazakh translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Kazakh translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" "PO-Revision-Date: 2010-02-24 19:32+0000\n" "Last-Translator: \n" "Language-Team: Kazakh \n" @@ -16,8 +14,6 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: kk\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -73,35 +69,39 @@ msgstr "" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" +msgid "%d meters" msgstr "" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -113,18 +113,6 @@ msgstr "" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -136,30 +124,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -167,92 +178,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" +msgid "on your left" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1311,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1452,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1494,6 +1618,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1805,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2181,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2348,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2473,3 +2717,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/kn.po.in navit-0.5.0+dfsg.1/po/kn.po.in --- navit-0.5.0~svn5900+dfsg.1/po/kn.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/kn.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,15 +1,13 @@ -# Kannada translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Kannada translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Mahesh Venom https://launchpad.net/~mahesh-venom-73 - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2014-06-21 16:42+0000\n" "Last-Translator: Mahesh Venom \n" "Language-Team: Kannada \n" @@ -17,8 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: kn\n" msgid "Running from source directory\n" msgstr "" @@ -72,35 +69,39 @@ msgstr "" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" +msgid "%d meters" msgstr "" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -112,18 +113,6 @@ msgstr "" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -135,30 +124,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -166,92 +178,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" +msgid "on your left" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1618,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2717,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ko.po.in navit-0.5.0+dfsg.1/po/ko.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ko.po.in 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ko.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,2727 @@ +# Korean translations for navit +# Copyright (C) 2006-2015 The Navit Team +# This file is distributed under the same license as the navit package. +# Many thanks to the contributors of this translation: +# KaZeR https://launchpad.net/~kazer +# Seungjun, Lee https://launchpad.net/~cybercorean + +msgid "" +msgstr "" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 21:39+0000\n" +"Last-Translator: KaZeR \n" +"Language-Team: Korean \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" +"Language: ko\n" + +msgid "Running from source directory\n" +msgstr "" + +#, c-format +msgid "setting '%s' to '%s'\n" +msgstr "" + +#. TRANSLATORS: the following counts refer to streets +msgid "zeroth" +msgstr "" + +msgid "first" +msgstr "첫번째" + +msgid "second" +msgstr "두번째" + +msgid "third" +msgstr "세번째" + +msgid "fourth" +msgstr "네번째" + +msgid "fifth" +msgstr "다섯번째" + +msgid "sixth" +msgstr "여섯번재" + +#. TRANSLATORS: the following counts refer to roundabout exits +msgid "zeroth exit" +msgstr "" + +msgid "first exit" +msgstr "첫번째 출구" + +msgid "second exit" +msgstr "두번째 출구" + +msgid "third exit" +msgstr "세번째 출구" + +msgid "fourth exit" +msgstr "네번째 출구" + +msgid "fifth exit" +msgstr "다섯번째 출구" + +msgid "sixth exit" +msgstr "여섯번째 출구" + +#, c-format +msgid "%d feet" +msgstr "%d 피트" + +#, c-format +msgid "in %d feet" +msgstr "%d 피트 후에" + +#, c-format +msgid "%d.%d miles" +msgstr "%d.%d 마일" + +#, c-format +msgid "in %d.%d miles" +msgstr "%d.%d 마일 후에" + +#, c-format +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "%d 마일" + +#, c-format +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "%d 마일 후에" + +#, c-format +msgid "%d meters" +msgstr "%d 미터" + +#, c-format +msgid "in %d meters" +msgstr "%d 미터 후에" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d 킬로미터" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "%d.%d 킬로미터 후에" + +#, c-format +msgid "one kilometer" +msgid_plural "%d kilometers" +msgstr[0] "%d 킬로미터" + +#, c-format +msgid "in one kilometer" +msgid_plural "in %d kilometers" +msgstr[0] "%d 킬로미터 후에" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "%s %s 방향으로" + +msgid "When possible, please turn around" +msgstr "가능하면 유턴하세요" + +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "다음 %s 까지 직진하세요" + +msgid "Enter the roundabout soon" +msgstr "로타리에 곧 진입합니다" + +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "%s 로타리에 진입합니다" + +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "" + +msgid "soon" +msgstr "곧" + +msgid "now" +msgstr "지금" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|right" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance +#, c-format +msgid "Take exit %1$s %2$s %3$s" +msgstr "" + +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "우" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "좌" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "약간 " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "크게 " + +#, c-format +msgid "then take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "%1$s 번째 출구에서 %2$s 로 나가세요" + +#, c-format +msgid "after %i roads" +msgstr "%i 도로 이후에" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination +#, c-format +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "%3$s%4$s %1$s%2$s 회전 하세요" + +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "목적지에 도착하였습니다." + +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "%s 목적지에 도착합니다" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "" + +#. Android resource: @strings/position_popup_title +msgid "Position" +msgstr "" + +msgid "Command" +msgstr "명령" + +msgid "Length" +msgstr "" + +msgid "km" +msgstr "km" + +msgid "m" +msgstr "m" + +msgid "Time" +msgstr "" + +msgid "Destination Length" +msgstr "" + +msgid "Destination Time" +msgstr "" + +msgid "Roadbook" +msgstr "" + +#, c-format +msgid "Waypoint %d" +msgstr "" + +msgid "Visit before..." +msgstr "" + +msgid "Set as position" +msgstr "지점으로설정" + +msgid "Set as destination" +msgstr "목적지로설정" + +msgid "Add as bookmark" +msgstr "" + +#, c-format +msgid "Point 0x%x 0x%x" +msgstr "" + +#, c-format +msgid "Screen coord : %d %d" +msgstr "" + +#. 020 +msgid "Andorra" +msgstr "안도라" + +#. 784 +msgid "United Arab Emirates" +msgstr "아랍에미리트연방" + +#. 004 +msgid "Afghanistan" +msgstr "아프가니스탄" + +#. 028 +msgid "Antigua and Barbuda" +msgstr "앤티가 바부다" + +#. 660 +msgid "Anguilla" +msgstr "안길라" + +#. 008 +msgid "Albania" +msgstr "알바니아" + +#. 051 +msgid "Armenia" +msgstr "아르메니아" + +#. 530 +msgid "Netherlands Antilles" +msgstr "앤틸러스제도" + +#. 024 +msgid "Angola" +msgstr "앙골라" + +#. 010 +msgid "Antarctica" +msgstr "남극" + +#. 032 +msgid "Argentina" +msgstr "아르헨티나" + +#. 016 +msgid "American Samoa" +msgstr "아메리칸사모아" + +#. 040 +msgid "Austria" +msgstr "오스트리아" + +#. 036 +msgid "Australia" +msgstr "오스트레일리아" + +#. 533 +msgid "Aruba" +msgstr "아루바" + +#. 248 +msgid "Aland Islands" +msgstr "올란드제도" + +#. 031 +msgid "Azerbaijan" +msgstr "아제르바이잔" + +#. 070 +msgid "Bosnia and Herzegovina" +msgstr "보스니아・헤르체고비나" + +#. 052 +msgid "Barbados" +msgstr "바베이도스" + +#. 050 +msgid "Bangladesh" +msgstr "방글라데시" + +#. 056 +msgid "Belgium" +msgstr "벨기에" + +#. 854 +msgid "Burkina Faso" +msgstr "부르키나파소" + +#. 100 +msgid "Bulgaria" +msgstr "불가리아" + +#. 048 +msgid "Bahrain" +msgstr "바레인" + +#. 108 +msgid "Burundi" +msgstr "부룬디" + +#. 204 +msgid "Benin" +msgstr "베닌" + +#. 652 +msgid "Saint Barthelemy" +msgstr "" + +#. 060 +msgid "Bermuda" +msgstr "버뮤다제도" + +#. 096 +msgid "Brunei Darussalam" +msgstr "브루나이" + +#. 068 +msgid "Bolivia" +msgstr "볼리비아" + +#. 535 +msgid "Bonaire, Sint Eustatius and Saba" +msgstr "" + +#. 076 +msgid "Brazil" +msgstr "브라질" + +#. 044 +msgid "Bahamas" +msgstr "바하마" + +#. 064 +msgid "Bhutan" +msgstr "부탄" + +#. 074 +msgid "Bouvet Island" +msgstr "부베섬島" + +#. 072 +msgid "Botswana" +msgstr "보츠와나" + +#. 112 +msgid "Belarus" +msgstr "벨라루스" + +#. 084 +msgid "Belize" +msgstr "벨리즈" + +#. 124 +msgid "Canada" +msgstr "캐나다" + +#. 166 +msgid "Cocos (Keeling) Islands" +msgstr "코코아 (킬링) 제도" + +#. 180 +msgid "Congo, Democratic Republic of the" +msgstr "콩고민주공화국" + +#. 140 +msgid "Central African Republic" +msgstr "중앙아프리카공화국" + +#. 178 +msgid "Congo" +msgstr "콩고" + +#. 756 +msgid "Switzerland" +msgstr "스위스" + +#. 384 +msgid "Cote d'Ivoire" +msgstr "코트디부아르" + +#. 184 +msgid "Cook Islands" +msgstr "쿡제도" + +#. 152 +msgid "Chile" +msgstr "칠레" + +#. 120 +msgid "Cameroon" +msgstr "카메룬" + +#. 156 +msgid "China" +msgstr "중국" + +#. 170 +msgid "Colombia" +msgstr "콜롬비아" + +#. 188 +msgid "Costa Rica" +msgstr "코스타리카" + +#. 192 +msgid "Cuba" +msgstr "쿠바" + +#. 132 +msgid "Cape Verde" +msgstr "카보베르데" + +#. 531 +msgid "Curacao" +msgstr "퀴라소" + +#. 162 +msgid "Christmas Island" +msgstr "크리스마스섬" + +#. 196 +msgid "Cyprus" +msgstr "키프로스" + +#. 203 +msgid "Czech Republic" +msgstr "체코공화국" + +#. 276 +msgid "Germany" +msgstr "독일" + +#. 262 +msgid "Djibouti" +msgstr "지부티" + +#. 208 +msgid "Denmark" +msgstr "덴마크" + +#. 212 +msgid "Dominica" +msgstr "도미니카" + +#. 214 +msgid "Dominican Republic" +msgstr "도미니카공화국" + +#. 012 +msgid "Algeria" +msgstr "알제리" + +#. 218 +msgid "Ecuador" +msgstr "에콰도르" + +#. 233 +msgid "Estonia" +msgstr "에스토니아" + +#. 818 +msgid "Egypt" +msgstr "이집트" + +#. 732 +msgid "Western Sahara" +msgstr "서사하라" + +#. 232 +msgid "Eritrea" +msgstr "에리트레아" + +#. 724 +msgid "Spain" +msgstr "스페인" + +#. 231 +msgid "Ethiopia" +msgstr "에티오피아" + +#. 246 +msgid "Finland" +msgstr "핀란드" + +#. 242 +msgid "Fiji" +msgstr "피지" + +#. 238 +msgid "Falkland Islands (Malvinas)" +msgstr "포클랜드제도 (말비나스)" + +#. 583 +msgid "Micronesia, Federated States of" +msgstr "미크로네시아연방국" + +#. 234 +msgid "Faroe Islands" +msgstr "파로제도" + +#. 250 +msgid "France" +msgstr "프랑스" + +#. 266 +msgid "Gabon" +msgstr "가봉" + +#. 826 +msgid "United Kingdom" +msgstr "영국" + +#. 308 +msgid "Grenada" +msgstr "그레나다" + +#. 268 +msgid "Georgia" +msgstr "조지아" + +#. 254 +msgid "French Guiana" +msgstr "프랑스령기아나" + +#. 831 +msgid "Guernsey" +msgstr "건지섬" + +#. 288 +msgid "Ghana" +msgstr "가나" + +#. 292 +msgid "Gibraltar" +msgstr "지브롤터" + +#. 304 +msgid "Greenland" +msgstr "그린란드" + +#. 270 +msgid "Gambia" +msgstr "감비아" + +#. 324 +msgid "Guinea" +msgstr "기니" + +#. 312 +msgid "Guadeloupe" +msgstr "과달루페섬" + +#. 226 +msgid "Equatorial Guinea" +msgstr "적도기니" + +#. 300 +msgid "Greece" +msgstr "그리스" + +#. 239 +msgid "South Georgia and the South Sandwich Islands" +msgstr "남조지아섬・남샌드위치제도" + +#. 320 +msgid "Guatemala" +msgstr "과테말라" + +#. 316 +msgid "Guam" +msgstr "괌" + +#. 624 +msgid "Guinea-Bissau" +msgstr "기니비소" + +#. 328 +msgid "Guyana" +msgstr "가이아나" + +#. 344 +msgid "Hong Kong" +msgstr "홍콩" + +#. 334 +msgid "Heard Island and McDonald Islands" +msgstr "허드맥도날드제도" + +#. 340 +msgid "Honduras" +msgstr "온두라스" + +#. 191 +msgid "Croatia" +msgstr "크로아티아" + +#. 332 +msgid "Haiti" +msgstr "아이티" + +#. 348 +msgid "Hungary" +msgstr "헝가리" + +#. 360 +msgid "Indonesia" +msgstr "인도네시아" + +#. 372 +msgid "Ireland" +msgstr "아일랜드" + +#. 376 +msgid "Israel" +msgstr "이스라엘" + +#. 833 +msgid "Isle of Man" +msgstr "맨섬" + +#. 356 +msgid "India" +msgstr "인도" + +#. 086 +msgid "British Indian Ocean Territory" +msgstr "영국령인도양지역" + +#. 368 +msgid "Iraq" +msgstr "이라크" + +#. 364 +msgid "Iran, Islamic Republic of" +msgstr "이란공화국" + +#. 352 +msgid "Iceland" +msgstr "아이슬란드" + +#. 380 +msgid "Italy" +msgstr "이탈리아" + +#. 832 +msgid "Jersey" +msgstr "저지섬" + +#. 388 +msgid "Jamaica" +msgstr "자메이카" + +#. 400 +msgid "Jordan" +msgstr "요르단" + +#. 392 +msgid "Japan" +msgstr "일본" + +#. 404 +msgid "Kenya" +msgstr "케냐" + +#. 417 +msgid "Kyrgyzstan" +msgstr "키르기스탄" + +#. 116 +msgid "Cambodia" +msgstr "캄보디아" + +#. 296 +msgid "Kiribati" +msgstr "키리바시" + +#. 174 +msgid "Comoros" +msgstr "코모로" + +#. 659 +msgid "Saint Kitts and Nevis" +msgstr "" + +#. 408 +msgid "Korea, Democratic People's Republic of" +msgstr "조선민주주의인민공화국" + +#. 410 +msgid "Korea, Republic of" +msgstr "대한민국" + +#. 414 +msgid "Kuwait" +msgstr "쿠웨이트" + +#. 136 +msgid "Cayman Islands" +msgstr "카이만제도" + +#. 398 +msgid "Kazakhstan" +msgstr "카자흐스탄" + +#. 418 +msgid "Lao People's Democratic Republic" +msgstr "라오스인민민주공화국" + +#. 422 +msgid "Lebanon" +msgstr "레바논" + +#. 662 +msgid "Saint Lucia" +msgstr "세인트루시아" + +#. 438 +msgid "Liechtenstein" +msgstr "리히텐슈타인" + +#. 144 +msgid "Sri Lanka" +msgstr "스리랑카" + +#. 430 +msgid "Liberia" +msgstr "라이베리아" + +#. 426 +msgid "Lesotho" +msgstr "레소토" + +#. 440 +msgid "Lithuania" +msgstr "리투아니아" + +#. 442 +msgid "Luxembourg" +msgstr "룩셈부르크" + +#. 428 +msgid "Latvia" +msgstr "라트비아" + +#. 434 +msgid "Libya" +msgstr "리비아" + +#. 504 +msgid "Morocco" +msgstr "모로코" + +#. 492 +msgid "Monaco" +msgstr "모나코" + +#. 498 +msgid "Moldova, Republic of" +msgstr "몰도바공화국" + +#. 499 +msgid "Montenegro" +msgstr "몬테네그로" + +#. 663 +msgid "Saint Martin (French part)" +msgstr "" + +#. 450 +msgid "Madagascar" +msgstr "마다가스카르" + +#. 584 +msgid "Marshall Islands" +msgstr "마셜제도" + +#. 807 +msgid "Macedonia, the former Yugoslav Republic of" +msgstr "마케도니아" + +#. 466 +msgid "Mali" +msgstr "말리" + +#. 104 +msgid "Myanmar" +msgstr "미얀마" + +#. 496 +msgid "Mongolia" +msgstr "몽골" + +#. 446 +msgid "Macao" +msgstr "마카오" + +#. 580 +msgid "Northern Mariana Islands" +msgstr "북마리아나제도" + +#. 474 +msgid "Martinique" +msgstr "마르티니크" + +#. 478 +msgid "Mauritania" +msgstr "모리타니아" + +#. 500 +msgid "Montserrat" +msgstr "몬세라트" + +#. 470 +msgid "Malta" +msgstr "말타" + +#. 480 +msgid "Mauritius" +msgstr "모리셔스" + +#. 462 +msgid "Maldives" +msgstr "몰디브" + +#. 454 +msgid "Malawi" +msgstr "말라위" + +#. 484 +msgid "Mexico" +msgstr "멕시코" + +#. 458 +msgid "Malaysia" +msgstr "말레이지아" + +#. 508 +msgid "Mozambique" +msgstr "모잠비크" + +#. 516 +msgid "Namibia" +msgstr "나미비다" + +#. 540 +msgid "New Caledonia" +msgstr "뉴칼레도니아" + +#. 562 +msgid "Niger" +msgstr "니제르" + +#. 574 +msgid "Norfolk Island" +msgstr "노포크섬" + +#. 566 +msgid "Nigeria" +msgstr "나이지리아" + +#. 558 +msgid "Nicaragua" +msgstr "니카라과" + +#. 528 +msgid "Netherlands" +msgstr "네덜란드" + +#. 578 +msgid "Norway" +msgstr "노르웨이" + +#. 524 +msgid "Nepal" +msgstr "네팔" + +#. 520 +msgid "Nauru" +msgstr "나우루" + +#. 570 +msgid "Niue" +msgstr "니우에" + +#. 554 +msgid "New Zealand" +msgstr "뉴질랜드" + +#. 512 +msgid "Oman" +msgstr "오만" + +#. 591 +msgid "Panama" +msgstr "파나마" + +#. 604 +msgid "Peru" +msgstr "페루" + +#. 258 +msgid "French Polynesia" +msgstr "프랑스령폴리네시아" + +#. 598 +msgid "Papua New Guinea" +msgstr "파푸아뉴기니" + +#. 608 +msgid "Philippines" +msgstr "필리핀" + +#. 586 +msgid "Pakistan" +msgstr "파키스탄" + +#. 616 +msgid "Poland" +msgstr "폴란드" + +#. 666 +msgid "Saint Pierre and Miquelon" +msgstr "생피에르미클롱" + +#. 612 +msgid "Pitcairn" +msgstr "핏케언제도" + +#. 630 +msgid "Puerto Rico" +msgstr "푸에르토리코" + +#. 275 +msgid "Palestinian Territory, Occupied" +msgstr "팔레스타인영토" + +#. 620 +msgid "Portugal" +msgstr "포르투갈" + +#. 585 +msgid "Palau" +msgstr "팔라우" + +#. 600 +msgid "Paraguay" +msgstr "파라과이" + +#. 634 +msgid "Qatar" +msgstr "카타르" + +#. 638 +msgid "Reunion" +msgstr "레위니옹" + +#. 642 +msgid "Romania" +msgstr "루마니아" + +#. 688 +msgid "Serbia" +msgstr "세르비아" + +#. 643 +msgid "Russian Federation" +msgstr "러시아연방" + +#. 646 +msgid "Rwanda" +msgstr "르완다" + +#. 682 +msgid "Saudi Arabia" +msgstr "사우디아라비아" + +#. 090 +msgid "Solomon Islands" +msgstr "솔로몬제도" + +#. 690 +msgid "Seychelles" +msgstr "세이셸" + +#. 736 +msgid "Sudan" +msgstr "수단" + +#. 752 +msgid "Sweden" +msgstr "스웨덴" + +#. 702 +msgid "Singapore" +msgstr "싱가포르" + +#. 654 +msgid "Saint Helena" +msgstr "세인트헬레나" + +#. 705 +msgid "Slovenia" +msgstr "슬로베니아" + +#. 744 +msgid "Svalbard and Jan Mayen" +msgstr "스발바르얀마옌" + +#. 703 +msgid "Slovakia" +msgstr "슬로바키아" + +#. 694 +msgid "Sierra Leone" +msgstr "시에라리온" + +#. 674 +msgid "San Marino" +msgstr "산마리노" + +#. 686 +msgid "Senegal" +msgstr "세네갈" + +#. 706 +msgid "Somalia" +msgstr "소말리아" + +#. 740 +msgid "Suriname" +msgstr "수리남" + +#. 728 +msgid "South Sudan" +msgstr "남수단" + +#. 678 +msgid "Sao Tome and Principe" +msgstr "상투메・프린시페" + +#. 222 +msgid "El Salvador" +msgstr "엘살바도르" + +#. 534 +msgid "Sint Maarten (Dutch part)" +msgstr "신트마르턴 (네덜란드)" + +#. 760 +msgid "Syrian Arab Republic" +msgstr "시리아" + +#. 748 +msgid "Swaziland" +msgstr "스와질란드" + +#. 796 +msgid "Turks and Caicos Islands" +msgstr "터커스케이커스제도" + +#. 148 +msgid "Chad" +msgstr "차드" + +#. 260 +msgid "French Southern Territories" +msgstr "프랑스령남부와남극지역" + +#. 768 +msgid "Togo" +msgstr "토고" + +#. 764 +msgid "Thailand" +msgstr "태국" + +#. 762 +msgid "Tajikistan" +msgstr "타지키스탄" + +#. 772 +msgid "Tokelau" +msgstr "토켈라우" + +#. 626 +msgid "Timor-Leste" +msgstr "동티모르" + +#. 795 +msgid "Turkmenistan" +msgstr "투르크메니스탄" + +#. 788 +msgid "Tunisia" +msgstr "튀니지" + +#. 776 +msgid "Tonga" +msgstr "통가" + +#. 792 +msgid "Turkey" +msgstr "터키" + +#. 780 +msgid "Trinidad and Tobago" +msgstr "트리니다드・토바고" + +#. 798 +msgid "Tuvalu" +msgstr "투발루" + +#. 158 +msgid "Taiwan, Province of China" +msgstr "대만" + +#. 834 +msgid "Tanzania, United Republic of" +msgstr "탄자니아연합공화국" + +#. 804 +msgid "Ukraine" +msgstr "우크라이나" + +#. 800 +msgid "Uganda" +msgstr "우간다" + +#. 581 +msgid "United States Minor Outlying Islands" +msgstr "미국령군소제도" + +#. 840 +msgid "United States" +msgstr "미국" + +#. 858 +msgid "Uruguay" +msgstr "우루과이" + +#. 860 +msgid "Uzbekistan" +msgstr "우즈베키스탄" + +#. 336 +msgid "Holy See (Vatican City State)" +msgstr "" + +#. 670 +msgid "Saint Vincent and the Grenadines" +msgstr "" + +#. 862 +msgid "Venezuela" +msgstr "베네수엘라" + +#. 092 +msgid "Virgin Islands, British" +msgstr "영국령버진제도" + +#. 850 +msgid "Virgin Islands, U.S." +msgstr "미국령버진제도" + +#. 704 +msgid "Viet Nam" +msgstr "베트남" + +#. 548 +msgid "Vanuatu" +msgstr "바누아투" + +#. 876 +msgid "Wallis and Futuna" +msgstr "" + +#. 882 +msgid "Samoa" +msgstr "사모아" + +#. 887 +msgid "Yemen" +msgstr "예멘" + +#. 175 +msgid "Mayotte" +msgstr "" + +#. 710 +msgid "South Africa" +msgstr "남아프리카" + +#. 894 +msgid "Zambia" +msgstr "잠비아" + +#. 716 +msgid "Zimbabwe" +msgstr "짐바브웨" + +msgid "* Unknown, add is_in tags to those cities" +msgstr "" + +msgid "" +"navit usage:\n" +"navit [options] [configfile]\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" +"\t-h: print this usage info and exit.\n" +"\t-v: print the version and exit.\n" +msgstr "" + +#. We have not found an existing config file from all possibilities +msgid "No config file navit.xml, navit.xml.local found\n" +msgstr "" + +#, c-format +msgid "Error parsing config file '%s': %s\n" +msgstr "" + +#, c-format +msgid "Using config file '%s'\n" +msgstr "" + +#, c-format +msgid "Error: No configuration found in config file '%s'\n" +msgstr "" + +msgid "" +"Internal initialization failed, exiting. Check previous error messages.\n" +msgstr "" + +msgid "unknown street" +msgstr "" + +#. Safe cast: attr_generic_set_attr does not modify its parameter. +msgid "Unnamed vehicle" +msgstr "" + +msgid "Failed to write bookmarks file" +msgstr "" + +#. Strings from navit_shipped.xml +msgid "Map Point" +msgstr "" + +msgid "Car" +msgstr "" + +msgid "Iso2" +msgstr "" + +msgid "Iso3" +msgstr "" + +msgid "Country" +msgstr "나라" + +msgid "Postal" +msgstr "" + +msgid "Town" +msgstr "마을" + +msgid "District" +msgstr "지역" + +msgid "Street" +msgstr "거리" + +msgid "Number" +msgstr "" + +msgid "Enter Destination" +msgstr "목적지입력" + +msgid "Zip Code" +msgstr "우편번호" + +msgid "City" +msgstr "도시" + +msgid "District/Township" +msgstr "" + +msgid "Map" +msgstr "지도" + +msgid "Bookmark" +msgstr "북마크" + +msgid "Destination" +msgstr "목적지" + +#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired). +msgid "_Display" +msgstr "" + +msgid "_Route" +msgstr "경로" + +msgid "_Former Destinations" +msgstr "이전목적지" + +msgid "_Bookmarks" +msgstr "북마크" + +msgid "_Map" +msgstr "지도" + +msgid "_Layout" +msgstr "" + +msgid "_Projection" +msgstr "" + +msgid "_Vehicle" +msgstr "" + +msgid "Zoom_Out" +msgstr "줌아웃" + +msgid "Decrease zoom level" +msgstr "" + +msgid "Zoom_In" +msgstr "줌인" + +msgid "Increase zoom level" +msgstr "" + +msgid "_Recalculate" +msgstr "재계산" + +msgid "Redraw map" +msgstr "" + +msgid "_Info" +msgstr "" + +msgid "Set _destination" +msgstr "" + +msgid "Opens address search dialog" +msgstr "" + +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + +msgid "_Stop Navigation" +msgstr "안내중지" + +msgid "Test" +msgstr "테스트" + +msgid "_Quit" +msgstr "종료" + +msgid "Quit the application" +msgstr "" + +msgid "Show position _cursor" +msgstr "" + +msgid "_Lock on Road" +msgstr "" + +msgid "_Keep orientation to the North" +msgstr "" + +msgid "Switches map orientation to the north or the vehicle" +msgstr "" + +msgid "_Roadbook" +msgstr "" + +msgid "Show/hide route description" +msgstr "" + +msgid "_Autozoom" +msgstr "" + +msgid "Enable/disable automatic zoom level changing" +msgstr "" + +msgid "_Fullscreen" +msgstr "전체화면" + +msgid "Data" +msgstr "" + +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + +msgid "N" +msgstr "북" + +msgid "NE" +msgstr "복동" + +msgid "E" +msgstr "동" + +msgid "SE" +msgstr "남동" + +msgid "S" +msgstr "남" + +msgid "SW" +msgstr "남서" + +msgid "W" +msgstr "서" + +msgid "NW" +msgstr "북서" + +#. Android resource: @strings/no +msgid "No" +msgstr "" + +msgid "2D" +msgstr "" + +msgid "3D" +msgstr "" + +msgid "OT" +msgstr "" + +#, c-format +msgid "Route %4.0fkm %02d:%02d ETA" +msgstr "" + +msgid "Route 0000km 0+00:00 ETA" +msgstr "" + +msgid "Help" +msgstr "" + +#, c-format +msgid "Waypoint %s" +msgstr "경유지 %s" + +msgid "Select waypoint to insert the new one before" +msgstr "" + +msgid "View in Browser" +msgstr "" + +msgid "Item type" +msgstr "" + +#. Android resource: @strings/address_search_streets +msgid "Streets" +msgstr "" + +msgid "House numbers" +msgstr "" + +msgid "View Attributes" +msgstr "" + +msgid "Set as position (and deactivate vehicle)" +msgstr "" + +msgid "POIs" +msgstr "" + +msgid "View on map" +msgstr "" + +msgid "Remove search results from the map" +msgstr "" + +msgid "Show results on the map" +msgstr "" + +msgid "Cut Bookmark" +msgstr "" + +msgid "Copy Bookmark" +msgstr "" + +msgid "Rename Bookmark" +msgstr "" + +msgid "Paste Bookmark" +msgstr "" + +msgid "Delete Bookmark" +msgstr "" + +msgid "Delete waypoint" +msgstr "" + +msgid "Bookmarks" +msgstr "북마크" + +msgid "Bookmarks as waypoints" +msgstr "" + +msgid "Save waypoints" +msgstr "" + +msgid "Replace with waypoints" +msgstr "" + +msgid "Delete Folder" +msgstr "" + +#. Adds the Bookmark folders +msgid "Add Bookmark folder" +msgstr "" + +#. Pastes the Bookmark +msgid "Paste bookmark" +msgstr "" + +#, c-format +msgid "Bookmark %s" +msgstr "" + +#, c-format +msgid "Download %s" +msgstr "" + +msgid "Map Download" +msgstr "" + +msgid "Active" +msgstr "" + +msgid "Download Enabled" +msgstr "" + +msgid "Download completely" +msgstr "" + +msgid "Show Satellite Status" +msgstr "" + +msgid " Elevation " +msgstr "" + +msgid " Azimuth " +msgstr "" + +msgid "Show NMEA Data" +msgstr "" + +msgid "car" +msgstr "" + +msgid "bike" +msgstr "" + +msgid "pedestrian" +msgstr "" + +#, c-format +msgid "Current profile: %s" +msgstr "" + +#, c-format +msgid "Change profile to: %s" +msgstr "" + +msgid "Set as active" +msgstr "" + +msgid "Show Satellite status" +msgstr "" + +msgid "Show NMEA data" +msgstr "" + +msgid "Add Bookmark" +msgstr "" + +msgid "Rename" +msgstr "" + +msgid "About Navit" +msgstr "" + +#. Authors +msgid "By" +msgstr "" + +#. Contributors +msgid "And all the Navit Team" +msgstr "" + +msgid "members and contributors." +msgstr "" + +msgid "Waypoints" +msgstr "" + +msgid "Enter Coordinates" +msgstr "" + +#. +#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) +#. gui_internal_widget_append(wb, w) +#. +#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) +#. gui_internal_widget_append(w, we) +msgid "Latitude Longitude" +msgstr "" + +msgid "Enter coordinates, for example:" +msgstr "" + +msgid "Vehicle" +msgstr "" + +msgid "Rules" +msgstr "" + +msgid "Lock on road" +msgstr "" + +msgid "Northing" +msgstr "" + +msgid "Map follows Vehicle" +msgstr "" + +msgid "Plan with Waypoints" +msgstr "" + +msgid "Maps" +msgstr "" + +msgid "Layout" +msgstr "" + +msgid "Height Profile" +msgstr "" + +msgid "Route Description" +msgstr "" + +msgid "Show Locale" +msgstr "" + +msgid "Former Destinations" +msgstr "이전목적지" + +msgid "- No former destinations available -" +msgstr "" + +msgid "Message" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Back to map" +msgstr "" + +msgid "Main Menu" +msgstr "" + +msgid "House number" +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Prev" +msgstr "" + +msgid "Return to route!" +msgstr "" + +#. warning told +msgid "Look out! Camera!" +msgstr "" + +#. warning told +msgid "Please decrease your speed" +msgstr "" + +msgid "partial match" +msgstr "" + +#. Android resource: @strings/address_search_button +msgid "Search" +msgstr "" + +#. Android resource: @strings/address_search_towns +msgid "Towns" +msgstr "" + +#. Android resource: @strings/position_popup_drive_here +msgid "Route to here" +msgstr "" + +msgid "Map data (c) OpenStreetMap contributors, ODBL" +msgstr "" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + +msgid "Downloaded maps" +msgstr "" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + +msgid "Whole Planet" +msgstr "" + +msgid "Africa" +msgstr "" + +msgid "Canary Islands" +msgstr "" + +msgid "Asia" +msgstr "" + +msgid "Korea" +msgstr "" + +msgid "Taiwan" +msgstr "" + +msgid "UAE+Other" +msgstr "" + +msgid "Oceania" +msgstr "" + +msgid "Tasmania" +msgstr "" + +msgid "Victoria" +msgstr "" + +msgid "New South Wales" +msgstr "" + +msgid "Europe" +msgstr "" + +msgid "Western Europe" +msgstr "" + +msgid "Azores" +msgstr "" + +msgid "BeNeLux" +msgstr "" + +msgid "Alsace" +msgstr "" + +msgid "Aquitaine" +msgstr "" + +msgid "Auvergne" +msgstr "" + +msgid "Basse-Normandie" +msgstr "" + +msgid "Bourgogne" +msgstr "" + +msgid "Bretagne" +msgstr "" + +msgid "Centre" +msgstr "" + +msgid "Champagne-Ardenne" +msgstr "" + +msgid "Corse" +msgstr "" + +msgid "Franche-Comte" +msgstr "" + +msgid "Haute-Normandie" +msgstr "" + +msgid "Ile-de-France" +msgstr "" + +msgid "Languedoc-Roussillon" +msgstr "" + +msgid "Limousin" +msgstr "" + +msgid "Lorraine" +msgstr "" + +msgid "Midi-Pyrenees" +msgstr "" + +msgid "Nord-pas-de-Calais" +msgstr "" + +msgid "Pays-de-la-Loire" +msgstr "" + +msgid "Picardie" +msgstr "" + +msgid "Poitou-Charentes" +msgstr "" + +msgid "Provence-Alpes-Cote-d-Azur" +msgstr "" + +msgid "Rhone-Alpes" +msgstr "" + +msgid "Baden-Wuerttemberg" +msgstr "" + +msgid "Bayern" +msgstr "" + +msgid "Mittelfranken" +msgstr "" + +msgid "Niederbayern" +msgstr "" + +msgid "Oberbayern" +msgstr "" + +msgid "Oberfranken" +msgstr "" + +msgid "Oberpfalz" +msgstr "" + +msgid "Schwaben" +msgstr "" + +msgid "Unterfranken" +msgstr "" + +msgid "Berlin" +msgstr "" + +msgid "Brandenburg" +msgstr "" + +msgid "Bremen" +msgstr "" + +msgid "Hamburg" +msgstr "" + +msgid "Hessen" +msgstr "" + +msgid "Mecklenburg-Vorpommern" +msgstr "" + +msgid "Niedersachsen" +msgstr "" + +msgid "Nordrhein-westfalen" +msgstr "" + +msgid "Rheinland-Pfalz" +msgstr "" + +msgid "Saarland" +msgstr "" + +msgid "Sachsen-Anhalt" +msgstr "" + +msgid "Sachsen" +msgstr "" + +msgid "Schleswig-Holstein" +msgstr "" + +msgid "Thueringen" +msgstr "" + +msgid "Mallorca" +msgstr "" + +msgid "Galicia" +msgstr "" + +msgid "Scandinavia" +msgstr "" + +msgid "England" +msgstr "" + +msgid "Buckinghamshire" +msgstr "" + +msgid "Cambridgeshire" +msgstr "" + +msgid "Cumbria" +msgstr "" + +msgid "East yorkshire with hull" +msgstr "" + +msgid "Essex" +msgstr "" + +msgid "Herefordshire" +msgstr "" + +msgid "Kent" +msgstr "" + +msgid "Lancashire" +msgstr "" + +msgid "Leicestershire" +msgstr "" + +msgid "Norfolk" +msgstr "" + +msgid "Nottinghamshire" +msgstr "" + +msgid "Oxfordshire" +msgstr "" + +msgid "Shropshire" +msgstr "" + +msgid "Somerset" +msgstr "" + +msgid "South yorkshire" +msgstr "" + +msgid "Suffolk" +msgstr "" + +msgid "Surrey" +msgstr "" + +msgid "Wiltshire" +msgstr "" + +msgid "Scotland" +msgstr "" + +msgid "Wales" +msgstr "" + +msgid "Crete" +msgstr "" + +msgid "North America" +msgstr "" + +msgid "Alaska" +msgstr "" + +msgid "Hawaii" +msgstr "" + +msgid "USA" +msgstr "" + +msgid " (except Alaska and Hawaii)" +msgstr "" + +msgid "Midwest" +msgstr "" + +msgid "Michigan" +msgstr "" + +msgid "Ohio" +msgstr "" + +msgid "Northeast" +msgstr "" + +msgid "Massachusetts" +msgstr "" + +msgid "Vermont" +msgstr "" + +msgid "Pacific" +msgstr "" + +msgid "South" +msgstr "" + +msgid "Arkansas" +msgstr "" + +msgid "District of Columbia" +msgstr "" + +msgid "Florida" +msgstr "" + +msgid "Louisiana" +msgstr "" + +msgid "Maryland" +msgstr "" + +msgid "Mississippi" +msgstr "" + +msgid "Oklahoma" +msgstr "" + +msgid "Texas" +msgstr "" + +msgid "Virginia" +msgstr "" + +msgid "West Virginia" +msgstr "" + +msgid "West" +msgstr "" + +msgid "Arizona" +msgstr "" + +msgid "California" +msgstr "" + +msgid "Colorado" +msgstr "" + +msgid "Idaho" +msgstr "" + +msgid "Montana" +msgstr "" + +msgid "New Mexico" +msgstr "" + +msgid "Nevada" +msgstr "" + +msgid "Oregon" +msgstr "" + +msgid "Utah" +msgstr "" + +msgid "Washington State" +msgstr "" + +msgid "South+Middle America" +msgstr "" + +msgid "Guyane Francaise" +msgstr "" + +msgid "downloading" +msgstr "" + +#. Android resource: @strings/map_download_ready +msgid "ready" +msgstr "" + +msgid "Media selected for map storage is not available" +msgstr "" + +#. Android resource: @strings/map_download_not_enough_free_space +msgid "Not enough free space" +msgstr "" + +msgid "Error downloading map!" +msgstr "" + +msgid "Error writing map!" +msgstr "" + +msgid "Map download aborted!" +msgstr "" + +#. Android resource: @strings/map_download_eta +msgid "ETA" +msgstr "" + +#. Android resource: @strings/map_download_title +msgid "Map download" +msgstr "" + +msgid "Vehicle Position" +msgstr "" + +msgid "Main menu" +msgstr "" + +msgid "" +"Show\n" +"Map" +msgstr "" + +msgid "Settings" +msgstr "" + +msgid "Tools" +msgstr "" + +msgid "Route" +msgstr "경로" + +msgid "About" +msgstr "" + +msgid "Quit" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "" +"Former\n" +"Destinations" +msgstr "" + +msgid "Coordinates" +msgstr "" + +msgid "" +"Stop\n" +"Navigation" +msgstr "" + +msgid "Display" +msgstr "" + +msgid "Fullscreen" +msgstr "전체화면" + +msgid "Window Mode" +msgstr "" + +msgid "Description" +msgstr "" + +msgid "" +"Drop last \n" +"Waypoint" +msgstr "" + +msgid "" +"Drop next \n" +"Waypoint" +msgstr "" + +msgid "Satellite Status" +msgstr "" + +msgid "NMEA Data" +msgstr "" + +msgid "car_shortest" +msgstr "" + +msgid "car_avoid_tolls" +msgstr "" + +msgid "car_pedantic" +msgstr "" + +msgid "horse" +msgstr "" + +msgid "Truck" +msgstr "" + +#. Strings from android/res/values/strings.xml +#. Android resource: @strings/yes +msgid "Yes" +msgstr "" + +#. Android resource: @strings/notification_ticker +msgid "Navit started" +msgstr "" + +#. Android resource: @strings/notification_event_default +msgid "Navit running" +msgstr "" + +#. Android resource: @strings/initial_info_box_title +msgid "Welcome to Navit" +msgstr "" + +#. Android resource: @strings/initial_info_box_message +msgid "" +"Thank you for installing Navit!\n" +"\n" +"To start, select \"Download maps\" from the menu to download a map. Note: " +"The map filesize may be large (>50MB) - a wifi connection is recommended.\n" +"\n" +"Mapdata: (c) OpenStreetMap contributors\n" +"\n" +"Enjoy Navit!" +msgstr "" + +#. Android resource: @strings/initial_info_box_OK +msgid "OK" +msgstr "" + +#. Android resource: @strings/initial_info_box_more_info +msgid "More info" +msgstr "" + +#. Android resource: @strings/optionsmenu_zoom_in +msgid "Zoom in" +msgstr "" + +#. Android resource: @strings/optionsmenu_zoom_out +msgid "Zoom out" +msgstr "" + +#. Android resource: @strings/optionsmenu_download_maps +msgid "Download maps" +msgstr "" + +#. Android resource: @strings/optionsmenu_toggle_poi +msgid "Toggle POIs" +msgstr "" + +#. Android resource: @strings/optionsmenu_exit_navit +msgid "Exit Navit" +msgstr "" + +#. Android resource: @strings/optionsmenu_backup_restore +msgid "Backup / Restore" +msgstr "" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + +#. Android resource: @strings/map_delete +msgid "Delete this map?" +msgstr "" + +#. Android resource: @strings/map_download_downloading +msgid "Downloading:" +msgstr "" + +#. Android resource: @strings/map_download_download_error +msgid "Error downloading map." +msgstr "" + +#. Android resource: @strings/map_download_download_aborted +msgid "Map download aborted" +msgstr "" + +#. Android resource: @strings/map_no_fix +msgid "No location. Reopen after location fix." +msgstr "" + +#. Android resource: @strings/maps_for_current_location +msgid "Maps containing current location" +msgstr "" + +#. Android resource: @strings/address_search_title +msgid "Address search" +msgstr "" + +#. Android resource: @strings/address_enter_destination +msgid "Enter destination" +msgstr "" + +#. Android resource: @strings/address_partial_match +msgid "Match partial address" +msgstr "" + +#. Android resource: @strings/address_search_searching +msgid "Searching..." +msgstr "" + +#. Android resource: @strings/address_search_not_found +msgid "Address not found" +msgstr "" + +#. Android resource: @strings/address_search_getting_results +msgid "Getting search results" +msgstr "" + +#. Android resource: @strings/address_search_loading_results +msgid "Loading search results" +msgstr "" + +#. Android resource: @strings/address_search_no_results +msgid "No results found" +msgstr "" + +#. Android resource: @strings/address_search_no_text_entered +msgid "No text entered" +msgstr "" + +#. Android resource: @strings/address_search_set_destination +msgid "Setting destination to:" +msgstr "" + +#. Android resource: @strings/choose_an_action +msgid "Choose an action" +msgstr "" + +#. Android resource: @strings/please_insert_an_sd_card +msgid "Please insert an SD Card" +msgstr "" + +#. Android resource: @strings/backing_up +msgid "Backing up..." +msgstr "" + +#. Android resource: @strings/restoring +msgid "Restoring..." +msgstr "" + +#. Android resource: @strings/failed_to_create_backup_directory +msgid "Failed to create backup directory" +msgstr "" + +#. Android resource: @strings/backup_failed +msgid "Backup failed" +msgstr "" + +#. Android resource: @strings/no_backup_found +msgid "No backup found" +msgstr "" + +#. Android resource: @strings/failed_to_restore +msgid "Failed to restore" +msgstr "" + +#. Android resource: @strings/backup_successful +msgid "Backup successful" +msgstr "" + +#. Android resource: @strings/restore_successful_please_restart_navit +msgid "" +"Restore Successful\n" +"Please restart Navit" +msgstr "" + +#. Android resource: @strings/backup_not_found +msgid "Backup not found" +msgstr "" + +#. Android resource: @strings/restore_failed +msgid "Restore failed" +msgstr "" + +#. Android resource: @strings/select_backup +msgid "Select backup" +msgstr "" + +#. Android resource: @strings/backup +msgid "Backup" +msgstr "" + +#. Android resource: @strings/restore +msgid "Restore" +msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ku.po.in navit-0.5.0+dfsg.1/po/ku.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ku.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ku.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,15 +1,13 @@ -# Kurdish translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Kurdish translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # kosar https://launchpad.net/~kosar-belana - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2013-06-22 22:57+0000\n" "Last-Translator: kosar \n" "Language-Team: Kurdish \n" @@ -17,8 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: ku\n" msgid "Running from source directory\n" msgstr "" @@ -72,35 +69,39 @@ msgstr "" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" +msgid "%d meters" msgstr "" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -112,18 +113,6 @@ msgstr "" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -135,30 +124,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -166,92 +178,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "ڕاست" +msgid "When possible, please turn around" +msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "چەپ" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "now" +msgstr "ئێستا" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" +msgid "on your left" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" -msgstr "ئێستا" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "ڕاست" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "چەپ" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" -msgstr "هەڵە" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" +msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1618,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2717,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/lb.po.in navit-0.5.0+dfsg.1/po/lb.po.in --- navit-0.5.0~svn5900+dfsg.1/po/lb.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/lb.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,22 @@ -# Luxembourgish translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Luxembourgish translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Kevin G https://launchpad.net/~kev912002 - +# MaXaM https://launchpad.net/~maxschaal msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2011-09-29 17:56+0000\n" -"Last-Translator: Kevin G \n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 03:59+0000\n" +"Last-Translator: MaXaM \n" "Language-Team: Luxembourgish \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: lb\n" msgid "Running from source directory\n" msgstr "Aus dem Quellverzeechnis starten\n" @@ -35,16 +33,16 @@ msgstr "éischt" msgid "second" -msgstr "Sekonn" +msgstr "Zweet" msgid "third" msgstr "drett" msgid "fourth" -msgstr "veiert" +msgstr "véiert" msgid "fifth" -msgstr "feneft" +msgstr "fëneft" msgid "sixth" msgstr "sechst" @@ -54,7 +52,7 @@ msgstr "nullt Ausfahrt" msgid "first exit" -msgstr "Eischt Ausfahrt" +msgstr "Éischt Ausfahrt" msgid "second exit" msgstr "Zweet Ausfahrt" @@ -72,14 +70,6 @@ msgstr "sechst Ausfahrt" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "an %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -88,14 +78,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d Meter" - -#, c-format -msgid "in %d meters" -msgstr "An %d Meter" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -104,14 +86,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d,%d Kilometer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "An %d,%d Kilometer" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -124,6 +98,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d Meter" + +#, c-format +msgid "in %d meters" +msgstr "An %d Meter" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d,%d Kilometer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "An %d,%d Kilometer" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "Een Kilometer" @@ -135,64 +125,72 @@ msgstr[0] "An engem Kilometer" msgstr[1] "An %d Kilometer" -msgid "exit" -msgstr "Verlossen" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$sop d' %2$s%3$s%4$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$sop d' Stross %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$sop den %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$sop d' %2$s" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$sop d' %2$s" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "op d' Opfahrt" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%sop d' Stross %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sop den %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sop d' %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sop d' %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%sop d' %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "riets" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "lenks" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "liicht " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "schaarf " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "ganz schaarf " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "onbekannt " - msgid "When possible, please turn around" msgstr "Wann meiglech, wannechglift dreinen" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "" + msgid "Enter the roundabout soon" msgstr "" @@ -201,57 +199,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "" + +msgid "soon" msgstr "" +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|right" msgstr "" -msgid "soon" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" msgstr "" +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" +msgid "Take exit %1$s %2$s %3$s" msgstr "" -msgid "now" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "riets" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "lenks" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "liicht " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "schaarf " + #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "Dreinen %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "Dreinen %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Verdeeler" + +msgid "Exit" +msgstr "Ausfaart" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1428,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1571,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1619,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2024,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2419,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2589,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2718,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/lt.po.in navit-0.5.0+dfsg.1/po/lt.po.in --- navit-0.5.0~svn5900+dfsg.1/po/lt.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/lt.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,31 +1,31 @@ -# Lithuanian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Lithuanian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Aidas Kasparas https://launchpad.net/~a-kasparas +# KaZeR https://launchpad.net/~kazer +# Mantas Kriaučiūnas https://launchpad.net/~mantas +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Rytis Ūsalis https://launchpad.net/~rytis-usalis # laimonas https://launchpad.net/~laimonas-mockus - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:44+0000\n" -"Last-Translator: laimonas \n" +"PO-Revision-Date: 2015-07-19 03:59+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Lithuanian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: lt\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" -msgstr "Paleidžiu pradiniame kataloge\n" +msgstr "Paleidžiama pradiniame aplanke\n" #, c-format msgid "setting '%s' to '%s'\n" @@ -76,58 +76,52 @@ msgstr "šeštas išvažiavimas" #, c-format -msgid "%d m" -msgstr "%d m" +msgid "%d feet" +msgstr "%d pėdos" #, c-format -msgid "in %d m" -msgstr "už %d m" +msgid "in %d feet" +msgstr "už %d pėdų" #, c-format -msgid "%d feet" -msgstr "" +msgid "%d.%d miles" +msgstr "%d.%d mylios" #, c-format -msgid "in %d feet" -msgstr "" +msgid "in %d.%d miles" +msgstr "už %d.%d mylių" #, c-format -msgid "%d meters" -msgstr "%d metrai" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "%d mylia" +msgstr[1] "%d mylios" +msgstr[2] "%d mylių" #, c-format -msgid "in %d meters" -msgstr "už %d metrų" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "už %d mylios" +msgstr[1] "už %d mylių" +msgstr[2] "už %d mylių" #, c-format -msgid "%d.%d miles" -msgstr "" +msgid "%d meters" +msgstr "%d metrai" #, c-format -msgid "in %d.%d miles" -msgstr "" +msgid "in %d meters" +msgstr "už %d metrų" #, c-format msgid "%d.%d kilometers" -msgstr "" +msgstr "%d.%d km." #, c-format msgid "in %d.%d kilometers" msgstr "už %d.%d kilometrų" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d kilometras" @@ -141,63 +135,71 @@ msgstr[1] "už %d kilometrų" msgstr[2] "už %d kilometrų" -msgid "exit" -msgstr "išvažiavimas" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$sį %2$s%3$s%4$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$sį %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$sį %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$sį %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$sį %2$s" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "į rampą" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s į gatvę %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sį %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s į %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sį %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s į %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sį %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s į %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sį %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" -msgstr "%s į %s" - -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "dešinėn" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "kairėn" +msgstr "%sį %s" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "lengvai " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "stipriai " +msgid "When possible, please turn around" +msgstr "Kai įmanoma, apsisukite" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "labai stipriai " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "nežinomas " +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "link %s" -msgid "When possible, please turn around" -msgstr "kai įmanoma, apsisukite" +#, c-format +msgid "Follow the road for the next %s" +msgstr "Laikykitės kelio sekančius %s" msgid "Enter the roundabout soon" msgstr "Netrukus įsukite į žiedą" @@ -205,58 +207,178 @@ #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" +msgstr "Įsukite į žiedą %s" + +msgid "then enter the roundabout" msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "tada išsukite iš žiedo %s išvažiavime" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Išsukite iš žiedo %1$s išvažiavime %2$s" +msgid "soon" +msgstr "netrukus" + +msgid "now" +msgstr "dabar" + +msgid "then" +msgstr "tada" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "išsukite iš žiedo %s išvažiavime" +msgid "then merge%1$s|right" +msgstr "tada užvažiuokite už%1$s" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Laikykitės kelio sekančius %s" +msgid "Merge %1$s%2$s|right" +msgstr "Užvažiuokite už%1$s%2$s" -msgid "soon" -msgstr "netrukus" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "tada užvažiuokite už%1$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Važiuokite %1$s keliu į %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "Užvažiuokite už%1$s%2$s" + +msgid "on your left" +msgstr "kairėje" + +msgid "on your right" +msgstr "dešinėje" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "už %i kelių" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Išvažiuokite per išvažiavimą %1$s %2$s %3$s" -msgid "now" -msgstr "dabar" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Išvažiuokite per išvažiavimą %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "sankryžoje" + +msgid "at exit" +msgstr "išvažiavime" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "tada laikykitės dešinės%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "Laikykitės dešinės %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "tada laikykitės kairės%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "Laikykitės kairės %1$s%2$s%3$s" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "dešinėn" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "kairėn" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "lengvai " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "stipriai " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "tada važiuokite %1$s keliu į %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Važiuokite %1$s keliu į %2$s" -msgid "error" -msgstr "klaida" +#, c-format +msgid "after %i roads" +msgstr "už %i kelių" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Pasukite %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "tada pasukite %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "tada apsisukite" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Apsisukite %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "tada apsisukite" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Apsisukite %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "laikykitės kelio" + +msgid "then you have reached your destination." +msgstr "tada jūs pasiekėte kelionės tikslą." +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Jūs pasiekėte tikslą %s" -msgid "then you have reached your destination." -msgstr "tada jūs pasiekėte kelionės tikslą." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Sankryža" + +msgid "Exit" +msgstr "Išvažiavimas" #. Android resource: @strings/position_popup_title msgid "Position" @@ -291,16 +413,16 @@ msgstr "" msgid "Visit before..." -msgstr "" +msgstr "Lankyti prieš..." msgid "Set as position" -msgstr "Nustatykite poziciją" +msgstr "Nustatyti poziciją" msgid "Set as destination" -msgstr "Nustatykite tikslą" +msgstr "Nustatyti tikslą" msgid "Add as bookmark" -msgstr "Pridėkite žymę" +msgstr "Pridėti žymę" #, c-format msgid "Point 0x%x 0x%x" @@ -308,7 +430,7 @@ #, c-format msgid "Screen coord : %d %d" -msgstr "Ekrano koordinatės : %d %d" +msgstr "Ekrano koordinatės : %d %d" #. 020 msgid "Andorra" @@ -856,7 +978,7 @@ #. 434 msgid "Libya" -msgstr "" +msgstr "Libija" #. 504 msgid "Morocco" @@ -1144,7 +1266,7 @@ #. 728 msgid "South Sudan" -msgstr "" +msgstr "Pietų Sudanas" #. 678 msgid "Sao Tome and Principe" @@ -1316,11 +1438,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1333,7 +1457,7 @@ #, c-format msgid "Using config file '%s'\n" -msgstr "" +msgstr "Naudojamas konfigūracijos failas „%s”\n" #, c-format msgid "Error: No configuration found in config file '%s'\n" @@ -1344,11 +1468,11 @@ msgstr "" msgid "unknown street" -msgstr "" +msgstr "nežinoma gatvė" #. Safe cast: attr_generic_set_attr does not modify its parameter. msgid "Unnamed vehicle" -msgstr "" +msgstr "Bevardė transporto priemonė" msgid "Failed to write bookmarks file" msgstr "" @@ -1413,7 +1537,7 @@ msgstr "Parinkti kelią" msgid "_Former Destinations" -msgstr "Ankstesnės vietos" +msgstr "Ankstesni tikslai" msgid "_Bookmarks" msgstr "Adresynas" @@ -1452,11 +1576,17 @@ msgstr "Informacija" msgid "Set _destination" -msgstr "" +msgstr "Nustatyti _tikslą" msgid "Opens address search dialog" msgstr "Atidaro adreso paieškos dialogą" +msgid "_POI search" +msgstr "Lankytinų vietų paieška" + +msgid "Opens POI search dialog" +msgstr "Atidaro lankytinų vietų paieškos dialogą" + msgid "_Stop Navigation" msgstr "Stabdyti navigaciją" @@ -1499,6 +1629,100 @@ msgid "Data" msgstr "Duomenys" +msgid "Pharmacy" +msgstr "Vaistinė" + +msgid "Restaurant" +msgstr "Restoranas" + +msgid "Restaurant. Fast food" +msgstr "Valgykla. Greitas maistas" + +msgid "Hotel" +msgstr "Viešbutis" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "Degalinė" + +msgid "Bank" +msgstr "Bankas" + +msgid "Hospital" +msgstr "Ligoninė" + +msgid "Cinema" +msgstr "Kino teatras" + +msgid "Train station" +msgstr "Geležinkelio stotis" + +msgid "School" +msgstr "Mokykla" + +msgid "Police" +msgstr "Policija" + +msgid "Justice" +msgstr "Teismas" + +msgid "Taxi" +msgstr "Taksi" + +msgid "Shopping" +msgstr "Parduotuvė" + +msgid "Distance from screen center (km)" +msgstr "Atstumas nuo ekrano vidaus (km)" + +#, c-format +msgid "POI %s. %s" +msgstr "Lankytina vieta %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Nustatyti tikslą į %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Nustatyti žemėlapį į %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "Lankytinų vietų paieška" + +msgid "Select a category" +msgstr "Pasirinkite kategoriją" + +msgid "Select a distance to look for (km)" +msgstr "Išrinkite atstumą, kuriame ieškoti (km)" + +msgid "Select a POI" +msgstr "Išrinkite lankytiną vietą" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Kategorija" + +msgid "Direction" +msgstr "Kryptis" + +msgid "Distance(m)" +msgstr "Atstumas (m)" + +msgid "Name" +msgstr "Vardas" + +msgid "Visit Before" +msgstr "Aplankyi prieš" + msgid "N" msgstr "Š" @@ -1570,7 +1794,7 @@ msgstr "Rodyti savybes" msgid "Set as position (and deactivate vehicle)" -msgstr "" +msgstr "Nustatyti poziciją (išjungdamas transporto priemonę)" msgid "POIs" msgstr "Lankytinos vietos" @@ -1579,10 +1803,10 @@ msgstr "Rodyti žemėlapyje" msgid "Remove search results from the map" -msgstr "" +msgstr "Pašalinti paieškos rezultatas nuo žemėlapio" msgid "Show results on the map" -msgstr "" +msgstr "Rodyti rezultatus žemelapyje" msgid "Cut Bookmark" msgstr "Iškirpti žymą" @@ -1615,11 +1839,11 @@ msgstr "" msgid "Delete Folder" -msgstr "" +msgstr "Pašalinti katalogą" #. Adds the Bookmark folders msgid "Add Bookmark folder" -msgstr "Pridėti žymų katalogą" +msgstr "Pridėti žymų aplanką" #. Pastes the Bookmark msgid "Paste bookmark" @@ -1631,13 +1855,13 @@ #, c-format msgid "Download %s" -msgstr "" +msgstr "Atsisiųsti %s" msgid "Map Download" msgstr "" msgid "Active" -msgstr "" +msgstr "Aktyvus" msgid "Download Enabled" msgstr "" @@ -1694,7 +1918,7 @@ #. Authors msgid "By" -msgstr "" +msgstr "Sukūrė" #. Contributors msgid "And all the Navit Team" @@ -1707,7 +1931,7 @@ msgstr "" msgid "Enter Coordinates" -msgstr "" +msgstr "Įvėskite koordinates" #. #. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) @@ -1716,10 +1940,10 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Platuma Ilguma" msgid "Enter coordinates, for example:" -msgstr "" +msgstr "Įvėskitė koordinates, pvz.:" msgid "Vehicle" msgstr "Transporto priemonė" @@ -1755,10 +1979,10 @@ msgstr "" msgid "Former Destinations" -msgstr "Ankstesnės vietos" +msgstr "Ankstesni tikslai" msgid "- No former destinations available -" -msgstr "" +msgstr "- Nėra ankstesnių tikslų -" msgid "Message" msgstr "Žinutė" @@ -1767,7 +1991,7 @@ msgstr "Grįžti" msgid "Back to map" -msgstr "Grižti į žemėlapį" +msgstr "Grįžti į žemėlapį" msgid "Main Menu" msgstr "Pagrindinis meniu" @@ -1782,7 +2006,7 @@ msgstr "" msgid "Return to route!" -msgstr "" +msgstr "Grįžti į maršrutą!" #. warning told msgid "Look out! Camera!" @@ -1790,32 +2014,51 @@ #. warning told msgid "Please decrease your speed" -msgstr "" +msgstr "Prašom sumažinti greitį" msgid "partial match" msgstr "" #. Android resource: @strings/address_search_button msgid "Search" -msgstr "" +msgstr "Paieška" #. Android resource: @strings/address_search_towns msgid "Towns" -msgstr "" +msgstr "Miestai" #. Android resource: @strings/position_popup_drive_here msgid "Route to here" -msgstr "" +msgstr "Maršrutas iki čia" msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" +msgstr "Atsisiųsti žemėlapiai" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." msgstr "" msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -1931,7 +2174,7 @@ msgstr "" msgid "Bayern" -msgstr "" +msgstr "Bavarija" msgid "Mittelfranken" msgstr "" @@ -2039,10 +2282,10 @@ msgstr "" msgid "Nottinghamshire" -msgstr "" +msgstr "Notingemšyras" msgid "Oxfordshire" -msgstr "" +msgstr "Oksfordšyras" msgid "Shropshire" msgstr "" @@ -2063,7 +2306,7 @@ msgstr "" msgid "Scotland" -msgstr "" +msgstr "Škotija" msgid "Wales" msgstr "" @@ -2135,40 +2378,40 @@ msgstr "" msgid "Virginia" -msgstr "" +msgstr "Virdžinija" msgid "West Virginia" -msgstr "" +msgstr "Vakarų Virdžinija" msgid "West" msgstr "" msgid "Arizona" -msgstr "" +msgstr "Arizona" msgid "California" -msgstr "" +msgstr "Kalifornija" msgid "Colorado" -msgstr "" +msgstr "Koloradas" msgid "Idaho" msgstr "" msgid "Montana" -msgstr "" +msgstr "Montana" msgid "New Mexico" -msgstr "" +msgstr "Naujoji Meksika" msgid "Nevada" -msgstr "" +msgstr "Nevada" msgid "Oregon" -msgstr "" +msgstr "Oregonas" msgid "Utah" -msgstr "" +msgstr "Juta" msgid "Washington State" msgstr "" @@ -2180,17 +2423,20 @@ msgstr "" msgid "downloading" -msgstr "" +msgstr "siunčiama" #. Android resource: @strings/map_download_ready msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" +msgstr "Nepakanka laisvos vietos" + +msgid "Error downloading map!" msgstr "" msgid "Error writing map!" @@ -2201,7 +2447,7 @@ #. Android resource: @strings/map_download_eta msgid "ETA" -msgstr "" +msgstr "Liko laiko" #. Android resource: @strings/map_download_title msgid "Map download" @@ -2242,9 +2488,11 @@ "Former\n" "Destinations" msgstr "" +"Ankstesni\n" +"tikslai" msgid "Coordinates" -msgstr "" +msgstr "Koordinatės" msgid "" "Stop\n" @@ -2276,13 +2524,13 @@ msgstr "" msgid "Satellite Status" -msgstr "" +msgstr "Palydovų būsena" msgid "NMEA Data" msgstr "" msgid "car_shortest" -msgstr "" +msgstr "Automobilis (trumpiausias maršrutas)" msgid "car_avoid_tolls" msgstr "" @@ -2294,12 +2542,12 @@ msgstr "arklys" msgid "Truck" -msgstr "" +msgstr "Sunkvežimis" #. Strings from android/res/values/strings.xml #. Android resource: @strings/yes msgid "Yes" -msgstr "" +msgstr "Taip" #. Android resource: @strings/notification_ticker msgid "Navit started" @@ -2307,11 +2555,11 @@ #. Android resource: @strings/notification_event_default msgid "Navit running" -msgstr "" +msgstr "Veikia Navit" #. Android resource: @strings/initial_info_box_title msgid "Welcome to Navit" -msgstr "" +msgstr "Sveikiname paleidus Navit navigaciją" #. Android resource: @strings/initial_info_box_message msgid "" @@ -2327,43 +2575,47 @@ #. Android resource: @strings/initial_info_box_OK msgid "OK" -msgstr "" +msgstr "Gerai" #. Android resource: @strings/initial_info_box_more_info msgid "More info" -msgstr "" +msgstr "Daugiau informacijos" #. Android resource: @strings/optionsmenu_zoom_in msgid "Zoom in" -msgstr "" +msgstr "Padidinti" #. Android resource: @strings/optionsmenu_zoom_out msgid "Zoom out" -msgstr "" +msgstr "Sumažinti" #. Android resource: @strings/optionsmenu_download_maps msgid "Download maps" -msgstr "" +msgstr "Atsisiųsti žemėlapius" #. Android resource: @strings/optionsmenu_toggle_poi msgid "Toggle POIs" -msgstr "" +msgstr "Rodyti/slėpti lankytinas vietas" #. Android resource: @strings/optionsmenu_exit_navit msgid "Exit Navit" -msgstr "" +msgstr "Išeiti iš Navit" #. Android resource: @strings/optionsmenu_backup_restore msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" -msgstr "" +msgstr "Pašalinti šį žemėlapį?" #. Android resource: @strings/map_download_downloading msgid "Downloading:" -msgstr "" +msgstr "Siunčiama:" #. Android resource: @strings/map_download_download_error msgid "Error downloading map." @@ -2383,11 +2635,11 @@ #. Android resource: @strings/address_search_title msgid "Address search" -msgstr "" +msgstr "Adresų paieška" #. Android resource: @strings/address_enter_destination msgid "Enter destination" -msgstr "" +msgstr "Įveskite tikslą" #. Android resource: @strings/address_partial_match msgid "Match partial address" @@ -2395,11 +2647,11 @@ #. Android resource: @strings/address_search_searching msgid "Searching..." -msgstr "" +msgstr "Ieškoma..." #. Android resource: @strings/address_search_not_found msgid "Address not found" -msgstr "" +msgstr "Adresas nerastas" #. Android resource: @strings/address_search_getting_results msgid "Getting search results" @@ -2407,15 +2659,15 @@ #. Android resource: @strings/address_search_loading_results msgid "Loading search results" -msgstr "" +msgstr "Įkeliami paieškos rezultatai" #. Android resource: @strings/address_search_no_results msgid "No results found" -msgstr "" +msgstr "Nieko nerasta" #. Android resource: @strings/address_search_no_text_entered msgid "No text entered" -msgstr "" +msgstr "Neįrašėte jokio teksto" #. Android resource: @strings/address_search_set_destination msgid "Setting destination to:" @@ -2423,19 +2675,19 @@ #. Android resource: @strings/choose_an_action msgid "Choose an action" -msgstr "" +msgstr "Pasirinkite veiksmą" #. Android resource: @strings/please_insert_an_sd_card msgid "Please insert an SD Card" -msgstr "" +msgstr "Įdėkite SD kortelę (laikmeną)" #. Android resource: @strings/backing_up msgid "Backing up..." -msgstr "" +msgstr "Daroma atsarginė kopija..." #. Android resource: @strings/restoring msgid "Restoring..." -msgstr "" +msgstr "Atkuriama..." #. Android resource: @strings/failed_to_create_backup_directory msgid "Failed to create backup directory" @@ -2447,7 +2699,7 @@ #. Android resource: @strings/no_backup_found msgid "No backup found" -msgstr "" +msgstr "Nerasta atsarginių kopijų" #. Android resource: @strings/failed_to_restore msgid "Failed to restore" @@ -2455,7 +2707,7 @@ #. Android resource: @strings/backup_successful msgid "Backup successful" -msgstr "" +msgstr "Atsarginė kopija padaryta" #. Android resource: @strings/restore_successful_please_restart_navit msgid "" @@ -2465,7 +2717,7 @@ #. Android resource: @strings/backup_not_found msgid "Backup not found" -msgstr "" +msgstr "Atsarginė kopija neaptikta" #. Android resource: @strings/restore_failed msgid "Restore failed" @@ -2473,7 +2725,7 @@ #. Android resource: @strings/select_backup msgid "Select backup" -msgstr "" +msgstr "Pasirinkite atsarginę kopiją" #. Android resource: @strings/backup msgid "Backup" @@ -2482,3 +2734,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "tada išsukite iš žiedo %1$s išvažiavime %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/lv.po.in navit-0.5.0+dfsg.1/po/lv.po.in --- navit-0.5.0~svn5900+dfsg.1/po/lv.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/lv.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,33 +1,33 @@ -# Latvian (lv) translations for navit -# Copyright (C) 2006-2013 The Navit Team +# Latvian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. - +# Many thanks to the contributors of this translation: # Janis https://launchpad.net/~janis-zl # KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow +# Stendec https://launchpad.net/~stendec # sieks https://launchpad.net/~sieks msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-10 21:46+0200\n" -"PO-Revision-Date: 2013-09-28 01:43+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:59+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Latvian \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-Launchpad-Export-Date: 2013-10-26 21:48+0000\n" -"X-Generator: Launchpad (build 16810)\n" +"Language: lv\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" -msgstr "" +msgstr "Darbojas no saknes mapes\n" #, c-format msgid "setting '%s' to '%s'\n" -msgstr "" +msgstr "iestata '%s' uz '%s'\n" #. TRANSLATORS: the following counts refer to streets msgid "zeroth" @@ -62,7 +62,7 @@ msgstr "otrā izeja" msgid "third exit" -msgstr "trešā izbrauktuve" +msgstr "trešā izeja" msgid "fourth exit" msgstr "ceturtā izeja" @@ -74,36 +74,42 @@ msgstr "sestā izeja" #, c-format -msgid "%d m" -msgstr "%d m" +msgid "%d feet" +msgstr "%d pēdas" #, c-format -msgid "in %d m" -msgstr "pēc %d m" +msgid "in %d feet" +msgstr "pēc %d pēdām" #, c-format -msgid "%d feet" -msgstr "" +msgid "%d.%d miles" +msgstr "%d.%d jūdzes" #, c-format -msgid "in %d feet" -msgstr "" +msgid "in %d.%d miles" +msgstr "pēc %d.%d jūdzēm" #, c-format -msgid "%d meters" -msgstr "%d metri" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "%d jūdze" +msgstr[1] "%d jūdzes" +msgstr[2] "%d jūdzes" #, c-format -msgid "in %d meters" -msgstr "pēc %d metriem" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "pēc %d jūdzes" +msgstr[1] "pēc %d jūdzēm" +msgstr[2] "pēc %d jūdzēm" #, c-format -msgid "%d.%d miles" -msgstr "" +msgid "%d meters" +msgstr "%d metri" #, c-format -msgid "in %d.%d miles" -msgstr "" +msgid "in %d meters" +msgstr "pēc %d metriem" #, c-format msgid "%d.%d kilometers" @@ -114,23 +120,11 @@ msgstr "pēc %d.%d kilometr(a,iem" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" -msgstr[0] "%d kilometrs" -msgstr[1] "%d kilometrs" -msgstr[2] "%d kilometrs" +msgstr[0] "%d kilometru" +msgstr[1] "%d kilometrus" +msgstr[2] "%d kilometri" #, c-format msgid "in one kilometer" @@ -139,122 +133,250 @@ msgstr[1] "pēc %d kilometriem" msgstr[2] "pēc %d kilometriem" -msgid "exit" -msgstr "nobraukt nost" - -msgid "into the ramp" -msgstr "uz rampas" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%1$sonto %2$s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%1$sonto %2$s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%1$sonto %2$s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%1$sonto %2$s|neuter form" msgstr "" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "uz uzbrauktuves" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "%suz %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%suz %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%suz %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%suz %s%s%s" + #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" +msgstr "Uz %spagriezties pa %s" + +msgid "When possible, please turn around" +msgstr "Kad iespējams apgriezieties" + +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "pa labi" +#, c-format +msgid "Follow the road for the next %s" +msgstr "Turpiniet pa šo ceļu %s" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "pa kreisi" +msgid "Enter the roundabout soon" +msgstr "Drīzumā uzbraukt uz apļa" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "vienkāršs " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "then enter the roundabout" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Nobraukt no apļa pa %1$s %2$s" + +msgid "soon" +msgstr "drīz" + +msgid "now" +msgstr "tagad" + +msgid "then" +msgstr "pēc tam" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "neznāms " +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "When possible, please turn around" -msgstr "Kad iespējams apgriezieties" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -msgid "Enter the roundabout soon" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Enter the roundabout %s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "then leave the roundabout at the %s" +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" msgstr "" +msgid "at exit" +msgstr "nobrauktuvē" + +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "Leave the roundabout at the %s" +msgid "then continue straight%1$s" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "Follow the road for the next %s" -msgstr "Turpiniet pa šo ceļu nākošos %s" +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" -msgid "soon" -msgstr "drīz" +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Keep right %1$s%2$s%3$s" msgstr "" +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "after %i roads" +msgid "then keep left%1$s" msgstr "" -msgid "now" -msgstr "tagad" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "pa labi" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "pa kreisi" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "nedaudz " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "strauji " #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" -msgstr "kļūda" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Pagriežaties %1$s ceļā pa %2$s" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' #, c-format -msgid "Turn %1$s%2$s %3$s%4$s" -msgstr "Pagrieziens %1$s%2$s %3$s%4$s" +msgid "after %i roads" +msgstr "pēc %i ceļiem" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "" +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "Pagriezties %1$s%2$s %3$s%4$s" + +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "pēc tam apgriezieties" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Apgriezieties %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "pēc tam apgriezieties" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Apgriezieties %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "turpiniet" +msgid "then you have reached your destination." +msgstr "tad Jūs sasniegsiet glamērķi" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Jūs esat sasniedzis galamērķi %s" -msgid "then you have reached your destination." -msgstr "tad Jūs sasniegsiet glamērķi" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Nobrauktuve" #. Android resource: @strings/position_popup_title msgid "Position" @@ -276,37 +398,37 @@ msgstr "Laiks" msgid "Destination Length" -msgstr "" +msgstr "Ceļš līdz galamērķim" msgid "Destination Time" msgstr "Ierašanās laiks" msgid "Roadbook" -msgstr "" +msgstr "Ceļa grāmata" #, c-format msgid "Waypoint %d" -msgstr "" +msgstr "Pieturvieta %d" msgid "Visit before..." -msgstr "" +msgstr "Doties caur..." msgid "Set as position" -msgstr "" +msgstr "Uzstādīt kā atrašanos" msgid "Set as destination" -msgstr "" +msgstr "Iestatīt kā galamēķi" msgid "Add as bookmark" msgstr "Pievienot grāmatzīmi" #, c-format msgid "Point 0x%x 0x%x" -msgstr "" +msgstr "Punkts 0x%x 0x%x" #, c-format msgid "Screen coord : %d %d" -msgstr "" +msgstr "Ekrāna koordinātas: %d %d" #. 020 msgid "Andorra" @@ -322,11 +444,11 @@ #. 028 msgid "Antigua and Barbuda" -msgstr "" +msgstr "Antigva un Barbuda" #. 660 msgid "Anguilla" -msgstr "" +msgstr "Anguila" #. 008 msgid "Albania" @@ -346,7 +468,7 @@ #. 010 msgid "Antarctica" -msgstr "" +msgstr "Antarktīda" #. 032 msgid "Argentina" @@ -354,7 +476,7 @@ #. 016 msgid "American Samoa" -msgstr "" +msgstr "Austrumsamoa" #. 040 msgid "Austria" @@ -374,7 +496,7 @@ #. 031 msgid "Azerbaijan" -msgstr "" +msgstr "Azerbaidžāna" #. 070 msgid "Bosnia and Herzegovina" @@ -394,7 +516,7 @@ #. 854 msgid "Burkina Faso" -msgstr "" +msgstr "Burkina Faso" #. 100 msgid "Bulgaria" @@ -402,27 +524,27 @@ #. 048 msgid "Bahrain" -msgstr "" +msgstr "Bahreina" #. 108 msgid "Burundi" -msgstr "" +msgstr "Burundi" #. 204 msgid "Benin" -msgstr "" +msgstr "Benina" #. 652 msgid "Saint Barthelemy" -msgstr "" +msgstr "Svētā Bartalameja sala" #. 060 msgid "Bermuda" -msgstr "" +msgstr "Bermuda" #. 096 msgid "Brunei Darussalam" -msgstr "" +msgstr "Bruneja Darusalama" #. 068 msgid "Bolivia" @@ -442,15 +564,15 @@ #. 064 msgid "Bhutan" -msgstr "" +msgstr "Butāna" #. 074 msgid "Bouvet Island" -msgstr "" +msgstr "Buvē Sala" #. 072 msgid "Botswana" -msgstr "" +msgstr "Botsvāna" #. 112 msgid "Belarus" @@ -458,7 +580,7 @@ #. 084 msgid "Belize" -msgstr "" +msgstr "Beliza" #. 124 msgid "Canada" @@ -466,7 +588,7 @@ #. 166 msgid "Cocos (Keeling) Islands" -msgstr "" +msgstr "Kokosu (Kīlinga) salas" #. 180 msgid "Congo, Democratic Republic of the" @@ -474,7 +596,7 @@ #. 140 msgid "Central African Republic" -msgstr "" +msgstr "Centrālāfrikas Republika" #. 178 msgid "Congo" @@ -482,15 +604,15 @@ #. 756 msgid "Switzerland" -msgstr "" +msgstr "Šveice" #. 384 msgid "Cote d'Ivoire" -msgstr "" +msgstr "Kotdivuāra (Ziloņkaula krasts)" #. 184 msgid "Cook Islands" -msgstr "" +msgstr "Kuka salas" #. 152 msgid "Chile" @@ -518,15 +640,15 @@ #. 132 msgid "Cape Verde" -msgstr "" +msgstr "Kaboverde" #. 531 msgid "Curacao" -msgstr "" +msgstr "Kurakao" #. 162 msgid "Christmas Island" -msgstr "" +msgstr "Ziemsvētku Sala" #. 196 msgid "Cyprus" @@ -542,7 +664,7 @@ #. 262 msgid "Djibouti" -msgstr "" +msgstr "Džibuti" #. 208 msgid "Denmark" @@ -554,15 +676,15 @@ #. 214 msgid "Dominican Republic" -msgstr "" +msgstr "Dominikānas Republika" #. 012 msgid "Algeria" -msgstr "" +msgstr "Alžīrija" #. 218 msgid "Ecuador" -msgstr "" +msgstr "Ekvadora" #. 233 msgid "Estonia" @@ -574,11 +696,11 @@ #. 732 msgid "Western Sahara" -msgstr "" +msgstr "Rietumu Sahāra" #. 232 msgid "Eritrea" -msgstr "" +msgstr "Eritreja" #. 724 msgid "Spain" @@ -590,23 +712,23 @@ #. 246 msgid "Finland" -msgstr "" +msgstr "Somija" #. 242 msgid "Fiji" -msgstr "" +msgstr "Fidži" #. 238 msgid "Falkland Islands (Malvinas)" -msgstr "" +msgstr "Folklenda (Malvinu) salas" #. 583 msgid "Micronesia, Federated States of" -msgstr "" +msgstr "Mikronēzijas Federatīvās Valstis" #. 234 msgid "Faroe Islands" -msgstr "" +msgstr "Fēru salas" #. 250 msgid "France" @@ -614,7 +736,7 @@ #. 266 msgid "Gabon" -msgstr "" +msgstr "Gabona" #. 826 msgid "United Kingdom" @@ -622,23 +744,23 @@ #. 308 msgid "Grenada" -msgstr "" +msgstr "Grenada" #. 268 msgid "Georgia" -msgstr "" +msgstr "Gruzija" #. 254 msgid "French Guiana" -msgstr "" +msgstr "Franču Gviāna" #. 831 msgid "Guernsey" -msgstr "" +msgstr "Gērnsija" #. 288 msgid "Ghana" -msgstr "" +msgstr "Gana" #. 292 msgid "Gibraltar" @@ -646,7 +768,7 @@ #. 304 msgid "Greenland" -msgstr "" +msgstr "Grenlande" #. 270 msgid "Gambia" @@ -658,11 +780,11 @@ #. 312 msgid "Guadeloupe" -msgstr "" +msgstr "Gvadelupa" #. 226 msgid "Equatorial Guinea" -msgstr "" +msgstr "Ekvatoriālā Gvineja" #. 300 msgid "Greece" @@ -670,35 +792,35 @@ #. 239 msgid "South Georgia and the South Sandwich Islands" -msgstr "" +msgstr "Dienviddžordžija un Dienvidsendviču salas" #. 320 msgid "Guatemala" -msgstr "" +msgstr "Gvatemala" #. 316 msgid "Guam" -msgstr "" +msgstr "Guama" #. 624 msgid "Guinea-Bissau" -msgstr "" +msgstr "Gvineja-Bisau" #. 328 msgid "Guyana" -msgstr "" +msgstr "Gajāna" #. 344 msgid "Hong Kong" -msgstr "" +msgstr "Honkonga" #. 334 msgid "Heard Island and McDonald Islands" -msgstr "" +msgstr "Hērda un Makdonalda salas" #. 340 msgid "Honduras" -msgstr "" +msgstr "Hondurasa" #. 191 msgid "Croatia" @@ -718,7 +840,7 @@ #. 372 msgid "Ireland" -msgstr "" +msgstr "Īrija" #. 376 msgid "Israel" @@ -726,7 +848,7 @@ #. 833 msgid "Isle of Man" -msgstr "" +msgstr "Menas sala" #. 356 msgid "India" @@ -734,7 +856,7 @@ #. 086 msgid "British Indian Ocean Territory" -msgstr "" +msgstr "Indijas Okeāna Britu Teritorija" #. 368 msgid "Iraq" @@ -742,11 +864,11 @@ #. 364 msgid "Iran, Islamic Republic of" -msgstr "" +msgstr "Irāna" #. 352 msgid "Iceland" -msgstr "" +msgstr "Īslande" #. 380 msgid "Italy" @@ -754,7 +876,7 @@ #. 832 msgid "Jersey" -msgstr "" +msgstr "Džersija" #. 388 msgid "Jamaica" @@ -762,7 +884,7 @@ #. 400 msgid "Jordan" -msgstr "" +msgstr "Jordāna" #. 392 msgid "Japan" @@ -774,31 +896,31 @@ #. 417 msgid "Kyrgyzstan" -msgstr "" +msgstr "Kirgizstāna" #. 116 msgid "Cambodia" -msgstr "" +msgstr "Kambodža" #. 296 msgid "Kiribati" -msgstr "" +msgstr "Kiribati" #. 174 msgid "Comoros" -msgstr "" +msgstr "Komoras" #. 659 msgid "Saint Kitts and Nevis" -msgstr "" +msgstr "Sentkitsa un Nevisa" #. 408 msgid "Korea, Democratic People's Republic of" -msgstr "" +msgstr "Ziemeļkoreja" #. 410 msgid "Korea, Republic of" -msgstr "" +msgstr "Dienvidkoreja" #. 414 msgid "Kuwait" @@ -814,15 +936,15 @@ #. 418 msgid "Lao People's Democratic Republic" -msgstr "" +msgstr "Laosa" #. 422 msgid "Lebanon" -msgstr "" +msgstr "Libāna" #. 662 msgid "Saint Lucia" -msgstr "" +msgstr "Sentlūsija" #. 438 msgid "Liechtenstein" @@ -854,7 +976,7 @@ #. 434 msgid "Libya" -msgstr "" +msgstr "Lībija" #. 504 msgid "Morocco" @@ -866,59 +988,59 @@ #. 498 msgid "Moldova, Republic of" -msgstr "" +msgstr "Moldova" #. 499 msgid "Montenegro" -msgstr "" +msgstr "Melnkalne" #. 663 msgid "Saint Martin (French part)" -msgstr "" +msgstr "Senmartēna" #. 450 msgid "Madagascar" -msgstr "" +msgstr "Madagaskara" #. 584 msgid "Marshall Islands" -msgstr "" +msgstr "Māršala salas" #. 807 msgid "Macedonia, the former Yugoslav Republic of" -msgstr "" +msgstr "Maķedonija" #. 466 msgid "Mali" -msgstr "" +msgstr "Mali" #. 104 msgid "Myanmar" -msgstr "" +msgstr "Mjanma" #. 496 msgid "Mongolia" -msgstr "" +msgstr "Mongolija" #. 446 msgid "Macao" -msgstr "" +msgstr "Makao" #. 580 msgid "Northern Mariana Islands" -msgstr "" +msgstr "Ziemeļu Marianas salas" #. 474 msgid "Martinique" -msgstr "" +msgstr "Martinika" #. 478 msgid "Mauritania" -msgstr "" +msgstr "Mauritānija" #. 500 msgid "Montserrat" -msgstr "" +msgstr "Montserata" #. 470 msgid "Malta" @@ -926,15 +1048,15 @@ #. 480 msgid "Mauritius" -msgstr "" +msgstr "Maurīcija" #. 462 msgid "Maldives" -msgstr "" +msgstr "Maldīvu salas" #. 454 msgid "Malawi" -msgstr "" +msgstr "Malāvija" #. 484 msgid "Mexico" @@ -946,7 +1068,7 @@ #. 508 msgid "Mozambique" -msgstr "" +msgstr "Mozambika" #. 516 msgid "Namibia" @@ -954,15 +1076,15 @@ #. 540 msgid "New Caledonia" -msgstr "" +msgstr "Jaunkaledonija" #. 562 msgid "Niger" -msgstr "" +msgstr "Nigēra" #. 574 msgid "Norfolk Island" -msgstr "" +msgstr "Norfolkas sala" #. 566 msgid "Nigeria" @@ -970,7 +1092,7 @@ #. 558 msgid "Nicaragua" -msgstr "" +msgstr "Nikaragva" #. 528 msgid "Netherlands" @@ -986,19 +1108,19 @@ #. 520 msgid "Nauru" -msgstr "" +msgstr "Nauru" #. 570 msgid "Niue" -msgstr "" +msgstr "Niue" #. 554 msgid "New Zealand" -msgstr "" +msgstr "Jaunzēlande" #. 512 msgid "Oman" -msgstr "" +msgstr "Omāna" #. 591 msgid "Panama" @@ -1010,11 +1132,11 @@ #. 258 msgid "French Polynesia" -msgstr "" +msgstr "Franču Polinēzija" #. 598 msgid "Papua New Guinea" -msgstr "" +msgstr "Papua Jaungvineja" #. 608 msgid "Philippines" @@ -1030,19 +1152,19 @@ #. 666 msgid "Saint Pierre and Miquelon" -msgstr "" +msgstr "Senpjēra un Mikelona" #. 612 msgid "Pitcairn" -msgstr "" +msgstr "Pitkērna" #. 630 msgid "Puerto Rico" -msgstr "" +msgstr "Porto Riko" #. 275 msgid "Palestinian Territory, Occupied" -msgstr "" +msgstr "Palestīna" #. 620 msgid "Portugal" @@ -1050,7 +1172,7 @@ #. 585 msgid "Palau" -msgstr "" +msgstr "Palau" #. 600 msgid "Paraguay" @@ -1058,11 +1180,11 @@ #. 634 msgid "Qatar" -msgstr "" +msgstr "Katara" #. 638 msgid "Reunion" -msgstr "" +msgstr "Reinjona" #. 642 msgid "Romania" @@ -1078,11 +1200,11 @@ #. 646 msgid "Rwanda" -msgstr "" +msgstr "Ruanda" #. 682 msgid "Saudi Arabia" -msgstr "" +msgstr "Saūda Arābija" #. 090 msgid "Solomon Islands" @@ -1090,7 +1212,7 @@ #. 690 msgid "Seychelles" -msgstr "" +msgstr "Seišelas" #. 736 msgid "Sudan" @@ -1098,7 +1220,7 @@ #. 752 msgid "Sweden" -msgstr "" +msgstr "Zviedrija" #. 702 msgid "Singapore" @@ -1106,7 +1228,7 @@ #. 654 msgid "Saint Helena" -msgstr "" +msgstr "Svētās Helēnas Sala" #. 705 msgid "Slovenia" @@ -1114,7 +1236,7 @@ #. 744 msgid "Svalbard and Jan Mayen" -msgstr "" +msgstr "Svalbāra un Jana Majena sala" #. 703 msgid "Slovakia" @@ -1122,11 +1244,11 @@ #. 694 msgid "Sierra Leone" -msgstr "" +msgstr "Sjerraleone" #. 674 msgid "San Marino" -msgstr "" +msgstr "Sanmarīno" #. 686 msgid "Senegal" @@ -1138,35 +1260,35 @@ #. 740 msgid "Suriname" -msgstr "" +msgstr "Surinama" #. 728 msgid "South Sudan" -msgstr "" +msgstr "Dienvidsudāna" #. 678 msgid "Sao Tome and Principe" -msgstr "" +msgstr "Santome un Prinsipi" #. 222 msgid "El Salvador" -msgstr "" +msgstr "Salvadora" #. 534 msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Sintmartēna" #. 760 msgid "Syrian Arab Republic" -msgstr "" +msgstr "Sīrija" #. 748 msgid "Swaziland" -msgstr "" +msgstr "Svazilenda" #. 796 msgid "Turks and Caicos Islands" -msgstr "" +msgstr "Tērksas un Kaikosas" #. 148 msgid "Chad" @@ -1174,11 +1296,11 @@ #. 260 msgid "French Southern Territories" -msgstr "" +msgstr "Francijas Dienvidjūru Zemes" #. 768 msgid "Togo" -msgstr "" +msgstr "Togo" #. 764 msgid "Thailand" @@ -1186,19 +1308,19 @@ #. 762 msgid "Tajikistan" -msgstr "" +msgstr "Tadžikistāna" #. 772 msgid "Tokelau" -msgstr "" +msgstr "Tokelau" #. 626 msgid "Timor-Leste" -msgstr "" +msgstr "Austrumtimora" #. 795 msgid "Turkmenistan" -msgstr "" +msgstr "Turkmenistāna" #. 788 msgid "Tunisia" @@ -1206,7 +1328,7 @@ #. 776 msgid "Tonga" -msgstr "" +msgstr "Tonga" #. 792 msgid "Turkey" @@ -1214,19 +1336,19 @@ #. 780 msgid "Trinidad and Tobago" -msgstr "" +msgstr "Trinidada un Tobago" #. 798 msgid "Tuvalu" -msgstr "" +msgstr "Tuvalu" #. 158 msgid "Taiwan, Province of China" -msgstr "" +msgstr "Taivāna" #. 834 msgid "Tanzania, United Republic of" -msgstr "" +msgstr "Tanzānija" #. 804 msgid "Ukraine" @@ -1238,7 +1360,7 @@ #. 581 msgid "United States Minor Outlying Islands" -msgstr "" +msgstr "ASV Mazās Aizjūras Salas" #. 840 msgid "United States" @@ -1250,106 +1372,114 @@ #. 860 msgid "Uzbekistan" -msgstr "" +msgstr "Uzbekistāna" #. 336 msgid "Holy See (Vatican City State)" -msgstr "" +msgstr "Vatikāns" #. 670 msgid "Saint Vincent and the Grenadines" -msgstr "" +msgstr "Sentvinsenta un Grenadīnas" #. 862 msgid "Venezuela" -msgstr "" +msgstr "Venecuēla" #. 092 msgid "Virgin Islands, British" -msgstr "" +msgstr "Virdžīnas Salas, Britu" #. 850 msgid "Virgin Islands, U.S." -msgstr "" +msgstr "Virdžīnu salas, ASV" #. 704 msgid "Viet Nam" -msgstr "" +msgstr "Vjetnama" #. 548 msgid "Vanuatu" -msgstr "" +msgstr "Vanuatu" #. 876 msgid "Wallis and Futuna" -msgstr "" +msgstr "Volisa un Futuna" #. 882 msgid "Samoa" -msgstr "" +msgstr "Samoa" #. 887 msgid "Yemen" -msgstr "" +msgstr "Jemena" #. 175 msgid "Mayotte" -msgstr "" +msgstr "Majota" #. 710 msgid "South Africa" -msgstr "" +msgstr "Dienvidāfrika" #. 894 msgid "Zambia" -msgstr "" +msgstr "Zambija" #. 716 msgid "Zimbabwe" -msgstr "" +msgstr "Zimbabve" msgid "* Unknown, add is_in tags to those cities" -msgstr "" +msgstr "* Nezināms, pievienot is_in tagus šīm pilsētām" msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" -msgstr "" +msgstr "Nav atrasti konfigurācijas faili - navit.xml, navit.xml.local\n" #, c-format msgid "Error parsing config file '%s': %s\n" -msgstr "" +msgstr "Kļūdu analīzes iestatijumu fails '%s': %s\n" #, c-format msgid "Using config file '%s'\n" +msgstr "Izmanto '%s' iestatījumu failu\n" + +#, c-format +msgid "Error: No configuration found in config file '%s'\n" msgstr "" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" msgstr "" +"Iekšējā inicializācija neizdevās, beidzē. Skatiet iepriekšējos kļūdu " +"ziņojumus.\n" msgid "unknown street" -msgstr "" +msgstr "nezināma iela" #. Safe cast: attr_generic_set_attr does not modify its parameter. msgid "Unnamed vehicle" -msgstr "" +msgstr "Nosnosaukts transporta līdzeklis" msgid "Failed to write bookmarks file" -msgstr "" +msgstr "Neizdevās atjaunināt grāmatzīmju failu" #. Strings from navit_shipped.xml msgid "Map Point" -msgstr "" +msgstr "Punkts uz Kartes" msgid "Car" msgstr "Automašīna" @@ -1364,19 +1494,19 @@ msgstr "Valsts" msgid "Postal" -msgstr "" +msgstr "Pasta" msgid "Town" msgstr "Pilsēta" msgid "District" -msgstr "" +msgstr "Rajons" msgid "Street" msgstr "Iela" msgid "Number" -msgstr "" +msgstr "Numurs" msgid "Enter Destination" msgstr "Izvēlies galamērķi" @@ -1388,7 +1518,7 @@ msgstr "Pilsēta" msgid "District/Township" -msgstr "" +msgstr "Rajons/Pārvaldes rajons" msgid "Map" msgstr "Karte" @@ -1401,58 +1531,64 @@ #. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired). msgid "_Display" -msgstr "" +msgstr "_Ekrāns" msgid "_Route" -msgstr "" +msgstr "_Maršruts" msgid "_Former Destinations" -msgstr "" +msgstr "_Nesenais Galamērķis" msgid "_Bookmarks" -msgstr "" +msgstr "_Grāmatzīmes" msgid "_Map" -msgstr "" +msgstr "_Karte" msgid "_Layout" -msgstr "" +msgstr "_Izklājums" msgid "_Projection" -msgstr "" +msgstr "_Projekcija" msgid "_Vehicle" -msgstr "" +msgstr "_Transporta līdzeklis" msgid "Zoom_Out" -msgstr "" +msgstr "_Attālināt" msgid "Decrease zoom level" -msgstr "" +msgstr "Samazināt tuvinājumu" msgid "Zoom_In" -msgstr "" +msgstr "_Pietuviāt" msgid "Increase zoom level" -msgstr "" +msgstr "Palielināt tuvinājumu" msgid "_Recalculate" -msgstr "" +msgstr "_Pārrēķināt" msgid "Redraw map" -msgstr "" +msgstr "Pārzīmēt karti" msgid "_Info" -msgstr "" +msgstr "_Informācija" msgid "Set _destination" -msgstr "" +msgstr "Iestatīt _galamēķi" msgid "Opens address search dialog" -msgstr "" +msgstr "Atvērt adreses meklēšanas dialogu" + +msgid "_POI search" +msgstr "I_P neklēšana" + +msgid "Opens POI search dialog" +msgstr "Atver IP meklēšanas dialogu" msgid "_Stop Navigation" -msgstr "" +msgstr "_Apturēt Navigāciju" msgid "Test" msgstr "Tests" @@ -1464,58 +1600,152 @@ msgstr "Iziet no aplikācijas" msgid "Show position _cursor" -msgstr "" +msgstr "Rādīt atrašanās _kursoru" msgid "_Lock on Road" -msgstr "" +msgstr "_Piesaistīt Ceļam" msgid "_Keep orientation to the North" -msgstr "" +msgstr "_Saglabāt orientāciju uz Ziemeļiem" msgid "Switches map orientation to the north or the vehicle" -msgstr "" +msgstr "Mainīt kartes orientāciju uz ziemeļiem vai transportlīdzekli" msgid "_Roadbook" -msgstr "" +msgstr "_Ceļagrāmata" msgid "Show/hide route description" msgstr "Rādīt/slēpt maršruta aprakstu" msgid "_Autozoom" -msgstr "" +msgstr "_Autotālummiņa" msgid "Enable/disable automatic zoom level changing" -msgstr "" +msgstr "Ieslēgt/izslēgt automātisku tālummaiņu" msgid "_Fullscreen" -msgstr "" +msgstr "_Pilnekrāns" msgid "Data" msgstr "Dati" -msgid "N" +msgid "Pharmacy" +msgstr "Farmācija" + +msgid "Restaurant" +msgstr "Restorāns" + +msgid "Restaurant. Fast food" +msgstr "Restorāns. Bistro" + +msgid "Hotel" +msgstr "Viesnīca" + +msgid "Car parking" +msgstr "Auto novietne" + +msgid "Fuel station" +msgstr "Benzīntanks" + +msgid "Bank" +msgstr "Banka" + +msgid "Hospital" +msgstr "Slimnīca" + +msgid "Cinema" +msgstr "Kino" + +msgid "Train station" +msgstr "Vilcienu stacija" + +msgid "School" +msgstr "Skola" + +msgid "Police" +msgstr "Policija" + +msgid "Justice" +msgstr "Tiesībsargi" + +msgid "Taxi" +msgstr "Taksometrs" + +msgid "Shopping" +msgstr "Iepirkšanās" + +msgid "Distance from screen center (km)" +msgstr "Attālums no ekrāna centra (km)" + +#, c-format +msgid "POI %s. %s" +msgstr "IP %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Iestatīt galamērķi - %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Iestatīt karti %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "Iestatīt nākamo apmeklējumu %ld, %ld \n" + +msgid "POI search" +msgstr "IP meklēšana" + +msgid "Select a category" +msgstr "Izvēlieties kategoriju" + +msgid "Select a distance to look for (km)" msgstr "" +msgid "Select a POI" +msgstr "Izvēlaties IP" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Kategorija" + +msgid "Direction" +msgstr "Norādes" + +msgid "Distance(m)" +msgstr "Attālums (m)" + +msgid "Name" +msgstr "Vārds" + +msgid "Visit Before" +msgstr "Apmeklēt vispirms" + +msgid "N" +msgstr "Z" + msgid "NE" -msgstr "" +msgstr "ZA" msgid "E" -msgstr "" +msgstr "A" msgid "SE" -msgstr "" +msgstr "DA" msgid "S" -msgstr "" +msgstr "D" msgid "SW" -msgstr "" +msgstr "DR" msgid "W" -msgstr "" +msgstr "R" msgid "NW" -msgstr "" +msgstr "ZR" #. Android resource: @strings/no msgid "No" @@ -1532,26 +1762,26 @@ #, c-format msgid "Route %4.0fkm %02d:%02d ETA" -msgstr "" +msgstr "Ceļš %4.0fkm %02d:%02d ETA" msgid "Route 0000km 0+00:00 ETA" -msgstr "" +msgstr "Ceļš 0000km 0+00:00 ETA" msgid "Help" msgstr "Palīdzība" #, c-format msgid "Waypoint %s" -msgstr "" +msgstr "Pieturpunkti %s" msgid "Select waypoint to insert the new one before" -msgstr "" +msgstr "Izvēlaties pieturpunktu lai ievietotu kā jaunu" msgid "View in Browser" -msgstr "" +msgstr "Rādīt pārlūkā" msgid "Item type" -msgstr "" +msgstr "Vienības veids" #. Android resource: @strings/address_search_streets msgid "Streets" @@ -1561,25 +1791,25 @@ msgstr "Mājas numuri" msgid "View Attributes" -msgstr "" +msgstr "Rādīt Atribūtus" msgid "Set as position (and deactivate vehicle)" -msgstr "" +msgstr "Iestatīt kā atrašanos (un atspējot Tr. Līdzekli)" msgid "POIs" -msgstr "" +msgstr "IP" msgid "View on map" msgstr "Apskatīties kartē" msgid "Remove search results from the map" -msgstr "" +msgstr "Noņem meklētos rezultātus no kartes" msgid "Show results on the map" -msgstr "" +msgstr "Rādīt rezultātus uz kartes" msgid "Cut Bookmark" -msgstr "" +msgstr "izgriezt grāmatzīmi" msgid "Copy Bookmark" msgstr "Kopēt grāmatzīmi" @@ -1594,26 +1824,26 @@ msgstr "Dzēst grāmatzīmi" msgid "Delete waypoint" -msgstr "" +msgstr "Dzēst pieturvietu" msgid "Bookmarks" msgstr "Grāmatzīmes" msgid "Bookmarks as waypoints" -msgstr "" +msgstr "Grāmatzīmes kā pieturvietas" msgid "Save waypoints" -msgstr "" +msgstr "Saglabāt pieturvietas" msgid "Replace with waypoints" -msgstr "" +msgstr "Aizvietot ar pieturvietām" msgid "Delete Folder" -msgstr "" +msgstr "Dzēst mapi" #. Adds the Bookmark folders msgid "Add Bookmark folder" -msgstr "" +msgstr "Pievienot grāmatzīmju mapi" #. Pastes the Bookmark msgid "Paste bookmark" @@ -1625,28 +1855,28 @@ #, c-format msgid "Download %s" -msgstr "" +msgstr "Lejuplādē %s" msgid "Map Download" -msgstr "" +msgstr "Karšu lejuplāde" msgid "Active" -msgstr "" +msgstr "Aktīvs" msgid "Download Enabled" -msgstr "" +msgstr "Lejupielāde aktivizēta" msgid "Download completely" -msgstr "" +msgstr "Lejupielāde pabeigta" msgid "Show Satellite Status" msgstr "Rādit satelītu informāciju" msgid " Elevation " -msgstr "" +msgstr " Augstums " msgid " Azimuth " -msgstr "" +msgstr " Azimuts " msgid "Show NMEA Data" msgstr "Rādit NMEA informāciju" @@ -1666,16 +1896,16 @@ #, c-format msgid "Change profile to: %s" -msgstr "" +msgstr "Mainīt profilu uz: %s" msgid "Set as active" -msgstr "" +msgstr "Iestatīt kā aktīvu" msgid "Show Satellite status" msgstr "Rādīt saelītu statusu" msgid "Show NMEA data" -msgstr "" +msgstr "Rādīt NMEA datus" msgid "Add Bookmark" msgstr "Pievienot grāmatzīmi" @@ -1688,20 +1918,20 @@ #. Authors msgid "By" -msgstr "" +msgstr "Autori:" #. Contributors msgid "And all the Navit Team" msgstr "Un visa Navit komanda" msgid "members and contributors." -msgstr "" +msgstr "biedri un atbalstītāji" msgid "Waypoints" -msgstr "" +msgstr "Pieturpunkti" msgid "Enter Coordinates" -msgstr "" +msgstr "Ievadiet Koordinātes" #. #. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) @@ -1709,20 +1939,20 @@ #. #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) -msgid "Longitude Latitude" +msgid "Latitude Longitude" msgstr "" msgid "Enter coordinates, for example:" -msgstr "" +msgstr "Ievadiet koordinātes, piemēram:" msgid "Vehicle" -msgstr "" +msgstr "Transportlīdzeklis" msgid "Rules" msgstr "Noteikumi" msgid "Lock on road" -msgstr "" +msgstr "Piesaistīt ceļam" msgid "Northing" msgstr "Uz ziemeīem" @@ -1731,13 +1961,13 @@ msgstr "Karte seko mašīnai" msgid "Plan with Waypoints" -msgstr "" +msgstr "Plānot ar pieturvietām" msgid "Maps" msgstr "Kartes" msgid "Layout" -msgstr "" +msgstr "Izklājums" msgid "Height Profile" msgstr "Augstuma profils" @@ -1746,13 +1976,13 @@ msgstr "Maršruta apraksts" msgid "Show Locale" -msgstr "" +msgstr "Rādīt Lokāles" msgid "Former Destinations" -msgstr "" +msgstr "Nesenie galamērķi" msgid "- No former destinations available -" -msgstr "" +msgstr "- Nav neseno galamērķu -" msgid "Message" msgstr "Ziņa" @@ -1770,114 +2000,136 @@ msgstr "Mājas numurs" msgid "Next" -msgstr "" +msgstr "Nākamais" msgid "Prev" -msgstr "" +msgstr "Iepriekšējais" msgid "Return to route!" -msgstr "" +msgstr "Atgriezties uz ceļa!" #. warning told msgid "Look out! Camera!" -msgstr "" +msgstr "Uzmanību! Kamera!" #. warning told msgid "Please decrease your speed" -msgstr "" +msgstr "Lūdzu samaziet atrāmu" msgid "partial match" -msgstr "" +msgstr "daļēja sakritība" #. Android resource: @strings/address_search_button msgid "Search" -msgstr "" +msgstr "Meklēt" #. Android resource: @strings/address_search_towns msgid "Towns" -msgstr "" +msgstr "Pilsētas" #. Android resource: @strings/position_popup_drive_here msgid "Route to here" -msgstr "" +msgstr "Ceļš uz šejieni" msgid "Map data (c) OpenStreetMap contributors, ODBL" +msgstr "Karte (c) OpenStreetMap contributors, ODBL" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." msgstr "" msgid "Downloaded maps" +msgstr "Lejuplādētās kartes" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." msgstr "" -msgid "Whole Planet" +msgid "Cancel" +msgstr "Atcelt" + +msgid "filenamePath" msgstr "" -msgid "Africa" +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." msgstr "" +msgid "Whole Planet" +msgstr "Visa Planēta" + +msgid "Africa" +msgstr "Āfrika" + msgid "Canary Islands" -msgstr "" +msgstr "Kanāriju salas" msgid "Asia" -msgstr "" +msgstr "Āzija" msgid "Korea" -msgstr "" +msgstr "Koreja" msgid "Taiwan" -msgstr "" +msgstr "Taivāna" msgid "UAE+Other" -msgstr "" +msgstr "AAE+Citi" msgid "Oceania" -msgstr "" +msgstr "Okeānija" msgid "Tasmania" -msgstr "" +msgstr "Tasmānija" msgid "Victoria" -msgstr "" +msgstr "Viktorija" msgid "New South Wales" -msgstr "" +msgstr "Jaunā Dienvidvelsa" msgid "Europe" -msgstr "" +msgstr "Eiropa" msgid "Western Europe" -msgstr "" +msgstr "Rietumeiropa" msgid "Azores" -msgstr "" +msgstr "Azoru salas" msgid "BeNeLux" -msgstr "" +msgstr "Beneluksa" msgid "Alsace" -msgstr "" +msgstr "Alsace" msgid "Aquitaine" -msgstr "" +msgstr "Akvitāna" msgid "Auvergne" -msgstr "" +msgstr "Auvergne" msgid "Basse-Normandie" -msgstr "" +msgstr "Basse-Normandija" msgid "Bourgogne" -msgstr "" +msgstr "Bourgogne" msgid "Bretagne" -msgstr "" +msgstr "Britānija" msgid "Centre" -msgstr "" +msgstr "Centrs" msgid "Champagne-Ardenne" -msgstr "" +msgstr "Šampanja-Ardene" msgid "Corse" -msgstr "" +msgstr "Korse" msgid "Franche-Comte" msgstr "" @@ -1892,7 +2144,7 @@ msgstr "" msgid "Limousin" -msgstr "" +msgstr "Limuzīns" msgid "Lorraine" msgstr "" @@ -1922,10 +2174,10 @@ msgstr "" msgid "Bayern" -msgstr "" +msgstr "Bajerna" msgid "Mittelfranken" -msgstr "" +msgstr "Mitelfarkena" msgid "Niederbayern" msgstr "" @@ -1940,25 +2192,25 @@ msgstr "" msgid "Schwaben" -msgstr "" +msgstr "Švābene" msgid "Unterfranken" msgstr "" msgid "Berlin" -msgstr "" +msgstr "Berlīne" msgid "Brandenburg" -msgstr "" +msgstr "Brandenburga" msgid "Bremen" -msgstr "" +msgstr "Brēmene" msgid "Hamburg" -msgstr "" +msgstr "Hamburga" msgid "Hessen" -msgstr "" +msgstr "Hessene" msgid "Mecklenburg-Vorpommern" msgstr "" @@ -1988,37 +2240,37 @@ msgstr "" msgid "Mallorca" -msgstr "" +msgstr "Maljorka" msgid "Galicia" msgstr "" msgid "Scandinavia" -msgstr "" +msgstr "Skandināvija" msgid "England" -msgstr "" +msgstr "Anglija" msgid "Buckinghamshire" msgstr "" msgid "Cambridgeshire" -msgstr "" +msgstr "Kembridžšīra" msgid "Cumbria" -msgstr "" +msgstr "Kumbrija" msgid "East yorkshire with hull" msgstr "" msgid "Essex" -msgstr "" +msgstr "Eseksa" msgid "Herefordshire" msgstr "" msgid "Kent" -msgstr "" +msgstr "Kenta" msgid "Lancashire" msgstr "" @@ -2027,19 +2279,19 @@ msgstr "" msgid "Norfolk" -msgstr "" +msgstr "Norfolka" msgid "Nottinghamshire" msgstr "" msgid "Oxfordshire" -msgstr "" +msgstr "Oksfordšīre" msgid "Shropshire" msgstr "" msgid "Somerset" -msgstr "" +msgstr "Somerseta" msgid "South yorkshire" msgstr "" @@ -2054,109 +2306,109 @@ msgstr "" msgid "Scotland" -msgstr "" +msgstr "Skotija" msgid "Wales" -msgstr "" +msgstr "Velsa" msgid "Crete" -msgstr "" +msgstr "Krēta" msgid "North America" -msgstr "" +msgstr "Ziemeļamerika" msgid "Alaska" -msgstr "" +msgstr "Aļaska" msgid "Hawaii" -msgstr "" +msgstr "Havaju salas" msgid "USA" -msgstr "" +msgstr "ASV" msgid " (except Alaska and Hawaii)" -msgstr "" +msgstr " (izņemt Aļasku un Havajas)" msgid "Midwest" msgstr "" msgid "Michigan" -msgstr "" +msgstr "Mičigana" msgid "Ohio" -msgstr "" +msgstr "Ohaio" msgid "Northeast" -msgstr "" +msgstr "Ziemeļaustrumu" msgid "Massachusetts" msgstr "" msgid "Vermont" -msgstr "" +msgstr "Vermonta" msgid "Pacific" -msgstr "" +msgstr "Klusais okeāns" msgid "South" -msgstr "" +msgstr "Dienvidi" msgid "Arkansas" -msgstr "" +msgstr "Arkanzasa" msgid "District of Columbia" msgstr "" msgid "Florida" -msgstr "" +msgstr "Florida" msgid "Louisiana" -msgstr "" +msgstr "Luiziana" msgid "Maryland" msgstr "" msgid "Mississippi" -msgstr "" +msgstr "Misisipi" msgid "Oklahoma" -msgstr "" +msgstr "Oklahoma" msgid "Texas" -msgstr "" +msgstr "Teksasa" msgid "Virginia" -msgstr "" +msgstr "Virdžīnija" msgid "West Virginia" -msgstr "" +msgstr "Rietumvirdžīnija" msgid "West" -msgstr "" +msgstr "Rietumi" msgid "Arizona" -msgstr "" +msgstr "Arizona" msgid "California" -msgstr "" +msgstr "Kalifornija" msgid "Colorado" -msgstr "" +msgstr "Kolorado" msgid "Idaho" -msgstr "" +msgstr "Aidaho" msgid "Montana" -msgstr "" +msgstr "Montana" msgid "New Mexico" msgstr "" msgid "Nevada" -msgstr "" +msgstr "Nevada" msgid "Oregon" -msgstr "" +msgstr "Oregona" msgid "Utah" msgstr "" @@ -2171,52 +2423,147 @@ msgstr "" msgid "downloading" -msgstr "" +msgstr "lejupielādē" #. Android resource: @strings/map_download_ready msgid "ready" -msgstr "" +msgstr "gatavs" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" -msgstr "" +msgstr "Nav brīvas vietas" + +msgid "Error downloading map!" +msgstr "Kļūda lejuplādējot karti!" msgid "Error writing map!" -msgstr "" +msgstr "Kļūda rakstot karti!" msgid "Map download aborted!" -msgstr "" +msgstr "Kartes lejupielāde atcelta!" #. Android resource: @strings/map_download_eta msgid "ETA" -msgstr "" +msgstr "Atlikušais laiks" #. Android resource: @strings/map_download_title msgid "Map download" -msgstr "" +msgstr "Kartes lejuplāde" msgid "Vehicle Position" msgstr "Mašinas pozīcija" +msgid "Main menu" +msgstr "Galvenā izvēlne" + +msgid "" +"Show\n" +"Map" +msgstr "" +"Rādīt\n" +"Karti" + +msgid "Settings" +msgstr "Iestatījumi" + +msgid "Tools" +msgstr "Rīki" + +msgid "Route" +msgstr "Maršruts" + +msgid "About" +msgstr "Par" + +msgid "Quit" +msgstr "Iziet" + +msgid "Actions" +msgstr "Darbības" + +msgid "" +"Former\n" +"Destinations" +msgstr "" +"Nesenie\n" +"Galamērķi" + +msgid "Coordinates" +msgstr "Koordinātas" + +msgid "" +"Stop\n" +"Navigation" +msgstr "" +"Apturēt\n" +"Navigaciju" + +msgid "Display" +msgstr "Ekrāns" + +msgid "Fullscreen" +msgstr "Pilnekrāns" + +msgid "Window Mode" +msgstr "Loga režīms" + +msgid "Description" +msgstr "Apraksts" + +msgid "" +"Drop last \n" +"Waypoint" +msgstr "" +"Atcelt pēdējo \n" +"Pieturvietu" + +msgid "" +"Drop next \n" +"Waypoint" +msgstr "" +"Atcelt nākamo \n" +"Pieturvietu" + +msgid "Satellite Status" +msgstr "Satalītu status" + +msgid "NMEA Data" +msgstr "NMEA Dati" + +msgid "car_shortest" +msgstr "Auto - ātrākais ceļš" + +msgid "car_avoid_tolls" +msgstr "Auto - izvairīties no maksas ceļiem" + +msgid "car_pedantic" +msgstr "" + +msgid "horse" +msgstr "zirgs" + +msgid "Truck" +msgstr "Kravas automašīna" + #. Strings from android/res/values/strings.xml #. Android resource: @strings/yes msgid "Yes" -msgstr "" +msgstr "Jā" #. Android resource: @strings/notification_ticker msgid "Navit started" -msgstr "" +msgstr "Navit sāknēts" #. Android resource: @strings/notification_event_default msgid "Navit running" -msgstr "" +msgstr "Navit darbojas" #. Android resource: @strings/initial_info_box_title msgid "Welcome to Navit" -msgstr "" +msgstr "Sveicināti Navit" #. Android resource: @strings/initial_info_box_message msgid "" @@ -2229,267 +2576,191 @@ "\n" "Enjoy Navit!" msgstr "" +"Paldies ka instalējāt Navit!\n" +"\n" +"Lai sāktu, izvēlaties \"Lejuplādēt kartes\" no izvēlnes, lai lejuplādētu " +"kartes. Piezīme: Karšu izmērs var būt lilāks par (>50MB) - wifi savienojums " +"ir rekomendēts.\n" +"\n" +"Karšu dati: (c) OpenStreetMap contributors\n" +"\n" +"Lai noder!" #. Android resource: @strings/initial_info_box_OK msgid "OK" -msgstr "" +msgstr "Labi" #. Android resource: @strings/initial_info_box_more_info msgid "More info" -msgstr "" +msgstr "Vairāk informācijas" #. Android resource: @strings/optionsmenu_zoom_in msgid "Zoom in" -msgstr "" +msgstr "Tuvināt" #. Android resource: @strings/optionsmenu_zoom_out msgid "Zoom out" -msgstr "" +msgstr "Tālināt" #. Android resource: @strings/optionsmenu_download_maps msgid "Download maps" -msgstr "" +msgstr "Lejuplādēt kartes" #. Android resource: @strings/optionsmenu_toggle_poi msgid "Toggle POIs" -msgstr "" +msgstr "Iespējot IP" #. Android resource: @strings/optionsmenu_exit_navit msgid "Exit Navit" -msgstr "" +msgstr "Iziet no Navit" #. Android resource: @strings/optionsmenu_backup_restore msgid "Backup / Restore" +msgstr "Rezerves kopija/Atjaunot" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" msgstr "" #. Android resource: @strings/map_delete msgid "Delete this map?" -msgstr "" +msgstr "Dzēst šo karti?" #. Android resource: @strings/map_download_downloading msgid "Downloading:" -msgstr "" +msgstr "Lejuplādē:" #. Android resource: @strings/map_download_download_error msgid "Error downloading map." -msgstr "" +msgstr "Kļūda lejuplādējot karti." #. Android resource: @strings/map_download_download_aborted msgid "Map download aborted" -msgstr "" +msgstr "Kartes lejupielāde atcelta" #. Android resource: @strings/map_no_fix msgid "No location. Reopen after location fix." -msgstr "" +msgstr "Nav atrašaās vietas. Atvriet vēlreiz kad noteikta tarašanās vieta" #. Android resource: @strings/maps_for_current_location msgid "Maps containing current location" -msgstr "" +msgstr "Kartes satur pasŗeizējo atrašanās vietu" #. Android resource: @strings/address_search_title msgid "Address search" -msgstr "" +msgstr "Meklēt adresi" #. Android resource: @strings/address_enter_destination msgid "Enter destination" -msgstr "" +msgstr "Ievadiet galamērķi" #. Android resource: @strings/address_partial_match msgid "Match partial address" -msgstr "" +msgstr "Daļēja adreses sakritība" #. Android resource: @strings/address_search_searching msgid "Searching..." -msgstr "" +msgstr "Meklē..." #. Android resource: @strings/address_search_not_found msgid "Address not found" -msgstr "" +msgstr "Adrese nav atrasta" #. Android resource: @strings/address_search_getting_results msgid "Getting search results" -msgstr "" +msgstr "Saņem meklēšanas rezultātus" #. Android resource: @strings/address_search_loading_results msgid "Loading search results" -msgstr "" +msgstr "Ielādē meklēšanas rezultātus" #. Android resource: @strings/address_search_no_results msgid "No results found" -msgstr "" +msgstr "Nekas nav atrasts" #. Android resource: @strings/address_search_no_text_entered msgid "No text entered" -msgstr "" +msgstr "Nav ivadīts teksts" #. Android resource: @strings/address_search_set_destination msgid "Setting destination to:" -msgstr "" +msgstr "Iestata galamērķi:" #. Android resource: @strings/choose_an_action msgid "Choose an action" -msgstr "" +msgstr "Izvēlaties darbību" #. Android resource: @strings/please_insert_an_sd_card msgid "Please insert an SD Card" -msgstr "" +msgstr "Ievietojiet SD karti" #. Android resource: @strings/backing_up msgid "Backing up..." -msgstr "" +msgstr "Rezerves kopēšana..." #. Android resource: @strings/restoring msgid "Restoring..." -msgstr "" +msgstr "Atjauno..." #. Android resource: @strings/failed_to_create_backup_directory msgid "Failed to create backup directory" -msgstr "" +msgstr "Neizdevās izveidot rezerves kopijas mapi" #. Android resource: @strings/backup_failed msgid "Backup failed" -msgstr "" +msgstr "Rezerves kopēšana neizdevās" #. Android resource: @strings/no_backup_found msgid "No backup found" -msgstr "" +msgstr "Rezerves kopija nav atrsta" #. Android resource: @strings/failed_to_restore msgid "Failed to restore" -msgstr "" +msgstr "Neizdevās atjunot" #. Android resource: @strings/backup_successful msgid "Backup successful" -msgstr "" +msgstr "Rezerves kopēšana veiksmīga" #. Android resource: @strings/restore_successful_please_restart_navit msgid "" "Restore Successful\n" "Please restart Navit" msgstr "" +"Atjaunošana veiksmīga\n" +"Lūdzu pārstartējiet Navit" #. Android resource: @strings/backup_not_found msgid "Backup not found" -msgstr "" +msgstr "Rezerves kopija nav atrasta" #. Android resource: @strings/restore_failed msgid "Restore failed" -msgstr "" +msgstr "Atjaunošana neizdevās" #. Android resource: @strings/select_backup msgid "Select backup" -msgstr "" +msgstr "Izvēlaties rezerves kopiju" #. Android resource: @strings/backup msgid "Backup" -msgstr "" +msgstr "Rezerves kopija" #. Android resource: @strings/restore msgid "Restore" -msgstr "" - -msgid "Main menu" -msgstr "Galvenā izvēlne" - -msgid "" -"Show\n" -"Map" -msgstr "" -"Rādīt\n" -"Karti" - -msgid "Settings" -msgstr "Iestatījumi" - -msgid "Tools" -msgstr "Rīki" - -msgid "Route" -msgstr "" - -msgid "About" -msgstr "Par" - -msgid "Quit" -msgstr "Iziet" - -msgid "Actions" -msgstr "Darbības" +msgstr "Atjaunot" -msgid "" -"Former\n" -"Destinations" -msgstr "" - -msgid "Coordinates" +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" msgstr "" +#. Android resource: @strings/TTS_qery_install_data msgid "" -"Stop\n" -"Navigation" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" msgstr "" -msgid "Display" -msgstr "" - -msgid "Fullscreen" -msgstr "" - -msgid "Window Mode" -msgstr "Loga režīms" - -msgid "Description" -msgstr "Apraksts" - -msgid "" -"Drop last \n" -"Waypoint" -msgstr "" - -msgid "" -"Drop next \n" -"Waypoint" -msgstr "" - -msgid "Satellite Status" -msgstr "" - -msgid "NMEA Data" -msgstr "" - -msgid "car_shortest" -msgstr "" - -msgid "car_avoid_tolls" -msgstr "" - -msgid "car_pedantic" -msgstr "" - -msgid "horse" -msgstr "zirgs" - -#. chr: -#. flags used for a truck: (first flag number is 0) -#. 8: SIZE_OR_WEIGHT_LIMIT -#. 21: TRANSPORT_TRUCK -#. speed setup: -#. 'speed' data of the atkaction for a car is -#. reduced about 10 km/h. When the speed was at -#. 10 km/h, I reduced it to 5 km/h. -#. 'route_weight' data has been treated in the same way. -#. If you want to discourage the use of small roads, -#. just reduce this value. -#. size and weight setup: -#. This is an example, you have to use the data of your truck. -#. bobshaffer's standard truck: -#. (1 lb = 453.59237 g, 1 foot = .3048 m) -#. (data has to be in [cm] and [kg] according to 'atkaction.h') -#. vehicle_width= 9 feet, 274 cm -#. vehicle_height= 13.5 feet, 411 cm -#. vehicle_length= 70 feet, 2134 cm -#. vehicle_weight= 80000 lbs, 36287 kg -#. vehicle_axle_weight= 34000 lbs, 15422 kg -#. -msgid "Truck" -msgstr "" +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "pēc tam izbraukt no apļa pa %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/mk.po.in navit-0.5.0+dfsg.1/po/mk.po.in --- navit-0.5.0~svn5900+dfsg.1/po/mk.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/mk.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,27 +1,24 @@ # Macedonian (mk) translations for navit -# Copyright (C) 2006-2014 The Navit Team +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Dejan Angelov https://launchpad.net/~dejanangelov +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Naum Spaseski https://launchpad.net/~naum-spaseski-gmail # Robert Mileski https://launchpad.net/~mileski # goran.cvetkovski https://launchpad.net/~goran-cvetkovski - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-12-10 00:53+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:59+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Macedonian \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 % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: mk\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -77,14 +74,6 @@ msgstr "шести излез" #, c-format -msgid "%d m" -msgstr "%d м" - -#, c-format -msgid "in %d m" -msgstr "после %d м" - -#, c-format msgid "%d feet" msgstr "%d стапки" @@ -93,14 +82,6 @@ msgstr "за %d стапки" #, c-format -msgid "%d meters" -msgstr "%d метри" - -#, c-format -msgid "in %d meters" -msgstr "после %d метра" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d милји" @@ -109,14 +90,6 @@ msgstr "за %d.%d милји" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d километри" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "после %d.%d километри" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -129,6 +102,22 @@ msgstr[1] "за %d милји" #, c-format +msgid "%d meters" +msgstr "%d метри" + +#, c-format +msgid "in %d meters" +msgstr "после %d метра" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d километри" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "после %d.%d километри" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d километри" @@ -140,30 +129,53 @@ msgstr[0] "после %d километри" msgstr[1] "после %d километри" -msgid "exit" -msgstr "излез" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "на рампа" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sна улица %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sна %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sна %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sна %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sна %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -171,33 +183,18 @@ msgid "%sinto the %s" msgstr "%sна %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "на десно" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "на лево" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "лесно " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "силно " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "многу силно " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "непознато " - msgid "When possible, please turn around" msgstr "Кога можете, свртете" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Следете го патот следните %s" + msgid "Enter the roundabout soon" msgstr "Наскоро влегувате во кружен тек" @@ -206,56 +203,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "Потоа излегувате од кружен тек на %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Излегувате од кружен тек на %1$s %2$s" +msgid "soon" +msgstr "наскоро" + +msgid "now" +msgstr "сега" + +msgid "then" +msgstr "тогаш" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Излегувате од кружен тек на %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Следете го патот следните %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "наскоро" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Продолжи по %1$s патот до %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "после %i патишта" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "сега" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "на десно" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "на лево" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "лесно " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "силно " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "тогаш појдете по патот %1$s кон %2$s" +msgstr "" -msgid "error" -msgstr "грешка" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Продолжи по %1$s патот до %2$s" + +#, c-format +msgid "after %i roads" +msgstr "после %i патишта" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Свртете %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "тогаш свртете %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "тогаш свртете" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Свртете %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "тогаш свртете" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Свртете %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "потоа пристигате на одредиштето." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Стигнавте на целта %s" -msgid "then you have reached your destination." -msgstr "потоа пристигате на одредиштето." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Излез" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1315,11 +1432,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1459,6 +1578,12 @@ msgid "Opens address search dialog" msgstr "Го отвара прозорот за барање на адреса" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Запирање на навигација" @@ -1501,6 +1626,100 @@ msgid "Data" msgstr "Податоци" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "С" @@ -1812,12 +2031,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2188,13 +2426,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2359,6 +2600,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2484,3 +2729,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "потоа излегувате од кружен тек на %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ml.po.in navit-0.5.0+dfsg.1/po/ml.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ml.po.in 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ml.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,2757 @@ +# Malayalam translations for navit +# Copyright (C) 2006-2015 The Navit Team +# This file is distributed under the same license as the navit package. +# Many thanks to the contributors of this translation: +# Faju https://launchpad.net/~gotoarunk +# Michael von Glasow https://launchpad.net/~michael-vonglasow +# Sunil K https://launchpad.net/~sunilk + +msgid "" +msgstr "" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 03:59+0000\n" +"Last-Translator: Michael von Glasow \n" +"Language-Team: Malayalam \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" +"Language: ml\n" + +msgid "Running from source directory\n" +msgstr "സോര്‍സ് ഡൈരക്ടറിയില് നിന്നും പ്രവര്ത്തിക്കുന്നു\n" + +#, c-format +msgid "setting '%s' to '%s'\n" +msgstr "'%s'-നെ '%s' ആയി ക്രമീകരിച്ചിരിക്കുന്നു\n" + +#. TRANSLATORS: the following counts refer to streets +msgid "zeroth" +msgstr "പൂജ്യം" + +msgid "first" +msgstr "ഒന്നാമത്തേ" + +msgid "second" +msgstr "രണ്ടാമത്തെ" + +msgid "third" +msgstr "മൂന്നാമത്തെ" + +msgid "fourth" +msgstr "നാലാമത്തെ" + +msgid "fifth" +msgstr "അഞ്ചാമത്തെ" + +msgid "sixth" +msgstr "ആറാമത്തെ" + +#. TRANSLATORS: the following counts refer to roundabout exits +msgid "zeroth exit" +msgstr "പൂജ്യം വഴി" + +msgid "first exit" +msgstr "ഒന്നാമത്തേ വഴി" + +msgid "second exit" +msgstr "രണ്ടാമത്തേ വഴി" + +msgid "third exit" +msgstr "മൂന്നാമത്തെ വഴി" + +msgid "fourth exit" +msgstr "നാലമത്തേ വഴി" + +msgid "fifth exit" +msgstr "അഞ്ചാമത്തെ വഴി" + +msgid "sixth exit" +msgstr "ആറാമത്തെ വഴി" + +#, c-format +msgid "%d feet" +msgstr "%d അടി" + +#, c-format +msgid "in %d feet" +msgstr "%d അടിയില്‍" + +#, c-format +msgid "%d.%d miles" +msgstr "%d.%d മൈല്‍" + +#, c-format +msgid "in %d.%d miles" +msgstr "%d.%d മൈലില്‍" + +#, c-format +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "ഒരു മൈല്‍" +msgstr[1] "%d മൈല്‍" + +#, c-format +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "ഒരു മൈലില്‍" +msgstr[1] "%d മൈലില്‍" + +#, c-format +msgid "%d meters" +msgstr "%d മീറ്റര്‍" + +#, c-format +msgid "in %d meters" +msgstr "%d മീറ്ററില്‍" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d കിലോമീറ്റര്‍" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "%d.%d കിലോമീറ്ററില്‍" + +#, c-format +msgid "one kilometer" +msgid_plural "%d kilometers" +msgstr[0] "ഒരു കിലോമീറ്റര്‍" +msgstr[1] "%d കിലോമീറ്റര്‍" + +#, c-format +msgid "in one kilometer" +msgid_plural "in %d kilometers" +msgstr[0] "ഒരു കിലോമീറ്ററില്‍" +msgstr[1] "%d കിലോമീറ്ററില്‍" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "%sകഴിഞ്ഞു %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%sകഴിഞ്ഞു %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%sകഴിഞ്ഞു %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%sകഴിഞ്ഞു %s%s%s" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "%s-ല്‍ %s -ലേക്ക് തിരിയുക" + +msgid "When possible, please turn around" +msgstr "സാധിക്കുന്നിടത്ത് വച്ച്,തിരിച്ചു പോവുക" + +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "ഈ വഴിയിലുടെ അടുത്ത %s പോവുക" + +msgid "Enter the roundabout soon" +msgstr "റൗണ്ടാനയിലേക്ക് ഉടനെ കയറുക" + +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "" + +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "%1$s-ലൂടെ റൗണ്ടാനയില്‍ നിന്നും പുറത്തു പോവുകാ %2$s" + +msgid "soon" +msgstr "അല്പസമയത്തിനുള്ളില്‍" + +msgid "now" +msgstr "ഇപ്പോള്‍" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|right" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance +#, c-format +msgid "Take exit %1$s %2$s %3$s" +msgstr "" + +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "വലത്തോട്ട്" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "ഇടത്തോട്ട്" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "ചെറുതായ് " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "നന്നായി " + +#, c-format +msgid "then take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "%2$s %1$s-മത്തെ പാത എടുക്കുക" + +#, c-format +msgid "after %i roads" +msgstr "%i വഴികൾക്കു ശേഷം" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination +#, c-format +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "%4$s ലേക്ക് %3$s %2$s %1$s തിരിയുക" + +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "അപ്പോള്‍ നിങ്ങള്‍ ലക്ഷ്യത്തിലെത്തും" + +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "നിങ്ങള്‍ %s ലക്ഷ്യത്തിലെത്തിയിരിക്കുന്നു" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "പുറത്തേക്ക്" + +#. Android resource: @strings/position_popup_title +msgid "Position" +msgstr "സ്ഥാനം" + +msgid "Command" +msgstr "നിര്‍ദ്ദേശം" + +msgid "Length" +msgstr "ദൂരം" + +msgid "km" +msgstr "കിലോമീറ്റെര്‍" + +msgid "m" +msgstr "മീറ്റര്‍" + +msgid "Time" +msgstr "സമയം" + +msgid "Destination Length" +msgstr "ലക്ഷ്യത്തിലേക്കുള്ള ദൂരം" + +msgid "Destination Time" +msgstr "ലക്ഷ്യത്തിലേക്കുള്ള സമയം" + +msgid "Roadbook" +msgstr "ഭൂപട പുസ്തകം" + +#, c-format +msgid "Waypoint %d" +msgstr "%d വഴിത്തിരിവ്" + +msgid "Visit before..." +msgstr "മുന്പെ സന്ദര്‍ശിക്കുക ..." + +msgid "Set as position" +msgstr "സ്ഥാനമായി നിശ്ചയിക്കുക" + +msgid "Set as destination" +msgstr "ഉദ്ദിഷ്ടസ്ഥാനമായി ഉറപ്പിക്കുക" + +msgid "Add as bookmark" +msgstr "ബുക്ക്മാര്‍ക് ചെയ്യുക" + +#, c-format +msgid "Point 0x%x 0x%x" +msgstr "സ്ഥാനം 0x%x 0x%x" + +#, c-format +msgid "Screen coord : %d %d" +msgstr "സ്ക്രീന് സ്ഥാനം %d %d" + +#. 020 +msgid "Andorra" +msgstr "അന്‍ഡോറാ" + +#. 784 +msgid "United Arab Emirates" +msgstr "യുണൈറ്റഡ് അറബ് എമിറേറ്റ്സ്" + +#. 004 +msgid "Afghanistan" +msgstr "അഫ്ഗാനിസ്ഥാന്‍" + +#. 028 +msgid "Antigua and Barbuda" +msgstr "ആന്റിഗ്വാ ബാര്‍ബുഡ" + +#. 660 +msgid "Anguilla" +msgstr "ആന്‍ഗ്വില" + +#. 008 +msgid "Albania" +msgstr "അല്‍ബേനിയ" + +#. 051 +msgid "Armenia" +msgstr "അര്‍മേനിയ" + +#. 530 +msgid "Netherlands Antilles" +msgstr "നെതര്‍ലന്‍ഡ്സ് ആന്റിലസ്" + +#. 024 +msgid "Angola" +msgstr "അംഗോളാ" + +#. 010 +msgid "Antarctica" +msgstr "അന്റാര്‍ട്ടിക്ക" + +#. 032 +msgid "Argentina" +msgstr "അര്‍ജന്റീന" + +#. 016 +msgid "American Samoa" +msgstr "അമേരിക്കന്‍ സമോവ" + +#. 040 +msgid "Austria" +msgstr "ഓസ്ട്രിയാ" + +#. 036 +msgid "Australia" +msgstr "ഓസ്ട്രേലിയ" + +#. 533 +msgid "Aruba" +msgstr "അറൂബ" + +#. 248 +msgid "Aland Islands" +msgstr "ആലന്ഡ് ദീപുകള്‍" + +#. 031 +msgid "Azerbaijan" +msgstr "അസ‌ര്‍ബൈജാന്‍" + +#. 070 +msgid "Bosnia and Herzegovina" +msgstr "ബോസ്നിയ-ഹെര്‍സെഗോവിന" + +#. 052 +msgid "Barbados" +msgstr "ബാര്‍ബഡോസ്" + +#. 050 +msgid "Bangladesh" +msgstr "ബംഗ്ലാദേശ്" + +#. 056 +msgid "Belgium" +msgstr "ബെൽജിയം" + +#. 854 +msgid "Burkina Faso" +msgstr "ബർക്കിനാ ഫാസോ" + +#. 100 +msgid "Bulgaria" +msgstr "ബള്‍ഗേറിയ" + +#. 048 +msgid "Bahrain" +msgstr "ബഹറിന്‍" + +#. 108 +msgid "Burundi" +msgstr "ബറുണ്ടി" + +#. 204 +msgid "Benin" +msgstr "ബെനിന്‍" + +#. 652 +msgid "Saint Barthelemy" +msgstr "സെന്റ് ബര്‍തെലെമി" + +#. 060 +msgid "Bermuda" +msgstr "ബെർമുഡ" + +#. 096 +msgid "Brunei Darussalam" +msgstr "ബ്രൂണെയ് ദാറുസ്സലാം" + +#. 068 +msgid "Bolivia" +msgstr "ബൊളീവിയ" + +#. 535 +msgid "Bonaire, Sint Eustatius and Saba" +msgstr "ബോനെയര്, സെന്റ് എഷ്ടാത്യൂസ് സാബ" + +#. 076 +msgid "Brazil" +msgstr "ബ്രസീൽ" + +#. 044 +msgid "Bahamas" +msgstr "ബഹാമാസ്" + +#. 064 +msgid "Bhutan" +msgstr "ഭൂട്ടാന്‍" + +#. 074 +msgid "Bouvet Island" +msgstr "ബൌവെ ദ്വീപുകള്‍" + +#. 072 +msgid "Botswana" +msgstr "ബോട്സ്വാന" + +#. 112 +msgid "Belarus" +msgstr "ബെലാറസ്" + +#. 084 +msgid "Belize" +msgstr "ബെലീസ്" + +#. 124 +msgid "Canada" +msgstr "കാനഡ" + +#. 166 +msgid "Cocos (Keeling) Islands" +msgstr "കോക്കോസ് (കീലിങ്) ദ്വീപുകള്‍" + +#. 180 +msgid "Congo, Democratic Republic of the" +msgstr "കോങ്കോ ( ഡിമോക്രാറ്റിക്ക് റിപബ്ലിക്ക് )" + +#. 140 +msgid "Central African Republic" +msgstr "മദ്ധ്യ ആഫ്രിക്കൻ റിപ്പബ്ലിക്ക്" + +#. 178 +msgid "Congo" +msgstr "കോംഗോ" + +#. 756 +msgid "Switzerland" +msgstr "സ്വിറ്റ്സ‌ര്‍ലാന്‍ഡ്" + +#. 384 +msgid "Cote d'Ivoire" +msgstr "കോട്ടേ ഡെല്‍‍വോയിര്‍" + +#. 184 +msgid "Cook Islands" +msgstr "കുക്ക് ദ്വീപുകള്‍" + +#. 152 +msgid "Chile" +msgstr "ചിലി" + +#. 120 +msgid "Cameroon" +msgstr "കാമറൂൺ" + +#. 156 +msgid "China" +msgstr "ചൈന" + +#. 170 +msgid "Colombia" +msgstr "കൊളംബിയ‌" + +#. 188 +msgid "Costa Rica" +msgstr "കോസ്റ്റ റീക്ക" + +#. 192 +msgid "Cuba" +msgstr "ക്യൂബ" + +#. 132 +msgid "Cape Verde" +msgstr "കേപ് വെര്‍ഡെ" + +#. 531 +msgid "Curacao" +msgstr "കുറക്കാവൊ" + +#. 162 +msgid "Christmas Island" +msgstr "ക്രിസ്തുമസ് ദ്വീപ്" + +#. 196 +msgid "Cyprus" +msgstr "സൈപ്രസ്സ്" + +#. 203 +msgid "Czech Republic" +msgstr "ചെക്ക്‌ റിപ്പബ്ലിക്ക്‌" + +#. 276 +msgid "Germany" +msgstr "ജര്‍മനി" + +#. 262 +msgid "Djibouti" +msgstr "ജിബൂട്ടി" + +#. 208 +msgid "Denmark" +msgstr "ഡെന്മാർക്ക്" + +#. 212 +msgid "Dominica" +msgstr "‌ഡൊമിനിക്ക" + +#. 214 +msgid "Dominican Republic" +msgstr "‌ഡൊമിനിക്കന്‍ റിപബ്ലിക്ക്" + +#. 012 +msgid "Algeria" +msgstr "അള്‍ജീരിയ" + +#. 218 +msgid "Ecuador" +msgstr "ഇക്വഡോര്‍" + +#. 233 +msgid "Estonia" +msgstr "എസ്റ്റോണിയ" + +#. 818 +msgid "Egypt" +msgstr "ഈജിപ്ത്" + +#. 732 +msgid "Western Sahara" +msgstr "പശ്ചിമ സഹാറ" + +#. 232 +msgid "Eritrea" +msgstr "എറിട്രിയ" + +#. 724 +msgid "Spain" +msgstr "സ്പെയിന്‍" + +#. 231 +msgid "Ethiopia" +msgstr "എത്യോപ്യ" + +#. 246 +msgid "Finland" +msgstr "ഫിന്‍ലാന്റ്" + +#. 242 +msgid "Fiji" +msgstr "ഫിജി" + +#. 238 +msgid "Falkland Islands (Malvinas)" +msgstr "ഫാക്‍ലാന്ഡ് ദ്വീപുകള്‍ (മാള്‍വിനാസ്)" + +#. 583 +msgid "Micronesia, Federated States of" +msgstr "മൈക്രോനേഷ്യ" + +#. 234 +msgid "Faroe Islands" +msgstr "ഫാറോ ദ്വീപുകള്‍" + +#. 250 +msgid "France" +msgstr "ഫ്രാന്‍സ്" + +#. 266 +msgid "Gabon" +msgstr "ഗാബോണ്‍" + +#. 826 +msgid "United Kingdom" +msgstr "യുണൈറ്റഡ് കിങ്ഡം" + +#. 308 +msgid "Grenada" +msgstr "ഗ്രനഡ" + +#. 268 +msgid "Georgia" +msgstr "ജോര്‍ജിയ" + +#. 254 +msgid "French Guiana" +msgstr "ഫ്രഞ്ച് ഗയാന" + +#. 831 +msgid "Guernsey" +msgstr "ജേണ്‍സി" + +#. 288 +msgid "Ghana" +msgstr "ഘാന" + +#. 292 +msgid "Gibraltar" +msgstr "ജിബ്രാള്‍ട്ടര്‍" + +#. 304 +msgid "Greenland" +msgstr "ഗ്രീന്‍ലാന്‍ഡ്" + +#. 270 +msgid "Gambia" +msgstr "ഗാംബിയ" + +#. 324 +msgid "Guinea" +msgstr "ഗിനിയ" + +#. 312 +msgid "Guadeloupe" +msgstr "ഗ്വാഡെലോപ്" + +#. 226 +msgid "Equatorial Guinea" +msgstr "ഇക്വറ്റോറിയല്‍ ഗിനിയ" + +#. 300 +msgid "Greece" +msgstr "ഗ്രീസ്" + +#. 239 +msgid "South Georgia and the South Sandwich Islands" +msgstr "തെക്കന്‍ ജോര്‍ജിയ തെക്കന്‍ സാന്‍ഡ്‌വിച്ച് ദ്വീപുകള്‍" + +#. 320 +msgid "Guatemala" +msgstr "ഗ്വാട്ടിമാല" + +#. 316 +msgid "Guam" +msgstr "ഗുവാം" + +#. 624 +msgid "Guinea-Bissau" +msgstr "ഗിനിയ-ബിസ്സാവു" + +#. 328 +msgid "Guyana" +msgstr "ഗയാന" + +#. 344 +msgid "Hong Kong" +msgstr "ഹോങ്കോങ്" + +#. 334 +msgid "Heard Island and McDonald Islands" +msgstr "ഹെര്‍ഡ് ദ്വീപും മക്ഡൊണാള്‍ഡ് ദ്വീപുകളും" + +#. 340 +msgid "Honduras" +msgstr "ഹോണ്ടുറാസ്" + +#. 191 +msgid "Croatia" +msgstr "ക്രോയേഷ്യ" + +#. 332 +msgid "Haiti" +msgstr "ഹെയ്‌തി" + +#. 348 +msgid "Hungary" +msgstr "ഹംഗറി" + +#. 360 +msgid "Indonesia" +msgstr "ഇന്തോനേഷ്യ" + +#. 372 +msgid "Ireland" +msgstr "അയർലണ്ട്" + +#. 376 +msgid "Israel" +msgstr "ഇസ്രയേൽ" + +#. 833 +msgid "Isle of Man" +msgstr "ഐല്‍ ഓഫ് മാന്‍" + +#. 356 +msgid "India" +msgstr "ഇന്ത്യ" + +#. 086 +msgid "British Indian Ocean Territory" +msgstr "ബ്രിട്ടീഷ് ഇന്ത്യന്‍ ഓഷ്യന്‍ ടെറിട്ടറി" + +#. 368 +msgid "Iraq" +msgstr "ഇറാഖ്‌" + +#. 364 +msgid "Iran, Islamic Republic of" +msgstr "ഇറാന്‍, ഇസ്ലാമിക് റിപ്പബ്ലിക് ഓഫ്" + +#. 352 +msgid "Iceland" +msgstr "ഐസ്‌ലാന്റ്" + +#. 380 +msgid "Italy" +msgstr "ഇറ്റലി‌" + +#. 832 +msgid "Jersey" +msgstr "ജേര്‍സി" + +#. 388 +msgid "Jamaica" +msgstr "ജമൈക്ക" + +#. 400 +msgid "Jordan" +msgstr "ജോര്‍ദാന്‍" + +#. 392 +msgid "Japan" +msgstr "ജപ്പാൻ" + +#. 404 +msgid "Kenya" +msgstr "കെനിയ" + +#. 417 +msgid "Kyrgyzstan" +msgstr "കിർഗ്ഗിസ്ഥാൻ" + +#. 116 +msgid "Cambodia" +msgstr "കമ്പോഡിയ" + +#. 296 +msgid "Kiribati" +msgstr "കിരിബാറ്റി" + +#. 174 +msgid "Comoros" +msgstr "കൊമോറോസ്" + +#. 659 +msgid "Saint Kitts and Nevis" +msgstr "സെയിന്റ് കിറ്റ്സും നെവിസും" + +#. 408 +msgid "Korea, Democratic People's Republic of" +msgstr "ഉത്തര കൊറിയ" + +#. 410 +msgid "Korea, Republic of" +msgstr "ദക്ഷിണ കൊറിയ" + +#. 414 +msgid "Kuwait" +msgstr "കുവൈറ്റ്‌" + +#. 136 +msgid "Cayman Islands" +msgstr "കേയ്മാന്‍ ദ്വീപുകള്‍" + +#. 398 +msgid "Kazakhstan" +msgstr "കസാഖിസ്ഥാന്‍" + +#. 418 +msgid "Lao People's Democratic Republic" +msgstr "ലാവോസ്" + +#. 422 +msgid "Lebanon" +msgstr "ലെബനന്‍" + +#. 662 +msgid "Saint Lucia" +msgstr "സെയ്ന്റ് ലൂസിയ" + +#. 438 +msgid "Liechtenstein" +msgstr "ലീച്ചെന്‍സ്റ്റീന്‍" + +#. 144 +msgid "Sri Lanka" +msgstr "ശ്രീലങ്ക" + +#. 430 +msgid "Liberia" +msgstr "ലൈബീരിയ" + +#. 426 +msgid "Lesotho" +msgstr "ലെസോത്തോ" + +#. 440 +msgid "Lithuania" +msgstr "ലിത്വാനിയ" + +#. 442 +msgid "Luxembourg" +msgstr "ലക്സംബർഗ്" + +#. 428 +msgid "Latvia" +msgstr "ലാത്‌വിയ" + +#. 434 +msgid "Libya" +msgstr "ലിബിയ" + +#. 504 +msgid "Morocco" +msgstr "മൊറോക്കോ" + +#. 492 +msgid "Monaco" +msgstr "മൊണാക്കോ" + +#. 498 +msgid "Moldova, Republic of" +msgstr "മോള്‍ഡോവ" + +#. 499 +msgid "Montenegro" +msgstr "മോണ്ടിനെഗ്രോ" + +#. 663 +msgid "Saint Martin (French part)" +msgstr "സെയിന്റ് മാര്‍ട്ടിന്‍ (ഫ്രഞ്ച് ഭാഗം)" + +#. 450 +msgid "Madagascar" +msgstr "മഡഗാസ്കര്‍" + +#. 584 +msgid "Marshall Islands" +msgstr "മാര്‍ഷല്‍ ദ്വീപുകള്‍" + +#. 807 +msgid "Macedonia, the former Yugoslav Republic of" +msgstr "മാസിഡോണിയ (പഴയ യൂകൊസ്ളാവിയ)" + +#. 466 +msgid "Mali" +msgstr "മാലി" + +#. 104 +msgid "Myanmar" +msgstr "മ്യാന്‍മര്‍" + +#. 496 +msgid "Mongolia" +msgstr "മംഗോളിയ" + +#. 446 +msgid "Macao" +msgstr "മാക്കാവോ" + +#. 580 +msgid "Northern Mariana Islands" +msgstr "വടക്കന്‍ മരിയാന ദ്വീപുകള്‍" + +#. 474 +msgid "Martinique" +msgstr "മാര്ട്ടിനിക്ക്" + +#. 478 +msgid "Mauritania" +msgstr "മൌറിറ്റാനിയ" + +#. 500 +msgid "Montserrat" +msgstr "മോണ്ട്സെറാറ്റ്" + +#. 470 +msgid "Malta" +msgstr "മാള്‍ട്ട" + +#. 480 +msgid "Mauritius" +msgstr "മൗറീഷ്യസ്" + +#. 462 +msgid "Maldives" +msgstr "മാലിദ്വീപ്" + +#. 454 +msgid "Malawi" +msgstr "മലാവി" + +#. 484 +msgid "Mexico" +msgstr "മെക്സിക്കോ" + +#. 458 +msgid "Malaysia" +msgstr "മലേഷ്യ" + +#. 508 +msgid "Mozambique" +msgstr "മൊസാംബിക്ക്" + +#. 516 +msgid "Namibia" +msgstr "നമീബിയ" + +#. 540 +msgid "New Caledonia" +msgstr "ന്യൂ കാലിഡോണിയാ" + +#. 562 +msgid "Niger" +msgstr "നൈജര്‍" + +#. 574 +msgid "Norfolk Island" +msgstr "നോര്‍ഫോക്ക് ദ്വീപു്" + +#. 566 +msgid "Nigeria" +msgstr "നൈജീരിയ" + +#. 558 +msgid "Nicaragua" +msgstr "നിക്കരാഗ്വ" + +#. 528 +msgid "Netherlands" +msgstr "നെതര്‍ലാന്റ്സ് ( ഹോളണ്ട് )" + +#. 578 +msgid "Norway" +msgstr "നോർവെ" + +#. 524 +msgid "Nepal" +msgstr "നേപ്പാള്‍" + +#. 520 +msgid "Nauru" +msgstr "നൌറു" + +#. 570 +msgid "Niue" +msgstr "നിയൂ" + +#. 554 +msgid "New Zealand" +msgstr "ന്യൂസീലൻഡ്" + +#. 512 +msgid "Oman" +msgstr "ഒമാന്‍" + +#. 591 +msgid "Panama" +msgstr "പനാമ" + +#. 604 +msgid "Peru" +msgstr "പെറു" + +#. 258 +msgid "French Polynesia" +msgstr "ഫ്രഞ്ച് പോളിനേഷ്യ" + +#. 598 +msgid "Papua New Guinea" +msgstr "പപുവ ന്യൂ ഗിനിയ" + +#. 608 +msgid "Philippines" +msgstr "ഫിലിപ്പീന്‍സ്" + +#. 586 +msgid "Pakistan" +msgstr "പാക്കിസ്ഥാന്‍" + +#. 616 +msgid "Poland" +msgstr "പോളണ്ട്" + +#. 666 +msgid "Saint Pierre and Miquelon" +msgstr "സെയിന്റ് പിയറി ആന്‍ഡ് മിക്വിലണ്‍" + +#. 612 +msgid "Pitcairn" +msgstr "പിറ്റ്കെയിന്‍" + +#. 630 +msgid "Puerto Rico" +msgstr "പ്യൂര്‍ട്ടോ റികോ" + +#. 275 +msgid "Palestinian Territory, Occupied" +msgstr "പാലസ്തീന്‍" + +#. 620 +msgid "Portugal" +msgstr "പോ‌ര്‍ച്ചുഗല്‍" + +#. 585 +msgid "Palau" +msgstr "പലാവു" + +#. 600 +msgid "Paraguay" +msgstr "പരാഗ്വെ" + +#. 634 +msgid "Qatar" +msgstr "ഖത്ത‌ര്‍‍" + +#. 638 +msgid "Reunion" +msgstr "റീയൂണിയന്‍" + +#. 642 +msgid "Romania" +msgstr "റൊമേനിയ" + +#. 688 +msgid "Serbia" +msgstr "സെർബിയ" + +#. 643 +msgid "Russian Federation" +msgstr "റഷ്യന്‍ ഫെഡറേഷന്‍" + +#. 646 +msgid "Rwanda" +msgstr "റുവാണ്ട" + +#. 682 +msgid "Saudi Arabia" +msgstr "സൗദി അറേബ്യ" + +#. 090 +msgid "Solomon Islands" +msgstr "സോളമൻ ദ്വീപുകൾ" + +#. 690 +msgid "Seychelles" +msgstr "സെയ്‌ഷെൽസ്" + +#. 736 +msgid "Sudan" +msgstr "സുഡാൻ" + +#. 752 +msgid "Sweden" +msgstr "സ്വീഡൻ" + +#. 702 +msgid "Singapore" +msgstr "സിംഗപ്പൂർ" + +#. 654 +msgid "Saint Helena" +msgstr "സെയിന്റ് ഹെലേന" + +#. 705 +msgid "Slovenia" +msgstr "സ്ലോവേനിയ" + +#. 744 +msgid "Svalbard and Jan Mayen" +msgstr "സ്വാല്‍ബാര്‍ഡും ജാന്‍ മായെനും" + +#. 703 +msgid "Slovakia" +msgstr "സ്ലോവാക്ക്യ" + +#. 694 +msgid "Sierra Leone" +msgstr "സിയറ ലിയോണ്‍" + +#. 674 +msgid "San Marino" +msgstr "സാന്‍ മരീനൊ" + +#. 686 +msgid "Senegal" +msgstr "സെനഗല്‍" + +#. 706 +msgid "Somalia" +msgstr "സോമാലിയ" + +#. 740 +msgid "Suriname" +msgstr "സുരിനാം" + +#. 728 +msgid "South Sudan" +msgstr "തെക്കന്‍ സുഡാന്‍" + +#. 678 +msgid "Sao Tome and Principe" +msgstr "സാവോ ടോമും പ്രിന്‍സിപ്പിയും" + +#. 222 +msgid "El Salvador" +msgstr "എൽ സാൽവദോർ" + +#. 534 +msgid "Sint Maarten (Dutch part)" +msgstr "സെന്റ് മാര്‍ട്ടിന്‍ (ഡച്ച്)" + +#. 760 +msgid "Syrian Arab Republic" +msgstr "സിറിയന്‍ അറബ് റിപ്പബ്ലിക്" + +#. 748 +msgid "Swaziland" +msgstr "സ്വാസിലാന്റ്" + +#. 796 +msgid "Turks and Caicos Islands" +msgstr "ടർക്സ്-കൈകോസ് ദ്വീപുകൾ" + +#. 148 +msgid "Chad" +msgstr "ഛാഡ്" + +#. 260 +msgid "French Southern Territories" +msgstr "ഫ്രഞ്ച് തെക്കന്‍ പ്രദേശങ്ങള്‍" + +#. 768 +msgid "Togo" +msgstr "ടോഗോ" + +#. 764 +msgid "Thailand" +msgstr "തായ്‌ലാന്റ്" + +#. 762 +msgid "Tajikistan" +msgstr "താജിക്കിസ്ഥാന്‍" + +#. 772 +msgid "Tokelau" +msgstr "ടോക്‌ലവ്" + +#. 626 +msgid "Timor-Leste" +msgstr "ടിമോര്‍-ലെസ്ത്തേ" + +#. 795 +msgid "Turkmenistan" +msgstr "തുര്‍ക്‌മേനിസ്ഥാന്‍" + +#. 788 +msgid "Tunisia" +msgstr "ടുണീഷ്യ" + +#. 776 +msgid "Tonga" +msgstr "ടോംഗ" + +#. 792 +msgid "Turkey" +msgstr "തുർക്കി" + +#. 780 +msgid "Trinidad and Tobago" +msgstr "ട്രിനിഡാഡും ടൊബാഗോയും" + +#. 798 +msgid "Tuvalu" +msgstr "ടുവാലു" + +#. 158 +msgid "Taiwan, Province of China" +msgstr "തായ്‌വാന്‍" + +#. 834 +msgid "Tanzania, United Republic of" +msgstr "ടാന്‍സാനിയ" + +#. 804 +msgid "Ukraine" +msgstr "യുക്രെയിൻ" + +#. 800 +msgid "Uganda" +msgstr "ഉഗാണ്ട" + +#. 581 +msgid "United States Minor Outlying Islands" +msgstr "യുണൈറ്റഡ് സ്റ്റേറ്റ്സിലെ പുറത്തു് കിടക്കുന്ന ചെറിയ ദ്വീപുകള്‍" + +#. 840 +msgid "United States" +msgstr "ആമേരിക്കന്‍ ഐക്യനാടുകള്‍" + +#. 858 +msgid "Uruguay" +msgstr "ഉറുഗ്വേ" + +#. 860 +msgid "Uzbekistan" +msgstr "ഉസ്ബെക്കിസ്ഥാൻ" + +#. 336 +msgid "Holy See (Vatican City State)" +msgstr "വത്തിക്കാന്‍" + +#. 670 +msgid "Saint Vincent and the Grenadines" +msgstr "സെയിന്റ് വിന്സന്റും ഗ്രനഡൈന്സും" + +#. 862 +msgid "Venezuela" +msgstr "വെനിസ്വേല" + +#. 092 +msgid "Virgin Islands, British" +msgstr "ബ്രിട്ടീഷ് വിര്‍ജിന്‍ ദ്വീപുകള്‍" + +#. 850 +msgid "Virgin Islands, U.S." +msgstr "യു.എസ്. വിര്‍ജിന്‍ ദ്വീപുകള്‍" + +#. 704 +msgid "Viet Nam" +msgstr "വിയറ്റ്നാം" + +#. 548 +msgid "Vanuatu" +msgstr "വാന്വാട്ടു" + +#. 876 +msgid "Wallis and Futuna" +msgstr "വോളിസ് ആന്റ് ഫുട്ടാന" + +#. 882 +msgid "Samoa" +msgstr "സമോവ" + +#. 887 +msgid "Yemen" +msgstr "യെമൻ" + +#. 175 +msgid "Mayotte" +msgstr "മയോട്ടെ" + +#. 710 +msgid "South Africa" +msgstr "ദക്ഷിണാഫ്രിക്ക‌" + +#. 894 +msgid "Zambia" +msgstr "സാംബിയ" + +#. 716 +msgid "Zimbabwe" +msgstr "സിംബാബ്‌വെ" + +msgid "* Unknown, add is_in tags to those cities" +msgstr "* അറിയില്ല, ദയവായി is_in ടാഗ് സിറ്റികളില്‍ ചേര്‍ക്കുക" + +msgid "" +"navit usage:\n" +"navit [options] [configfile]\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" +"\t-h: print this usage info and exit.\n" +"\t-v: print the version and exit.\n" +msgstr "" + +#. We have not found an existing config file from all possibilities +msgid "No config file navit.xml, navit.xml.local found\n" +msgstr "കോണ്‍ഫിഗറേഷന്‍ ഫയലുകള്‍ (navit.xml, navit.xml.local) കാണുന്നില്ല\n" + +#, c-format +msgid "Error parsing config file '%s': %s\n" +msgstr "'%s': %s കോണ്‍ഫിഗറേഷന്‍ ഫയല്‍ വായിക്കത്തില്ല \\n\n" + +#, c-format +msgid "Using config file '%s'\n" +msgstr "%s കോണ്‍ഫിഗറേഷന്‍ ഫയല്‍ ഉപയോഗിക്കുന്നു.\n" + +#, c-format +msgid "Error: No configuration found in config file '%s'\n" +msgstr "'%s' കോണ്‍ഫിഗറേഷന്‍ ഫയലില്‍ വിവരങ്ങള്‍ ലഭ്യമല്ല\n" + +msgid "" +"Internal initialization failed, exiting. Check previous error messages.\n" +msgstr "" +"പിഴവ് സംഭവിച്ചു. നിര്‍ത്തുന്നു. ദയവായ് മുന് സന്ദേശങ്ങള്‍ പരിശോധിക്കുക\n" + +msgid "unknown street" +msgstr "പേരില്ലാത്ത തെരുവ്" + +#. Safe cast: attr_generic_set_attr does not modify its parameter. +msgid "Unnamed vehicle" +msgstr "പേരില്ലാത്ത വാഹനം" + +msgid "Failed to write bookmarks file" +msgstr "ബൂക്ക്മാര്‍ക്ക് എഴുതാന്‍ പറ്റുന്നില്ലാ" + +#. Strings from navit_shipped.xml +msgid "Map Point" +msgstr "ഭൂപടസ്ഥാനം" + +msgid "Car" +msgstr "കാര്‍" + +msgid "Iso2" +msgstr "ഐ എസ് ഓ 2 (ISO2)" + +msgid "Iso3" +msgstr "ഐ. എസ്. ഒ 3" + +msgid "Country" +msgstr "രാജ്യം" + +msgid "Postal" +msgstr "തപാല്‍" + +msgid "Town" +msgstr "പട്ടണം" + +msgid "District" +msgstr "ജില്ല" + +msgid "Street" +msgstr "തെരുവ്" + +msgid "Number" +msgstr "അക്കം" + +msgid "Enter Destination" +msgstr "ഉദ്ദിഷ്ടസ്ഥാനം ചേര്‍ക്കുക" + +msgid "Zip Code" +msgstr "പിന്‍ കോഡ്" + +msgid "City" +msgstr "നഗരം" + +msgid "District/Township" +msgstr "ജില്ല/ടൗണ്ഷിപ്പ്" + +msgid "Map" +msgstr "മാപ്പ്" + +msgid "Bookmark" +msgstr "സൂചിതസ്ഥാനം(bookmark)" + +msgid "Destination" +msgstr "ലക്ഷ്യസ്ഥാനം" + +#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired). +msgid "_Display" +msgstr "പ്രദര്‍ശനം" + +msgid "_Route" +msgstr "വഴി" + +msgid "_Former Destinations" +msgstr "മുന്‍ ഉദ്ദിഷ്ട സ്ഥാനങ്ങള്‍" + +msgid "_Bookmarks" +msgstr "_ഓര്‍മ്മക്കുറിപ്പുകള്‍" + +msgid "_Map" +msgstr "_ഭൂപടം" + +msgid "_Layout" +msgstr "_ക്രമീകരണം" + +msgid "_Projection" +msgstr "_പ്രൊജക്ഷന്‍" + +msgid "_Vehicle" +msgstr "‌‌‌_വാഹനം" + +msgid "Zoom_Out" +msgstr "ചെറുതാക്കുക" + +msgid "Decrease zoom level" +msgstr "ചെറുതാക്കുക" + +msgid "Zoom_In" +msgstr "വലുതാക്കുക" + +msgid "Increase zoom level" +msgstr "വലുതാക്കുക" + +msgid "_Recalculate" +msgstr "_വീണ്ടും കണക്കാക്കുക" + +msgid "Redraw map" +msgstr "മാപ് വീണ്ടും വരക്കുക" + +msgid "_Info" +msgstr "വിവരം (_I)" + +msgid "Set _destination" +msgstr "ലക്ഷ്യസ്ഥാനം ഉറപ്പിക്കുക" + +msgid "Opens address search dialog" +msgstr "മേല്‍വിലാസം തിരയാന്‍ തുറക്കുക" + +msgid "_POI search" +msgstr "_സ്ഥലങ്ങള്‍ തിരയുക" + +msgid "Opens POI search dialog" +msgstr "സ്ഥലങ്ങള്‍ തിരയാനുള്ള താള്‍ തുറക്കുക" + +msgid "_Stop Navigation" +msgstr "_വഴികാട്ടി നിറുത്തുക" + +msgid "Test" +msgstr "പരീക്ഷണം" + +msgid "_Quit" +msgstr "പുറത്ത് കടക്കുക" + +msgid "Quit the application" +msgstr "നാവിറ്റില്‍ നിന്ന് പുറത്ത് പോവുക" + +msgid "Show position _cursor" +msgstr "സ്ഥാനം കാണിക്കുക" + +msgid "_Lock on Road" +msgstr "വീഥിയില്‍ നിറുത്തുക" + +msgid "_Keep orientation to the North" +msgstr "വടക്കോട്ട് ദര്‍ശനം" + +msgid "Switches map orientation to the north or the vehicle" +msgstr "വടക്കോട്ട് ദര്‍ശനം/സഞ്ചാര ദിശ" + +msgid "_Roadbook" +msgstr "_ഭൂപടപുസ്തകം" + +msgid "Show/hide route description" +msgstr "വഴി വിവരണം കാണിക്കുക/മറക്കുക" + +msgid "_Autozoom" +msgstr "ശരിയായ വലിപ്പം തന്നത്താന്‍ കണക്കാക്കുക" + +msgid "Enable/disable automatic zoom level changing" +msgstr "തന്നത്താന്‍ വലിപ്പം അനുവദിക്കുക/നിരസിക്കുക" + +msgid "_Fullscreen" +msgstr "സ്ക്രീന്‍ പൂര്‍ണ്ണ വലിപ്പത്തില്‍ (_F)" + +msgid "Data" +msgstr "വിവരങ്ങള്‍" + +msgid "Pharmacy" +msgstr "മരുന്നു കട" + +msgid "Restaurant" +msgstr "ഹോട്ടല്‍" + +msgid "Restaurant. Fast food" +msgstr "തട്ടുകട" + +msgid "Hotel" +msgstr "ഹോട്ടല്‍" + +msgid "Car parking" +msgstr "കാര്‍ പാര്‍ക്കിങ്ങ്" + +msgid "Fuel station" +msgstr "പെട്രോള്‍ പമ്പ്" + +msgid "Bank" +msgstr "ബാങ്ക്" + +msgid "Hospital" +msgstr "ആശുപത്രി" + +msgid "Cinema" +msgstr "സിനിമ തിയറ്റര്‍" + +msgid "Train station" +msgstr "റയില്‍വെ സ്ടേഷന്‍" + +msgid "School" +msgstr "സ്കൂള്‍" + +msgid "Police" +msgstr "പോലീസ് സ്ടേഷന്‍" + +msgid "Justice" +msgstr "കോടതി" + +msgid "Taxi" +msgstr "ടാക്സി സ്റ്റാന്റ്" + +msgid "Shopping" +msgstr "കച്ചവടസ്ഥാപനം" + +msgid "Distance from screen center (km)" +msgstr "സ്ക്രീനിന്റെ നടുവില്‍ നിന്നുള്ള ദൂരം (കി. മി. )" + +#, c-format +msgid "POI %s. %s" +msgstr "പി. ഓ. ഐ (ഇഷ്ടപെട്ട സ്ഥലങ്ങള്‍) %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "%ld, %ld ലക്ഷ്യസ്ഥാനമാക്കുക \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "%ld, %ld -നെ മാപ്പില്‍ ക്രമീകരിക്കുക \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "%ld, %ld നെ അടുത്ത ലക്ഷ്യമാക്കുക \n" + +msgid "POI search" +msgstr "സ്ഥലങ്ങള്‍ (POI) തിരയുക" + +msgid "Select a category" +msgstr "ഒരു വിഭാഗം തെരഞ്ഞെടുക്കുക" + +msgid "Select a distance to look for (km)" +msgstr "ഇത്ര ദൂരത്തിനുള്ളില്‍ തെരയുക" + +msgid "Select a POI" +msgstr "സ്ഥലങ്ങള്‍ (POI) തിരഞ്ഞെടുക്കുക" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "വിഭാഗങ്ങള്‍" + +msgid "Direction" +msgstr "ദിശ" + +msgid "Distance(m)" +msgstr "ദൂരം" + +msgid "Name" +msgstr "പേരു്" + +msgid "Visit Before" +msgstr "ഉദ്ദിഷ്ടസ്ഥാനത്തിന് മുന്പ് സന്ദര്‍ശിക്കുക" + +msgid "N" +msgstr "വടക്ക് (N)" + +msgid "NE" +msgstr "വടക്കുകിഴക്കു്" + +msgid "E" +msgstr "കിഴക്ക് (E)" + +msgid "SE" +msgstr "തെക്കുകിഴക്കു്" + +msgid "S" +msgstr "തെക്ക് (S)" + +msgid "SW" +msgstr "തെക്കുപടിഞ്ഞാറു്" + +msgid "W" +msgstr "പടിഞ്ഞാറ് (W)" + +msgid "NW" +msgstr "വടക്കുപടിഞ്ഞാറു്" + +#. Android resource: @strings/no +msgid "No" +msgstr "വേണ്ട" + +msgid "2D" +msgstr "ദ്വിമാനം" + +msgid "3D" +msgstr "ത്രിമാനം" + +msgid "OT" +msgstr "ഓ റ്റി" + +#, c-format +msgid "Route %4.0fkm %02d:%02d ETA" +msgstr "%4.0f കി.മി ദൂരം %02d:%02d സമയത്ത് എത്തും" + +msgid "Route 0000km 0+00:00 ETA" +msgstr "0000km ദൂരം 0+00:00 സമയത്ത് എത്തും" + +msgid "Help" +msgstr "സഹായം" + +#, c-format +msgid "Waypoint %s" +msgstr "%s വഴിത്തിരിവ്" + +msgid "Select waypoint to insert the new one before" +msgstr "പുതിയവഴിതിരിവിന്റെ സ്ഥാനം (മുന്പില്‍)" + +msgid "View in Browser" +msgstr "ബ്രൌസരില്‍ കാണുക" + +msgid "Item type" +msgstr "ഇന വിവരം" + +#. Android resource: @strings/address_search_streets +msgid "Streets" +msgstr "തെരുവ്" + +msgid "House numbers" +msgstr "വീട്ട് നമ്പര്‍" + +msgid "View Attributes" +msgstr "ആട്രിബ്യൂട്ടുകള്‍" + +msgid "Set as position (and deactivate vehicle)" +msgstr "സ്ഥാനമായ് ക്രമീകരിക്കുക (വാഹനം നിര്‍ജീവമാക്കുക)" + +msgid "POIs" +msgstr "സ്ഥലങ്ങള്‍ (POIs)" + +msgid "View on map" +msgstr "ഭൂപടത്തില്‍ കാണുക" + +msgid "Remove search results from the map" +msgstr "ഭൂപടത്തില്‍ നിന്നും തെരച്ചില്‍ ഫലങ്ങള്‍ കളയുക" + +msgid "Show results on the map" +msgstr "തിരച്ചില്‍ ഫലങ്ങള്‍ ഭൂപടത്തില്‍ കാണിക്കുക" + +msgid "Cut Bookmark" +msgstr "ബുക്ക്മാര്‍ക്ക് കട്ട് ചെയ്യുക" + +msgid "Copy Bookmark" +msgstr "ബുക്ക്മാര്‍ക്ക് കട്ട് ചെയ്യുക" + +msgid "Rename Bookmark" +msgstr "അടയാളക്കുറിപ്പിന്റെ പേരു് മാറ്റുക" + +msgid "Paste Bookmark" +msgstr "ബുക്ക്മാര്‍ക്ക് പേസ്റ്റ് ചെയ്യുക" + +msgid "Delete Bookmark" +msgstr "അടയാളക്കുറിപ്പ് നീക്കം ചെയ്യുക" + +msgid "Delete waypoint" +msgstr "വഴിത്തിരിവ് കളയുക" + +msgid "Bookmarks" +msgstr "അടയാളക്കുറിപ്പുകള്‍" + +msgid "Bookmarks as waypoints" +msgstr "വഴിതിരിവായി ബുക്ക്മാര്‍ക്ക് ചെയ്യുക" + +msgid "Save waypoints" +msgstr "വഴിതിരിവ് സൂക്ഷിച്ചു വക്കുക" + +msgid "Replace with waypoints" +msgstr "വഴിത്തിരിവുപയോഗിച്ച് മാറ്റുക" + +msgid "Delete Folder" +msgstr "ഫോള്‍ഡര്‍ വെട്ടി മാറ്റുക" + +#. Adds the Bookmark folders +msgid "Add Bookmark folder" +msgstr "ബുക്ക്മാര്‍ക്ക് ഫോള്‍ഡര്‍ ചേര്‍ക്കുക" + +#. Pastes the Bookmark +msgid "Paste bookmark" +msgstr "ബുക്ക്മാര്‍ക്ക് പേസ്റ്റ് ചെയ്യുക" + +#, c-format +msgid "Bookmark %s" +msgstr "അടയാളക്കുറിപ്പുകള്‍ %s" + +#, c-format +msgid "Download %s" +msgstr "%s ഡൗണ്‍ലോഡ് ചെയ്യുക" + +msgid "Map Download" +msgstr "ഭൂപടം ഡൗണ്‍ലോഡ് ചെയ്യുക" + +msgid "Active" +msgstr "സജ്ജമാണ്" + +msgid "Download Enabled" +msgstr "ഡൗണ്‍ലോഡ് അനുവദിച്ചിരിക്കുന്നു" + +msgid "Download completely" +msgstr "മുഴുവന്‍ ഡൗണ്‍ലോഡ് ചെയ്യുക" + +msgid "Show Satellite Status" +msgstr "ഉപഗ്രഹ നിലവാരം കാണിക്കുക" + +msgid " Elevation " +msgstr " ഉയരം " + +msgid " Azimuth " +msgstr " ഉയരം " + +msgid "Show NMEA Data" +msgstr "NMEA വിവരം കാണുക" + +msgid "car" +msgstr "കാര്‍" + +msgid "bike" +msgstr "ബൈക്ക്" + +msgid "pedestrian" +msgstr "കാല്‍നടയാത്രക്കാരന്‍" + +#, c-format +msgid "Current profile: %s" +msgstr "നിലവിലെ പ്രോഫൈല്‍ : %s" + +#, c-format +msgid "Change profile to: %s" +msgstr "%s ലേക്ക് പ്രൊഫൈല്‍ മാറ്റുക" + +msgid "Set as active" +msgstr "സജീവമാക്കുക" + +msgid "Show Satellite status" +msgstr "ഉപഗ്രഹ നിലവാരം കാണിക്കുക" + +msgid "Show NMEA data" +msgstr "എന്‍. എം. ഇ. ഏ (NMEA) വിവരങ്ങള്‍" + +msgid "Add Bookmark" +msgstr "അടയാളക്കുറിപ്പു് ചേര്‍ക്കുക" + +msgid "Rename" +msgstr "പേരു് മാറ്റുക" + +msgid "About Navit" +msgstr "നാവിറ്റിനെ കുറിച്ച്" + +#. Authors +msgid "By" +msgstr "എഴുത്തുകാര്‍" + +#. Contributors +msgid "And all the Navit Team" +msgstr "നാവിറ്റിന്റെ ടീം" + +msgid "members and contributors." +msgstr "അംഗങ്ങള്‍, സഹകാരികാള്‍" + +msgid "Waypoints" +msgstr "വഴിത്തിരിവുകള്‍" + +msgid "Enter Coordinates" +msgstr "കോഓര്‍ഡിനേറ്റുകള്‍ ചേര്‍ക്കുക" + +#. +#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) +#. gui_internal_widget_append(wb, w) +#. +#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) +#. gui_internal_widget_append(w, we) +msgid "Latitude Longitude" +msgstr "അക്ഷാംശം രേകാംശം" + +msgid "Enter coordinates, for example:" +msgstr "കോഓര്‍ഡിനേറ്റുകള്‍ ചേര്‍ക്കുക, ഉദാഹരണം" + +msgid "Vehicle" +msgstr "വാഹനം" + +msgid "Rules" +msgstr "നിയമങ്ങള്‍" + +msgid "Lock on road" +msgstr "പാതയില്‍ തന്നെ നിര്‍ത്തുക" + +msgid "Northing" +msgstr "വടക്കോട്ട് ദര്‍ശനം" + +msgid "Map follows Vehicle" +msgstr "വാഹനത്തോടൊപ്പം സഞ്ചരിക്കുക" + +msgid "Plan with Waypoints" +msgstr "വഴിത്തിരിവുകളോടെ പ്ളാന്‍ ചെയ്യുക" + +msgid "Maps" +msgstr "ഭൂപടങ്ങള്‍" + +msgid "Layout" +msgstr "വിന്യാസം" + +msgid "Height Profile" +msgstr "ഉയര വിവരങ്ങള്‍" + +msgid "Route Description" +msgstr "പാത വിവരണം" + +msgid "Show Locale" +msgstr "ഭാഷ വിവരം" + +msgid "Former Destinations" +msgstr "മുന്‍ ലക്ഷ്യസ്ഥാനങ്ങള്‍" + +msgid "- No former destinations available -" +msgstr "- മുന്‍ ലക്ഷ്യസ്ഥാനങ്ങള്‍ സജ്ജീകരിച്ചിട്ടില്ല -" + +msgid "Message" +msgstr "സന്ദേശം" + +msgid "Back" +msgstr "പിന്നോട്ട്" + +msgid "Back to map" +msgstr "ഭൂപടത്തിലോട്ട് തിരിച്ചു പോവുക" + +msgid "Main Menu" +msgstr "പ്രധാന പട്ടിക" + +msgid "House number" +msgstr "വീട്ടു നംബര്‍" + +msgid "Next" +msgstr "അടുത്തത്" + +msgid "Prev" +msgstr "പുറകോട്ട്" + +msgid "Return to route!" +msgstr "പാതയിലോട്ട് തിരിച്ചു പോവുക" + +#. warning told +msgid "Look out! Camera!" +msgstr "സ്പീഡ് ക്യാമറ : ശ്രദ്ധിക്കുക" + +#. warning told +msgid "Please decrease your speed" +msgstr "ദയവായി വേഗത കുറക്കുക" + +msgid "partial match" +msgstr "ഭാഗിക പൊരുത്തം" + +#. Android resource: @strings/address_search_button +msgid "Search" +msgstr "തിരയുക" + +#. Android resource: @strings/address_search_towns +msgid "Towns" +msgstr "പട്ടണങ്ങള്‍" + +#. Android resource: @strings/position_popup_drive_here +msgid "Route to here" +msgstr "ഇവിടെ വരെയുള്ള വഴി കാട്ടുക" + +msgid "Map data (c) OpenStreetMap contributors, ODBL" +msgstr "ഭൂപട വിവരങ്ങള്‍ (3) ഓപ്പണ്‍സ്റ്റ്രീറ്റ് മാപ്" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + +msgid "Downloaded maps" +msgstr "ഡൗണ്‍ലോഡ് ചെയ്ത ഭൂപടങ്ങള്‍" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + +msgid "Cancel" +msgstr "റദ്ദാക്കുക" + +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + +msgid "Whole Planet" +msgstr "ഭൂലോകം മുഴുവന്‍" + +msgid "Africa" +msgstr "ആഫ്രിക്ക" + +msgid "Canary Islands" +msgstr "കാനറി ഐലന്‍ഡുകള്‍" + +msgid "Asia" +msgstr "ഏഷ്യ" + +msgid "Korea" +msgstr "കൊറിയ" + +msgid "Taiwan" +msgstr "തായ്‌വാൻ" + +msgid "UAE+Other" +msgstr "യൂ ഏ ഈ" + +msgid "Oceania" +msgstr "ഓഷ്യാനിയ" + +msgid "Tasmania" +msgstr "ടാസ്മാനിയ" + +msgid "Victoria" +msgstr "വിക്ടോറിയ" + +msgid "New South Wales" +msgstr "ന്യൂ സൌത്ത് വേയില്‍സ്" + +msgid "Europe" +msgstr "യൂറോപ്പ്" + +msgid "Western Europe" +msgstr "പടിഞ്ഞാറന്‍ യൂറോപ്പ്" + +msgid "Azores" +msgstr "ആസൊറെസ്" + +msgid "BeNeLux" +msgstr "ബെനെലക്സ്" + +msgid "Alsace" +msgstr "അല്‍സേസ്" + +msgid "Aquitaine" +msgstr "അക്വിറ്റയിന്‍" + +msgid "Auvergne" +msgstr "ഓവെര്‍ണെ" + +msgid "Basse-Normandie" +msgstr "ബസ്സെ-നോര്‍മന്ഡി" + +msgid "Bourgogne" +msgstr "ബുര്‍ഗോണേ" + +msgid "Bretagne" +msgstr "ബ്രെട്ടാനെ" + +msgid "Centre" +msgstr "നടുവില്‍" + +msgid "Champagne-Ardenne" +msgstr "ഷാംപേന്-ആര്ഡെന്നെ" + +msgid "Corse" +msgstr "കോര്‍സ്" + +msgid "Franche-Comte" +msgstr "ഫ്രെഞ്ചു - കോമ്തെ" + +msgid "Haute-Normandie" +msgstr "ഹോടെ- നോര്‍മന്ഡി" + +msgid "Ile-de-France" +msgstr "ഐല്‍-ഡെ-ഫ്രന്‍സ്" + +msgid "Languedoc-Roussillon" +msgstr "ലാങ്ങ്യുഡോക് - റോസ്സില്ലന്‍" + +msgid "Limousin" +msgstr "ലിമോസിന്‍" + +msgid "Lorraine" +msgstr "ലൊറൈന്‍" + +msgid "Midi-Pyrenees" +msgstr "മിഡി-പൈറെന്നീസ് - ഫ്രാന്‍സ്" + +msgid "Nord-pas-de-Calais" +msgstr "നോഡ്-പാസ്-ഡെ-കലായിസ്" + +msgid "Pays-de-la-Loire" +msgstr "പെയ്സ്-ഡെ-ല-ലോയ്ര്‍" + +msgid "Picardie" +msgstr "പിക്കാര്‍ഡീ" + +msgid "Poitou-Charentes" +msgstr "പോയിറ്റൂ-ചരന്റിസ്" + +msgid "Provence-Alpes-Cote-d-Azur" +msgstr "കോടെ-ഡെ-അസുര്‍" + +msgid "Rhone-Alpes" +msgstr "റോണെ - ആല്പ്സ് (ലിയോണ്‍) ഫ്രാന്‍സ്" + +msgid "Baden-Wuerttemberg" +msgstr "ബഡേന്‍ - വറ്റന്ബര്‍ഗ് - ഫ്രാന്‍സ്" + +msgid "Bayern" +msgstr "ബയെണ്" + +msgid "Mittelfranken" +msgstr "മിറ്റല്‍ഫ്രാങ്കെന്‍" + +msgid "Niederbayern" +msgstr "നീഡെര്‍ബയേര്‍ണ്" + +msgid "Oberbayern" +msgstr "ഓബെര്ബയെണ്" + +msgid "Oberfranken" +msgstr "ഓബെര്‍ഫ്രാങ്കെന്‍" + +msgid "Oberpfalz" +msgstr "ഓബെര്‍ഫാല്‍സ്" + +msgid "Schwaben" +msgstr "ഷ്വബെന്‍" + +msgid "Unterfranken" +msgstr "അന്റെര്ഫ്രാങ്കെന്‍" + +msgid "Berlin" +msgstr "ബെര്‍ലിന്‍" + +msgid "Brandenburg" +msgstr "ബ്രാണ്ടന്‍ബര്‍ഗ്" + +msgid "Bremen" +msgstr "ബ്രെമെന്‍" + +msgid "Hamburg" +msgstr "ഹാംബര്‍ഗ്" + +msgid "Hessen" +msgstr "ഹെസ്സെന്‍" + +msgid "Mecklenburg-Vorpommern" +msgstr "മെകലന്ബര്‍ഗ്-വൊര്പോമ്മെന്‍" + +msgid "Niedersachsen" +msgstr "നീദെര്‍സാച്സെന്‍" + +msgid "Nordrhein-westfalen" +msgstr "നോര്ദീന്-വെസ്റ്റ്ഫാളന്‍" + +msgid "Rheinland-Pfalz" +msgstr "റീന്‍ലാന്റ് -ഫാല്സ്" + +msgid "Saarland" +msgstr "സാര്‍ലാന്റ്" + +msgid "Sachsen-Anhalt" +msgstr "സാച്സെന്‍-ആന്‍ഹാല്ട്" + +msgid "Sachsen" +msgstr "സാഷേന്‍" + +msgid "Schleswig-Holstein" +msgstr "ഷെല്‍സ്വിഗ്-ഹോള്‍സ്റ്റീന്‍" + +msgid "Thueringen" +msgstr "തുരിങ്ങ്ജെന്‍" + +msgid "Mallorca" +msgstr "മല്ലൊര്‍ക്കാ" + +msgid "Galicia" +msgstr "ഗലീസ്യ" + +msgid "Scandinavia" +msgstr "സ്കാന്ഡിനേവിയ" + +msgid "England" +msgstr "ഇംഗ്ലന്ഡ്" + +msgid "Buckinghamshire" +msgstr "ബക്കിങ്ഹാംഷയര്‍" + +msgid "Cambridgeshire" +msgstr "കേംബ്രിഡ്ജ്ഷയര്‍" + +msgid "Cumbria" +msgstr "കംബ്രീയ - ഇംഗ്ലണ്ട്" + +msgid "East yorkshire with hull" +msgstr "കിഴക്കന്‍ യോര്‍ക്ക്ഷെയര്‍" + +msgid "Essex" +msgstr "എസ്സെക്സ്" + +msgid "Herefordshire" +msgstr "ഹെര്‍ഫോര്‍ഡ്ഷയര്‍" + +msgid "Kent" +msgstr "കെന്റ്" + +msgid "Lancashire" +msgstr "ലാങ്കാഷയര്‍" + +msgid "Leicestershire" +msgstr "ലീസസ്റ്റര്‍ഷയര്‍" + +msgid "Norfolk" +msgstr "നോര്‍ഫോക്ക്" + +msgid "Nottinghamshire" +msgstr "നോട്ടിങ്ഹാംഷയര്‍" + +msgid "Oxfordshire" +msgstr "ഓക്സ്‌ഫോര്‍ഡ്ഷയര്‍" + +msgid "Shropshire" +msgstr "ഷ്രോപ്പ്ഷയര്‍" + +msgid "Somerset" +msgstr "സോമര്‍സെറ്റ്" + +msgid "South yorkshire" +msgstr "തെക്കന്‍ യോര്‍ക്ക്ഷെയര്‍" + +msgid "Suffolk" +msgstr "സഫോക്ക്" + +msgid "Surrey" +msgstr "സറ്‌റേ" + +msgid "Wiltshire" +msgstr "വില്‍റ്റ്ഷെയര്‍" + +msgid "Scotland" +msgstr "സ്കോട്ട്‌ലന്റ്" + +msgid "Wales" +msgstr "വെയില്‍സ്" + +msgid "Crete" +msgstr "ക്രീറ്റ്" + +msgid "North America" +msgstr "വടക്കേ അമേരിക്ക" + +msgid "Alaska" +msgstr "അലാസ്ക" + +msgid "Hawaii" +msgstr "ഹവായ്" + +msgid "USA" +msgstr "അമേരിക്കന്‍ ഐക്യനാടുകള്‍" + +msgid " (except Alaska and Hawaii)" +msgstr " (ആലസ്കായും ഹവായിയും ഒഴുകെ" + +msgid "Midwest" +msgstr "മിഡ്-വെസ്ട് (അമേരിക്ക)" + +msgid "Michigan" +msgstr "മിഷിഗന്‍" + +msgid "Ohio" +msgstr "ഓഹായോ" + +msgid "Northeast" +msgstr "വടക്കുകിഴക്കു്" + +msgid "Massachusetts" +msgstr "മാസ്സാച്ചുസെറ്റ്സ്" + +msgid "Vermont" +msgstr "വെര്‍മോണ്ട്" + +msgid "Pacific" +msgstr "പസഫിക്" + +msgid "South" +msgstr "തെക്ക്" + +msgid "Arkansas" +msgstr "അര്‍ക്കന്‍സാസ്" + +msgid "District of Columbia" +msgstr "ഡിസ്ട്രിക്റ്റ് ഓഫ് കൊളംബിയ" + +msgid "Florida" +msgstr "ഫ്ലോറിഡ" + +msgid "Louisiana" +msgstr "ലൂസിയാനാ" + +msgid "Maryland" +msgstr "മേരീലാന്റ്" + +msgid "Mississippi" +msgstr "മിസ്സിസ്സിപ്പി" + +msgid "Oklahoma" +msgstr "ഓക്ക്ലഹാമ" + +msgid "Texas" +msgstr "ടെക്സാസ്" + +msgid "Virginia" +msgstr "വിര്‍ജീനിയ" + +msgid "West Virginia" +msgstr "വെസ്റ്റ് വിര്‍ജീനിയ" + +msgid "West" +msgstr "പടിഞ്ഞാറ്" + +msgid "Arizona" +msgstr "അരിസോണ" + +msgid "California" +msgstr "കാലിഫോര്‍ണിയ" + +msgid "Colorado" +msgstr "കൊളറാഡോ" + +msgid "Idaho" +msgstr "ഇഡാഹോ" + +msgid "Montana" +msgstr "മൊണ്ടാന" + +msgid "New Mexico" +msgstr "ന്യൂ മെക്സിക്കോ" + +msgid "Nevada" +msgstr "നെവാഡ" + +msgid "Oregon" +msgstr "ഒറിഗണ്‍" + +msgid "Utah" +msgstr "യൂട്ട" + +msgid "Washington State" +msgstr "വാഷിംഗ്ടണ്‍" + +msgid "South+Middle America" +msgstr "തെക്ക്-മധ്യ അമേരിക്ക" + +msgid "Guyane Francaise" +msgstr "ഫ്രെന്ജ് ഗയാന" + +msgid "downloading" +msgstr "ഡൌണ്‍ലോഡ്‌ ചെയ്തുകൊണ്ടിരിക്കുന്നു" + +#. Android resource: @strings/map_download_ready +msgid "ready" +msgstr "തയ്യാര്‍" + +msgid "Media selected for map storage is not available" +msgstr "" + +#. Android resource: @strings/map_download_not_enough_free_space +msgid "Not enough free space" +msgstr "ആവശ്യത്തിന് സ്ഥലമില്ലാ" + +msgid "Error downloading map!" +msgstr "ഭൂപടം ഡൗണ്‍ലോഡ് ചെയ്തപ്പോള്‍ തെറ്റിപ്പോയ് !" + +msgid "Error writing map!" +msgstr "ഫയല്‍ (ഭൂപടം) എഴുതാന്‍ സ്ഥലമില്ലാ" + +msgid "Map download aborted!" +msgstr "ഭൂപടം ഡൗണ്‍ലോഡ് ചെയ്യുന്നത് നിറുത്തിയിരിക്കുന്നു" + +#. Android resource: @strings/map_download_eta +msgid "ETA" +msgstr "ഉദ്ദിഷ്ടസമയം" + +#. Android resource: @strings/map_download_title +msgid "Map download" +msgstr "ഭൂപടം ഡൗണ്‍ലോഡ് ചെയ്യുക" + +msgid "Vehicle Position" +msgstr "വാഹന സ്ഥാനം" + +msgid "Main menu" +msgstr "പ്രധാനവിവരപട്ടിക" + +msgid "" +"Show\n" +"Map" +msgstr "" +"ഭൂപടം\n" +"കാണിക്കുക" + +msgid "Settings" +msgstr "സജ്ജീകരണങ്ങള്‍" + +msgid "Tools" +msgstr "ഉപകരണങ്ങള്‍" + +msgid "Route" +msgstr "മാര്‍ഗം" + +msgid "About" +msgstr "വിവരണം" + +msgid "Quit" +msgstr "പുറത്ത് കടക്കുക" + +msgid "Actions" +msgstr "പ്രവര്‍ത്തികള്‍" + +msgid "" +"Former\n" +"Destinations" +msgstr "" +"മുന്‍\n" +"ലക്ഷ്യങ്ങള്‍" + +msgid "Coordinates" +msgstr "കോര്‍ഡിനേറ്റുകള്‍" + +msgid "" +"Stop\n" +"Navigation" +msgstr "" +"വഴികാട്ടി\n" +"നിര്‍ത്തുക" + +msgid "Display" +msgstr "പ്രദര്‍ശിപ്പിക്കുക" + +msgid "Fullscreen" +msgstr "മുഴുവന്‍ തിരശ്ശീല" + +msgid "Window Mode" +msgstr "വിന്റൊ മോഡ്" + +msgid "Description" +msgstr "വിവരണം" + +msgid "" +"Drop last \n" +"Waypoint" +msgstr "" +"ആവസാന വഴിത്തിരിവു\n" +"എടുത്ത് കളയുക" + +msgid "" +"Drop next \n" +"Waypoint" +msgstr "" +"അടുത്ത വഴിത്തിരിവ്\n" +"എടുത്തു കളയുക" + +msgid "Satellite Status" +msgstr "ഉപഗ്രഹസ്ഥിതി" + +msgid "NMEA Data" +msgstr "എന്.എം.ഇ.എ വിവരങ്ങള്‍" + +msgid "car_shortest" +msgstr "കാര്‍ - കുറഞ്ഞ ദൂരം" + +msgid "car_avoid_tolls" +msgstr "കാര്‍ ടോള്‍-ഒഴിവാക്കുക" + +msgid "car_pedantic" +msgstr "കാര്‍ (പെഡാന്റിക്ക് മോഡ്)" + +msgid "horse" +msgstr "കുതിര" + +msgid "Truck" +msgstr "ലോറി" + +#. Strings from android/res/values/strings.xml +#. Android resource: @strings/yes +msgid "Yes" +msgstr "ശരി" + +#. Android resource: @strings/notification_ticker +msgid "Navit started" +msgstr "നാവിറ്റ് പ്രവര്‍ത്തനം തുടങ്ങിയിരിക്കുന്നു" + +#. Android resource: @strings/notification_event_default +msgid "Navit running" +msgstr "നാവിറ്റ് ഓടിക്കൊണ്ടിരിക്കുന്നു" + +#. Android resource: @strings/initial_info_box_title +msgid "Welcome to Navit" +msgstr "നാവിറ്റിലേക്കു സ്വാഗതം" + +#. Android resource: @strings/initial_info_box_message +msgid "" +"Thank you for installing Navit!\n" +"\n" +"To start, select \"Download maps\" from the menu to download a map. Note: " +"The map filesize may be large (>50MB) - a wifi connection is recommended.\n" +"\n" +"Mapdata: (c) OpenStreetMap contributors\n" +"\n" +"Enjoy Navit!" +msgstr "" +"നാവിറ്റ് ഉപയോഗിക്കുന്നതിനു നന്നീ\n" +"\n" +"തുടങ്ങുവാന്‍ നാവിറ്റ് മെനുവില്‍ നിന്നും ഭൂപടം ഡൗണ്‍ലോഡ് ചെയ്യാനുള്ള ഓപ്ഷ്ന്‍ " +"തെരഞ്ഞെടുക്കുക, (ഫയല്‍ വളരെ വലുതായതിനാല്‍ വൈഫൈ \n" +"\n" +"കണക്ഷന്‍ ഉപയോഗിക്കുന്നത് ഉചിതമായിരിക്കും)\n" +"\n" +"മാപ് (c) ഓപണ്‍സ്റ്റ്രീറ്റ്മാപ് സഹകാരികള്‍.\n" +"\n" +"Enjoy Navit!" + +#. Android resource: @strings/initial_info_box_OK +msgid "OK" +msgstr "ശരി" + +#. Android resource: @strings/initial_info_box_more_info +msgid "More info" +msgstr "കൂടുതല്‍ വിവരങ്ങള്‍" + +#. Android resource: @strings/optionsmenu_zoom_in +msgid "Zoom in" +msgstr "വലുതാക്കുക" + +#. Android resource: @strings/optionsmenu_zoom_out +msgid "Zoom out" +msgstr "ചെറുതാക്കുക" + +#. Android resource: @strings/optionsmenu_download_maps +msgid "Download maps" +msgstr "ഭൂപടങ്ങള്‍ ഡൗണ്‍ലോഡ് ചെയ്യുക" + +#. Android resource: @strings/optionsmenu_toggle_poi +msgid "Toggle POIs" +msgstr "പ്രധാനസ്ഥലങ്ങള്‍ കാണിക്കുക" + +#. Android resource: @strings/optionsmenu_exit_navit +msgid "Exit Navit" +msgstr "നാവിറ്റില്‍ നിന്നും പുറത്ത് പോവുക" + +#. Android resource: @strings/optionsmenu_backup_restore +msgid "Backup / Restore" +msgstr "സൂക്ഷിക്കുക/പുനസ്ഥാപിക്കുക" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + +#. Android resource: @strings/map_delete +msgid "Delete this map?" +msgstr "ഈ ഭൂപടം മായിച്ചു കളയുക" + +#. Android resource: @strings/map_download_downloading +msgid "Downloading:" +msgstr "ഡൗണ്‍ലോഡ് ചെയ്തു കൊണ്ടിരിക്കുന്നു" + +#. Android resource: @strings/map_download_download_error +msgid "Error downloading map." +msgstr "ഭൂപടം ഡൗണ്‍ലോഡ് ചെയ്യുന്നതില്‍ പിഴവ് സംഭവിച്ചു" + +#. Android resource: @strings/map_download_download_aborted +msgid "Map download aborted" +msgstr "ഭൂപടം ഡൗണ്‍ലോഡ് ചെയ്യുന്നത് അവസാനിപ്പിചിരിക്കുന്നു" + +#. Android resource: @strings/map_no_fix +msgid "No location. Reopen after location fix." +msgstr "സ്ഥാനം അറിയില്ല. സ്ഥാനം ഉറപ്പിച ശേഷം വീണ്ടും വരുക" + +#. Android resource: @strings/maps_for_current_location +msgid "Maps containing current location" +msgstr "നിലവിലെ സ്ഥാനമുള്ള ഭൂപടം" + +#. Android resource: @strings/address_search_title +msgid "Address search" +msgstr "മേല്‍വിലാസം തെരയുക" + +#. Android resource: @strings/address_enter_destination +msgid "Enter destination" +msgstr "ഉദ്ദിഷ്ടസ്ഥാനം ചേര്‍ക്കുക" + +#. Android resource: @strings/address_partial_match +msgid "Match partial address" +msgstr "ഭാഗിക ചേര്‍ച്ചയുള്ള മേല്‍വിലാസം" + +#. Android resource: @strings/address_search_searching +msgid "Searching..." +msgstr "തെരഞ്ഞുകൊണ്ടിരിക്കുന്നു..." + +#. Android resource: @strings/address_search_not_found +msgid "Address not found" +msgstr "മേല്‍വിലാസം കണ്ടുപിടിക്കാനായില്ല" + +#. Android resource: @strings/address_search_getting_results +msgid "Getting search results" +msgstr "തെരഞ്ഞുകൊണ്ടിരിക്കുന്നു" + +#. Android resource: @strings/address_search_loading_results +msgid "Loading search results" +msgstr "തെരച്ചിലിന്റെ ഫലങ്ങള്‍ അവതരിപ്പിക്കുന്നു" + +#. Android resource: @strings/address_search_no_results +msgid "No results found" +msgstr "ഫലമൊന്നും ലഭ്യമായില്ല" + +#. Android resource: @strings/address_search_no_text_entered +msgid "No text entered" +msgstr "വാക്കുകള്‍ തന്നിട്ടില്ല" + +#. Android resource: @strings/address_search_set_destination +msgid "Setting destination to:" +msgstr "ഉദ്ദിഷ്ടസ്ഥാനം ഉരപ്പിച്ചിരിക്കുന്നു :" + +#. Android resource: @strings/choose_an_action +msgid "Choose an action" +msgstr "പ്രവര്‍ത്തികള്‍ തെരഞ്ഞെടുക്കുക" + +#. Android resource: @strings/please_insert_an_sd_card +msgid "Please insert an SD Card" +msgstr "ഓരു എസ്. ഡി. (SD) കാര്‍ഡ് ഇടുക" + +#. Android resource: @strings/backing_up +msgid "Backing up..." +msgstr "ബാക്കപ്പ് കോപി എടുത്തുകൊണ്ടിരിക്കുന്നു" + +#. Android resource: @strings/restoring +msgid "Restoring..." +msgstr "പുനസ്ഥാപിച്ചു കൊണ്ടിരിക്കുന്നു" + +#. Android resource: @strings/failed_to_create_backup_directory +msgid "Failed to create backup directory" +msgstr "ബാക്കപ്പ് ഡൈറക്ടറി ഉണ്ടാക്കാന്‍ സാധിക്കുന്നില്ല" + +#. Android resource: @strings/backup_failed +msgid "Backup failed" +msgstr "വിവരങ്ങള്‍ ശരിയായി പകര്‍ത്താന്‍ കഴിഞ്ഞില്ല" + +#. Android resource: @strings/no_backup_found +msgid "No backup found" +msgstr "പകര്‍പ്പൊന്നും കാണ്മാനില്ല" + +#. Android resource: @strings/failed_to_restore +msgid "Failed to restore" +msgstr "പുനസ്ഥാപനം പരാജയപ്പെട്ടു" + +#. Android resource: @strings/backup_successful +msgid "Backup successful" +msgstr "വിവരങ്ങള്‍ സുരക്ഷിതമാക്കിയിരിക്കുന്നു" + +#. Android resource: @strings/restore_successful_please_restart_navit +msgid "" +"Restore Successful\n" +"Please restart Navit" +msgstr "പകര്‍പ്പ് വിജയകരമായി പുനസ്ഥാപിച്ചിരിക്കുന്നു" + +#. Android resource: @strings/backup_not_found +msgid "Backup not found" +msgstr "പകര്‍പ്പൊന്നും കാണ്മാനില്ല" + +#. Android resource: @strings/restore_failed +msgid "Restore failed" +msgstr "പുനസ്ഥാപനം പരാജയപ്പെട്ടിരിക്കുന്നു" + +#. Android resource: @strings/select_backup +msgid "Select backup" +msgstr "പകര്‍പ്പ് തെരഞ്ഞെടുക്കുക" + +#. Android resource: @strings/backup +msgid "Backup" +msgstr "പകര്‍പ്പ് സൂക്ഷിക്കുക" + +#. Android resource: @strings/restore +msgid "Restore" +msgstr "പുനഃസ്ഥാപിക്കുക" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "%1$s- ല്‍ റൗണ്ടാനയില്‍ നിന്നും പുറത്തോട്ട് പോവുക %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/mn.po.in navit-0.5.0+dfsg.1/po/mn.po.in --- navit-0.5.0~svn5900+dfsg.1/po/mn.po.in 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/mn.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,2730 @@ +# Mongolian translations for navit +# Copyright (C) 2006-2015 The Navit Team +# This file is distributed under the same license as the navit package. +# Many thanks to the contributors of this translation: +# Enkhbold https://launchpad.net/~enkhbold-baatar + +msgid "" +msgstr "" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-03-11 06:11+0000\n" +"Last-Translator: Enkhbold \n" +"Language-Team: Mongolian \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" +"Language: mn\n" + +msgid "Running from source directory\n" +msgstr "Эх байгаа сангаас нь ажиллуулах\n" + +#, c-format +msgid "setting '%s' to '%s'\n" +msgstr "Тохиргоо '%s' to '%s'\n" + +#. TRANSLATORS: the following counts refer to streets +msgid "zeroth" +msgstr "зеротх" + +msgid "first" +msgstr "эхний" + +msgid "second" +msgstr "2 дахь" + +msgid "third" +msgstr "3 дахь" + +msgid "fourth" +msgstr "4 дэх" + +msgid "fifth" +msgstr "5 дэх" + +msgid "sixth" +msgstr "6 дэх" + +#. TRANSLATORS: the following counts refer to roundabout exits +msgid "zeroth exit" +msgstr "зеротх гарах" + +msgid "first exit" +msgstr "" + +msgid "second exit" +msgstr "" + +msgid "third exit" +msgstr "" + +msgid "fourth exit" +msgstr "" + +msgid "fifth exit" +msgstr "" + +msgid "sixth exit" +msgstr "" + +#, c-format +msgid "%d feet" +msgstr "" + +#, c-format +msgid "in %d feet" +msgstr "" + +#, c-format +msgid "%d.%d miles" +msgstr "" + +#, c-format +msgid "in %d.%d miles" +msgstr "" + +#, c-format +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" + +#, c-format +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" + +#, c-format +msgid "%d meters" +msgstr "" + +#, c-format +msgid "in %d meters" +msgstr "" + +#, c-format +msgid "%d.%d kilometers" +msgstr "" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "" + +#, c-format +msgid "one kilometer" +msgid_plural "%d kilometers" +msgstr[0] "" +msgstr[1] "" + +#, c-format +msgid "in one kilometer" +msgid_plural "in %d kilometers" +msgstr[0] "" +msgstr[1] "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "" + +msgid "When possible, please turn around" +msgstr "" + +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "" + +msgid "Enter the roundabout soon" +msgstr "" + +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "" + +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "" + +msgid "soon" +msgstr "" + +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|right" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance +#, c-format +msgid "Take exit %1$s %2$s %3$s" +msgstr "" + +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "" + +#, c-format +msgid "then take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" +msgstr "" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination +#, c-format +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "" + +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "" + +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "" + +#. Android resource: @strings/position_popup_title +msgid "Position" +msgstr "" + +msgid "Command" +msgstr "" + +msgid "Length" +msgstr "" + +msgid "km" +msgstr "" + +msgid "m" +msgstr "" + +msgid "Time" +msgstr "" + +msgid "Destination Length" +msgstr "" + +msgid "Destination Time" +msgstr "" + +msgid "Roadbook" +msgstr "" + +#, c-format +msgid "Waypoint %d" +msgstr "" + +msgid "Visit before..." +msgstr "" + +msgid "Set as position" +msgstr "" + +msgid "Set as destination" +msgstr "" + +msgid "Add as bookmark" +msgstr "" + +#, c-format +msgid "Point 0x%x 0x%x" +msgstr "" + +#, c-format +msgid "Screen coord : %d %d" +msgstr "" + +#. 020 +msgid "Andorra" +msgstr "" + +#. 784 +msgid "United Arab Emirates" +msgstr "" + +#. 004 +msgid "Afghanistan" +msgstr "" + +#. 028 +msgid "Antigua and Barbuda" +msgstr "" + +#. 660 +msgid "Anguilla" +msgstr "" + +#. 008 +msgid "Albania" +msgstr "" + +#. 051 +msgid "Armenia" +msgstr "" + +#. 530 +msgid "Netherlands Antilles" +msgstr "" + +#. 024 +msgid "Angola" +msgstr "" + +#. 010 +msgid "Antarctica" +msgstr "" + +#. 032 +msgid "Argentina" +msgstr "" + +#. 016 +msgid "American Samoa" +msgstr "" + +#. 040 +msgid "Austria" +msgstr "" + +#. 036 +msgid "Australia" +msgstr "" + +#. 533 +msgid "Aruba" +msgstr "" + +#. 248 +msgid "Aland Islands" +msgstr "" + +#. 031 +msgid "Azerbaijan" +msgstr "" + +#. 070 +msgid "Bosnia and Herzegovina" +msgstr "" + +#. 052 +msgid "Barbados" +msgstr "" + +#. 050 +msgid "Bangladesh" +msgstr "" + +#. 056 +msgid "Belgium" +msgstr "" + +#. 854 +msgid "Burkina Faso" +msgstr "" + +#. 100 +msgid "Bulgaria" +msgstr "" + +#. 048 +msgid "Bahrain" +msgstr "" + +#. 108 +msgid "Burundi" +msgstr "" + +#. 204 +msgid "Benin" +msgstr "" + +#. 652 +msgid "Saint Barthelemy" +msgstr "" + +#. 060 +msgid "Bermuda" +msgstr "" + +#. 096 +msgid "Brunei Darussalam" +msgstr "" + +#. 068 +msgid "Bolivia" +msgstr "" + +#. 535 +msgid "Bonaire, Sint Eustatius and Saba" +msgstr "" + +#. 076 +msgid "Brazil" +msgstr "" + +#. 044 +msgid "Bahamas" +msgstr "" + +#. 064 +msgid "Bhutan" +msgstr "" + +#. 074 +msgid "Bouvet Island" +msgstr "" + +#. 072 +msgid "Botswana" +msgstr "" + +#. 112 +msgid "Belarus" +msgstr "" + +#. 084 +msgid "Belize" +msgstr "" + +#. 124 +msgid "Canada" +msgstr "" + +#. 166 +msgid "Cocos (Keeling) Islands" +msgstr "" + +#. 180 +msgid "Congo, Democratic Republic of the" +msgstr "" + +#. 140 +msgid "Central African Republic" +msgstr "" + +#. 178 +msgid "Congo" +msgstr "" + +#. 756 +msgid "Switzerland" +msgstr "" + +#. 384 +msgid "Cote d'Ivoire" +msgstr "" + +#. 184 +msgid "Cook Islands" +msgstr "" + +#. 152 +msgid "Chile" +msgstr "" + +#. 120 +msgid "Cameroon" +msgstr "" + +#. 156 +msgid "China" +msgstr "" + +#. 170 +msgid "Colombia" +msgstr "" + +#. 188 +msgid "Costa Rica" +msgstr "" + +#. 192 +msgid "Cuba" +msgstr "" + +#. 132 +msgid "Cape Verde" +msgstr "" + +#. 531 +msgid "Curacao" +msgstr "" + +#. 162 +msgid "Christmas Island" +msgstr "" + +#. 196 +msgid "Cyprus" +msgstr "" + +#. 203 +msgid "Czech Republic" +msgstr "" + +#. 276 +msgid "Germany" +msgstr "" + +#. 262 +msgid "Djibouti" +msgstr "" + +#. 208 +msgid "Denmark" +msgstr "" + +#. 212 +msgid "Dominica" +msgstr "" + +#. 214 +msgid "Dominican Republic" +msgstr "" + +#. 012 +msgid "Algeria" +msgstr "" + +#. 218 +msgid "Ecuador" +msgstr "" + +#. 233 +msgid "Estonia" +msgstr "" + +#. 818 +msgid "Egypt" +msgstr "" + +#. 732 +msgid "Western Sahara" +msgstr "" + +#. 232 +msgid "Eritrea" +msgstr "" + +#. 724 +msgid "Spain" +msgstr "" + +#. 231 +msgid "Ethiopia" +msgstr "" + +#. 246 +msgid "Finland" +msgstr "" + +#. 242 +msgid "Fiji" +msgstr "" + +#. 238 +msgid "Falkland Islands (Malvinas)" +msgstr "" + +#. 583 +msgid "Micronesia, Federated States of" +msgstr "" + +#. 234 +msgid "Faroe Islands" +msgstr "" + +#. 250 +msgid "France" +msgstr "" + +#. 266 +msgid "Gabon" +msgstr "" + +#. 826 +msgid "United Kingdom" +msgstr "" + +#. 308 +msgid "Grenada" +msgstr "" + +#. 268 +msgid "Georgia" +msgstr "" + +#. 254 +msgid "French Guiana" +msgstr "" + +#. 831 +msgid "Guernsey" +msgstr "" + +#. 288 +msgid "Ghana" +msgstr "" + +#. 292 +msgid "Gibraltar" +msgstr "" + +#. 304 +msgid "Greenland" +msgstr "" + +#. 270 +msgid "Gambia" +msgstr "" + +#. 324 +msgid "Guinea" +msgstr "" + +#. 312 +msgid "Guadeloupe" +msgstr "" + +#. 226 +msgid "Equatorial Guinea" +msgstr "" + +#. 300 +msgid "Greece" +msgstr "" + +#. 239 +msgid "South Georgia and the South Sandwich Islands" +msgstr "" + +#. 320 +msgid "Guatemala" +msgstr "" + +#. 316 +msgid "Guam" +msgstr "" + +#. 624 +msgid "Guinea-Bissau" +msgstr "" + +#. 328 +msgid "Guyana" +msgstr "" + +#. 344 +msgid "Hong Kong" +msgstr "" + +#. 334 +msgid "Heard Island and McDonald Islands" +msgstr "" + +#. 340 +msgid "Honduras" +msgstr "" + +#. 191 +msgid "Croatia" +msgstr "" + +#. 332 +msgid "Haiti" +msgstr "" + +#. 348 +msgid "Hungary" +msgstr "" + +#. 360 +msgid "Indonesia" +msgstr "" + +#. 372 +msgid "Ireland" +msgstr "" + +#. 376 +msgid "Israel" +msgstr "" + +#. 833 +msgid "Isle of Man" +msgstr "" + +#. 356 +msgid "India" +msgstr "" + +#. 086 +msgid "British Indian Ocean Territory" +msgstr "" + +#. 368 +msgid "Iraq" +msgstr "" + +#. 364 +msgid "Iran, Islamic Republic of" +msgstr "" + +#. 352 +msgid "Iceland" +msgstr "" + +#. 380 +msgid "Italy" +msgstr "" + +#. 832 +msgid "Jersey" +msgstr "" + +#. 388 +msgid "Jamaica" +msgstr "" + +#. 400 +msgid "Jordan" +msgstr "" + +#. 392 +msgid "Japan" +msgstr "" + +#. 404 +msgid "Kenya" +msgstr "" + +#. 417 +msgid "Kyrgyzstan" +msgstr "" + +#. 116 +msgid "Cambodia" +msgstr "" + +#. 296 +msgid "Kiribati" +msgstr "" + +#. 174 +msgid "Comoros" +msgstr "" + +#. 659 +msgid "Saint Kitts and Nevis" +msgstr "" + +#. 408 +msgid "Korea, Democratic People's Republic of" +msgstr "" + +#. 410 +msgid "Korea, Republic of" +msgstr "" + +#. 414 +msgid "Kuwait" +msgstr "" + +#. 136 +msgid "Cayman Islands" +msgstr "" + +#. 398 +msgid "Kazakhstan" +msgstr "" + +#. 418 +msgid "Lao People's Democratic Republic" +msgstr "" + +#. 422 +msgid "Lebanon" +msgstr "" + +#. 662 +msgid "Saint Lucia" +msgstr "" + +#. 438 +msgid "Liechtenstein" +msgstr "" + +#. 144 +msgid "Sri Lanka" +msgstr "" + +#. 430 +msgid "Liberia" +msgstr "" + +#. 426 +msgid "Lesotho" +msgstr "" + +#. 440 +msgid "Lithuania" +msgstr "" + +#. 442 +msgid "Luxembourg" +msgstr "" + +#. 428 +msgid "Latvia" +msgstr "" + +#. 434 +msgid "Libya" +msgstr "" + +#. 504 +msgid "Morocco" +msgstr "" + +#. 492 +msgid "Monaco" +msgstr "" + +#. 498 +msgid "Moldova, Republic of" +msgstr "" + +#. 499 +msgid "Montenegro" +msgstr "" + +#. 663 +msgid "Saint Martin (French part)" +msgstr "" + +#. 450 +msgid "Madagascar" +msgstr "" + +#. 584 +msgid "Marshall Islands" +msgstr "" + +#. 807 +msgid "Macedonia, the former Yugoslav Republic of" +msgstr "" + +#. 466 +msgid "Mali" +msgstr "" + +#. 104 +msgid "Myanmar" +msgstr "" + +#. 496 +msgid "Mongolia" +msgstr "" + +#. 446 +msgid "Macao" +msgstr "" + +#. 580 +msgid "Northern Mariana Islands" +msgstr "" + +#. 474 +msgid "Martinique" +msgstr "" + +#. 478 +msgid "Mauritania" +msgstr "" + +#. 500 +msgid "Montserrat" +msgstr "" + +#. 470 +msgid "Malta" +msgstr "" + +#. 480 +msgid "Mauritius" +msgstr "" + +#. 462 +msgid "Maldives" +msgstr "" + +#. 454 +msgid "Malawi" +msgstr "" + +#. 484 +msgid "Mexico" +msgstr "" + +#. 458 +msgid "Malaysia" +msgstr "" + +#. 508 +msgid "Mozambique" +msgstr "" + +#. 516 +msgid "Namibia" +msgstr "" + +#. 540 +msgid "New Caledonia" +msgstr "" + +#. 562 +msgid "Niger" +msgstr "" + +#. 574 +msgid "Norfolk Island" +msgstr "" + +#. 566 +msgid "Nigeria" +msgstr "" + +#. 558 +msgid "Nicaragua" +msgstr "" + +#. 528 +msgid "Netherlands" +msgstr "" + +#. 578 +msgid "Norway" +msgstr "" + +#. 524 +msgid "Nepal" +msgstr "" + +#. 520 +msgid "Nauru" +msgstr "" + +#. 570 +msgid "Niue" +msgstr "" + +#. 554 +msgid "New Zealand" +msgstr "" + +#. 512 +msgid "Oman" +msgstr "" + +#. 591 +msgid "Panama" +msgstr "" + +#. 604 +msgid "Peru" +msgstr "" + +#. 258 +msgid "French Polynesia" +msgstr "" + +#. 598 +msgid "Papua New Guinea" +msgstr "" + +#. 608 +msgid "Philippines" +msgstr "" + +#. 586 +msgid "Pakistan" +msgstr "" + +#. 616 +msgid "Poland" +msgstr "" + +#. 666 +msgid "Saint Pierre and Miquelon" +msgstr "" + +#. 612 +msgid "Pitcairn" +msgstr "" + +#. 630 +msgid "Puerto Rico" +msgstr "" + +#. 275 +msgid "Palestinian Territory, Occupied" +msgstr "" + +#. 620 +msgid "Portugal" +msgstr "" + +#. 585 +msgid "Palau" +msgstr "" + +#. 600 +msgid "Paraguay" +msgstr "" + +#. 634 +msgid "Qatar" +msgstr "" + +#. 638 +msgid "Reunion" +msgstr "" + +#. 642 +msgid "Romania" +msgstr "" + +#. 688 +msgid "Serbia" +msgstr "" + +#. 643 +msgid "Russian Federation" +msgstr "" + +#. 646 +msgid "Rwanda" +msgstr "" + +#. 682 +msgid "Saudi Arabia" +msgstr "" + +#. 090 +msgid "Solomon Islands" +msgstr "" + +#. 690 +msgid "Seychelles" +msgstr "" + +#. 736 +msgid "Sudan" +msgstr "" + +#. 752 +msgid "Sweden" +msgstr "" + +#. 702 +msgid "Singapore" +msgstr "" + +#. 654 +msgid "Saint Helena" +msgstr "" + +#. 705 +msgid "Slovenia" +msgstr "" + +#. 744 +msgid "Svalbard and Jan Mayen" +msgstr "" + +#. 703 +msgid "Slovakia" +msgstr "" + +#. 694 +msgid "Sierra Leone" +msgstr "" + +#. 674 +msgid "San Marino" +msgstr "" + +#. 686 +msgid "Senegal" +msgstr "" + +#. 706 +msgid "Somalia" +msgstr "" + +#. 740 +msgid "Suriname" +msgstr "" + +#. 728 +msgid "South Sudan" +msgstr "" + +#. 678 +msgid "Sao Tome and Principe" +msgstr "" + +#. 222 +msgid "El Salvador" +msgstr "" + +#. 534 +msgid "Sint Maarten (Dutch part)" +msgstr "" + +#. 760 +msgid "Syrian Arab Republic" +msgstr "" + +#. 748 +msgid "Swaziland" +msgstr "" + +#. 796 +msgid "Turks and Caicos Islands" +msgstr "" + +#. 148 +msgid "Chad" +msgstr "" + +#. 260 +msgid "French Southern Territories" +msgstr "" + +#. 768 +msgid "Togo" +msgstr "" + +#. 764 +msgid "Thailand" +msgstr "" + +#. 762 +msgid "Tajikistan" +msgstr "" + +#. 772 +msgid "Tokelau" +msgstr "" + +#. 626 +msgid "Timor-Leste" +msgstr "" + +#. 795 +msgid "Turkmenistan" +msgstr "" + +#. 788 +msgid "Tunisia" +msgstr "" + +#. 776 +msgid "Tonga" +msgstr "" + +#. 792 +msgid "Turkey" +msgstr "" + +#. 780 +msgid "Trinidad and Tobago" +msgstr "" + +#. 798 +msgid "Tuvalu" +msgstr "" + +#. 158 +msgid "Taiwan, Province of China" +msgstr "" + +#. 834 +msgid "Tanzania, United Republic of" +msgstr "" + +#. 804 +msgid "Ukraine" +msgstr "" + +#. 800 +msgid "Uganda" +msgstr "" + +#. 581 +msgid "United States Minor Outlying Islands" +msgstr "" + +#. 840 +msgid "United States" +msgstr "" + +#. 858 +msgid "Uruguay" +msgstr "" + +#. 860 +msgid "Uzbekistan" +msgstr "" + +#. 336 +msgid "Holy See (Vatican City State)" +msgstr "" + +#. 670 +msgid "Saint Vincent and the Grenadines" +msgstr "" + +#. 862 +msgid "Venezuela" +msgstr "" + +#. 092 +msgid "Virgin Islands, British" +msgstr "" + +#. 850 +msgid "Virgin Islands, U.S." +msgstr "" + +#. 704 +msgid "Viet Nam" +msgstr "" + +#. 548 +msgid "Vanuatu" +msgstr "" + +#. 876 +msgid "Wallis and Futuna" +msgstr "" + +#. 882 +msgid "Samoa" +msgstr "" + +#. 887 +msgid "Yemen" +msgstr "" + +#. 175 +msgid "Mayotte" +msgstr "" + +#. 710 +msgid "South Africa" +msgstr "" + +#. 894 +msgid "Zambia" +msgstr "" + +#. 716 +msgid "Zimbabwe" +msgstr "" + +msgid "* Unknown, add is_in tags to those cities" +msgstr "" + +msgid "" +"navit usage:\n" +"navit [options] [configfile]\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" +"\t-h: print this usage info and exit.\n" +"\t-v: print the version and exit.\n" +msgstr "" + +#. We have not found an existing config file from all possibilities +msgid "No config file navit.xml, navit.xml.local found\n" +msgstr "" + +#, c-format +msgid "Error parsing config file '%s': %s\n" +msgstr "" + +#, c-format +msgid "Using config file '%s'\n" +msgstr "" + +#, c-format +msgid "Error: No configuration found in config file '%s'\n" +msgstr "" + +msgid "" +"Internal initialization failed, exiting. Check previous error messages.\n" +msgstr "" + +msgid "unknown street" +msgstr "" + +#. Safe cast: attr_generic_set_attr does not modify its parameter. +msgid "Unnamed vehicle" +msgstr "" + +msgid "Failed to write bookmarks file" +msgstr "" + +#. Strings from navit_shipped.xml +msgid "Map Point" +msgstr "" + +msgid "Car" +msgstr "" + +msgid "Iso2" +msgstr "" + +msgid "Iso3" +msgstr "" + +msgid "Country" +msgstr "" + +msgid "Postal" +msgstr "" + +msgid "Town" +msgstr "" + +msgid "District" +msgstr "" + +msgid "Street" +msgstr "" + +msgid "Number" +msgstr "" + +msgid "Enter Destination" +msgstr "" + +msgid "Zip Code" +msgstr "" + +msgid "City" +msgstr "" + +msgid "District/Township" +msgstr "" + +msgid "Map" +msgstr "" + +msgid "Bookmark" +msgstr "" + +msgid "Destination" +msgstr "" + +#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired). +msgid "_Display" +msgstr "" + +msgid "_Route" +msgstr "" + +msgid "_Former Destinations" +msgstr "" + +msgid "_Bookmarks" +msgstr "" + +msgid "_Map" +msgstr "" + +msgid "_Layout" +msgstr "" + +msgid "_Projection" +msgstr "" + +msgid "_Vehicle" +msgstr "" + +msgid "Zoom_Out" +msgstr "" + +msgid "Decrease zoom level" +msgstr "" + +msgid "Zoom_In" +msgstr "" + +msgid "Increase zoom level" +msgstr "" + +msgid "_Recalculate" +msgstr "" + +msgid "Redraw map" +msgstr "" + +msgid "_Info" +msgstr "" + +msgid "Set _destination" +msgstr "" + +msgid "Opens address search dialog" +msgstr "" + +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + +msgid "_Stop Navigation" +msgstr "" + +msgid "Test" +msgstr "" + +msgid "_Quit" +msgstr "" + +msgid "Quit the application" +msgstr "" + +msgid "Show position _cursor" +msgstr "" + +msgid "_Lock on Road" +msgstr "" + +msgid "_Keep orientation to the North" +msgstr "" + +msgid "Switches map orientation to the north or the vehicle" +msgstr "" + +msgid "_Roadbook" +msgstr "" + +msgid "Show/hide route description" +msgstr "" + +msgid "_Autozoom" +msgstr "" + +msgid "Enable/disable automatic zoom level changing" +msgstr "" + +msgid "_Fullscreen" +msgstr "" + +msgid "Data" +msgstr "" + +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + +msgid "N" +msgstr "" + +msgid "NE" +msgstr "" + +msgid "E" +msgstr "" + +msgid "SE" +msgstr "" + +msgid "S" +msgstr "" + +msgid "SW" +msgstr "" + +msgid "W" +msgstr "" + +msgid "NW" +msgstr "" + +#. Android resource: @strings/no +msgid "No" +msgstr "" + +msgid "2D" +msgstr "" + +msgid "3D" +msgstr "" + +msgid "OT" +msgstr "" + +#, c-format +msgid "Route %4.0fkm %02d:%02d ETA" +msgstr "" + +msgid "Route 0000km 0+00:00 ETA" +msgstr "" + +msgid "Help" +msgstr "" + +#, c-format +msgid "Waypoint %s" +msgstr "" + +msgid "Select waypoint to insert the new one before" +msgstr "" + +msgid "View in Browser" +msgstr "" + +msgid "Item type" +msgstr "" + +#. Android resource: @strings/address_search_streets +msgid "Streets" +msgstr "" + +msgid "House numbers" +msgstr "" + +msgid "View Attributes" +msgstr "" + +msgid "Set as position (and deactivate vehicle)" +msgstr "" + +msgid "POIs" +msgstr "" + +msgid "View on map" +msgstr "" + +msgid "Remove search results from the map" +msgstr "" + +msgid "Show results on the map" +msgstr "" + +msgid "Cut Bookmark" +msgstr "" + +msgid "Copy Bookmark" +msgstr "" + +msgid "Rename Bookmark" +msgstr "" + +msgid "Paste Bookmark" +msgstr "" + +msgid "Delete Bookmark" +msgstr "" + +msgid "Delete waypoint" +msgstr "" + +msgid "Bookmarks" +msgstr "" + +msgid "Bookmarks as waypoints" +msgstr "" + +msgid "Save waypoints" +msgstr "" + +msgid "Replace with waypoints" +msgstr "" + +msgid "Delete Folder" +msgstr "" + +#. Adds the Bookmark folders +msgid "Add Bookmark folder" +msgstr "" + +#. Pastes the Bookmark +msgid "Paste bookmark" +msgstr "" + +#, c-format +msgid "Bookmark %s" +msgstr "" + +#, c-format +msgid "Download %s" +msgstr "" + +msgid "Map Download" +msgstr "" + +msgid "Active" +msgstr "" + +msgid "Download Enabled" +msgstr "" + +msgid "Download completely" +msgstr "" + +msgid "Show Satellite Status" +msgstr "" + +msgid " Elevation " +msgstr "" + +msgid " Azimuth " +msgstr "" + +msgid "Show NMEA Data" +msgstr "" + +msgid "car" +msgstr "" + +msgid "bike" +msgstr "" + +msgid "pedestrian" +msgstr "" + +#, c-format +msgid "Current profile: %s" +msgstr "" + +#, c-format +msgid "Change profile to: %s" +msgstr "" + +msgid "Set as active" +msgstr "" + +msgid "Show Satellite status" +msgstr "" + +msgid "Show NMEA data" +msgstr "" + +msgid "Add Bookmark" +msgstr "" + +msgid "Rename" +msgstr "" + +msgid "About Navit" +msgstr "" + +#. Authors +msgid "By" +msgstr "" + +#. Contributors +msgid "And all the Navit Team" +msgstr "" + +msgid "members and contributors." +msgstr "" + +msgid "Waypoints" +msgstr "" + +msgid "Enter Coordinates" +msgstr "" + +#. +#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) +#. gui_internal_widget_append(wb, w) +#. +#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) +#. gui_internal_widget_append(w, we) +msgid "Latitude Longitude" +msgstr "" + +msgid "Enter coordinates, for example:" +msgstr "" + +msgid "Vehicle" +msgstr "" + +msgid "Rules" +msgstr "" + +msgid "Lock on road" +msgstr "" + +msgid "Northing" +msgstr "" + +msgid "Map follows Vehicle" +msgstr "" + +msgid "Plan with Waypoints" +msgstr "" + +msgid "Maps" +msgstr "" + +msgid "Layout" +msgstr "" + +msgid "Height Profile" +msgstr "" + +msgid "Route Description" +msgstr "" + +msgid "Show Locale" +msgstr "" + +msgid "Former Destinations" +msgstr "" + +msgid "- No former destinations available -" +msgstr "" + +msgid "Message" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Back to map" +msgstr "" + +msgid "Main Menu" +msgstr "" + +msgid "House number" +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Prev" +msgstr "" + +msgid "Return to route!" +msgstr "" + +#. warning told +msgid "Look out! Camera!" +msgstr "" + +#. warning told +msgid "Please decrease your speed" +msgstr "" + +msgid "partial match" +msgstr "" + +#. Android resource: @strings/address_search_button +msgid "Search" +msgstr "" + +#. Android resource: @strings/address_search_towns +msgid "Towns" +msgstr "" + +#. Android resource: @strings/position_popup_drive_here +msgid "Route to here" +msgstr "" + +msgid "Map data (c) OpenStreetMap contributors, ODBL" +msgstr "" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + +msgid "Downloaded maps" +msgstr "" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + +msgid "Whole Planet" +msgstr "" + +msgid "Africa" +msgstr "" + +msgid "Canary Islands" +msgstr "" + +msgid "Asia" +msgstr "" + +msgid "Korea" +msgstr "" + +msgid "Taiwan" +msgstr "" + +msgid "UAE+Other" +msgstr "" + +msgid "Oceania" +msgstr "" + +msgid "Tasmania" +msgstr "" + +msgid "Victoria" +msgstr "" + +msgid "New South Wales" +msgstr "" + +msgid "Europe" +msgstr "" + +msgid "Western Europe" +msgstr "" + +msgid "Azores" +msgstr "" + +msgid "BeNeLux" +msgstr "" + +msgid "Alsace" +msgstr "" + +msgid "Aquitaine" +msgstr "" + +msgid "Auvergne" +msgstr "" + +msgid "Basse-Normandie" +msgstr "" + +msgid "Bourgogne" +msgstr "" + +msgid "Bretagne" +msgstr "" + +msgid "Centre" +msgstr "" + +msgid "Champagne-Ardenne" +msgstr "" + +msgid "Corse" +msgstr "" + +msgid "Franche-Comte" +msgstr "" + +msgid "Haute-Normandie" +msgstr "" + +msgid "Ile-de-France" +msgstr "" + +msgid "Languedoc-Roussillon" +msgstr "" + +msgid "Limousin" +msgstr "" + +msgid "Lorraine" +msgstr "" + +msgid "Midi-Pyrenees" +msgstr "" + +msgid "Nord-pas-de-Calais" +msgstr "" + +msgid "Pays-de-la-Loire" +msgstr "" + +msgid "Picardie" +msgstr "" + +msgid "Poitou-Charentes" +msgstr "" + +msgid "Provence-Alpes-Cote-d-Azur" +msgstr "" + +msgid "Rhone-Alpes" +msgstr "" + +msgid "Baden-Wuerttemberg" +msgstr "" + +msgid "Bayern" +msgstr "" + +msgid "Mittelfranken" +msgstr "" + +msgid "Niederbayern" +msgstr "" + +msgid "Oberbayern" +msgstr "" + +msgid "Oberfranken" +msgstr "" + +msgid "Oberpfalz" +msgstr "" + +msgid "Schwaben" +msgstr "" + +msgid "Unterfranken" +msgstr "" + +msgid "Berlin" +msgstr "" + +msgid "Brandenburg" +msgstr "" + +msgid "Bremen" +msgstr "" + +msgid "Hamburg" +msgstr "" + +msgid "Hessen" +msgstr "" + +msgid "Mecklenburg-Vorpommern" +msgstr "" + +msgid "Niedersachsen" +msgstr "" + +msgid "Nordrhein-westfalen" +msgstr "" + +msgid "Rheinland-Pfalz" +msgstr "" + +msgid "Saarland" +msgstr "" + +msgid "Sachsen-Anhalt" +msgstr "" + +msgid "Sachsen" +msgstr "" + +msgid "Schleswig-Holstein" +msgstr "" + +msgid "Thueringen" +msgstr "" + +msgid "Mallorca" +msgstr "" + +msgid "Galicia" +msgstr "" + +msgid "Scandinavia" +msgstr "" + +msgid "England" +msgstr "" + +msgid "Buckinghamshire" +msgstr "" + +msgid "Cambridgeshire" +msgstr "" + +msgid "Cumbria" +msgstr "" + +msgid "East yorkshire with hull" +msgstr "" + +msgid "Essex" +msgstr "" + +msgid "Herefordshire" +msgstr "" + +msgid "Kent" +msgstr "" + +msgid "Lancashire" +msgstr "" + +msgid "Leicestershire" +msgstr "" + +msgid "Norfolk" +msgstr "" + +msgid "Nottinghamshire" +msgstr "" + +msgid "Oxfordshire" +msgstr "" + +msgid "Shropshire" +msgstr "" + +msgid "Somerset" +msgstr "" + +msgid "South yorkshire" +msgstr "" + +msgid "Suffolk" +msgstr "" + +msgid "Surrey" +msgstr "" + +msgid "Wiltshire" +msgstr "" + +msgid "Scotland" +msgstr "" + +msgid "Wales" +msgstr "" + +msgid "Crete" +msgstr "" + +msgid "North America" +msgstr "" + +msgid "Alaska" +msgstr "" + +msgid "Hawaii" +msgstr "" + +msgid "USA" +msgstr "" + +msgid " (except Alaska and Hawaii)" +msgstr "" + +msgid "Midwest" +msgstr "" + +msgid "Michigan" +msgstr "" + +msgid "Ohio" +msgstr "" + +msgid "Northeast" +msgstr "" + +msgid "Massachusetts" +msgstr "" + +msgid "Vermont" +msgstr "" + +msgid "Pacific" +msgstr "" + +msgid "South" +msgstr "" + +msgid "Arkansas" +msgstr "" + +msgid "District of Columbia" +msgstr "" + +msgid "Florida" +msgstr "" + +msgid "Louisiana" +msgstr "" + +msgid "Maryland" +msgstr "" + +msgid "Mississippi" +msgstr "" + +msgid "Oklahoma" +msgstr "" + +msgid "Texas" +msgstr "" + +msgid "Virginia" +msgstr "" + +msgid "West Virginia" +msgstr "" + +msgid "West" +msgstr "" + +msgid "Arizona" +msgstr "" + +msgid "California" +msgstr "" + +msgid "Colorado" +msgstr "" + +msgid "Idaho" +msgstr "" + +msgid "Montana" +msgstr "" + +msgid "New Mexico" +msgstr "" + +msgid "Nevada" +msgstr "" + +msgid "Oregon" +msgstr "" + +msgid "Utah" +msgstr "" + +msgid "Washington State" +msgstr "" + +msgid "South+Middle America" +msgstr "" + +msgid "Guyane Francaise" +msgstr "" + +msgid "downloading" +msgstr "" + +#. Android resource: @strings/map_download_ready +msgid "ready" +msgstr "" + +msgid "Media selected for map storage is not available" +msgstr "" + +#. Android resource: @strings/map_download_not_enough_free_space +msgid "Not enough free space" +msgstr "" + +msgid "Error downloading map!" +msgstr "" + +msgid "Error writing map!" +msgstr "" + +msgid "Map download aborted!" +msgstr "" + +#. Android resource: @strings/map_download_eta +msgid "ETA" +msgstr "" + +#. Android resource: @strings/map_download_title +msgid "Map download" +msgstr "" + +msgid "Vehicle Position" +msgstr "" + +msgid "Main menu" +msgstr "" + +msgid "" +"Show\n" +"Map" +msgstr "" + +msgid "Settings" +msgstr "" + +msgid "Tools" +msgstr "" + +msgid "Route" +msgstr "" + +msgid "About" +msgstr "" + +msgid "Quit" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "" +"Former\n" +"Destinations" +msgstr "" + +msgid "Coordinates" +msgstr "" + +msgid "" +"Stop\n" +"Navigation" +msgstr "" + +msgid "Display" +msgstr "" + +msgid "Fullscreen" +msgstr "" + +msgid "Window Mode" +msgstr "" + +msgid "Description" +msgstr "" + +msgid "" +"Drop last \n" +"Waypoint" +msgstr "" + +msgid "" +"Drop next \n" +"Waypoint" +msgstr "" + +msgid "Satellite Status" +msgstr "" + +msgid "NMEA Data" +msgstr "" + +msgid "car_shortest" +msgstr "" + +msgid "car_avoid_tolls" +msgstr "" + +msgid "car_pedantic" +msgstr "" + +msgid "horse" +msgstr "" + +msgid "Truck" +msgstr "" + +#. Strings from android/res/values/strings.xml +#. Android resource: @strings/yes +msgid "Yes" +msgstr "" + +#. Android resource: @strings/notification_ticker +msgid "Navit started" +msgstr "" + +#. Android resource: @strings/notification_event_default +msgid "Navit running" +msgstr "" + +#. Android resource: @strings/initial_info_box_title +msgid "Welcome to Navit" +msgstr "" + +#. Android resource: @strings/initial_info_box_message +msgid "" +"Thank you for installing Navit!\n" +"\n" +"To start, select \"Download maps\" from the menu to download a map. Note: " +"The map filesize may be large (>50MB) - a wifi connection is recommended.\n" +"\n" +"Mapdata: (c) OpenStreetMap contributors\n" +"\n" +"Enjoy Navit!" +msgstr "" + +#. Android resource: @strings/initial_info_box_OK +msgid "OK" +msgstr "" + +#. Android resource: @strings/initial_info_box_more_info +msgid "More info" +msgstr "" + +#. Android resource: @strings/optionsmenu_zoom_in +msgid "Zoom in" +msgstr "" + +#. Android resource: @strings/optionsmenu_zoom_out +msgid "Zoom out" +msgstr "" + +#. Android resource: @strings/optionsmenu_download_maps +msgid "Download maps" +msgstr "" + +#. Android resource: @strings/optionsmenu_toggle_poi +msgid "Toggle POIs" +msgstr "" + +#. Android resource: @strings/optionsmenu_exit_navit +msgid "Exit Navit" +msgstr "" + +#. Android resource: @strings/optionsmenu_backup_restore +msgid "Backup / Restore" +msgstr "" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + +#. Android resource: @strings/map_delete +msgid "Delete this map?" +msgstr "" + +#. Android resource: @strings/map_download_downloading +msgid "Downloading:" +msgstr "" + +#. Android resource: @strings/map_download_download_error +msgid "Error downloading map." +msgstr "" + +#. Android resource: @strings/map_download_download_aborted +msgid "Map download aborted" +msgstr "" + +#. Android resource: @strings/map_no_fix +msgid "No location. Reopen after location fix." +msgstr "" + +#. Android resource: @strings/maps_for_current_location +msgid "Maps containing current location" +msgstr "" + +#. Android resource: @strings/address_search_title +msgid "Address search" +msgstr "" + +#. Android resource: @strings/address_enter_destination +msgid "Enter destination" +msgstr "" + +#. Android resource: @strings/address_partial_match +msgid "Match partial address" +msgstr "" + +#. Android resource: @strings/address_search_searching +msgid "Searching..." +msgstr "" + +#. Android resource: @strings/address_search_not_found +msgid "Address not found" +msgstr "" + +#. Android resource: @strings/address_search_getting_results +msgid "Getting search results" +msgstr "" + +#. Android resource: @strings/address_search_loading_results +msgid "Loading search results" +msgstr "" + +#. Android resource: @strings/address_search_no_results +msgid "No results found" +msgstr "" + +#. Android resource: @strings/address_search_no_text_entered +msgid "No text entered" +msgstr "" + +#. Android resource: @strings/address_search_set_destination +msgid "Setting destination to:" +msgstr "" + +#. Android resource: @strings/choose_an_action +msgid "Choose an action" +msgstr "" + +#. Android resource: @strings/please_insert_an_sd_card +msgid "Please insert an SD Card" +msgstr "" + +#. Android resource: @strings/backing_up +msgid "Backing up..." +msgstr "" + +#. Android resource: @strings/restoring +msgid "Restoring..." +msgstr "" + +#. Android resource: @strings/failed_to_create_backup_directory +msgid "Failed to create backup directory" +msgstr "" + +#. Android resource: @strings/backup_failed +msgid "Backup failed" +msgstr "" + +#. Android resource: @strings/no_backup_found +msgid "No backup found" +msgstr "" + +#. Android resource: @strings/failed_to_restore +msgid "Failed to restore" +msgstr "" + +#. Android resource: @strings/backup_successful +msgid "Backup successful" +msgstr "" + +#. Android resource: @strings/restore_successful_please_restart_navit +msgid "" +"Restore Successful\n" +"Please restart Navit" +msgstr "" + +#. Android resource: @strings/backup_not_found +msgid "Backup not found" +msgstr "" + +#. Android resource: @strings/restore_failed +msgid "Restore failed" +msgstr "" + +#. Android resource: @strings/select_backup +msgid "Select backup" +msgstr "" + +#. Android resource: @strings/backup +msgid "Backup" +msgstr "" + +#. Android resource: @strings/restore +msgid "Restore" +msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/mr.po.in navit-0.5.0+dfsg.1/po/mr.po.in --- navit-0.5.0~svn5900+dfsg.1/po/mr.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/mr.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,15 +1,13 @@ -# Marathi translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Marathi translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # nagesh https://launchpad.net/~nageshpachorkar - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2013-02-18 10:23+0000\n" "Last-Translator: nagesh \n" "Language-Team: Marathi \n" @@ -17,8 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: mr\n" msgid "Running from source directory\n" msgstr "" @@ -72,14 +69,6 @@ msgstr "सहावा बाहेर जाण्याचा मार्ग" #, c-format -msgid "%d m" -msgstr "%d मि." - -#, c-format -msgid "in %d m" -msgstr "%d मिनीटांत" - -#, c-format msgid "%d feet" msgstr "" @@ -88,14 +77,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "" - -#, c-format -msgid "in %d meters" -msgstr "" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -104,14 +85,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -124,6 +97,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "" + +#, c-format +msgid "in %d meters" +msgstr "" + +#, c-format +msgid "%d.%d kilometers" +msgstr "" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -135,30 +124,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -166,92 +178,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" +msgid "on your left" +msgstr "" + +msgid "on your right" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1618,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2717,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/nb.po.in navit-0.5.0+dfsg.1/po/nb.po.in --- navit-0.5.0~svn5900+dfsg.1/po/nb.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/nb.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,29 +1,27 @@ # Norwegian translations for navit -# Copyright (C) 2006-2014 The Navit Team +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer # Kenneth Langdalen https://launchpad.net/~spam-klnetworks # Kurt Nielsen https://launchpad.net/~kurtn-penguins +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Skippern https://launchpad.net/~gay-today # Thor H. Johansen https://launchpad.net/~thorhajo # burner https://launchpad.net/~bendik-xplore - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:44+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:59+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Bendik Brenne \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-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: nb\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -78,14 +76,6 @@ msgstr "sjette avkjøring" #, c-format -msgid "%d m" -msgstr "%d meter" - -#, c-format -msgid "in %d m" -msgstr "om %d meter" - -#, c-format msgid "%d feet" msgstr "" @@ -94,14 +84,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d meter" - -#, c-format -msgid "in %d meters" -msgstr "om %d meter" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -110,14 +92,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "om %d,%d kilometer" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -130,6 +104,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d meter" + +#, c-format +msgid "in %d meters" +msgstr "om %d meter" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "om %d,%d kilometer" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "en kilometer" @@ -141,30 +131,53 @@ msgstr[0] "om en kilometer" msgstr[1] "om %d kilometer" -msgid "exit" -msgstr "avkjørsel" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "ut på akselerasjonsfeltet" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%sinn på gaten %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sinn på %s%s%sen" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sinn på %s%s%sa" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sin på %s%s%set" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -172,91 +185,196 @@ msgid "%sinto the %s" msgstr "%sinn på %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "høyre" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "venstre" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "slakt " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "skarpt " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "veldig skarpt " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "ukjent " - msgid "When possible, please turn around" msgstr "Snu når det er mulig" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Følg veien de neste %s" + msgid "Enter the roundabout soon" msgstr "Kjør inn i rundkjøringen snart" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" +msgstr "Kjør inn i rundkjøringen %s" + +msgid "then enter the roundabout" msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "forlat så rundkjøringen ut %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Forlat rundkjøringen ut %1$s %2$s" +msgid "soon" +msgstr "snart" + +msgid "now" +msgstr "nå" + +msgid "then" +msgstr "så" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Forlat rundkjøringen ut %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Følg veien de neste %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "snart" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Ta den %1$s veien mot %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "etter %i avkjøringer" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "nå" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "høyre" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "venstre" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "slakt " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "skarpt " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "ta deretter %1$s til %2$s" +msgstr "" -msgid "error" -msgstr "feil" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Ta den %1$s veien mot %2$s" + +#, c-format +msgid "after %i roads" +msgstr "etter %i avkjøringer" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Sving %1$s til %2$s om %3$s %4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "sving så %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "snu så" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Snu %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "snu så" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Snu %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "følg" +msgid "then you have reached your destination." +msgstr "så har du nådd ditt reisemål." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Du har nådd ditt reisemål %s" -msgid "then you have reached your destination." -msgstr "så har du nådd ditt reisemål." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Avkjørsel" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1316,11 +1434,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1457,6 +1577,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Stopp navigasjon" @@ -1499,6 +1625,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1810,12 +2030,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2186,13 +2425,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2357,6 +2599,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2482,3 +2728,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "forlat så rundkjøringen ut %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/nds.po.in navit-0.5.0+dfsg.1/po/nds.po.in --- navit-0.5.0~svn5900+dfsg.1/po/nds.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/nds.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,32 +1,28 @@ -# German, Low translation for navit -# Copyright (C) 2006-2014 The Navit Team +# German, Low translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Christian Moll https://launchpad.net/~christian-chrmoll # KaZeR https://launchpad.net/~kazer # Lars Hennig https://launchpad.net/~elhennig +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Roadrunner IN https://launchpad.net/~online # Roschkor https://launchpad.net/~bound-one2000 -# Sagamir https://launchpad.net/~sagamir # everyone https://launchpad.net/~anonymus1338 # fred husche https://launchpad.net/~paidmailacc - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:42+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:59+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: German, Low \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" -"Language: \n" +"Language: nds\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -81,14 +77,6 @@ msgstr "sechste Ausfahrt" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "in %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -97,14 +85,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d Meter" - -#, c-format -msgid "in %d meters" -msgstr "in %d Metern" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -113,14 +93,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d Kilometer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "in %d %d Kilometern" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -133,6 +105,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d Meter" + +#, c-format +msgid "in %d meters" +msgstr "in %d Metern" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d Kilometer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "in %d %d Kilometern" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "ein Kilometer" @@ -144,64 +132,72 @@ msgstr[0] "in einem Kilometer" msgstr[1] "in %d Kilometern" -msgid "exit" -msgstr "Ausfahrt" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "auf die Auffahrt" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s in die Straße %s %s %s" +msgid "%sinto %s%s%s" +msgstr "%sin die Straße %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s in den %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sin den %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s in die %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sin die %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s in das %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sin das %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" -msgstr "%s in die %s" - -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "Rechts" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "links" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "einfach " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "straf " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "wirklich scharf " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "unbekannt " +msgstr "%sin die %s" msgid "When possible, please turn around" msgstr "Wenn möglich, bitte wenden" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Der Straße %s folgen" + msgid "Enter the roundabout soon" msgstr "In Kürze in den Kreisverkehr einfahren" @@ -210,57 +206,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "dann den Kreisverkehr an der %s verlassen" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Den Kreisverkehr an der %1$s %2$s verlassen" + +msgid "soon" +msgstr "in Kürze" + +msgid "now" +msgstr "jetzt" +msgid "then" +msgstr "dann" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Den Kreisverkehr an der %s verlassen" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Der Straße %s folgen" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "in Kürze" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Die %1$s Straße zur %2$s nehmen" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "nach %i Straßen" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "jetzt" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "Rechts" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "links" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "einfach " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "straf " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "Dann die %1$s Straße zur %2$s nehmen" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Die %1$s Straße zur %2$s nehmen" -msgid "error" -msgstr "Fehler" +#, c-format +msgid "after %i roads" +msgstr "nach %i Straßen" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "In %3$s %1$s%2$s %4$s abbiegen" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "dann %1$s%2$s %3$s%4$s abbiegen" +msgid "Make a U-turn %1$s|left" +msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" -msgstr "Sie haben Ihr Ziel erreicht %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" msgid "then you have reached your destination." msgstr "Dann haben Sie Ihr Ziel erreicht" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "Sie haben Ihr Ziel erreicht %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Ausfahrt" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "Position" @@ -1319,11 +1435,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1460,6 +1578,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Navigation beenden" @@ -1502,6 +1626,100 @@ msgid "Data" msgstr "Daten" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1813,12 +2031,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2189,13 +2426,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2360,6 +2600,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2485,3 +2729,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "dann den Kreisverkehr an der %1$s %2$s verlassen" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/nl.po.in navit-0.5.0+dfsg.1/po/nl.po.in --- navit-0.5.0~svn5900+dfsg.1/po/nl.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/nl.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,15 +1,15 @@ # Dutch translations for navit -# Copyright (C) 2006-2014 The Navit Team +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Bert de Bruijn https://launchpad.net/~lpdebruijn -# Blalien https://launchpad.net/~blalien # Christ van Willegen https://launchpad.net/~cvwillegen+launchpad # Christopher https://launchpad.net/~cstandaert # Ed Kapitein https://launchpad.net/~ed-kapitein # Frenzel https://launchpad.net/~f-heinen-nl # Guus https://launchpad.net/~gsnijders # Hieronymousch https://launchpad.net/~jeroen-leptonics +# Jeffrey Rongen https://launchpad.net/~jeffrey-rongen # KaZeR https://launchpad.net/~kazer # Roadrunner IN https://launchpad.net/~online # Sander Deryckere https://launchpad.net/~sanderd17 @@ -20,22 +20,18 @@ # rob https://launchpad.net/~rvdb # worldcitizen https://launchpad.net/~joop-boonen - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2014-08-16 06:43+0000\n" -"Last-Translator: Christopher \n" +"PO-Revision-Date: 2015-10-05 13:45+0000\n" +"Last-Translator: jan \n" "Language-Team: afaber\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-Launchpad-Export-Date: 2014-08-16 19:48+0000\n" -"X-Generator: Launchpad (build 17156)\n" -"Language: \n" +"Language: nl\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "soon" @@ -93,14 +89,6 @@ msgstr "zesde afslag" #, c-format -msgid "%d m" -msgstr "%d meter" - -#, c-format -msgid "in %d m" -msgstr "na %d meter" - -#, c-format msgid "%d feet" msgstr "%d voet" @@ -109,14 +97,6 @@ msgstr "na %d voet" #, c-format -msgid "%d meters" -msgstr "%d meter" - -#, c-format -msgid "in %d meters" -msgstr "na %d meter" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d. mijl" @@ -125,14 +105,6 @@ msgstr "na %d.%d mijl" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "na %d,%d kilometer" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "%d mijl" @@ -145,6 +117,22 @@ msgstr[1] "na %d mijl" #, c-format +msgid "%d meters" +msgstr "%d meter" + +#, c-format +msgid "in %d meters" +msgstr "na %d meter" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "na %d,%d kilometer" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "één kilometer" @@ -156,30 +144,53 @@ msgstr[0] "na één kilometer" msgstr[1] "na %d kilometer" -msgid "exit" -msgstr "afslag" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$sde %2$s%3$s%4$s op" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$s de %2$s op" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$s de %2$s op" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$s de %2$s op" -msgid "into the ramp" -msgstr "naar de afslag" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$s de %2$s op" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "naar de oprit" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sde straat %s%s%s in" +msgid "%sinto %s%s%s" +msgstr "%sde %s%s%s in" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sde %s%s%s in" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sde %s%s%s in" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sde %s%s%s in" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -187,88 +198,193 @@ msgid "%sinto the %s" msgstr "%snaar de %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "rechts" +msgid "When possible, please turn around" +msgstr "Indien mogelijk omkeren" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "richting %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Volg de weg gedurende %s" + +msgid "Enter the roundabout soon" +msgstr "straks de rotonde oprijden" + +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "%s de rotonde oprijden" + +msgid "then enter the roundabout" +msgstr "daarna rij de rotonde op" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Verlaat de rotonde bij de %1$s %2$s" + +msgid "now" +msgstr "nu" + +msgid "then" +msgstr "daarna" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" +msgstr "daarna rechts invoegen%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|right" +msgstr "%1$s rechts invoegen%2$s" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "daarna links invoegen%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "%1$s links invoegen%2$s" + +msgid "on your left" msgstr "links" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "flauw " +msgid "on your right" +msgstr "rechts" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "scherp " +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance +#, c-format +msgid "Take exit %1$s %2$s %3$s" +msgstr "neem afslag %1$s %2$s %3$s" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "zeer scherp " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "onbekende " +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "neem de afslag %1$s %2$s%3$s" -msgid "When possible, please turn around" -msgstr "Indien mogelijk omkeren" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "bij" -msgid "Enter the roundabout soon" -msgstr "U rijdt zodadelijk de rotonde op" +msgid "at exit" +msgstr "bij aflsag" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "Enter the roundabout %s" -msgstr "neem de rotonde %s" +msgid "then continue straight%1$s" +msgstr "daarna ga rechtdoor%1$s" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "then leave the roundabout at the %s" -msgstr "daarna de rotonde verlaten bij de %s" +msgid "Continue straight %1$s%2$s%3$s" +msgstr "%1$s ga rechtdoor %2$s%3$s" +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Verlaat de rotonde bij de %s" +msgid "then keep right%1$s" +msgstr "daarna rechts aanhouden%1$s" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "Follow the road for the next %s" -msgstr "Volg de weg gedurende %s" +msgid "Keep right %1$s%2$s%3$s" +msgstr "%1$s rechts aanhouden %2$s%3$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Neem de %1$s straat naar %2$s" +msgid "then keep left%1$s" +msgstr "daarna links aanhouden%1$s" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "after %i roads" -msgstr "na %i wegen" +msgid "Keep left %1$s%2$s%3$s" +msgstr "%1$s links aanhouden %2$s%3$s" -msgid "now" -msgstr "nu" +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "rechts" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "links" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "flauw " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "scherp " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "neem daarna de %1$s weg naar %2$s" +msgstr "neem daarna de %1$s straat naar %2$s" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Neem de %1$s straat naar %2$s" -msgid "error" -msgstr "fout" +#, c-format +msgid "after %i roads" +msgstr "na %i wegen" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Ga %3$s %1$s naar %2$s %4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "daarna, ga na %3$s wegen %1$s%2$s naar %4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "daarna maak linksomkeer" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "%1$s linksomkeren" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "daarna rechtsomkeren" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "%1$s rechtsomkeren" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "volg" +msgid "then you have reached your destination." +msgstr "daarna heeft u uw bestemming bereikt." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Bestemming %s bereikt" -msgid "then you have reached your destination." -msgstr "daarna heeft u uw bestemming bereikt." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Knooppunt" + +msgid "Exit" +msgstr "Afslag" #. Android resource: @strings/position_popup_title msgid "Position" @@ -668,7 +784,7 @@ #. 324 msgid "Guinea" -msgstr "Papoea-Nieuw-Guinea" +msgstr "Guinee" #. 312 msgid "Guadeloupe" @@ -1329,19 +1445,14 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"navit gebruik:\n" -"navit [opties] [configuratiebestand]\n" -"\t -c : gebruik als configuratie bestand.\n" -"\t -d : zet het foutmeldingen niveau op (0-3). Dit gaat boven de " -"instellingen van het configuratie bestand.\n" -"\t -h toon deze gebruiks informatie en sluit af.\n" -"\t -v toon de versie en sluit af.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1481,6 +1592,12 @@ msgid "Opens address search dialog" msgstr "Opent het venster om adressen te zoeken" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "POI zoekscherm openen" + msgid "_Stop Navigation" msgstr "Stop navigatie" @@ -1488,7 +1605,7 @@ msgstr "Test" msgid "_Quit" -msgstr "Beëindigen" +msgstr "" msgid "Quit the application" msgstr "Het programma afsluiten" @@ -1523,6 +1640,100 @@ msgid "Data" msgstr "Gegevens" +msgid "Pharmacy" +msgstr "Apotheek" + +msgid "Restaurant" +msgstr "Restaurant" + +msgid "Restaurant. Fast food" +msgstr "Fastfoodrestaurant" + +msgid "Hotel" +msgstr "Hotel" + +msgid "Car parking" +msgstr "parking" + +msgid "Fuel station" +msgstr "Tankstation" + +msgid "Bank" +msgstr "Bank" + +msgid "Hospital" +msgstr "Ziekenhuis" + +msgid "Cinema" +msgstr "Bioscoop" + +msgid "Train station" +msgstr "Treinstation" + +msgid "School" +msgstr "School" + +msgid "Police" +msgstr "Politie" + +msgid "Justice" +msgstr "gerechtshof" + +msgid "Taxi" +msgstr "Taxi" + +msgid "Shopping" +msgstr "Winkelen" + +msgid "Distance from screen center (km)" +msgstr "Afstand vanaf schem midden (km)" + +#, c-format +msgid "POI %s. %s" +msgstr "POI %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "POI zoeken" + +msgid "Select a category" +msgstr "Kies een categorie" + +msgid "Select a distance to look for (km)" +msgstr "Zoekafstand kiezen (km)" + +msgid "Select a POI" +msgstr "POI selecteren" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Categorie" + +msgid "Direction" +msgstr "Richting" + +msgid "Distance(m)" +msgstr "Afstand(m)" + +msgid "Name" +msgstr "Naam" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1740,7 +1951,7 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Breedtegraad Lengtegraad" msgid "Enter coordinates, for example:" msgstr "voer coordinaat in, bijvorbeeld:" @@ -1834,12 +2045,38 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "kaart gegevens (c) OpenStreetMap contributeurs, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" +"Huidige locatie %s voor opslag van de kaart is niet beschikbaar.\n" +"Herstart Navit na dat U een SD kaart heeft geplaatst of een andere\n" +"locatie voor opslag heeft gekozen." + msgid "Downloaded maps" msgstr "Gedownloade kaarten" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" +"Kaarten gorter dan 3,8GB zijn momenteel niet ondersteund op Android.\r\n" +"Kies a.u.b. een kleinere kaart." + msgid "Cancel" msgstr "Annuleer" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" +"%s is als nieuwe locatie ingesteld.\n" +"Herstart a.u.b. Navit om de wijzigingen door te voeren." + msgid "Whole Planet" msgstr "de hele aarde" @@ -2210,13 +2447,16 @@ msgid "ready" msgstr "klaar" -msgid "Error downloading map!" -msgstr "Kaart downloaden mislukt!" +msgid "Media selected for map storage is not available" +msgstr "De gekozen locatie voor opslag van de kaarten is niet beschikbaar." #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Niet genoeg vrije ruimte" +msgid "Error downloading map!" +msgstr "Kaart downloaden mislukt!" + msgid "Error writing map!" msgstr "Wegschrijven van kaart mislukt!" @@ -2396,6 +2636,10 @@ msgid "Backup / Restore" msgstr "Back-up maken / terugzetten" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "Kaart locatie kiezen" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Verwijder deze kaart?" @@ -2523,3 +2767,21 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Terugzetten" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "geen tekst naar spraak aanwezig" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" +"Navit kan elke tekst naar spraak-engine geïnstalleerd op uw apparaat " +"gebruiken. De momenteel geselecteerde engine meldt dat het niet in uw taal " +"kan spreken. Wil U de spraak download dialoog van Uw toestel starten?" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "daarna de rotonde verlaten bij de %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/nn.po.in navit-0.5.0+dfsg.1/po/nn.po.in --- navit-0.5.0~svn5900+dfsg.1/po/nn.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/nn.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,22 @@ -# Norwegian Nynorsk translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Norwegian Nynorsk translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Skippern https://launchpad.net/~gay-today - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:44+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 03:59+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Norwegian Nynorsk \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: nn\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -75,14 +72,6 @@ msgstr "sjette avkjøyring" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "om %d meter" - -#, c-format msgid "%d feet" msgstr "" @@ -91,14 +80,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d meter" - -#, c-format -msgid "in %d meters" -msgstr "om %d meter" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -107,14 +88,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "om %d,%d kilometer" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -127,6 +100,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d meter" + +#, c-format +msgid "in %d meters" +msgstr "om %d meter" + +#, c-format +msgid "%d.%d kilometers" +msgstr "" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "om %d,%d kilometer" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "ein kilometer" @@ -138,30 +127,53 @@ msgstr[0] "om ein kilometer" msgstr[1] "om %d kilometer" -msgid "exit" -msgstr "avkjøyring" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -169,31 +181,16 @@ msgid "%sinto the %s" msgstr "%sinn på %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "høgre" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "venstre" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "slakt " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "krapt " +msgid "When possible, please turn around" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "veldig krapt " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "ukjend " +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -msgid "When possible, please turn around" +#, c-format +msgid "Follow the road for the next %s" msgstr "" msgid "Enter the roundabout soon" @@ -204,57 +201,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" +msgid "soon" +msgstr "snart" + +msgid "now" +msgstr "no" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|right" msgstr "" -msgid "soon" -msgstr "snart" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Ta den %1$s vegen mot %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" +msgid "Take exit %1$s %2$s %3$s" msgstr "" -msgid "now" -msgstr "no" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "høgre" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "venstre" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "slakt " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "krapt " #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" -msgstr "feil" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Ta den %1$s vegen mot %2$s" + +#, c-format +msgid "after %i roads" +msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Avkjøyring" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "Posisjon" @@ -1313,11 +1430,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1454,6 +1573,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Stopp navigasjon" @@ -1496,6 +1621,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1807,12 +2026,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2183,13 +2421,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2354,6 +2595,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2479,3 +2724,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/pl.po.in navit-0.5.0+dfsg.1/po/pl.po.in --- navit-0.5.0~svn5900+dfsg.1/po/pl.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/pl.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,40 +1,34 @@ -# Polish translations for navit. -# Copyright (C) 2006-2014 The Navit Team +# Polish translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Bartosz Kaszubowski https://launchpad.net/~simek # DarkAlexis https://launchpad.net/~alex-ludyga # Jarosław Ogrodnik https://launchpad.net/~goz # KaZeR https://launchpad.net/~kazer -# LeadMan https://launchpad.net/~leadman # Marcin Ostajewski (panszpik) https://launchpad.net/~panszpik +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Mineque https://launchpad.net/~mineque +# Patryk "LeadMan" Benderz https://launchpad.net/~leadman # S0Cool https://launchpad.net/~mareksok # TSr https://launchpad.net/~tsr # Wojtek https://launchpad.net/~wojtek-pol -# linek10 https://launchpad.net/~zbyszekm # skrzat https://launchpad.net/~skrzat # Łukasz Semler https://launchpad.net/~lukasz-semler - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-11-04 21:48+0000\n" -"Last-Translator: DarkAlexis \n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Translators\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" -"X-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" -"X-Poedit-Country: POLAND\n" -"Language: \n" -"X-Poedit-Language: Polish\n" +"Language: pl\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -89,14 +83,6 @@ msgstr "szóstym wyjeździe" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "za %d m" - -#, c-format msgid "%d feet" msgstr "%d stopa" @@ -105,14 +91,6 @@ msgstr "za %d stóp" #, c-format -msgid "%d meters" -msgstr "%d metrów" - -#, c-format -msgid "in %d meters" -msgstr "za %d metrów" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d mil" @@ -121,14 +99,6 @@ msgstr "za %d.%d mil" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometrów" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "za %d.%d kilometrów" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "jedna mila" @@ -143,6 +113,22 @@ msgstr[2] "za %d mil" #, c-format +msgid "%d meters" +msgstr "%d metrów" + +#, c-format +msgid "in %d meters" +msgstr "za %d metrów" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometrów" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "za %d.%d kilometrów" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "jeden kilometr" @@ -156,122 +142,250 @@ msgstr[1] "za %d kilometry" msgstr[2] "za %d kilometrów" -msgid "exit" -msgstr "zjazd" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "na wjazd" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s w ulicę %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sw %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%sw %s%s%s|męski rodzaj" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sw %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%sw %s%s%s|żeński rodzaj" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sw %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%sw %s%s%s|neutralny rodzaj" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sw %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%s do %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "w prawo" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "w lewo" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "lekko " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "silnie " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "bardzo silnie " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "nieznane " - msgid "When possible, please turn around" msgstr "Zawróc, gdy będzie to możliwe" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Jedź tą drogą do następnego %s" + msgid "Enter the roundabout soon" msgstr "Wjazd na rondo wkrótce" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "Wjazd na rondo %s" +msgstr "" + +msgid "then enter the roundabout" +msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "następnie zjedź z ronda na %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Zjedź z ronda na %1$s %2$s" +msgid "soon" +msgstr "wkrótce" + +msgid "now" +msgstr "teraz" + +msgid "then" +msgstr "następnie" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Zjedź z ronda na %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Jedź tą drogą do następnego %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "wkrótce" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Jedź drogą %1$s do %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "po drodze %i" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "teraz" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "w prawo" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "w lewo" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "lekko " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "silnie " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "następnie jedź %1$s drogą do %2$s" +msgstr "" -msgid "error" -msgstr "błąd" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Jedź drogą %1$s do %2$s" + +#, c-format +msgid "after %i roads" +msgstr "po drodze %i" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Skręć %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "następnie skręć %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "następnie zawróc" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Zawróc %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "następnie zawróc" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Zawróc %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "następnie dojechałeś do celu." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Dotarłeś do celu %s" -msgid "then you have reached your destination." -msgstr "następnie dojechałeś do celu." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Węzeł" + +msgid "Exit" +msgstr "Zjazd" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1331,19 +1445,14 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"navit użycie:\n" -"navit [opcje] [plik config]\n" -"\t-c : użyje jako plik config\n" -"\t-d : ustawi wyjściowy poziom globalnego debugowania na (0-3). " -"Nadpisze ustawienia z pliku config.\n" -"\t-h: wydrukuje to info użycia i wyjdzie.\n" -"\t-v: Wydrukuje wersję i wyjdzie.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1481,6 +1590,12 @@ msgid "Opens address search dialog" msgstr "Otwórz okno dialogowe wyszukiwania adresu" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "_Zatrzymaj nawigację" @@ -1523,6 +1638,100 @@ msgid "Data" msgstr "Dane" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1834,12 +2043,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Dane Mapy (c) OpenStreetMap contributors, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "Pobrane Mapy" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "Anuluj" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "Cały Ś" @@ -2210,13 +2438,16 @@ msgid "ready" msgstr "gotowe" -msgid "Error downloading map!" -msgstr "Błąd przy pobieraniu map" +msgid "Media selected for map storage is not available" +msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Za mało wolnego miejsca" +msgid "Error downloading map!" +msgstr "Błąd przy pobieraniu map" + msgid "Error writing map!" msgstr "Bład przy zapisywaniu mapy!" @@ -2395,6 +2626,10 @@ msgid "Backup / Restore" msgstr "Zarchiwizuj / Przywróć" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Skasować tą mape?" @@ -2522,3 +2757,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Przywróć" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "następnie zjedź z ronda na %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/pms.po.in navit-0.5.0+dfsg.1/po/pms.po.in --- navit-0.5.0~svn5900+dfsg.1/po/pms.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/pms.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,21 @@ -# Piemontese translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Piemontese translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Simone Briatore https://launchpad.net/~simone-bri - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2012-09-14 10:28+0000\n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" "Last-Translator: Simone Briatore \n" "Language-Team: Piemontese \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: pms\n" msgid "Running from source directory\n" msgstr "" @@ -72,14 +69,6 @@ msgstr "sescia surtia" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "" - -#, c-format msgid "%d feet" msgstr "" @@ -88,14 +77,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d meter" - -#, c-format -msgid "in %d meters" -msgstr "" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -104,14 +85,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d chilometer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "tra %d.%d chilometer" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -124,6 +97,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d meter" + +#, c-format +msgid "in %d meters" +msgstr "" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d chilometer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "tra %d.%d chilometer" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "" @@ -135,30 +124,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" -msgstr "surtia" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "in tla rampa" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -166,92 +178,197 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +msgid "now" +msgstr "" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" +msgid "on your left" +msgstr "" + +msgid "on your right" msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" msgid "then you have reached your destination." msgstr "" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Surtia" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1618,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2588,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2717,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/pt_BR.po.in navit-0.5.0+dfsg.1/po/pt_BR.po.in --- navit-0.5.0~svn5900+dfsg.1/po/pt_BR.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/pt_BR.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ -# Brazilian Portuguese translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Brazilian Portuguese translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Carla Pita https://launchpad.net/~carla-pita @@ -7,6 +7,7 @@ # Gustavo Guidorizzi https://launchpad.net/~gguido # Helder Santana https://launchpad.net/~helder-bs-santana # Jairo Roberto Duarte https://launchpad.net/~jairo58 +# Julio Alexander Sieg https://launchpad.net/~julio-sieg # Leonardo Hamada https://launchpad.net/~leonardohamada # Luzemário https://launchpad.net/~luzemario # Matheus Cavalcante https://launchpad.net/~suetamac @@ -17,22 +18,20 @@ # guilherme https://launchpad.net/~guidicavalcanti # hvera https://launchpad.net/~hamilton-listas # paulohm https://launchpad.net/~paulohm - +# pingflood https://launchpad.net/~pingflood msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2014-05-29 03:28+0000\n" -"Last-Translator: Jairo Roberto Duarte \n" +"PO-Revision-Date: 2015-07-27 11:44+0000\n" +"Last-Translator: Julio Alexander Sieg \n" "Language-Team: Brazilian Portuguese \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: pt_BR\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -40,7 +39,7 @@ #, c-format msgid "setting '%s' to '%s'\n" -msgstr "ajustando '%s' para '%s'\n" +msgstr "ajustando de '%s' para '%s'\n" #. TRANSLATORS: the following counts refer to streets msgid "zeroth" @@ -87,14 +86,6 @@ msgstr "sexta saída" #, c-format -msgid "%d m" -msgstr "%d metros" - -#, c-format -msgid "in %d m" -msgstr "em %d metros" - -#, c-format msgid "%d feet" msgstr "%d pés" @@ -103,14 +94,6 @@ msgstr "em %d pés" #, c-format -msgid "%d meters" -msgstr "%d metros" - -#, c-format -msgid "in %d meters" -msgstr "em %d metros" - -#, c-format msgid "%d.%d miles" msgstr "%d.%d milhas" @@ -119,14 +102,6 @@ msgstr "em %d.%d milhas" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d quilômetros" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "em %d.%d quilôtros" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "uma milha" @@ -139,6 +114,22 @@ msgstr[1] "em %d milhas" #, c-format +msgid "%d meters" +msgstr "%d metros" + +#, c-format +msgid "in %d meters" +msgstr "em %d metros" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d quilômetros" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "em %d.%d quilômetros" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "um quilômetro" @@ -150,30 +141,53 @@ msgstr[0] "em um quilômetro" msgstr[1] "em %d quilômetros" -msgid "exit" -msgstr "saída" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$sno %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "na rampa" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%sna %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sno %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sna %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sem %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -181,33 +195,18 @@ msgid "%sinto the %s" msgstr "%sna %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "à direita" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "à esquerda" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "levemente " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "fortemente " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "vigorosamente " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "desconhecido " - msgid "When possible, please turn around" msgstr "Quando possível, favor retornar" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "em direção a %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Continue na via por %s" + msgid "Enter the roundabout soon" msgstr "Entre na rotatória em seguida" @@ -216,56 +215,176 @@ msgid "Enter the roundabout %s" msgstr "Entre na rotatória %s" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Deixe a rotatória na %1$s %2$s" + +msgid "soon" +msgstr "em breve" + +msgid "now" +msgstr "agora" + +msgid "then" +msgstr "em seguida" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" -msgstr "em seguida deixe a rotatória no %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Deixe a rotatória na %s" +msgid "Merge %1$s%2$s|right" +msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Continue na via por %s" +msgid "then merge%1$s|left" +msgstr "em seguida vire a %1$s|esquerda" -msgid "soon" -msgstr "em breve" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "Vire a %1$s%2$s|esquerda" + +msgid "on your left" +msgstr "à sua esquerda" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "à sua direita" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Pegue a %1$s via para a %2$s" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Pegue a saída %1$s %2$s %3$s" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" -msgstr "após %i vias" +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Pegue a saída %1$s %2$s %3$s" -msgid "now" -msgstr "agora" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "no cruzamento" + +msgid "at exit" +msgstr "na saída" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "em seguinda, siga%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "Siga %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "então mantenha a direita%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "Mantenha a direita %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "então mantenha a esquerda%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "Mantenha a esquerda %1$s%2$s%3$s" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "à direita" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "à esquerda" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "levemente " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "fortemente " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "então pegue a %1$s via para a %2$s" +msgstr "" -msgid "error" -msgstr "erro" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Pegue a %1$s via para a %2$s" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' #, c-format -msgid "Turn %1$s%2$s %3$s%4$s" -msgstr "Vire %1$s%2$s %3$s%4$s" +msgid "after %i roads" +msgstr "após %i vias" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "então vire %1$s%2$s %3$s%4$s" +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "Vire a %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "então faça o retorno" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Faça o retorno a esquerda %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "então faça o retorno a direita" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Faça o retorno a direita %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "siga por" + +msgid "then you have reached your destination." +msgstr "então você chegará ao destino." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Você chegará ao destino %s" -msgid "then you have reached your destination." -msgstr "então você chegará ao destino." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Trevo" + +msgid "Exit" +msgstr "Saída" #. Android resource: @strings/position_popup_title msgid "Position" @@ -287,7 +406,7 @@ msgstr "Tempo" msgid "Destination Length" -msgstr "Distância ao Destino" +msgstr "Distância até o Destino" msgid "Destination Time" msgstr "Tempo até o Destino" @@ -300,7 +419,7 @@ msgstr "Ponto %d" msgid "Visit before..." -msgstr "Visite antes..." +msgstr "Adicionar à rota" msgid "Set as position" msgstr "Definir como posição" @@ -309,7 +428,7 @@ msgstr "Definir como destino" msgid "Add as bookmark" -msgstr "Adicione como favorito" +msgstr "Adicionar como favorito" #, c-format msgid "Point 0x%x 0x%x" @@ -1325,19 +1444,24 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"navit uso:\n" +"empregado no navit:\n" "navit [opções] [arquivo de configuração]\n" -"\t-c : use como arquivo de configuração\n" -"\t-d : define o nível do debug para (0-3). Substitui a definição do " -"arquivo de configuração.\n" -"\t-h: imprima esta informação de utilização e saia.\n" -"\t-v: Imprima a versão e saia.\n" +"\t-c : uso como arquivo de configuração, em vez de usar " +"arquivo padrão.\n" +"\t-d : definir o nível de saída de depuração global para (0=erro, " +"1=aviso, 2=info, 3=depuração).\n" +"\tConfigurações de arquivo de configuração ainda terão efeito quando " +"montados num nível superior.\n" +"\t-h: imprimir esta informação de utilização e sair.\n" +"\t-v: imprimir a versão e sair.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1354,7 +1478,7 @@ #, c-format msgid "Error: No configuration found in config file '%s'\n" -msgstr "" +msgstr "Erro: Nenhuma configuração encontrada no arquivo '%s'\n" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" @@ -1407,7 +1531,7 @@ msgstr "Digite o destino" msgid "Zip Code" -msgstr "Código Postal" +msgstr "CEP" msgid "City" msgstr "Cidade" @@ -1476,6 +1600,12 @@ msgid "Opens address search dialog" msgstr "Abre a busca de endereço" +msgid "_POI search" +msgstr "_Pesquisar POI" + +msgid "Opens POI search dialog" +msgstr "Abre a busca de POIs" + msgid "_Stop Navigation" msgstr "_Cessar a Navegação" @@ -1518,6 +1648,100 @@ msgid "Data" msgstr "Dados" +msgid "Pharmacy" +msgstr "Farmácia" + +msgid "Restaurant" +msgstr "Restaurante" + +msgid "Restaurant. Fast food" +msgstr "Restaurante Fast Food" + +msgid "Hotel" +msgstr "Hotel" + +msgid "Car parking" +msgstr "Estacionamento" + +msgid "Fuel station" +msgstr "Posto de combustível" + +msgid "Bank" +msgstr "Banco" + +msgid "Hospital" +msgstr "Hospital" + +msgid "Cinema" +msgstr "Cinema" + +msgid "Train station" +msgstr "Estação de trem" + +msgid "School" +msgstr "Escola" + +msgid "Police" +msgstr "Polícia" + +msgid "Justice" +msgstr "Justiça" + +msgid "Taxi" +msgstr "Táxi" + +msgid "Shopping" +msgstr "Comprando" + +msgid "Distance from screen center (km)" +msgstr "Distância do centro da tela (km)" + +#, c-format +msgid "POI %s. %s" +msgstr "POI %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Definir destino para %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Definir mapa para o %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "Definir próxima parada parao %ld, %ld \n" + +msgid "POI search" +msgstr "Pesquisar POI" + +msgid "Select a category" +msgstr "Selecione uma categoria" + +msgid "Select a distance to look for (km)" +msgstr "Selecione a distância para pesquisar (km)" + +msgid "Select a POI" +msgstr "Selecione um POI" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Categori­a" + +msgid "Direction" +msgstr "Direção" + +msgid "Distance(m)" +msgstr "Distância (m)" + +msgid "Name" +msgstr "Nome" + +msgid "Visit Before" +msgstr "Visitar Antes" + msgid "N" msgstr "N" @@ -1735,7 +1959,7 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Latitude Longitude" msgid "Enter coordinates, for example:" msgstr "Digite as coordenadas, por exemplo:" @@ -1771,7 +1995,7 @@ msgstr "Descrição da Rota" msgid "Show Locale" -msgstr "Mostrar a Localidade" +msgstr "Inf. Regionais" msgid "Former Destinations" msgstr "Destinos Anteriores" @@ -1824,17 +2048,36 @@ #. Android resource: @strings/position_popup_drive_here msgid "Route to here" -msgstr "Rotear até aqui" +msgstr "Rota até aqui" msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Dados do mapa (c) colaboradores OpenStreetMap, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "Mapas baixados" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "Cancelar" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "Todo o Planeta" @@ -2205,13 +2448,16 @@ msgid "ready" msgstr "pronto" -msgid "Error downloading map!" -msgstr "Erro ao baixar o mapa!" +msgid "Media selected for map storage is not available" +msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Não há espaço livre suficiente" +msgid "Error downloading map!" +msgstr "Erro ao baixar o mapa!" + msgid "Error writing map!" msgstr "Erro escrevendo mapa!" @@ -2278,7 +2524,7 @@ msgstr "Exibição" msgid "Fullscreen" -msgstr "Tela Inteira" +msgstr "Tela cheia" msgid "Window Mode" msgstr "Modo de Janela" @@ -2290,14 +2536,14 @@ "Drop last \n" "Waypoint" msgstr "" -"Última Saída\n" +"Remover último\n" "Ponto" msgid "" "Drop next \n" "Waypoint" msgstr "" -"Saída próxima\n" +"Remover próximo\n" "Ponto" msgid "Satellite Status" @@ -2391,6 +2637,10 @@ msgid "Backup / Restore" msgstr "Backup / Restauração" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Excluir este mapa?" @@ -2417,7 +2667,7 @@ #. Android resource: @strings/address_search_title msgid "Address search" -msgstr "busaca de endereço" +msgstr "Pesquisar endereço" #. Android resource: @strings/address_enter_destination msgid "Enter destination" @@ -2518,3 +2768,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "Restaurar" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "então deixe a rotatória na %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/pt.po.in navit-0.5.0+dfsg.1/po/pt.po.in --- navit-0.5.0~svn5900+dfsg.1/po/pt.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/pt.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,11 +1,13 @@ -# Portuguese translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Portuguese translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # CaioNavas https://launchpad.net/~webmaster-caiomnavas # Carla Pita https://launchpad.net/~carla-pita # Diogo Lavareda https://launchpad.net/~diogolavareda +# Ivo Xavier https://launchpad.net/~ivoxavier # Joel Patrão https://launchpad.net/~jpatrao +# João Pirralha https://launchpad.net/~joaopirralha # Rui Correia https://launchpad.net/~rds-correia # Skippern https://launchpad.net/~gay-today # Sérgio Marques https://launchpad.net/~sergio+marques @@ -15,21 +17,17 @@ # eSkiSo https://launchpad.net/~wise-gdr # lezurdis https://launchpad.net/~f-dos-santos - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-12-01 01:04+0000\n" -"Last-Translator: Sérgio Marques \n" +"PO-Revision-Date: 2015-09-19 14:04+0000\n" +"Last-Translator: João Pirralha \n" "Language-Team: Portuguese \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: pt\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -48,7 +46,7 @@ msgstr "primeira" msgid "second" -msgstr "Segundo" +msgstr "segunda" msgid "third" msgstr "terceira" @@ -85,28 +83,12 @@ msgstr "sexta saída" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "a %d m" - -#, c-format msgid "%d feet" msgstr "%d pés" #, c-format msgid "in %d feet" -msgstr "a %d pés" - -#, c-format -msgid "%d meters" -msgstr "%d metros" - -#, c-format -msgid "in %d meters" -msgstr "a %d metros" +msgstr "em %d pés" #, c-format msgid "%d.%d miles" @@ -114,15 +96,7 @@ #, c-format msgid "in %d.%d miles" -msgstr "a %d.%d milhas" - -#, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d quilómetro" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "a %d.%d quilómetros" +msgstr "em %d.%d milhas" #, c-format msgid "one mile" @@ -133,8 +107,24 @@ #, c-format msgid "in one mile" msgid_plural "in %d miles" -msgstr[0] "a uma milha" -msgstr[1] "a %d milhas" +msgstr[0] "em uma milha" +msgstr[1] "em %d milhas" + +#, c-format +msgid "%d meters" +msgstr "%d metros" + +#, c-format +msgid "in %d meters" +msgstr "em %d metros" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d quilómetro" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "em %d.%d quilómetros" #, c-format msgid "one kilometer" @@ -145,132 +135,260 @@ #, c-format msgid "in one kilometer" msgid_plural "in %d kilometers" -msgstr[0] "a um quilómetro" -msgstr[1] "a %d quilómetros" - -msgid "exit" -msgstr "sair" +msgstr[0] "em um quilómetro" +msgstr[1] "em %d quilómetros" -msgid "into the ramp" -msgstr "na subida" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s para a rua %s%s%s" +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$spara %2$s%3$s%4$s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s no %s%s%s" +msgid "%1$sonto %2$s" +msgstr "%1$spara %2$s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s na %s%s%s" +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$spara o %2$s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s na %s%s%s" +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$spara a %2$s" -#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s" -msgstr "%s na %s" +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$spara %2$s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "direita" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "no acesso à auto-estrada" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "esquerda" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "%sem %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "facilmente " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%sno %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "veementemente " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%sna %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%sem %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "muito veementemente " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "desconhecido " +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "%sna %s" msgid "When possible, please turn around" msgstr "Quando for possível, inverta o sentido de marcha" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "rumo a %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Siga a estrada para a próxima %s" + msgid "Enter the roundabout soon" msgstr "Entre na próxima rotunda" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "Entre na próxima rotunda a %s" +msgstr "Entre na rotunda %s" +msgid "then enter the roundabout" +msgstr "e entre na rotunda" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "e saia da rotunda na %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Saia da rotunda na %1$s %2$s" + +msgid "soon" +msgstr "logo" +msgid "now" +msgstr "agora" + +msgid "then" +msgstr "e depois" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Saia da rotunda na %s" +msgid "then merge%1$s|right" +msgstr "e juntar à direita%1$s" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Siga a estrada para a próxima %s" +msgid "Merge %1$s%2$s|right" +msgstr "Juntar à direita %1$s%2$s" -msgid "soon" -msgstr "logo" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "e juntar à esquerda%1$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Apanhe a %1$s estrada para a %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "Juntar à esquerda %1$s%2$s" + +msgid "on your left" +msgstr "à sua esquerda" + +msgid "on your right" +msgstr "à sua direita" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "depois de %i estradas" +msgid "Take exit %1$s %2$s %3$s" +msgstr "Saia %1$s %2$s %3$s" -msgid "now" -msgstr "agora" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Saia na saída %1$s %2$s%3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "no trevo" + +msgid "at exit" +msgstr "na saída" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "e avance%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "Avance %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "e continue à direita%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "Continue à direita %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "e continue à esquerda%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "Continue à esquerda %1$s%2$s%3$s" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "à direita" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "à esquerda" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "ligeiramente " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "apertadamente " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "depois apanhe a %1$s estrada para a %2$s" +msgstr "depois apanhe a %1$s estrada para %2$s" -msgid "error" -msgstr "erro" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Apanhe a %1$s estrada para a %2$s" + +#, c-format +msgid "after %i roads" +msgstr "depois de %i estradas" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Vire %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "depois vire %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "e dê meia-volta à esquerda" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Dê meia-volta à esquerda %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "e dê meia-volta à direita" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Dê meia-volta à direita %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "siga" + +msgid "then you have reached your destination." +msgstr "depois chegou ao seu destino." +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" -msgstr "Chega ao seu destino em %s" +msgstr "Chega ao seu destino %s" -msgid "then you have reached your destination." -msgstr "depois chegou ao seu destino." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Trevo" + +msgid "Exit" +msgstr "Saída" #. Android resource: @strings/position_popup_title msgid "Position" msgstr "Posição" msgid "Command" -msgstr "Comando" +msgstr "Instrução" msgid "Length" msgstr "Distância" @@ -285,20 +403,20 @@ msgstr "Duração" msgid "Destination Length" -msgstr "Distância do destino" +msgstr "Distância ao destino" msgid "Destination Time" msgstr "Duração até ao destino" msgid "Roadbook" -msgstr "Mapa" +msgstr "Descrição da rota" #, c-format msgid "Waypoint %d" msgstr "Ponto %d" msgid "Visit before..." -msgstr "Visite antes..." +msgstr "Visitar antes de..." msgid "Set as position" msgstr "Definir como posição" @@ -323,7 +441,7 @@ #. 784 msgid "United Arab Emirates" -msgstr "Emiratos Árabes Unidos" +msgstr "Emirados Árabes Unidos" #. 004 msgid "Afghanistan" @@ -1318,28 +1436,34 @@ msgstr "Zimbabué" msgid "* Unknown, add is_in tags to those cities" -msgstr "* Desconhecido, adicione tags \"is_in\" para estas cidades" +msgstr "* Desconhecido, adicione tags \"is_in\" para estas cidades" msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"utilização:\n" -"navit [opções] [ficheiro_configuração]\n" -"\t-c : utilizar como ficheiro de configuração.\n" -"\t-d : define o nível de depuração para (0-3). Substitui a definição " -"do ficheiro de configuração.\n" -"\t-h: mostra estas informações e sai.\n" -"\t-v: mostra a versão e sai.\n" +"Utilização do Navit:\n" +"navit [opções] [ficheiro de configuração]\n" +"\t-c : usar como ficheiro de configuração, em vez de " +"usar o ficheiro pré-definido.\n" +"\t-d : define o nível global de saída de depuração para (0=erro, " +"1=aviso, 2=informação, 3=depuração).\n" +"\tDefinições do ficheiro de configuração irão ter efeito mesmo quando " +"definiram um nível superior.\n" +"\t-h: imprimir esta informação de utilização e sair.\n" +"\t-v: imprimir a versão e sair.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" -msgstr "Ficheiros navit.xml, navit.xml.local não encontrados\n" +msgstr "" +"Ficheiros de configuração navit.xml, navit.xml.local não encontrados\n" #, c-format msgid "Error parsing config file '%s': %s\n" @@ -1352,6 +1476,7 @@ #, c-format msgid "Error: No configuration found in config file '%s'\n" msgstr "" +"Erro: Nenhuma configuração encontrada no ficheiro de configuração '%s'\n" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" @@ -1362,7 +1487,7 @@ #. Safe cast: attr_generic_set_attr does not modify its parameter. msgid "Unnamed vehicle" -msgstr "Viatura sem nome" +msgstr "Veículo sem nome" msgid "Failed to write bookmarks file" msgstr "Erro ao escrever os marcadores" @@ -1421,22 +1546,22 @@ #. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired). msgid "_Display" -msgstr "E_xibir" +msgstr "_Exibir" msgid "_Route" msgstr "_Rota" msgid "_Former Destinations" -msgstr "Destinos an:teriores" +msgstr "Destinos _anteriores" msgid "_Bookmarks" -msgstr "Marca_dores" +msgstr "_Marcadores" msgid "_Map" msgstr "_Mapa" msgid "_Layout" -msgstr "Es_quema" +msgstr "_Esquema" msgid "_Projection" msgstr "_Projeção" @@ -1445,13 +1570,13 @@ msgstr "_Veículo" msgid "Zoom_Out" -msgstr "Redu_zir" +msgstr "_Reduzir" msgid "Decrease zoom level" msgstr "Diminuir nível de ampliação" msgid "Zoom_In" -msgstr "Ampl_iar" +msgstr "_Ampliar" msgid "Increase zoom level" msgstr "Aumentar nível de ampliação" @@ -1460,7 +1585,7 @@ msgstr "_Recalcular" msgid "Redraw map" -msgstr "Refazer mapa" +msgstr "Redesenhar mapa" msgid "_Info" msgstr "_Informação" @@ -1471,6 +1596,12 @@ msgid "Opens address search dialog" msgstr "Abre o diálogo de procura de destino" +msgid "_POI search" +msgstr "_Pesquisar POI" + +msgid "Opens POI search dialog" +msgstr "Abre o diálogo de pesquisa de POI" + msgid "_Stop Navigation" msgstr "Parar _navegação" @@ -1487,32 +1618,126 @@ msgstr "Mostrar _cursor de posição" msgid "_Lock on Road" -msgstr "B_loqueio na estrada" +msgstr "_Bloqueio na estrada" msgid "_Keep orientation to the North" -msgstr "_Manter orientação ao Norte" +msgstr "Manter orientação ao _norte" msgid "Switches map orientation to the north or the vehicle" msgstr "Muda a orientação do mapa para o norte ou para o veículo" msgid "_Roadbook" -msgstr "Ma_pa" +msgstr "_Descrição da rota" msgid "Show/hide route description" msgstr "Mostrar/ocultar descrição da rota" msgid "_Autozoom" -msgstr "Tamanho _automático" +msgstr "_Tamanho automático" msgid "Enable/disable automatic zoom level changing" msgstr "Ativar/desativar tamanho automático da ampliação" msgid "_Fullscreen" -msgstr "Ecrã co_mpleto" +msgstr "_Ecrã completo" msgid "Data" msgstr "Dados" +msgid "Pharmacy" +msgstr "Farmácia" + +msgid "Restaurant" +msgstr "Restaurante" + +msgid "Restaurant. Fast food" +msgstr "Restaurante. Comida rápida" + +msgid "Hotel" +msgstr "Hotel" + +msgid "Car parking" +msgstr "Estacionamento para carros" + +msgid "Fuel station" +msgstr "Posto de abastecimento" + +msgid "Bank" +msgstr "Banco" + +msgid "Hospital" +msgstr "Hospital" + +msgid "Cinema" +msgstr "Cinema" + +msgid "Train station" +msgstr "Estação de comboios" + +msgid "School" +msgstr "Escola" + +msgid "Police" +msgstr "Polícia" + +msgid "Justice" +msgstr "Justiça" + +msgid "Taxi" +msgstr "Táxi" + +msgid "Shopping" +msgstr "Compras" + +msgid "Distance from screen center (km)" +msgstr "Distância ao centro do ecrã (km)" + +#, c-format +msgid "POI %s. %s" +msgstr "POI %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Definir destino para %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Definir mapa para %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "Definir próxima visita para %ld, %ld \n" + +msgid "POI search" +msgstr "Pesquisar POIs" + +msgid "Select a category" +msgstr "Selecione uma categoria" + +msgid "Select a distance to look for (km)" +msgstr "Selecione a distância a pesquisar (km)" + +msgid "Select a POI" +msgstr "Selecione um POI" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Categoria" + +msgid "Direction" +msgstr "Direção" + +msgid "Distance(m)" +msgstr "Distância (m)" + +msgid "Name" +msgstr "Nome" + +msgid "Visit Before" +msgstr "Visitar antes" + msgid "N" msgstr "N" @@ -1584,7 +1809,7 @@ msgstr "Atributos de vista" msgid "Set as position (and deactivate vehicle)" -msgstr "Definir como posição (desativar viatura)" +msgstr "Definir como posição (desativar veículo)" msgid "POIs" msgstr "POIs" @@ -1712,7 +1937,7 @@ #. Contributors msgid "And all the Navit Team" -msgstr "equipa Navit" +msgstr "E toda a equipa do Navit" msgid "members and contributors." msgstr "membros e contribuidores." @@ -1730,10 +1955,10 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Latitude Longitude" msgid "Enter coordinates, for example:" -msgstr "Introduza as coordenadas. Por exemplo:" +msgstr "Introduza as coordenadas, por exemplo:" msgid "Vehicle" msgstr "Veículo" @@ -1745,7 +1970,7 @@ msgstr "Bloqueio na estrada" msgid "Northing" -msgstr "Para norte" +msgstr "Para Norte" msgid "Map follows Vehicle" msgstr "Mapa segue veículo" @@ -1766,13 +1991,13 @@ msgstr "Descrição da rota" msgid "Show Locale" -msgstr "Mostrar local" +msgstr "Exibir região e idioma" msgid "Former Destinations" msgstr "Destinos anteriores" msgid "- No former destinations available -" -msgstr "-Não existem destinos anteriores-" +msgstr "- Não existem destinos anteriores -" msgid "Message" msgstr "Mensagem" @@ -1824,12 +2049,38 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Dados do mapa (c) Colaboradores OpenStreetMap, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" +"A atual localização do mapa %s não está disponível\n" +"Por favor reinicie o Navit após introduzir um cartão SD ou selecionar uma " +"localização do mapa diferente." + msgid "Downloaded maps" msgstr "Mapas transferidos" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" +"Infelizmente não suportamos mapas maiores que 3.8G no Android, por favor " +"selecione um mais pequeno." + msgid "Cancel" msgstr "Cancelar" +msgid "filenamePath" +msgstr "nomedoficheiroCaminho" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" +"Nova localização definida para %s\n" +"Reinicie o Navit para aplicar as alterações." + msgid "Whole Planet" msgstr "Planeta" @@ -2194,19 +2445,22 @@ msgstr "Guiana Francesa" msgid "downloading" -msgstr "a transferir..." +msgstr "a transferir" #. Android resource: @strings/map_download_ready msgid "ready" msgstr "pronto" -msgid "Error downloading map!" -msgstr "Erro ao transferir o mapa!" +msgid "Media selected for map storage is not available" +msgstr "A unidade selecionada para armazenar mapas não está dispoível" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Não existe espaço suficiente" +msgid "Error downloading map!" +msgstr "Erro ao transferir o mapa!" + msgid "Error writing map!" msgstr "Erro ao escrever o mapa!" @@ -2215,11 +2469,11 @@ #. Android resource: @strings/map_download_eta msgid "ETA" -msgstr "ETA" +msgstr "Duração estimada" #. Android resource: @strings/map_download_title msgid "Map download" -msgstr "TransferÊncia de mapa" +msgstr "Transferência do mapa" msgid "Vehicle Position" msgstr "Posição do veículo" @@ -2270,7 +2524,7 @@ "navegação" msgid "Display" -msgstr "Mostrar" +msgstr "Visualização" msgid "Fullscreen" msgstr "Ecrã completo" @@ -2308,7 +2562,7 @@ msgstr "carro_evitar_portagens" msgid "car_pedantic" -msgstr "" +msgstr "carro_pedante" msgid "horse" msgstr "cavalo" @@ -2346,9 +2600,9 @@ msgstr "" "Obrigado por instalar o Navit!\n" "\n" -"Para iniciar, deve selecionar a opção de menu \"Transferir mapas\" para " -"transferir um mapa. Nota: o ficheiro de mapa pode ser bastante extenso " -"(>50MB). Recomenda-se a utilização de uma rede sem fios.\n" +"Para começar, selecione \"Transferir mapas\" no menu para transferir um " +"mapa. Nota: o tamanho do ficheiro de mapa pode ser bastante grande (>50MB) - " +"recomenda-se a utilização de uma rede wifi.\n" "\n" "Dados do mapa: (c) colaboradores OpenStreetMap\n" "\n" @@ -2360,7 +2614,7 @@ #. Android resource: @strings/initial_info_box_more_info msgid "More info" -msgstr "Mais detalhes" +msgstr "Mais informações" #. Android resource: @strings/optionsmenu_zoom_in msgid "Zoom in" @@ -2376,7 +2630,7 @@ #. Android resource: @strings/optionsmenu_toggle_poi msgid "Toggle POIs" -msgstr "Alternar POIs" +msgstr "Ativar POIs" #. Android resource: @strings/optionsmenu_exit_navit msgid "Exit Navit" @@ -2384,7 +2638,11 @@ #. Android resource: @strings/optionsmenu_backup_restore msgid "Backup / Restore" -msgstr "Backup/Restauro" +msgstr "Cópia seg. / Restauro" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "Definir localização do mapa" #. Android resource: @strings/map_delete msgid "Delete this map?" @@ -2392,7 +2650,7 @@ #. Android resource: @strings/map_download_downloading msgid "Downloading:" -msgstr "Transferência:" +msgstr "A transferir:" #. Android resource: @strings/map_download_download_error msgid "Error downloading map." @@ -2425,7 +2683,7 @@ #. Android resource: @strings/address_search_searching msgid "Searching..." -msgstr "Procura..." +msgstr "A procurar..." #. Android resource: @strings/address_search_not_found msgid "Address not found" @@ -2433,11 +2691,11 @@ #. Android resource: @strings/address_search_getting_results msgid "Getting search results" -msgstr "Obtenção dos resultados" +msgstr "A obter resultados" #. Android resource: @strings/address_search_loading_results msgid "Loading search results" -msgstr "Carregamento de resultados" +msgstr "Carregando resultados" #. Android resource: @strings/address_search_no_results msgid "No results found" @@ -2445,7 +2703,7 @@ #. Android resource: @strings/address_search_no_text_entered msgid "No text entered" -msgstr "Texto não introduzido" +msgstr "Nenhum texto introduzido" #. Android resource: @strings/address_search_set_destination msgid "Setting destination to:" @@ -2457,27 +2715,27 @@ #. Android resource: @strings/please_insert_an_sd_card msgid "Please insert an SD Card" -msgstr "Por favor insira o cartão SD" +msgstr "Por favor insira um cartão SD" #. Android resource: @strings/backing_up msgid "Backing up..." -msgstr "Backup..." +msgstr "A criar cópia de segurança..." #. Android resource: @strings/restoring msgid "Restoring..." -msgstr "Restauro..." +msgstr "A restaurar..." #. Android resource: @strings/failed_to_create_backup_directory msgid "Failed to create backup directory" -msgstr "Erro ao criar pasta de backup" +msgstr "Falha ao criar o diretório da cópia de segurança" #. Android resource: @strings/backup_failed msgid "Backup failed" -msgstr "Erro ao efetuar backup" +msgstr "A cópia de segurança falhou" #. Android resource: @strings/no_backup_found msgid "No backup found" -msgstr "Backup não encontrado" +msgstr "Nenhuma cópia de segurança encontrada" #. Android resource: @strings/failed_to_restore msgid "Failed to restore" @@ -2485,7 +2743,7 @@ #. Android resource: @strings/backup_successful msgid "Backup successful" -msgstr "Backup efetuado" +msgstr "Cópia de segurança efetuada com sucesso" #. Android resource: @strings/restore_successful_please_restart_navit msgid "" @@ -2497,7 +2755,7 @@ #. Android resource: @strings/backup_not_found msgid "Backup not found" -msgstr "Backup não encontrado" +msgstr "Cópia de segurança não encontrada" #. Android resource: @strings/restore_failed msgid "Restore failed" @@ -2505,12 +2763,30 @@ #. Android resource: @strings/select_backup msgid "Select backup" -msgstr "Escolha o backup" +msgstr "Escolha a cópia de segurança" #. Android resource: @strings/backup msgid "Backup" -msgstr "Backup" +msgstr "Cópia de segurança" #. Android resource: @strings/restore msgid "Restore" msgstr "Restauro" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "Dados do motor de síntese de voz em falta no sistema" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" +"O Navit pode usar qualquer motor de síntese de voz no dispositivo. O motor " +"atualmente selecionado reporta não suportar o seu idioma. Pedir ao sistema " +"para exibir o diálogo de transferência de voz?" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "e saia da rotunda na %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ro.po.in navit-0.5.0+dfsg.1/po/ro.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ro.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ro.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,33 +1,31 @@ -# Romanian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Romanian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Ciprian https://launchpad.net/~c1pr1ancip # Eddy Petrisor https://launchpad.net/~eddy-petrisor-gmail # KaZeR https://launchpad.net/~kazer # Lucian Adrian Grijincu https://launchpad.net/~lucian.grijincu +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Nostriel https://launchpad.net/~nostriel # Ursache Dogariu Daniel https://launchpad.net/~danniel # dodobird https://launchpad.net/~dorinnirod # fasiol https://launchpad.net/~fasiol2 # igorashu https://launchpad.net/~ionut-soare - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:44+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Romanian \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 % 100 > 19) || ((n % 100 " "== 0) && (n != 0))) ? 2: 1));\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: ro\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -82,14 +80,6 @@ msgstr "a șasea ieșire" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "în %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -98,14 +88,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metri" - -#, c-format -msgid "in %d meters" -msgstr "în %d metri" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -114,14 +96,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d kilometri" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "în %d.%d kilometri" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -134,6 +108,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metri" + +#, c-format +msgid "in %d meters" +msgstr "în %d metri" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometri" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "în %d.%d kilometri" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "un kilometru" @@ -147,122 +137,250 @@ msgstr[1] "în %d kilometri" msgstr[2] "în %d de kilometri" -msgid "exit" -msgstr "ieșire" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "pe rampă" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s pe strada %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%spe %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s pe %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%spe %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s pe %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%spe %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s pe %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%spe %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" -msgstr "%s spre %s" - -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "la dreapta" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "la stânga" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "uşor " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "strâns " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "foarte puternic " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "necunoscut " +msgstr "%sspre %s" msgid "When possible, please turn around" msgstr "Când este posibil, întoarceţi" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Urmați drumul pentru încă %s" + msgid "Enter the roundabout soon" msgstr "Intrați în curând în giratoriu" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" +msgstr "Intrați în giratoriu %s" + +msgid "then enter the roundabout" msgstr "" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "apoi ieșiți din giratoriu la %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Ieșiți din giratoriu la %1$s %2$s" + +msgid "soon" +msgstr "curând" +msgid "now" +msgstr "acum" + +msgid "then" +msgstr "apoi" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Ieșiți din giratoriu la %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Urmați drumul pentru încă %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "curând" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Virați %2s pe %1s stradă" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "după %i străzi" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "acum" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "la dreapta" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "la stânga" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "uşor " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "strâns " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "apoi faceți %2s pe %1s stradă" +msgstr "" -msgid "error" -msgstr "eroare" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Virați %2s pe %1s stradă" + +#, c-format +msgid "after %i roads" +msgstr "după %i străzi" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Virați %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "apoi virați %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "apoi întoarceţi" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Întoarceţi %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "apoi întoarceţi" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Întoarceţi %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "apoi ajungeți la destinație." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Ați ajuns la destinație %s" -msgid "then you have reached your destination." -msgstr "apoi ajungeți la destinație." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Nod" + +msgid "Exit" +msgstr "Ieșire" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1322,11 +1440,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1463,6 +1583,12 @@ msgid "Opens address search dialog" msgstr "Deschide căutare adresa" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Oprește navigarea" @@ -1505,6 +1631,100 @@ msgid "Data" msgstr "Date" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1816,12 +2036,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2192,13 +2431,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2363,6 +2605,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2488,3 +2734,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "apoi ieșiți din giratoriu la %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ru.po.in navit-0.5.0+dfsg.1/po/ru.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ru.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ru.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,8 +1,9 @@ -# Russian (ru) translations for navit -# Copyright (C) 2006-2013 The Navit Team +# Russian (ru) translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. - +# Many thanks to the contributors of this translation: # Alexey Reztsov https://launchpad.net/~ariafan +# Artem Anufrij https://launchpad.net/~artem-anufrij # Artiom https://launchpad.net/~ar-molchanov # AsstZD https://launchpad.net/~eskaer-spamsink # Budim https://launchpad.net/~budmitry @@ -17,30 +18,26 @@ # Sergey Shilov https://launchpad.net/~sss-s-s-s # Takuto https://launchpad.net/~takutoatmorgue # Usul https://launchpad.net/~usul1 -# Vlad https://launchpad.net/~send-me-letter # cmdrhenner https://launchpad.net/~cmdrhenner # jmb_kz https://launchpad.net/~jmb-kz # kisaa https://launchpad.net/~alex-kisaa # kisaa https://launchpad.net/~kisaa-mail -# zcc https://launchpad.net/~zcc +# tryagain https://launchpad.net/~mdankov # Павел https://launchpad.net/~pavel-sgn msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-12-11 23:50+0100\n" -"PO-Revision-Date: 2013-12-10 00:52+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-11-15 20:38+0000\n" +"Last-Translator: tryagain \n" "Language-Team: Rustam T. Usmanov\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-Launchpad-Export-Date: 2013-12-24 22:21+0000\n" -"X-Generator: Launchpad (build 16877)\n" -"Language: \n" +"Language: ru\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -52,25 +49,25 @@ #. TRANSLATORS: the following counts refer to streets msgid "zeroth" -msgstr "нулевой" +msgstr "нулевую" msgid "first" -msgstr "первый" +msgstr "первую" msgid "second" -msgstr "второй" +msgstr "вторую" msgid "third" -msgstr "третий" +msgstr "третью" msgid "fourth" -msgstr "четвертый" +msgstr "четвертую" msgid "fifth" -msgstr "пятый" +msgstr "пятую" msgid "sixth" -msgstr "шестой" +msgstr "шестую" #. TRANSLATORS: the following counts refer to roundabout exits msgid "zeroth exit" @@ -95,14 +92,6 @@ msgstr "шестой съезд" #, c-format -msgid "%d m" -msgstr "%d м" - -#, c-format -msgid "in %d m" -msgstr "через %d м" - -#, c-format msgid "%d feet" msgstr "%d футов" @@ -111,14 +100,6 @@ msgstr "через %d футов" #, c-format -msgid "%d meters" -msgstr "%d метров" - -#, c-format -msgid "in %d meters" -msgstr "через %d метров" - -#, c-format msgid "%d.%d miles" msgstr "%d,%d миль" @@ -127,28 +108,36 @@ msgstr "через %d,%d миль" #, c-format -msgid "%d.%d kilometers" -msgstr "%d,%d километров" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "через %d,%d километров" - -#, c-format msgid "one mile" msgid_plural "%d miles" -msgstr[0] "" +msgstr[0] "%d миля" msgstr[1] "%d мили" msgstr[2] "%d миль" #, c-format msgid "in one mile" msgid_plural "in %d miles" -msgstr[0] "" +msgstr[0] "через %d милю" msgstr[1] "через %d мили" msgstr[2] "через %d миль" #, c-format +msgid "%d meters" +msgstr "%d метров" + +#, c-format +msgid "in %d meters" +msgstr "через %d метров" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d,%d километров" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "через %d,%d километров" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d километр" @@ -159,125 +148,253 @@ msgid "in one kilometer" msgid_plural "in %d kilometers" msgstr[0] "через %d километр" -msgstr[1] "%d километра" -msgstr[2] "%d километров" +msgstr[1] "через %d километра" +msgstr[2] "через %d километров" -msgid "exit" -msgstr "съезд" - -msgid "into the ramp" -msgstr "съезд на" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s на улицу %s%s%s" +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$s на трассу %2$s%3$s%4$s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s на %s%s%s" +msgid "%1$sonto %2$s" +msgstr "%1$s на трассу %2$s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s на %s%s%s" +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$s на трассу %2$s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s на %s%s%s" +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$s на трассу %2$s" -#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s" -msgstr "%s на %s" +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$s на трассу %2$s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "направо" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "на рампу" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "налево" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "%s, цель - %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "немного " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%s, цель - %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "круто " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%s, цель - %s%s%s" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "очень круто " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "неизвестно " +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%s, цель - %s%s%s" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "%s, цель - %s" msgid "When possible, please turn around" msgstr "Развернитесь, пожалуйста, если это возможно" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "по указателю %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Двигайтесь по дороге следующие %s" + msgid "Enter the roundabout soon" msgstr "Скоро круговое движение" #. TRANSLATORS: %s is the distance to the roundabout #, c-format msgid "Enter the roundabout %s" -msgstr "Через %s круговое движение" +msgstr "%s круговое движение" + +msgid "then enter the roundabout" +msgstr "затем круговое движение" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Круговое движение, %1$s %2$s" +msgid "soon" +msgstr "скоро" + +msgid "now" +msgstr "сейчас" + +msgid "then" +msgstr "после чего" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" -msgstr "потом съезжайте с кругового движения на %s" +msgid "then merge%1$s|right" +msgstr "затем выезд вправо %1$s" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Съезжайте с кругового движения на %s" +msgid "Merge %1$s%2$s|right" +msgstr "%1$s выезд вправо %2$s" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Двигайтесь по дороге следующие %s" +msgid "then merge%1$s|left" +msgstr "затем выезжайте влево %1$s" -msgid "soon" -msgstr "скоро" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "%1$s выезд влево %2$s" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your left" +msgstr "влево" + +msgid "on your right" +msgstr "вправо" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Выезжайте на %1$s дорогу в направлении %2$s" +msgid "Take exit %1$s %2$s %3$s" +msgstr "%3$s съезжайте %2$s %1$s" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" -msgstr "после %i дорог" +msgid "Take the exit %1$s %2$s%3$s" +msgstr "%2$s съезжайте %1$s %3$s" -msgid "now" -msgstr "сейчас" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "на развязке" + +msgid "at exit" +msgstr "на съезде" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "затем проезжайте развилку прямо %1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "%1$s проезжайте развилку прямо %2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "затем возмите правее%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "%1$s возмите правее %2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "затем возмите левее%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "%1$s возмите левее %2$s%3$s" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "направо" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "налево" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "немного " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "круто " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "после чего выезжайте на %1$s дорогу в направлении %2$s" +msgstr "затем выезжайте на дорогу %1$s в направлении %2$s" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Выезжайте на %1$s дорогу в направлении %2$s" -msgid "error" -msgstr "ошибка" +#, c-format +msgid "after %i roads" +msgstr "после %i дорог" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" -msgstr "Сверните %1$s%2$s %3$s%4$s" +msgstr "%3$s сверните %1$s%2$s %4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "после чего поверните %1$s%2$s на %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "затем развернитесь влево" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "%1$s разворот налево" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "затем развернитесь вправо" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "%1$s разворот направо" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "следуйте" + +msgid "then you have reached your destination." +msgstr "после чего вы прибудете в пункт назначения" +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Вы прибыли в пункт назначения %s" -msgid "then you have reached your destination." -msgstr "после чего вы прибудете в пункт назначения" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Развязка" + +msgid "Exit" +msgstr "Съезд" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1337,19 +1454,14 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" -"Использование navit:\n" -"navit [параметры] [файл_настроек]\n" -"\t-c <файл>: использовать <файл> с настройками\n" -"\t-d : установить уровень отладочных сообщений (0-3). Имеет приоритет " -"над параметром в файле настроек.\n" -"\t-h: показать эту подсказку и выйти.\n" -"\t-v: показать информацию о версии и выйти.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" @@ -1363,6 +1475,10 @@ msgid "Using config file '%s'\n" msgstr "Используется файл настроек '%s'\n" +#, c-format +msgid "Error: No configuration found in config file '%s'\n" +msgstr "Ошибка: Отсутствует конфигурация в файле '%s'\n" + msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" msgstr "" @@ -1483,6 +1599,12 @@ msgid "Opens address search dialog" msgstr "Диалог поиска по адресу" +msgid "_POI search" +msgstr "Поиск _POI" + +msgid "Opens POI search dialog" +msgstr "Открыть диалог поиска точек интереса" + msgid "_Stop Navigation" msgstr "Остановить навигацию" @@ -1525,6 +1647,100 @@ msgid "Data" msgstr "Данные" +msgid "Pharmacy" +msgstr "Аптека" + +msgid "Restaurant" +msgstr "Ресторан" + +msgid "Restaurant. Fast food" +msgstr "Ресторан. Фастфуд" + +msgid "Hotel" +msgstr "Гостиница" + +msgid "Car parking" +msgstr "Стоянка" + +msgid "Fuel station" +msgstr "Заправочная станция" + +msgid "Bank" +msgstr "Банк" + +msgid "Hospital" +msgstr "Больница" + +msgid "Cinema" +msgstr "Кинотеатр" + +msgid "Train station" +msgstr "Железнодорожная станция" + +msgid "School" +msgstr "Школа" + +msgid "Police" +msgstr "Полиция" + +msgid "Justice" +msgstr "Суды" + +msgid "Taxi" +msgstr "Такси" + +msgid "Shopping" +msgstr "Магазин" + +msgid "Distance from screen center (km)" +msgstr "Расстояние от центра экрана (км)" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "Поиск POI" + +msgid "Select a category" +msgstr "Выберите категорию" + +msgid "Select a distance to look for (km)" +msgstr "Выберите расстояние для поиска (км)" + +msgid "Select a POI" +msgstr "Выберите POI" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Категория" + +msgid "Direction" +msgstr "Направление" + +msgid "Distance(m)" +msgstr "Расстояние (м)" + +msgid "Name" +msgstr "Название" + +msgid "Visit Before" +msgstr "Заехать перед..." + msgid "N" msgstr "С" @@ -1741,8 +1957,8 @@ #. #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) -msgid "Longitude Latitude" -msgstr "Долгота Широта" +msgid "Latitude Longitude" +msgstr "Широта Долгота" msgid "Enter coordinates, for example:" msgstr "Введите координаты, например:" @@ -1836,12 +2052,38 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "Данные карты (c) участники OpenStreetMap, ODBL" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" +"Папка %s, выбранная для хранения карт, недоступна.\n" +"Пожалуйста, перезагрузите Navit после подключения SD карты, или выберите " +"другую папку." + msgid "Downloaded maps" msgstr "Загруженные карты" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" +"К сожалению, карты свыше 3.8 Гб не поддерживаются в Android версии. Выберите " +"другую карту." + msgid "Cancel" +msgstr "Отмена" + +msgid "filenamePath" msgstr "" +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" +"Выбрана папка %s\n" +"Перезапустите Navit для применения изменений." + msgid "Whole Planet" msgstr "Вся планета" @@ -2113,7 +2355,7 @@ msgstr " (кроме Аляски и Гавайских о-вов)" msgid "Midwest" -msgstr "" +msgstr "Средний Запад" msgid "Michigan" msgstr "Мичиган" @@ -2212,13 +2454,16 @@ msgid "ready" msgstr "готово" -msgid "Error downloading map!" -msgstr "Ошибка загрузки карты!" +msgid "Media selected for map storage is not available" +msgstr "Устройство для хранения карт недоступно." #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "Не достаточно места" +msgid "Error downloading map!" +msgstr "Ошибка загрузки карты!" + msgid "Error writing map!" msgstr "Ошибка записи карты!" @@ -2236,6 +2481,98 @@ msgid "Vehicle Position" msgstr "Местоположение автомобиля" +msgid "Main menu" +msgstr "Главное меню" + +msgid "" +"Show\n" +"Map" +msgstr "" +"Показать\n" +"Карту" + +msgid "Settings" +msgstr "Настройки" + +msgid "Tools" +msgstr "Инструменты" + +msgid "Route" +msgstr "Маршрут" + +msgid "About" +msgstr "О программе" + +msgid "Quit" +msgstr "Выход" + +msgid "Actions" +msgstr "Команды" + +msgid "" +"Former\n" +"Destinations" +msgstr "" +"Старые\n" +"маршруты" + +msgid "Coordinates" +msgstr "Координаты" + +msgid "" +"Stop\n" +"Navigation" +msgstr "" +"Прекращение\n" +"навигации" + +msgid "Display" +msgstr "Дисплей" + +msgid "Fullscreen" +msgstr "Во весь экран" + +msgid "Window Mode" +msgstr "Режим окна" + +msgid "Description" +msgstr "Описание" + +msgid "" +"Drop last \n" +"Waypoint" +msgstr "" +"Удалить последнюю \n" +"точку" + +msgid "" +"Drop next \n" +"Waypoint" +msgstr "" +"Удалить следующую \n" +"точку" + +msgid "Satellite Status" +msgstr "Статус спутников" + +msgid "NMEA Data" +msgstr "Данные NMEA" + +msgid "car_shortest" +msgstr "машина (кратчайший путь)" + +msgid "car_avoid_tolls" +msgstr "машина (избегать платных дорог)" + +msgid "car_pedantic" +msgstr "машина (педантичный)" + +msgid "horse" +msgstr "лошадь" + +msgid "Truck" +msgstr "Грузовик" + #. Strings from android/res/values/strings.xml #. Android resource: @strings/yes msgid "Yes" @@ -2270,7 +2607,7 @@ "Примечание: файл карты может быть очень большим (>50MB) - рекомендуется " "использовать подключениеWi-Fi.\n" "\n" -"Mapdata: (c) участники OpenStreetMap\n" +"Картографические данные: (c) участники OpenStreetMap\n" "\n" "Приятного общения с Navit!" @@ -2306,6 +2643,10 @@ msgid "Backup / Restore" msgstr "Копировать / Восстановить" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "Выбрать папку для хранения карт" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "Удалить эту карту?" @@ -2404,7 +2745,7 @@ #. Android resource: @strings/backup_successful msgid "Backup successful" -msgstr "Восстановление завершено" +msgstr "Резервное копирование успешно завершено" #. Android resource: @strings/restore_successful_please_restart_navit msgid "" @@ -2434,116 +2775,21 @@ msgid "Restore" msgstr "Восстановление из копии" -msgid "Main menu" -msgstr "Главное меню" - -msgid "" -"Show\n" -"Map" -msgstr "" -"Показать\n" -"Карту" - -msgid "Settings" -msgstr "Настройки" - -msgid "Tools" -msgstr "Инструменты" - -msgid "Route" -msgstr "Маршрут" - -msgid "About" -msgstr "О программе" - -msgid "Quit" -msgstr "Выход" - -msgid "Actions" -msgstr "Команды" - -msgid "" -"Former\n" -"Destinations" -msgstr "" -"Старые\n" -"маршруты" - -msgid "Coordinates" -msgstr "Координаты" - -msgid "" -"Stop\n" -"Navigation" -msgstr "" -"Прекращение\n" -"навигации" - -msgid "Display" -msgstr "Дисплей" - -msgid "Fullscreen" -msgstr "Во весь экран" - -msgid "Window Mode" -msgstr "Режим окна" - -msgid "Description" -msgstr "Описание" +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "В системе отсутствуют нобходимые голосовые настройки" +#. Android resource: @strings/TTS_qery_install_data msgid "" -"Drop last \n" -"Waypoint" -msgstr "" -"Удалить последнюю \n" -"точку" - -msgid "" -"Drop next \n" -"Waypoint" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" msgstr "" -"Удалить следующую \n" -"точку" - -msgid "Satellite Status" -msgstr "Статус спутников" - -msgid "NMEA Data" -msgstr "Данные NMEA" - -msgid "car_shortest" -msgstr "машина (кратчайший путь)" +"Navit может использовать любое установленное в системе приложение " +"преобразования текста в речь. Выбранное сейчас приложение сообщает о " +"невозможности работы на выбранном языке. Попросим систему показать диалог " +"загрузки голосовых данных?" -msgid "car_avoid_tolls" -msgstr "машина (избегать платных дорог)" - -msgid "car_pedantic" -msgstr "машина (педантично)" - -msgid "horse" -msgstr "лошадь" - -#. chr: -#. flags used for a truck: (first flag number is 0) -#. 8: SIZE_OR_WEIGHT_LIMIT -#. 21: TRANSPORT_TRUCK -#. speed setup: -#. 'speed' data of the atkaction for a car is -#. reduced about 10 km/h. When the speed was at -#. 10 km/h, I reduced it to 5 km/h. -#. 'route_weight' data has been treated in the same way. -#. If you want to discourage the use of small roads, -#. just reduce this value. -#. size and weight setup: -#. This is an example, you have to use the data of your truck. -#. bobshaffer's standard truck: -#. (1 lb = 453.59237 g, 1 foot = .3048 m) -#. (data has to be in [cm] and [kg] according to 'atkaction.h') -#. vehicle_width= 9 feet, 274 cm -#. vehicle_height= 13.5 feet, 411 cm -#. vehicle_length= 70 feet, 2134 cm -#. vehicle_weight= 80000 lbs, 36287 kg -#. vehicle_axle_weight= 34000 lbs, 15422 kg -#. -msgid "Truck" -msgstr "Грузовик" +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "затем %2$s съезжайте с круга на %1$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/sc.po.in navit-0.5.0+dfsg.1/po/sc.po.in --- navit-0.5.0~svn5900+dfsg.1/po/sc.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/sc.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,22 @@ -# Sardinian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Sardinian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Rex Sanna https://launchpad.net/~rex-sanna - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2011-02-05 18:46+0000\n" -"Last-Translator: Rex Sanna \n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Sardinian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: sc\n" msgid "Running from source directory\n" msgstr "Leghende dae sos sorgentese\n" @@ -72,14 +70,6 @@ msgstr "" #, c-format -msgid "%d m" -msgstr "'%d' minutu" - -#, c-format -msgid "in %d m" -msgstr "in %d minutoso" - -#, c-format msgid "%d feet" msgstr "" @@ -88,14 +78,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metroso" - -#, c-format -msgid "in %d meters" -msgstr "in %d metroso" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -104,14 +86,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d, %d chilometroso" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "in %d, %d chilometroso" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -124,6 +98,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metroso" + +#, c-format +msgid "in %d meters" +msgstr "in %d metroso" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d, %d chilometroso" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "in %d, %d chilometroso" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "unu chilometru" @@ -135,64 +125,72 @@ msgstr[0] "in unu chilometru" msgstr[1] "in %d chilometroso" -msgid "exit" -msgstr "essi" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "in sa rampa" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s in s\\'istrada %s %s %s" +msgid "%sinto %s%s%s" +msgstr "%sin s\\'istrada %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s in su %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sin su %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s in sa %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sin sa %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s in su %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sin su %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" -msgstr "%s in sa %s" - -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "destra" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "manca" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "fatzilmente " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "fortemente " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "meda forte " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "inconnottu " +msgstr "%sin sa %s" msgid "When possible, please turn around" msgstr "Commente possibile torra in daesecusu" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Sichi s'istrada fintzasa a %s" + msgid "Enter the roundabout soon" msgstr "" @@ -201,56 +199,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "tando lassa sa rotatoria a %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Lassa sa rotatoria a %1$s %2$s" + +msgid "soon" +msgstr "prestu" +msgid "now" +msgstr "como" + +msgid "then" +msgstr "tando" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "lassa sa rotatoria a %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Sichi s'istrada fintzasa a %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "prestu" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Pica sa %1$s istrada a %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "dopu %i istradasa" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "como" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "destra" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "manca" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "fatzilmente " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "fortemente " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "tando pica sa %1$s istrada a %2$s" +msgstr "" -msgid "error" -msgstr "errore" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Pica sa %1$s istrada a %2$s" + +#, c-format +msgid "after %i roads" +msgstr "dopu %i istradasa" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Zira %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "tando zira %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "tando torra in daesecusu" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Torra in daesecusu %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "tando torra in daesecusu" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Torra in daesecusu %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "sichi" +msgid "then you have reached your destination." +msgstr "tando ses arribbau" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Ses arribbau a %s" -msgid "then you have reached your destination." -msgstr "tando ses arribbau" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Essi" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1310,11 +1428,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1571,12 @@ msgid "Opens address search dialog" msgstr "Apperi sa bentana pro chircare istradasa" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1619,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1804,12 +2024,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2419,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2351,6 +2593,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2476,3 +2722,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "tando lassa sa rotatoria a %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/si.po.in navit-0.5.0+dfsg.1/po/si.po.in --- navit-0.5.0~svn5900+dfsg.1/po/si.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/si.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,21 @@ -# Sinhalese translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Sinhalese translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # සපුමල් බණ්ඩාර https://launchpad.net/~sapumalbandaraucsc - msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-06-02 06:14+0000\n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" "Last-Translator: සපුමල් බණ්ඩාර \n" "Language-Team: Sinhalese \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: si\n" msgid "Running from source directory\n" msgstr "මූල ඩිරෙක්ටරියෙන් විචලනය වේ\n" @@ -72,14 +69,6 @@ msgstr "සයවන පිටවුම" #, c-format -msgid "%d m" -msgstr "විනාඩි %d" - -#, c-format -msgid "in %d m" -msgstr "විනාඩි %d කින්" - -#, c-format msgid "%d feet" msgstr "" @@ -88,14 +77,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "මීටර %d" - -#, c-format -msgid "in %d meters" -msgstr "මීටර %d කින්" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -104,14 +85,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "කිලෝ මීටර %d.%d" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "කිලෝ මීටර %d.%d කින්" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -124,6 +97,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "මීටර %d" + +#, c-format +msgid "in %d meters" +msgstr "මීටර %d කින්" + +#, c-format +msgid "%d.%d kilometers" +msgstr "කිලෝ මීටර %d.%d" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "කිලෝ මීටර %d.%d කින්" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "කිලෝ මීටරයයි" @@ -135,64 +124,72 @@ msgstr[0] "කිලෝ මීටරයකින්" msgstr[1] "කිලෝ මීටර %d කින්" -msgid "exit" -msgstr "පිටවුම" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "රැම්පය තුළට" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s %s %s %s මාර්ගය තුළට" +msgid "%sinto %s%s%s" +msgstr "%s %s %s %s තුළට" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s %s %s %s තුළට | පුරුෂ ආකාරය" +msgid "%sinto %s%s%s|masculine form" +msgstr "%s %s %s %s තුළට" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s %s %s %s තුළට | ස්ත්‍රී ආකාරය" +msgid "%sinto %s%s%s|feminine form" +msgstr "%s %s %s %s තුළට" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s %s %s %s තුළට | උදාසීන ආකාරය" +msgid "%sinto %s%s%s|neuter form" +msgstr "%s %s %s %s තුළට" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%s %s තුළට" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "දකුණ" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "වම" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "පහසුවෙන් " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "ශක්තිමත් ලෙස " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "සැබවින්ම ශක්තිමත් ලෙස " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "නොදන්නා " - msgid "When possible, please turn around" msgstr "හැකියාව ඇතිවිට දී, කරුණාකර හැරෙන්න." +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "මීළඟ %s දක්වා මාර්ගය හඹායන්න." + msgid "Enter the roundabout soon" msgstr "" @@ -201,57 +198,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "එවිට %s හිදී වටරවුමෙන් ඉවත්වන්න." +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "%1$s %2$s හිදී වටරවුමෙන් ඉවත්වන්න." + +msgid "soon" +msgstr "ලඟදීම" + +msgid "now" +msgstr "දැන්" + +msgid "then" +msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "%s හිදී වටරවුමෙන් ඉවත්වන්න." +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "මීළඟ %s දක්වා මාර්ගය හඹායන්න." +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "ලඟදීම" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "ගන්න %1$s මාර්ගය %2$s ට" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "මාර්ග %i පසු" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "දැන්" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "දකුණ" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "වම" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "පහසුවෙන් " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "ශක්තිමත් ලෙස " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "එවිට ගන්න %1$s මාර්ගය %2$s ට" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "ගන්න %1$s මාර්ගය %2$s ට" -msgid "error" -msgstr "දෝෂය" +#, c-format +msgid "after %i roads" +msgstr "මාර්ග %i පසු" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "%1$s%2$s %3$s%4$s හරවන්න" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "එවිට හරවන්න %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" -msgstr "ඔබ ඔබේ ගමනාන්තය වන %s ට ළඟා වී ඇත." +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" msgid "then you have reached your destination." msgstr "එවිට ඔබ ඔබේ ගමනාන්තයට ළඟා වී ඇත." +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "ඔබ ඔබේ ගමනාන්තය වන %s ට ළඟා වී ඇත." + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "පිටවුම" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "ස්ථානය" @@ -1310,11 +1427,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1570,12 @@ msgid "Opens address search dialog" msgstr "ලිපින සෙවුම් සංවාදය විවෘත කරයි" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1618,100 @@ msgid "Data" msgstr "දත්ත" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "උ" @@ -1804,12 +2023,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2418,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2351,6 +2592,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2476,3 +2721,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "එවිට %1$s %2$s හිදී වටරවුමෙන් ඉවත්වන්න." diff -Nru navit-0.5.0~svn5900+dfsg.1/po/sk.po.in navit-0.5.0+dfsg.1/po/sk.po.in --- navit-0.5.0~svn5900+dfsg.1/po/sk.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/sk.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,12 +1,12 @@ -# Slovak (sk) translations for navit -# Copyright (C) 2006-2013 The Navit Team +# Slovak translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. - +# Many thanks to the contributors of this translation: # Eduard DRUSA https://launchpad.net/~ventyl86 # František Horínek https://launchpad.net/~frantisekhorinek +# GizmoSK https://launchpad.net/~gizmosk # KaZeR https://launchpad.net/~kazer # Miroslav Ďurian https://launchpad.net/~aasami -# Prescott_SK https://launchpad.net/~prescott66 # helix84 https://launchpad.net/~helix84 # kayle.sk https://launchpad.net/~kayle.sk # laznik https://launchpad.net/~orders-strings @@ -15,16 +15,14 @@ msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-10 21:46+0200\n" -"PO-Revision-Date: 2013-09-28 01:44+0000\n" -"Last-Translator: kayle.sk \n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" +"Last-Translator: GizmoSK \n" "Language-Team: Slovenčina\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-Launchpad-Export-Date: 2013-10-26 21:48+0000\n" -"X-Generator: Launchpad (build 16810)\n" +"Language: sk\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -79,36 +77,42 @@ msgstr "šiesty výjazd" #, c-format -msgid "%d m" -msgstr "%d m" +msgid "%d feet" +msgstr "%d stôp" #, c-format -msgid "in %d m" -msgstr "o %d m" +msgid "in %d feet" +msgstr "o %d stôp" #, c-format -msgid "%d feet" -msgstr "" +msgid "%d.%d miles" +msgstr "%d.%d míľ" #, c-format -msgid "in %d feet" -msgstr "" +msgid "in %d.%d miles" +msgstr "o %d.%d míľ" #, c-format -msgid "%d meters" -msgstr "%d metrov" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "%d míľa" +msgstr[1] "%d míle" +msgstr[2] "%d míľ" #, c-format -msgid "in %d meters" -msgstr "o %d metrov" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "o %d míľu" +msgstr[1] "o %d míle" +msgstr[2] "o %d míľ" #, c-format -msgid "%d.%d miles" -msgstr "" +msgid "%d meters" +msgstr "%d metrov" #, c-format -msgid "in %d.%d miles" -msgstr "" +msgid "in %d meters" +msgstr "o %d metrov" #, c-format msgid "%d.%d kilometers" @@ -119,18 +123,6 @@ msgstr "o %d.%d kilometrov" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d kilometrov" @@ -144,64 +136,72 @@ msgstr[1] "o jeden kilometer" msgstr[2] "o %d kilometre" -msgid "exit" -msgstr "výjazd" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "na privádzač" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s do ulice %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sdo %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s do %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sdo %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s do %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sdo %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s do %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sdo %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%s na %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "vpravo" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "vľavo" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "mierne " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "prudko " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "naozaj silno " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "neznámy " - msgid "When possible, please turn around" msgstr "Ak to bude možné, prosím, otočte sa" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Pokračujte naďalej po ceste %s" + msgid "Enter the roundabout soon" msgstr "Vstúpte do kruhového objazdu onedlho" @@ -210,56 +210,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "potom opustite kruhový objazd na %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Opustite kruhový objazd na %1$s %2$s" + +msgid "soon" +msgstr "onedlho" +msgid "now" +msgstr "teraz" + +msgid "then" +msgstr "potom" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Opustite kruhový objazd na %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Pokračujte naďalej po ceste %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "onedlho" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Choďte %1$s cestou na %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "po %i cestách" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "teraz" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "vpravo" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "vľavo" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "mierne " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "prudko " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "potom nasledujte cestu %1$s do %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Choďte %1$s cestou na %2$s" -msgid "error" -msgstr "chyba" +#, c-format +msgid "after %i roads" +msgstr "po %i cestách" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Odbočte %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "potom %1$s odbočte %2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "potom otočte sa" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Otočte sa %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "potom otočte sa" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Otočte sa %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "potom dosiahnete svoj cieľ cesty" +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Dorazili ste do svojho cieľa %s" -msgid "then you have reached your destination." -msgstr "potom dosiahnete svoj cieľ cesty" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Križovatka" + +msgid "Exit" +msgstr "Výjazd" #. Android resource: @strings/position_popup_title msgid "Position" @@ -291,10 +411,10 @@ #, c-format msgid "Waypoint %d" -msgstr "" +msgstr "Bod trasy %d" msgid "Visit before..." -msgstr "" +msgstr "Predtým navštíviť..." msgid "Set as position" msgstr "Nastaviť ako pozíciu" @@ -435,7 +555,7 @@ #. 535 msgid "Bonaire, Sint Eustatius and Saba" -msgstr "" +msgstr "Bonaire, Sint Eustatius and Saba" #. 076 msgid "Brazil" @@ -527,7 +647,7 @@ #. 531 msgid "Curacao" -msgstr "" +msgstr "Curacao" #. 162 msgid "Christmas Island" @@ -859,7 +979,7 @@ #. 434 msgid "Libya" -msgstr "" +msgstr "Líbya" #. 504 msgid "Morocco" @@ -1147,7 +1267,7 @@ #. 728 msgid "South Sudan" -msgstr "" +msgstr "Južný Sudán" #. 678 msgid "Sao Tome and Principe" @@ -1159,7 +1279,7 @@ #. 534 msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Sint Maarten (holandská časť)" #. 760 msgid "Syrian Arab Republic" @@ -1319,38 +1439,47 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" msgstr "" +"Nenašiel sa žiaden z konfiguračných súborov navit.xml, navit.xml.local\n" #, c-format msgid "Error parsing config file '%s': %s\n" -msgstr "" +msgstr "Chyba parsovania konfiguračného súboru '%s': %s\n" #, c-format msgid "Using config file '%s'\n" +msgstr "Používa sa konfiguračný súbor '%s'\n" + +#, c-format +msgid "Error: No configuration found in config file '%s'\n" msgstr "" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" msgstr "" +"Vnútorná inicializácia zlyhala, ukončujem. Skontrolujte predchádzajúce " +"chybové hlásenia.\n" msgid "unknown street" -msgstr "" +msgstr "neznáma ulica" #. Safe cast: attr_generic_set_attr does not modify its parameter. msgid "Unnamed vehicle" -msgstr "" +msgstr "Nepomenované vozidlo" msgid "Failed to write bookmarks file" -msgstr "" +msgstr "Zápis zlyhal" #. Strings from navit_shipped.xml msgid "Map Point" @@ -1451,11 +1580,17 @@ msgstr "Informácie" msgid "Set _destination" -msgstr "" +msgstr "Nastaviť _destination" msgid "Opens address search dialog" msgstr "Otvorí dialóg hľadania adresy" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Zastaviť navigáciu" @@ -1469,13 +1604,13 @@ msgstr "Ukončiť aplikáciu" msgid "Show position _cursor" -msgstr "" +msgstr "Zobraziť pozíciu _cursor" msgid "_Lock on Road" msgstr "Uzamknúť na cesty" msgid "_Keep orientation to the North" -msgstr "" +msgstr "_Keep orientáciu na sever" msgid "Switches map orientation to the north or the vehicle" msgstr "Prepína medzi severom na vrchu a smerom jazdy na vrchu" @@ -1498,6 +1633,100 @@ msgid "Data" msgstr "Dáta" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "S" @@ -1547,16 +1776,16 @@ #, c-format msgid "Waypoint %s" -msgstr "" +msgstr "Bod trasy %s" msgid "Select waypoint to insert the new one before" -msgstr "" +msgstr "Zvoľte bod trasy pred ktorý sa vloží nový" msgid "View in Browser" msgstr "Zobraziť v prehliadači" msgid "Item type" -msgstr "" +msgstr "Typ položky" #. Android resource: @strings/address_search_streets msgid "Streets" @@ -1569,7 +1798,7 @@ msgstr "Zobraziť atribúty" msgid "Set as position (and deactivate vehicle)" -msgstr "" +msgstr "Nastaviť ako pozíciu (a deaktivovať vozidlo)" msgid "POIs" msgstr "POI" @@ -1578,10 +1807,10 @@ msgstr "Zobraziť na mape" msgid "Remove search results from the map" -msgstr "" +msgstr "Odstrániť výsledky vyhľadávania z mapy" msgid "Show results on the map" -msgstr "" +msgstr "Zobraziť výsledky vyhľadávania na mape" msgid "Cut Bookmark" msgstr "Vystrihnúť záložku" @@ -1599,22 +1828,22 @@ msgstr "Odstrániť záložku" msgid "Delete waypoint" -msgstr "" +msgstr "Zmazať bod trasy" msgid "Bookmarks" msgstr "Záložky" msgid "Bookmarks as waypoints" -msgstr "" +msgstr "Záložky ako body trasy" msgid "Save waypoints" -msgstr "" +msgstr "Uložiť body trasy" msgid "Replace with waypoints" -msgstr "" +msgstr "Nahradiť bodmi trasy" msgid "Delete Folder" -msgstr "" +msgstr "Odstrániť zdresár" #. Adds the Bookmark folders msgid "Add Bookmark folder" @@ -1630,19 +1859,19 @@ #, c-format msgid "Download %s" -msgstr "" +msgstr "Sťahujem %s" msgid "Map Download" -msgstr "" +msgstr "Stiahnutie máp" msgid "Active" -msgstr "" +msgstr "Aktívny" msgid "Download Enabled" -msgstr "" +msgstr "Sťahovanie povolené" msgid "Download completely" -msgstr "" +msgstr "Sťahovanie dokončené" msgid "Show Satellite Status" msgstr "Zobraziť stav satelitov" @@ -1703,10 +1932,10 @@ msgstr "členovia a prispievatelia" msgid "Waypoints" -msgstr "" +msgstr "Body trasy" msgid "Enter Coordinates" -msgstr "" +msgstr "Vložte súradnice" #. #. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) @@ -1714,11 +1943,11 @@ #. #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) -msgid "Longitude Latitude" +msgid "Latitude Longitude" msgstr "" msgid "Enter coordinates, for example:" -msgstr "" +msgstr "Vložte súradnice, napríklad:" msgid "Vehicle" msgstr "Vozidlo" @@ -1736,7 +1965,7 @@ msgstr "Mapa sleduje vozidlo" msgid "Plan with Waypoints" -msgstr "" +msgstr "Plánovať s bodmi trasy" msgid "Maps" msgstr "Mapy" @@ -1757,7 +1986,7 @@ msgstr "Predošlé cieľe" msgid "- No former destinations available -" -msgstr "" +msgstr "- Nie sú k dispozícii žiadne predchádzajúce destinácie -" msgid "Message" msgstr "Správa" @@ -1775,453 +2004,570 @@ msgstr "Číslo domu" msgid "Next" -msgstr "" +msgstr "Ďalej" msgid "Prev" -msgstr "" +msgstr "späť" msgid "Return to route!" -msgstr "" +msgstr "Návrat k trase!" #. warning told msgid "Look out! Camera!" -msgstr "" +msgstr "Pozor! Radar!" #. warning told msgid "Please decrease your speed" -msgstr "" +msgstr "Znížte rýchlosť proím" msgid "partial match" -msgstr "" +msgstr "čiastočná zhoda" #. Android resource: @strings/address_search_button msgid "Search" -msgstr "" +msgstr "Hľadať" #. Android resource: @strings/address_search_towns msgid "Towns" -msgstr "" +msgstr "Mestá" #. Android resource: @strings/position_popup_drive_here msgid "Route to here" -msgstr "" +msgstr "Trasovať tu" msgid "Map data (c) OpenStreetMap contributors, ODBL" +msgstr "Mapové dáta (c) OpenStreetMap contributors, ODBL" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." msgstr "" msgid "Downloaded maps" +msgstr "Stiahnuté mapy" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." msgstr "" -msgid "Whole Planet" +msgid "Cancel" +msgstr "Zrušiť" + +msgid "filenamePath" msgstr "" -msgid "Africa" +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." msgstr "" +msgid "Whole Planet" +msgstr "Celá zemeguľa" + +msgid "Africa" +msgstr "Afrika" + msgid "Canary Islands" -msgstr "" +msgstr "Kanárske ostrovy" msgid "Asia" -msgstr "" +msgstr "Ázia" msgid "Korea" -msgstr "" +msgstr "Kórea" msgid "Taiwan" -msgstr "" +msgstr "Taiwan" msgid "UAE+Other" -msgstr "" +msgstr "UAE+Iné" msgid "Oceania" -msgstr "" +msgstr "Oceánia" msgid "Tasmania" -msgstr "" +msgstr "Tazmánia" msgid "Victoria" -msgstr "" +msgstr "Viktória" msgid "New South Wales" -msgstr "" +msgstr "Nový Južný Wales" msgid "Europe" -msgstr "" +msgstr "Európa" msgid "Western Europe" -msgstr "" +msgstr "Západná Európa" msgid "Azores" -msgstr "" +msgstr "Azory" msgid "BeNeLux" -msgstr "" +msgstr "Benelux" msgid "Alsace" -msgstr "" +msgstr "Alsasko" msgid "Aquitaine" -msgstr "" +msgstr "Akvitánsko" msgid "Auvergne" -msgstr "" +msgstr "Auvergne" msgid "Basse-Normandie" -msgstr "" +msgstr "Basse-Normandia" msgid "Bourgogne" -msgstr "" +msgstr "Burgundsko" msgid "Bretagne" -msgstr "" +msgstr "Bretónsko" msgid "Centre" -msgstr "" +msgstr "Vycentrovať" msgid "Champagne-Ardenne" -msgstr "" +msgstr "Champagne-Ardenne" msgid "Corse" -msgstr "" +msgstr "Corse" msgid "Franche-Comte" -msgstr "" +msgstr "Franche-Comte" msgid "Haute-Normandie" -msgstr "" +msgstr "Haute-Normandia" msgid "Ile-de-France" -msgstr "" +msgstr "Ile-de-France" msgid "Languedoc-Roussillon" -msgstr "" +msgstr "Languedoc-Roussillon" msgid "Limousin" -msgstr "" +msgstr "Limousin" msgid "Lorraine" -msgstr "" +msgstr "Lotrinsko" msgid "Midi-Pyrenees" -msgstr "" +msgstr "Midi-Pyrenees" msgid "Nord-pas-de-Calais" -msgstr "" +msgstr "Nord-pas-de-Calais" msgid "Pays-de-la-Loire" -msgstr "" +msgstr "Pays-de-la-Loire" msgid "Picardie" -msgstr "" +msgstr "Pikardia" msgid "Poitou-Charentes" -msgstr "" +msgstr "Poitou-Charentes" msgid "Provence-Alpes-Cote-d-Azur" -msgstr "" +msgstr "Provence-Alpes-Cote-d-Azur" msgid "Rhone-Alpes" -msgstr "" +msgstr "Rhone-Alpes" msgid "Baden-Wuerttemberg" -msgstr "" +msgstr "Bádensko-Württembersko" msgid "Bayern" -msgstr "" +msgstr "Bavorsko" msgid "Mittelfranken" -msgstr "" +msgstr "Mittelfranken" msgid "Niederbayern" -msgstr "" +msgstr "Niederbayern" msgid "Oberbayern" -msgstr "" +msgstr "Oberbayern" msgid "Oberfranken" -msgstr "" +msgstr "Oberfranken" msgid "Oberpfalz" -msgstr "" +msgstr "Oberpfalz" msgid "Schwaben" -msgstr "" +msgstr "Schwaben" msgid "Unterfranken" -msgstr "" +msgstr "Unterfranken" msgid "Berlin" -msgstr "" +msgstr "Berlín" msgid "Brandenburg" -msgstr "" +msgstr "Brandenbursko" msgid "Bremen" -msgstr "" +msgstr "Brémy" msgid "Hamburg" -msgstr "" +msgstr "Hamburg" msgid "Hessen" -msgstr "" +msgstr "Hesensko" msgid "Mecklenburg-Vorpommern" -msgstr "" +msgstr "Mecklenburg-Vorpommern" msgid "Niedersachsen" -msgstr "" +msgstr "Dolné Sasko" msgid "Nordrhein-westfalen" -msgstr "" +msgstr "Nordrhein-westfalen" msgid "Rheinland-Pfalz" -msgstr "" +msgstr "Porýnie-Falcko" msgid "Saarland" -msgstr "" +msgstr "Sársko" msgid "Sachsen-Anhalt" -msgstr "" +msgstr "Sasko-Anhaltsko" msgid "Sachsen" -msgstr "" +msgstr "Sasko" msgid "Schleswig-Holstein" -msgstr "" +msgstr "Šlezvicko-Holštajnsko" msgid "Thueringen" -msgstr "" +msgstr "Durínsko" msgid "Mallorca" -msgstr "" +msgstr "Malorka" msgid "Galicia" -msgstr "" +msgstr "Galícia" msgid "Scandinavia" -msgstr "" +msgstr "Škandinávia" msgid "England" -msgstr "" +msgstr "Anglicko" msgid "Buckinghamshire" -msgstr "" +msgstr "Buckinghamshire" msgid "Cambridgeshire" -msgstr "" +msgstr "Cambridgeshire" msgid "Cumbria" -msgstr "" +msgstr "Cumbria" msgid "East yorkshire with hull" -msgstr "" +msgstr "East yorkshire with hull" msgid "Essex" -msgstr "" +msgstr "Essex" msgid "Herefordshire" -msgstr "" +msgstr "Herefordshire" msgid "Kent" -msgstr "" +msgstr "Kent" msgid "Lancashire" -msgstr "" +msgstr "Lancashire" msgid "Leicestershire" -msgstr "" +msgstr "Leicestershire" msgid "Norfolk" -msgstr "" +msgstr "Norfolk" msgid "Nottinghamshire" -msgstr "" +msgstr "Nottinghamshire" msgid "Oxfordshire" -msgstr "" +msgstr "Oxfordshire" msgid "Shropshire" -msgstr "" +msgstr "Shropshire" msgid "Somerset" -msgstr "" +msgstr "Somerset" msgid "South yorkshire" -msgstr "" +msgstr "Južný yorkshire" msgid "Suffolk" -msgstr "" +msgstr "Suffolk" msgid "Surrey" -msgstr "" +msgstr "Surrey" msgid "Wiltshire" -msgstr "" +msgstr "Wiltshire" msgid "Scotland" -msgstr "" +msgstr "Škótsko" msgid "Wales" -msgstr "" +msgstr "Wales" msgid "Crete" -msgstr "" +msgstr "Kréta" msgid "North America" -msgstr "" +msgstr "Severná Amerika" msgid "Alaska" -msgstr "" +msgstr "Alijaška" msgid "Hawaii" -msgstr "" +msgstr "Havaj" msgid "USA" -msgstr "" +msgstr "USA" msgid " (except Alaska and Hawaii)" -msgstr "" +msgstr " (okrem Alijašky a Havaja)" msgid "Midwest" -msgstr "" +msgstr "Stredný západ" msgid "Michigan" -msgstr "" +msgstr "Michigan" msgid "Ohio" -msgstr "" +msgstr "Ohio" msgid "Northeast" -msgstr "" +msgstr "Severovýchod" msgid "Massachusetts" -msgstr "" +msgstr "Massachusetts" msgid "Vermont" -msgstr "" +msgstr "Vermont" msgid "Pacific" -msgstr "" +msgstr "Pacifik" msgid "South" -msgstr "" +msgstr "Juh" msgid "Arkansas" -msgstr "" +msgstr "Arkansas" msgid "District of Columbia" -msgstr "" +msgstr "Oblasť Columbia" msgid "Florida" -msgstr "" +msgstr "Florida" msgid "Louisiana" -msgstr "" +msgstr "Louisiana" msgid "Maryland" -msgstr "" +msgstr "Maryland" msgid "Mississippi" -msgstr "" +msgstr "Mississippi" msgid "Oklahoma" -msgstr "" +msgstr "Oklahoma" msgid "Texas" -msgstr "" +msgstr "Texas" msgid "Virginia" -msgstr "" +msgstr "Virgínia" msgid "West Virginia" -msgstr "" +msgstr "Západná Virgínia" msgid "West" -msgstr "" +msgstr "Západ" msgid "Arizona" -msgstr "" +msgstr "Arizona" msgid "California" -msgstr "" +msgstr "Kalifornia" msgid "Colorado" -msgstr "" +msgstr "Colorado" msgid "Idaho" -msgstr "" +msgstr "Idaho" msgid "Montana" -msgstr "" +msgstr "Montana" msgid "New Mexico" -msgstr "" +msgstr "Nové Mexiko" msgid "Nevada" -msgstr "" +msgstr "Nevada" msgid "Oregon" -msgstr "" +msgstr "Oregon" msgid "Utah" -msgstr "" +msgstr "Utah" msgid "Washington State" -msgstr "" +msgstr "Štát Washington" msgid "South+Middle America" -msgstr "" +msgstr "Južná + Stredná Amerika" msgid "Guyane Francaise" -msgstr "" +msgstr "Guyane Francaise" msgid "downloading" -msgstr "" +msgstr "Sťahuje sa" #. Android resource: @strings/map_download_ready msgid "ready" -msgstr "" +msgstr "pripravený" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" -msgstr "" +msgstr "Nedostatok voľného miesta" + +msgid "Error downloading map!" +msgstr "Chyba počas sťahovania mapy!" msgid "Error writing map!" -msgstr "" +msgstr "Chyba pri zápise mapy!" msgid "Map download aborted!" -msgstr "" +msgstr "Sťahovanie mapy prerušené!" #. Android resource: @strings/map_download_eta msgid "ETA" -msgstr "" +msgstr "Zostáva" #. Android resource: @strings/map_download_title msgid "Map download" -msgstr "" +msgstr "Sťahovanie máp" msgid "Vehicle Position" msgstr "Pozícia vozidla" +msgid "Main menu" +msgstr "Hlavné menu" + +msgid "" +"Show\n" +"Map" +msgstr "" +"Zobraziť\n" +"mapu" + +msgid "Settings" +msgstr "Nastavenia" + +msgid "Tools" +msgstr "Nástroje" + +msgid "Route" +msgstr "Trasa" + +msgid "About" +msgstr "O programe" + +msgid "Quit" +msgstr "Koniec" + +msgid "Actions" +msgstr "Akcie" + +msgid "" +"Former\n" +"Destinations" +msgstr "" +"Bývalé\n" +"Ciele" + +msgid "Coordinates" +msgstr "Súradnice" + +msgid "" +"Stop\n" +"Navigation" +msgstr "" +"Zastaviť\n" +"navigáciu" + +msgid "Display" +msgstr "Displej" + +msgid "Fullscreen" +msgstr "Celá obrazovka" + +msgid "Window Mode" +msgstr "V okne" + +msgid "Description" +msgstr "Popis" + +msgid "" +"Drop last \n" +"Waypoint" +msgstr "" +"Vložiť posledný\n" +"bod trasy" + +msgid "" +"Drop next \n" +"Waypoint" +msgstr "" +"Vložiť nasledujúci\n" +"bod trasy" + +msgid "Satellite Status" +msgstr "Stav satelitov" + +msgid "NMEA Data" +msgstr "Dáta NMEA" + +msgid "car_shortest" +msgstr "car_shortest" + +msgid "car_avoid_tolls" +msgstr "car_avoid_tolls" + +msgid "car_pedantic" +msgstr "car_pedantic" + +msgid "horse" +msgstr "kôň" + +msgid "Truck" +msgstr "Kamión" + #. Strings from android/res/values/strings.xml #. Android resource: @strings/yes msgid "Yes" -msgstr "" +msgstr "Áno" #. Android resource: @strings/notification_ticker msgid "Navit started" -msgstr "" +msgstr "Navit spustený" #. Android resource: @strings/notification_event_default msgid "Navit running" -msgstr "" +msgstr "Navit beží" #. Android resource: @strings/initial_info_box_title msgid "Welcome to Navit" -msgstr "" +msgstr "Vitajte v Navit" #. Android resource: @strings/initial_info_box_message msgid "" @@ -2234,269 +2580,191 @@ "\n" "Enjoy Navit!" msgstr "" +"Ďakujem, že ste si nainštalovali Navit!\n" +"\n" +"Pre začatie zvoľte z hlavného menu \"Stiahnuť mapy\" pre stiahnutie máp . " +"Poznámka: Veľkosť mapy môže byť väčšia (>50MB) - a odporúča sa wifi " +"pripojenie.\n" +"\n" +"Mapové dáta: (c) OpenStreetMap contributors\n" +"\n" +"Užívajte Navit!" #. Android resource: @strings/initial_info_box_OK msgid "OK" -msgstr "" +msgstr "OK" #. Android resource: @strings/initial_info_box_more_info msgid "More info" -msgstr "" +msgstr "Viac informácií" #. Android resource: @strings/optionsmenu_zoom_in msgid "Zoom in" -msgstr "" +msgstr "Priblížiť" #. Android resource: @strings/optionsmenu_zoom_out msgid "Zoom out" -msgstr "" +msgstr "Oddialiť" #. Android resource: @strings/optionsmenu_download_maps msgid "Download maps" -msgstr "" +msgstr "Sťahovanie máp" #. Android resource: @strings/optionsmenu_toggle_poi msgid "Toggle POIs" -msgstr "" +msgstr "Prepnúť body záujmu" #. Android resource: @strings/optionsmenu_exit_navit msgid "Exit Navit" -msgstr "" +msgstr "Ukončiť Navit" #. Android resource: @strings/optionsmenu_backup_restore msgid "Backup / Restore" +msgstr "Záloha / Obnova" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" msgstr "" #. Android resource: @strings/map_delete msgid "Delete this map?" -msgstr "" +msgstr "Zmazať túto mapu?" #. Android resource: @strings/map_download_downloading msgid "Downloading:" -msgstr "" +msgstr "Sťahovanie:" #. Android resource: @strings/map_download_download_error msgid "Error downloading map." -msgstr "" +msgstr "Chyba sťahovania mapy" #. Android resource: @strings/map_download_download_aborted msgid "Map download aborted" -msgstr "" +msgstr "Sťahovanie mapy prerušené" #. Android resource: @strings/map_no_fix msgid "No location. Reopen after location fix." -msgstr "" +msgstr "Bez lokácie. Po opravení lokácia otvorte znova." #. Android resource: @strings/maps_for_current_location msgid "Maps containing current location" -msgstr "" +msgstr "Mapy obsahujúce aktuálnu polohu" #. Android resource: @strings/address_search_title msgid "Address search" -msgstr "" +msgstr "Vyhľadávanie adresy" #. Android resource: @strings/address_enter_destination msgid "Enter destination" -msgstr "" +msgstr "Vložte cieľ" #. Android resource: @strings/address_partial_match msgid "Match partial address" -msgstr "" +msgstr "Zhoda čiastočnej adresy" #. Android resource: @strings/address_search_searching msgid "Searching..." -msgstr "" +msgstr "Vyhľadávam..." #. Android resource: @strings/address_search_not_found msgid "Address not found" -msgstr "" +msgstr "Adresa nenájdená" #. Android resource: @strings/address_search_getting_results msgid "Getting search results" -msgstr "" +msgstr "Získavam výsledky vyhľadávania" #. Android resource: @strings/address_search_loading_results msgid "Loading search results" -msgstr "" +msgstr "Nahrávam výsledky vyhľadávania" #. Android resource: @strings/address_search_no_results msgid "No results found" -msgstr "" +msgstr "Nič nenájdené" #. Android resource: @strings/address_search_no_text_entered msgid "No text entered" -msgstr "" +msgstr "Nevložený žiaden text" #. Android resource: @strings/address_search_set_destination msgid "Setting destination to:" -msgstr "" +msgstr "Nastaviť cieľ do:" #. Android resource: @strings/choose_an_action msgid "Choose an action" -msgstr "" +msgstr "Zvoľte akciu" #. Android resource: @strings/please_insert_an_sd_card msgid "Please insert an SD Card" -msgstr "" +msgstr "Vložte prosím SD kartu" #. Android resource: @strings/backing_up msgid "Backing up..." -msgstr "" +msgstr "Zálohujem..." #. Android resource: @strings/restoring msgid "Restoring..." -msgstr "" +msgstr "Obnovujem..." #. Android resource: @strings/failed_to_create_backup_directory msgid "Failed to create backup directory" -msgstr "" +msgstr "Vytvorenie záložného adresára zlyhalo" #. Android resource: @strings/backup_failed msgid "Backup failed" -msgstr "" +msgstr "Zálohovanie zlyhalo" #. Android resource: @strings/no_backup_found msgid "No backup found" -msgstr "" +msgstr "Záloha nenájdená" #. Android resource: @strings/failed_to_restore msgid "Failed to restore" -msgstr "" +msgstr "Obnova zlyhala" #. Android resource: @strings/backup_successful msgid "Backup successful" -msgstr "" +msgstr "Obnova úspešná" #. Android resource: @strings/restore_successful_please_restart_navit msgid "" "Restore Successful\n" "Please restart Navit" msgstr "" +"Obnova úspešná\n" +"Reštartujte Navit prosím" #. Android resource: @strings/backup_not_found msgid "Backup not found" -msgstr "" +msgstr "Záloha nenájdená" #. Android resource: @strings/restore_failed msgid "Restore failed" -msgstr "" +msgstr "Obnova zlyhala" #. Android resource: @strings/select_backup msgid "Select backup" -msgstr "" +msgstr "Zvoľte zálohu" #. Android resource: @strings/backup msgid "Backup" -msgstr "" +msgstr "Záloha" #. Android resource: @strings/restore msgid "Restore" -msgstr "" - -msgid "Main menu" -msgstr "Hlavné menu" +msgstr "Obnova" -msgid "" -"Show\n" -"Map" -msgstr "" -"Zobraziť\n" -"mapu" - -msgid "Settings" -msgstr "Nastavenia" - -msgid "Tools" -msgstr "Nástroje" - -msgid "Route" -msgstr "Trasa" - -msgid "About" -msgstr "O programe" - -msgid "Quit" -msgstr "Koniec" - -msgid "Actions" -msgstr "Akcie" - -msgid "" -"Former\n" -"Destinations" -msgstr "" - -msgid "Coordinates" +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" msgstr "" +#. Android resource: @strings/TTS_qery_install_data msgid "" -"Stop\n" -"Navigation" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" msgstr "" -"Zastaviť\n" -"navigáciu" -msgid "Display" -msgstr "Displej" - -msgid "Fullscreen" -msgstr "Celá obrazovka" - -msgid "Window Mode" -msgstr "V okne" - -msgid "Description" -msgstr "Popis" - -msgid "" -"Drop last \n" -"Waypoint" -msgstr "" - -msgid "" -"Drop next \n" -"Waypoint" -msgstr "" - -msgid "Satellite Status" -msgstr "" - -msgid "NMEA Data" -msgstr "" - -msgid "car_shortest" -msgstr "" - -msgid "car_avoid_tolls" -msgstr "" - -msgid "car_pedantic" -msgstr "" - -msgid "horse" -msgstr "kôň" - -#. chr: -#. flags used for a truck: (first flag number is 0) -#. 8: SIZE_OR_WEIGHT_LIMIT -#. 21: TRANSPORT_TRUCK -#. speed setup: -#. 'speed' data of the atkaction for a car is -#. reduced about 10 km/h. When the speed was at -#. 10 km/h, I reduced it to 5 km/h. -#. 'route_weight' data has been treated in the same way. -#. If you want to discourage the use of small roads, -#. just reduce this value. -#. size and weight setup: -#. This is an example, you have to use the data of your truck. -#. bobshaffer's standard truck: -#. (1 lb = 453.59237 g, 1 foot = .3048 m) -#. (data has to be in [cm] and [kg] according to 'atkaction.h') -#. vehicle_width= 9 feet, 274 cm -#. vehicle_height= 13.5 feet, 411 cm -#. vehicle_length= 70 feet, 2134 cm -#. vehicle_weight= 80000 lbs, 36287 kg -#. vehicle_axle_weight= 34000 lbs, 15422 kg -#. -msgid "Truck" -msgstr "" +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "potom opustite kruhový objazd na %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/sl.po.in navit-0.5.0+dfsg.1/po/sl.po.in --- navit-0.5.0~svn5900+dfsg.1/po/sl.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/sl.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,27 +1,24 @@ -# Slovenian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Slovenian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Gregor Koporec https://launchpad.net/~gregork8 # KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Štefan Baebler https://launchpad.net/~stefanba - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:42+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Slovenian \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-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: sl\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -77,14 +74,6 @@ msgstr "šesti izhod" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "Čez %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -93,14 +82,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d metrov" - -#, c-format -msgid "in %d meters" -msgstr "Čez %d metrov" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -109,14 +90,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d,%d kilometrov" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "Čez %d.%d kilometov" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -129,6 +102,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d metrov" + +#, c-format +msgid "in %d meters" +msgstr "Čez %d metrov" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d,%d kilometrov" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "Čez %d.%d kilometov" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d kilometrov" @@ -144,30 +133,53 @@ msgstr[2] "Čez %d kilometra" msgstr[3] "Čez %d kilometre" -msgid "exit" -msgstr "odcep" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "%sna %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sna %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sna %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sna %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -175,33 +187,18 @@ msgid "%sinto the %s" msgstr "%sna %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "desno" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "levo" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "rahlo " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "ostro " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "zelo močno " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "neznano " - msgid "When possible, please turn around" msgstr "Obrnite čim bo to mogoče" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Ostanite na tej cesti naslednjih %s" + msgid "Enter the roundabout soon" msgstr "Kmalu zapeljite v krožišče" @@ -210,56 +207,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" +msgid "soon" +msgstr "kmalu" + +msgid "now" +msgstr "sedaj" + +msgid "then" +msgstr "nato" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Ostanite na tej cesti naslednjih %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "kmalu" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Zavijte na %2$s v %1$so cesto" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "čez %i cest" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "sedaj" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "desno" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "levo" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "rahlo " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "ostro " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "nato zavijte na %2$s v %1$so cesto" +msgstr "" -msgid "error" -msgstr "napaka" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Zavijte na %2$s v %1$so cesto" + +#, c-format +msgid "after %i roads" +msgstr "čez %i cest" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "%3$s zavijte %1$s%2$s %4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "nato zavijte %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "nato obrnite čim" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Obrnite čim %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "nato obrnite čim" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Obrnite čim %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "in ste na cilju." +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "%s ste na cilju" -msgid "then you have reached your destination." -msgstr "in ste na cilju." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Razcep" + +msgid "Exit" +msgstr "Odcep" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1319,11 +1436,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1460,6 +1579,12 @@ msgid "Opens address search dialog" msgstr "Odpre dialog za iskanje naslova" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Ustavi navigacijo" @@ -1502,6 +1627,100 @@ msgid "Data" msgstr "Podatki" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "S" @@ -1813,12 +2032,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2189,13 +2427,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2356,6 +2597,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2481,3 +2726,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/sq.po.in navit-0.5.0+dfsg.1/po/sq.po.in --- navit-0.5.0~svn5900+dfsg.1/po/sq.po.in 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/sq.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,2733 @@ +# Albanian translations for navit +# Copyright (C) 2006-2015 The Navit Team +# This file is distributed under the same license as the navit package. +# Many thanks to the contributors of this translation: +# Denis Ju https://launchpad.net/~deblenden + +msgid "" +msgstr "" +"Project-Id-Version: navit\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"PO-Revision-Date: 2015-08-16 18:51+0000\n" +"Last-Translator: Denis Ju \n" +"Language-Team: Albanian \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" + +msgid "Running from source directory\n" +msgstr "Fillo nga lista preardhëse\n" + +#, c-format +msgid "setting '%s' to '%s'\n" +msgstr "vendos '%s' tek '%s'\n" + +#. TRANSLATORS: the following counts refer to streets +msgid "zeroth" +msgstr "zerim" + +msgid "first" +msgstr "i pari" + +msgid "second" +msgstr "i dyti" + +msgid "third" +msgstr "i treti" + +msgid "fourth" +msgstr "i katërti" + +msgid "fifth" +msgstr "i pesti" + +msgid "sixth" +msgstr "i gjashti" + +#. TRANSLATORS: the following counts refer to roundabout exits +msgid "zeroth exit" +msgstr "dalje e zeruar" + +msgid "first exit" +msgstr "dalja e parë" + +msgid "second exit" +msgstr "dalja e dytë" + +msgid "third exit" +msgstr "dalja e tretë" + +msgid "fourth exit" +msgstr "dalja e katërt" + +msgid "fifth exit" +msgstr "dalja e pestë" + +msgid "sixth exit" +msgstr "dalja e gjashtë" + +#, c-format +msgid "%d feet" +msgstr "%d këmbë" + +#, c-format +msgid "in %d feet" +msgstr "në %d këmbë" + +#, c-format +msgid "%d.%d miles" +msgstr "%d.%d milje" + +#, c-format +msgid "in %d.%d miles" +msgstr "në %d.%d milje" + +#, c-format +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "një milje" +msgstr[1] "%d milje" + +#, c-format +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "në një milje" +msgstr[1] "në %d milje" + +#, c-format +msgid "%d meters" +msgstr "%d metra" + +#, c-format +msgid "in %d meters" +msgstr "në %d metra" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d kilometra" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "në %d.%d kilometra" + +#, c-format +msgid "one kilometer" +msgid_plural "%d kilometers" +msgstr[0] "një kilometër" +msgstr[1] "%d kilometra" + +#, c-format +msgid "in one kilometer" +msgid_plural "in %d kilometers" +msgstr[0] "në një kilometër" +msgstr[1] "në %d kilometra" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "%1$smbi tek %2$s%3$s%4$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "%1$smbi %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "%1$smbi %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "%1$smbi %2$s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "%1$smbi %2$s" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "mbi hyrjen e autostradës" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name +#, c-format +msgid "%sinto %s%s%s" +msgstr "%snë %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|masculine form" +msgstr "%snë %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%snë %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%snë %s%s%s" + +#. TRANSLATORS: gives the name of the next road to turn into (into the E17) +#, c-format +msgid "%sinto the %s" +msgstr "%snë %s" + +msgid "When possible, please turn around" +msgstr "Nqs është e mundur, ju lutem kthehuni mbrapsht" + +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "në drejtim të %s" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Ndjekni rrugën për tjetrën %s" + +msgid "Enter the roundabout soon" +msgstr "Hyni në rrethrrotullim së shpejti" + +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "Hyni në rrethrrotullimin %s" + +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Dilni nga rrethrrotullimi tek %1$s %2$s" + +msgid "soon" +msgstr "së shpejti" + +msgid "now" +msgstr "tani" + +msgid "then" +msgstr "pastaj" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" +msgstr "pastaj futuni%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|right" +msgstr "Udhëtoni tek %1$s%2$s" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "pastaj udhëtoni tek%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "Udhëtoni tek %1$s%2$s" + +msgid "on your left" +msgstr "në të majtën" + +msgid "on your right" +msgstr "në të djathtën" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance +#, c-format +msgid "Take exit %1$s %2$s %3$s" +msgstr "Merrni daljen %1$s %2$s %3$s" + +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "Merrni daljen %1$s %2$s %3$s" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "tek ndërrimi i autostradës" + +msgid "at exit" +msgstr "në dalje" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "pastaj udhëtoni drejt%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "Vazhdoni drejt %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "pastaj mbani krahun e djathtë%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "Mbani krahun e djathtë %1$s%2$s%3$s" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "pastaj mbani krahun e majtë%1$s" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "Mbani krahun e majtë%1$s%2$s%3$s" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "djathtas" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "majtas" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "lehtë " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "fuqishëm " + +#, c-format +msgid "then take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Merrni rrugën %1$s për tek rruga %2$s" + +#, c-format +msgid "after %i roads" +msgstr "pas rrugës %i" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination +#, c-format +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "Kthehuni %1$s%2$s %3$s%4$s" + +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "pastaj bëni një U-kthim" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Bëni një U-kthim %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "pastaj bëni një U-kthim" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Bëni një U-kthim %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "ndiqni" + +msgid "then you have reached your destination." +msgstr "pastaj ju keni arritur pikëmbërritjen" + +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "Ju e keni arritur pikëmbërritjen tuaj %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Dalje" + +#. Android resource: @strings/position_popup_title +msgid "Position" +msgstr "Vendndodhja" + +msgid "Command" +msgstr "Komanda" + +msgid "Length" +msgstr "Zgjatja" + +msgid "km" +msgstr "km" + +msgid "m" +msgstr "m" + +msgid "Time" +msgstr "Koha" + +msgid "Destination Length" +msgstr "Gjatësia deri në arritje" + +msgid "Destination Time" +msgstr "Kohëzgjatja deri në arritje" + +msgid "Roadbook" +msgstr "Përshkrimi i rrugës" + +#, c-format +msgid "Waypoint %d" +msgstr "Pikëzim rruge %d" + +msgid "Visit before..." +msgstr "Vendos si pikëzim rruge ..." + +msgid "Set as position" +msgstr "Vendosni si pozicion" + +msgid "Set as destination" +msgstr "Vendosni si vendarritje" + +msgid "Add as bookmark" +msgstr "Shtoni një shenjim" + +#, c-format +msgid "Point 0x%x 0x%x" +msgstr "Pikë 0x%x 0x%x" + +#, c-format +msgid "Screen coord : %d %d" +msgstr "Koordinatat e ekranit %d %d" + +#. 020 +msgid "Andorra" +msgstr "Andora" + +#. 784 +msgid "United Arab Emirates" +msgstr "Emiratet e Bashkuara Arabe" + +#. 004 +msgid "Afghanistan" +msgstr "Afganistan" + +#. 028 +msgid "Antigua and Barbuda" +msgstr "Antigua dhe Barbuda" + +#. 660 +msgid "Anguilla" +msgstr "Anguila" + +#. 008 +msgid "Albania" +msgstr "Shqipëri" + +#. 051 +msgid "Armenia" +msgstr "Armenia" + +#. 530 +msgid "Netherlands Antilles" +msgstr "Antilet Hollandeze" + +#. 024 +msgid "Angola" +msgstr "Angola" + +#. 010 +msgid "Antarctica" +msgstr "Antarktidë" + +#. 032 +msgid "Argentina" +msgstr "Argjentina" + +#. 016 +msgid "American Samoa" +msgstr "Samoa Amerikane" + +#. 040 +msgid "Austria" +msgstr "Austri" + +#. 036 +msgid "Australia" +msgstr "Australi" + +#. 533 +msgid "Aruba" +msgstr "Aruba" + +#. 248 +msgid "Aland Islands" +msgstr "Ishujt Aland" + +#. 031 +msgid "Azerbaijan" +msgstr "Azerbaixhan" + +#. 070 +msgid "Bosnia and Herzegovina" +msgstr "Bosnjë-Hercegovinë" + +#. 052 +msgid "Barbados" +msgstr "Barbados" + +#. 050 +msgid "Bangladesh" +msgstr "Bangladesh" + +#. 056 +msgid "Belgium" +msgstr "Belgjikë" + +#. 854 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#. 100 +msgid "Bulgaria" +msgstr "Bullgari" + +#. 048 +msgid "Bahrain" +msgstr "Bahrein" + +#. 108 +msgid "Burundi" +msgstr "Burundi" + +#. 204 +msgid "Benin" +msgstr "Benin" + +#. 652 +msgid "Saint Barthelemy" +msgstr "Saint-Barthélemy" + +#. 060 +msgid "Bermuda" +msgstr "Bermuda" + +#. 096 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#. 068 +msgid "Bolivia" +msgstr "Bolivi" + +#. 535 +msgid "Bonaire, Sint Eustatius and Saba" +msgstr "Bonaire, Sint Eustatius dhe Saba" + +#. 076 +msgid "Brazil" +msgstr "" + +#. 044 +msgid "Bahamas" +msgstr "" + +#. 064 +msgid "Bhutan" +msgstr "" + +#. 074 +msgid "Bouvet Island" +msgstr "" + +#. 072 +msgid "Botswana" +msgstr "" + +#. 112 +msgid "Belarus" +msgstr "" + +#. 084 +msgid "Belize" +msgstr "" + +#. 124 +msgid "Canada" +msgstr "" + +#. 166 +msgid "Cocos (Keeling) Islands" +msgstr "" + +#. 180 +msgid "Congo, Democratic Republic of the" +msgstr "" + +#. 140 +msgid "Central African Republic" +msgstr "" + +#. 178 +msgid "Congo" +msgstr "" + +#. 756 +msgid "Switzerland" +msgstr "" + +#. 384 +msgid "Cote d'Ivoire" +msgstr "" + +#. 184 +msgid "Cook Islands" +msgstr "" + +#. 152 +msgid "Chile" +msgstr "" + +#. 120 +msgid "Cameroon" +msgstr "" + +#. 156 +msgid "China" +msgstr "" + +#. 170 +msgid "Colombia" +msgstr "" + +#. 188 +msgid "Costa Rica" +msgstr "" + +#. 192 +msgid "Cuba" +msgstr "" + +#. 132 +msgid "Cape Verde" +msgstr "" + +#. 531 +msgid "Curacao" +msgstr "" + +#. 162 +msgid "Christmas Island" +msgstr "" + +#. 196 +msgid "Cyprus" +msgstr "" + +#. 203 +msgid "Czech Republic" +msgstr "" + +#. 276 +msgid "Germany" +msgstr "" + +#. 262 +msgid "Djibouti" +msgstr "" + +#. 208 +msgid "Denmark" +msgstr "" + +#. 212 +msgid "Dominica" +msgstr "" + +#. 214 +msgid "Dominican Republic" +msgstr "" + +#. 012 +msgid "Algeria" +msgstr "" + +#. 218 +msgid "Ecuador" +msgstr "" + +#. 233 +msgid "Estonia" +msgstr "" + +#. 818 +msgid "Egypt" +msgstr "" + +#. 732 +msgid "Western Sahara" +msgstr "" + +#. 232 +msgid "Eritrea" +msgstr "" + +#. 724 +msgid "Spain" +msgstr "" + +#. 231 +msgid "Ethiopia" +msgstr "" + +#. 246 +msgid "Finland" +msgstr "" + +#. 242 +msgid "Fiji" +msgstr "" + +#. 238 +msgid "Falkland Islands (Malvinas)" +msgstr "" + +#. 583 +msgid "Micronesia, Federated States of" +msgstr "" + +#. 234 +msgid "Faroe Islands" +msgstr "" + +#. 250 +msgid "France" +msgstr "" + +#. 266 +msgid "Gabon" +msgstr "" + +#. 826 +msgid "United Kingdom" +msgstr "" + +#. 308 +msgid "Grenada" +msgstr "" + +#. 268 +msgid "Georgia" +msgstr "" + +#. 254 +msgid "French Guiana" +msgstr "" + +#. 831 +msgid "Guernsey" +msgstr "" + +#. 288 +msgid "Ghana" +msgstr "" + +#. 292 +msgid "Gibraltar" +msgstr "" + +#. 304 +msgid "Greenland" +msgstr "" + +#. 270 +msgid "Gambia" +msgstr "" + +#. 324 +msgid "Guinea" +msgstr "" + +#. 312 +msgid "Guadeloupe" +msgstr "" + +#. 226 +msgid "Equatorial Guinea" +msgstr "" + +#. 300 +msgid "Greece" +msgstr "" + +#. 239 +msgid "South Georgia and the South Sandwich Islands" +msgstr "" + +#. 320 +msgid "Guatemala" +msgstr "" + +#. 316 +msgid "Guam" +msgstr "" + +#. 624 +msgid "Guinea-Bissau" +msgstr "" + +#. 328 +msgid "Guyana" +msgstr "" + +#. 344 +msgid "Hong Kong" +msgstr "" + +#. 334 +msgid "Heard Island and McDonald Islands" +msgstr "" + +#. 340 +msgid "Honduras" +msgstr "" + +#. 191 +msgid "Croatia" +msgstr "" + +#. 332 +msgid "Haiti" +msgstr "" + +#. 348 +msgid "Hungary" +msgstr "" + +#. 360 +msgid "Indonesia" +msgstr "" + +#. 372 +msgid "Ireland" +msgstr "" + +#. 376 +msgid "Israel" +msgstr "" + +#. 833 +msgid "Isle of Man" +msgstr "" + +#. 356 +msgid "India" +msgstr "" + +#. 086 +msgid "British Indian Ocean Territory" +msgstr "" + +#. 368 +msgid "Iraq" +msgstr "" + +#. 364 +msgid "Iran, Islamic Republic of" +msgstr "" + +#. 352 +msgid "Iceland" +msgstr "" + +#. 380 +msgid "Italy" +msgstr "" + +#. 832 +msgid "Jersey" +msgstr "" + +#. 388 +msgid "Jamaica" +msgstr "" + +#. 400 +msgid "Jordan" +msgstr "" + +#. 392 +msgid "Japan" +msgstr "" + +#. 404 +msgid "Kenya" +msgstr "" + +#. 417 +msgid "Kyrgyzstan" +msgstr "" + +#. 116 +msgid "Cambodia" +msgstr "" + +#. 296 +msgid "Kiribati" +msgstr "" + +#. 174 +msgid "Comoros" +msgstr "" + +#. 659 +msgid "Saint Kitts and Nevis" +msgstr "" + +#. 408 +msgid "Korea, Democratic People's Republic of" +msgstr "" + +#. 410 +msgid "Korea, Republic of" +msgstr "" + +#. 414 +msgid "Kuwait" +msgstr "" + +#. 136 +msgid "Cayman Islands" +msgstr "" + +#. 398 +msgid "Kazakhstan" +msgstr "" + +#. 418 +msgid "Lao People's Democratic Republic" +msgstr "" + +#. 422 +msgid "Lebanon" +msgstr "" + +#. 662 +msgid "Saint Lucia" +msgstr "" + +#. 438 +msgid "Liechtenstein" +msgstr "" + +#. 144 +msgid "Sri Lanka" +msgstr "" + +#. 430 +msgid "Liberia" +msgstr "" + +#. 426 +msgid "Lesotho" +msgstr "" + +#. 440 +msgid "Lithuania" +msgstr "" + +#. 442 +msgid "Luxembourg" +msgstr "" + +#. 428 +msgid "Latvia" +msgstr "" + +#. 434 +msgid "Libya" +msgstr "" + +#. 504 +msgid "Morocco" +msgstr "" + +#. 492 +msgid "Monaco" +msgstr "" + +#. 498 +msgid "Moldova, Republic of" +msgstr "" + +#. 499 +msgid "Montenegro" +msgstr "" + +#. 663 +msgid "Saint Martin (French part)" +msgstr "" + +#. 450 +msgid "Madagascar" +msgstr "" + +#. 584 +msgid "Marshall Islands" +msgstr "" + +#. 807 +msgid "Macedonia, the former Yugoslav Republic of" +msgstr "" + +#. 466 +msgid "Mali" +msgstr "" + +#. 104 +msgid "Myanmar" +msgstr "" + +#. 496 +msgid "Mongolia" +msgstr "" + +#. 446 +msgid "Macao" +msgstr "" + +#. 580 +msgid "Northern Mariana Islands" +msgstr "" + +#. 474 +msgid "Martinique" +msgstr "" + +#. 478 +msgid "Mauritania" +msgstr "" + +#. 500 +msgid "Montserrat" +msgstr "" + +#. 470 +msgid "Malta" +msgstr "" + +#. 480 +msgid "Mauritius" +msgstr "" + +#. 462 +msgid "Maldives" +msgstr "" + +#. 454 +msgid "Malawi" +msgstr "" + +#. 484 +msgid "Mexico" +msgstr "" + +#. 458 +msgid "Malaysia" +msgstr "" + +#. 508 +msgid "Mozambique" +msgstr "" + +#. 516 +msgid "Namibia" +msgstr "" + +#. 540 +msgid "New Caledonia" +msgstr "" + +#. 562 +msgid "Niger" +msgstr "" + +#. 574 +msgid "Norfolk Island" +msgstr "" + +#. 566 +msgid "Nigeria" +msgstr "" + +#. 558 +msgid "Nicaragua" +msgstr "" + +#. 528 +msgid "Netherlands" +msgstr "" + +#. 578 +msgid "Norway" +msgstr "" + +#. 524 +msgid "Nepal" +msgstr "" + +#. 520 +msgid "Nauru" +msgstr "" + +#. 570 +msgid "Niue" +msgstr "" + +#. 554 +msgid "New Zealand" +msgstr "" + +#. 512 +msgid "Oman" +msgstr "" + +#. 591 +msgid "Panama" +msgstr "" + +#. 604 +msgid "Peru" +msgstr "" + +#. 258 +msgid "French Polynesia" +msgstr "" + +#. 598 +msgid "Papua New Guinea" +msgstr "" + +#. 608 +msgid "Philippines" +msgstr "" + +#. 586 +msgid "Pakistan" +msgstr "" + +#. 616 +msgid "Poland" +msgstr "" + +#. 666 +msgid "Saint Pierre and Miquelon" +msgstr "" + +#. 612 +msgid "Pitcairn" +msgstr "" + +#. 630 +msgid "Puerto Rico" +msgstr "" + +#. 275 +msgid "Palestinian Territory, Occupied" +msgstr "" + +#. 620 +msgid "Portugal" +msgstr "" + +#. 585 +msgid "Palau" +msgstr "" + +#. 600 +msgid "Paraguay" +msgstr "" + +#. 634 +msgid "Qatar" +msgstr "" + +#. 638 +msgid "Reunion" +msgstr "" + +#. 642 +msgid "Romania" +msgstr "" + +#. 688 +msgid "Serbia" +msgstr "" + +#. 643 +msgid "Russian Federation" +msgstr "" + +#. 646 +msgid "Rwanda" +msgstr "" + +#. 682 +msgid "Saudi Arabia" +msgstr "" + +#. 090 +msgid "Solomon Islands" +msgstr "" + +#. 690 +msgid "Seychelles" +msgstr "" + +#. 736 +msgid "Sudan" +msgstr "" + +#. 752 +msgid "Sweden" +msgstr "" + +#. 702 +msgid "Singapore" +msgstr "" + +#. 654 +msgid "Saint Helena" +msgstr "" + +#. 705 +msgid "Slovenia" +msgstr "" + +#. 744 +msgid "Svalbard and Jan Mayen" +msgstr "" + +#. 703 +msgid "Slovakia" +msgstr "" + +#. 694 +msgid "Sierra Leone" +msgstr "" + +#. 674 +msgid "San Marino" +msgstr "" + +#. 686 +msgid "Senegal" +msgstr "" + +#. 706 +msgid "Somalia" +msgstr "" + +#. 740 +msgid "Suriname" +msgstr "" + +#. 728 +msgid "South Sudan" +msgstr "" + +#. 678 +msgid "Sao Tome and Principe" +msgstr "" + +#. 222 +msgid "El Salvador" +msgstr "" + +#. 534 +msgid "Sint Maarten (Dutch part)" +msgstr "" + +#. 760 +msgid "Syrian Arab Republic" +msgstr "" + +#. 748 +msgid "Swaziland" +msgstr "" + +#. 796 +msgid "Turks and Caicos Islands" +msgstr "" + +#. 148 +msgid "Chad" +msgstr "" + +#. 260 +msgid "French Southern Territories" +msgstr "" + +#. 768 +msgid "Togo" +msgstr "" + +#. 764 +msgid "Thailand" +msgstr "" + +#. 762 +msgid "Tajikistan" +msgstr "" + +#. 772 +msgid "Tokelau" +msgstr "" + +#. 626 +msgid "Timor-Leste" +msgstr "" + +#. 795 +msgid "Turkmenistan" +msgstr "" + +#. 788 +msgid "Tunisia" +msgstr "" + +#. 776 +msgid "Tonga" +msgstr "" + +#. 792 +msgid "Turkey" +msgstr "" + +#. 780 +msgid "Trinidad and Tobago" +msgstr "" + +#. 798 +msgid "Tuvalu" +msgstr "" + +#. 158 +msgid "Taiwan, Province of China" +msgstr "" + +#. 834 +msgid "Tanzania, United Republic of" +msgstr "" + +#. 804 +msgid "Ukraine" +msgstr "" + +#. 800 +msgid "Uganda" +msgstr "" + +#. 581 +msgid "United States Minor Outlying Islands" +msgstr "" + +#. 840 +msgid "United States" +msgstr "" + +#. 858 +msgid "Uruguay" +msgstr "" + +#. 860 +msgid "Uzbekistan" +msgstr "" + +#. 336 +msgid "Holy See (Vatican City State)" +msgstr "" + +#. 670 +msgid "Saint Vincent and the Grenadines" +msgstr "" + +#. 862 +msgid "Venezuela" +msgstr "" + +#. 092 +msgid "Virgin Islands, British" +msgstr "" + +#. 850 +msgid "Virgin Islands, U.S." +msgstr "" + +#. 704 +msgid "Viet Nam" +msgstr "" + +#. 548 +msgid "Vanuatu" +msgstr "" + +#. 876 +msgid "Wallis and Futuna" +msgstr "" + +#. 882 +msgid "Samoa" +msgstr "" + +#. 887 +msgid "Yemen" +msgstr "" + +#. 175 +msgid "Mayotte" +msgstr "" + +#. 710 +msgid "South Africa" +msgstr "" + +#. 894 +msgid "Zambia" +msgstr "" + +#. 716 +msgid "Zimbabwe" +msgstr "" + +msgid "* Unknown, add is_in tags to those cities" +msgstr "" + +msgid "" +"navit usage:\n" +"navit [options] [configfile]\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" +"\t-h: print this usage info and exit.\n" +"\t-v: print the version and exit.\n" +msgstr "" + +#. We have not found an existing config file from all possibilities +msgid "No config file navit.xml, navit.xml.local found\n" +msgstr "" + +#, c-format +msgid "Error parsing config file '%s': %s\n" +msgstr "" + +#, c-format +msgid "Using config file '%s'\n" +msgstr "" + +#, c-format +msgid "Error: No configuration found in config file '%s'\n" +msgstr "" + +msgid "" +"Internal initialization failed, exiting. Check previous error messages.\n" +msgstr "" + +msgid "unknown street" +msgstr "" + +#. Safe cast: attr_generic_set_attr does not modify its parameter. +msgid "Unnamed vehicle" +msgstr "" + +msgid "Failed to write bookmarks file" +msgstr "" + +#. Strings from navit_shipped.xml +msgid "Map Point" +msgstr "" + +msgid "Car" +msgstr "" + +msgid "Iso2" +msgstr "" + +msgid "Iso3" +msgstr "" + +msgid "Country" +msgstr "" + +msgid "Postal" +msgstr "" + +msgid "Town" +msgstr "" + +msgid "District" +msgstr "" + +msgid "Street" +msgstr "" + +msgid "Number" +msgstr "" + +msgid "Enter Destination" +msgstr "" + +msgid "Zip Code" +msgstr "" + +msgid "City" +msgstr "" + +msgid "District/Township" +msgstr "" + +msgid "Map" +msgstr "" + +msgid "Bookmark" +msgstr "" + +msgid "Destination" +msgstr "" + +#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired). +msgid "_Display" +msgstr "" + +msgid "_Route" +msgstr "" + +msgid "_Former Destinations" +msgstr "" + +msgid "_Bookmarks" +msgstr "" + +msgid "_Map" +msgstr "" + +msgid "_Layout" +msgstr "" + +msgid "_Projection" +msgstr "" + +msgid "_Vehicle" +msgstr "" + +msgid "Zoom_Out" +msgstr "" + +msgid "Decrease zoom level" +msgstr "" + +msgid "Zoom_In" +msgstr "" + +msgid "Increase zoom level" +msgstr "" + +msgid "_Recalculate" +msgstr "" + +msgid "Redraw map" +msgstr "" + +msgid "_Info" +msgstr "" + +msgid "Set _destination" +msgstr "" + +msgid "Opens address search dialog" +msgstr "" + +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + +msgid "_Stop Navigation" +msgstr "" + +msgid "Test" +msgstr "" + +msgid "_Quit" +msgstr "" + +msgid "Quit the application" +msgstr "" + +msgid "Show position _cursor" +msgstr "" + +msgid "_Lock on Road" +msgstr "" + +msgid "_Keep orientation to the North" +msgstr "" + +msgid "Switches map orientation to the north or the vehicle" +msgstr "" + +msgid "_Roadbook" +msgstr "" + +msgid "Show/hide route description" +msgstr "" + +msgid "_Autozoom" +msgstr "" + +msgid "Enable/disable automatic zoom level changing" +msgstr "" + +msgid "_Fullscreen" +msgstr "" + +msgid "Data" +msgstr "" + +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + +msgid "N" +msgstr "" + +msgid "NE" +msgstr "" + +msgid "E" +msgstr "" + +msgid "SE" +msgstr "" + +msgid "S" +msgstr "" + +msgid "SW" +msgstr "" + +msgid "W" +msgstr "" + +msgid "NW" +msgstr "" + +#. Android resource: @strings/no +msgid "No" +msgstr "" + +msgid "2D" +msgstr "" + +msgid "3D" +msgstr "" + +msgid "OT" +msgstr "" + +#, c-format +msgid "Route %4.0fkm %02d:%02d ETA" +msgstr "" + +msgid "Route 0000km 0+00:00 ETA" +msgstr "" + +msgid "Help" +msgstr "" + +#, c-format +msgid "Waypoint %s" +msgstr "" + +msgid "Select waypoint to insert the new one before" +msgstr "" + +msgid "View in Browser" +msgstr "" + +msgid "Item type" +msgstr "" + +#. Android resource: @strings/address_search_streets +msgid "Streets" +msgstr "" + +msgid "House numbers" +msgstr "" + +msgid "View Attributes" +msgstr "" + +msgid "Set as position (and deactivate vehicle)" +msgstr "" + +msgid "POIs" +msgstr "" + +msgid "View on map" +msgstr "" + +msgid "Remove search results from the map" +msgstr "" + +msgid "Show results on the map" +msgstr "" + +msgid "Cut Bookmark" +msgstr "" + +msgid "Copy Bookmark" +msgstr "" + +msgid "Rename Bookmark" +msgstr "" + +msgid "Paste Bookmark" +msgstr "" + +msgid "Delete Bookmark" +msgstr "" + +msgid "Delete waypoint" +msgstr "" + +msgid "Bookmarks" +msgstr "" + +msgid "Bookmarks as waypoints" +msgstr "" + +msgid "Save waypoints" +msgstr "" + +msgid "Replace with waypoints" +msgstr "" + +msgid "Delete Folder" +msgstr "" + +#. Adds the Bookmark folders +msgid "Add Bookmark folder" +msgstr "" + +#. Pastes the Bookmark +msgid "Paste bookmark" +msgstr "" + +#, c-format +msgid "Bookmark %s" +msgstr "" + +#, c-format +msgid "Download %s" +msgstr "" + +msgid "Map Download" +msgstr "" + +msgid "Active" +msgstr "" + +msgid "Download Enabled" +msgstr "" + +msgid "Download completely" +msgstr "" + +msgid "Show Satellite Status" +msgstr "" + +msgid " Elevation " +msgstr "" + +msgid " Azimuth " +msgstr "" + +msgid "Show NMEA Data" +msgstr "" + +msgid "car" +msgstr "" + +msgid "bike" +msgstr "" + +msgid "pedestrian" +msgstr "" + +#, c-format +msgid "Current profile: %s" +msgstr "" + +#, c-format +msgid "Change profile to: %s" +msgstr "" + +msgid "Set as active" +msgstr "" + +msgid "Show Satellite status" +msgstr "" + +msgid "Show NMEA data" +msgstr "" + +msgid "Add Bookmark" +msgstr "" + +msgid "Rename" +msgstr "" + +msgid "About Navit" +msgstr "" + +#. Authors +msgid "By" +msgstr "" + +#. Contributors +msgid "And all the Navit Team" +msgstr "" + +msgid "members and contributors." +msgstr "" + +msgid "Waypoints" +msgstr "" + +msgid "Enter Coordinates" +msgstr "" + +#. +#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) +#. gui_internal_widget_append(wb, w) +#. +#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) +#. gui_internal_widget_append(w, we) +msgid "Latitude Longitude" +msgstr "" + +msgid "Enter coordinates, for example:" +msgstr "" + +msgid "Vehicle" +msgstr "" + +msgid "Rules" +msgstr "" + +msgid "Lock on road" +msgstr "" + +msgid "Northing" +msgstr "" + +msgid "Map follows Vehicle" +msgstr "" + +msgid "Plan with Waypoints" +msgstr "" + +msgid "Maps" +msgstr "" + +msgid "Layout" +msgstr "" + +msgid "Height Profile" +msgstr "" + +msgid "Route Description" +msgstr "" + +msgid "Show Locale" +msgstr "" + +msgid "Former Destinations" +msgstr "" + +msgid "- No former destinations available -" +msgstr "" + +msgid "Message" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Back to map" +msgstr "" + +msgid "Main Menu" +msgstr "" + +msgid "House number" +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Prev" +msgstr "" + +msgid "Return to route!" +msgstr "" + +#. warning told +msgid "Look out! Camera!" +msgstr "" + +#. warning told +msgid "Please decrease your speed" +msgstr "" + +msgid "partial match" +msgstr "" + +#. Android resource: @strings/address_search_button +msgid "Search" +msgstr "" + +#. Android resource: @strings/address_search_towns +msgid "Towns" +msgstr "" + +#. Android resource: @strings/position_popup_drive_here +msgid "Route to here" +msgstr "" + +msgid "Map data (c) OpenStreetMap contributors, ODBL" +msgstr "" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + +msgid "Downloaded maps" +msgstr "" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + +msgid "Whole Planet" +msgstr "" + +msgid "Africa" +msgstr "" + +msgid "Canary Islands" +msgstr "" + +msgid "Asia" +msgstr "" + +msgid "Korea" +msgstr "" + +msgid "Taiwan" +msgstr "" + +msgid "UAE+Other" +msgstr "" + +msgid "Oceania" +msgstr "" + +msgid "Tasmania" +msgstr "" + +msgid "Victoria" +msgstr "" + +msgid "New South Wales" +msgstr "" + +msgid "Europe" +msgstr "" + +msgid "Western Europe" +msgstr "" + +msgid "Azores" +msgstr "" + +msgid "BeNeLux" +msgstr "" + +msgid "Alsace" +msgstr "" + +msgid "Aquitaine" +msgstr "" + +msgid "Auvergne" +msgstr "" + +msgid "Basse-Normandie" +msgstr "" + +msgid "Bourgogne" +msgstr "" + +msgid "Bretagne" +msgstr "" + +msgid "Centre" +msgstr "" + +msgid "Champagne-Ardenne" +msgstr "" + +msgid "Corse" +msgstr "" + +msgid "Franche-Comte" +msgstr "" + +msgid "Haute-Normandie" +msgstr "" + +msgid "Ile-de-France" +msgstr "" + +msgid "Languedoc-Roussillon" +msgstr "" + +msgid "Limousin" +msgstr "" + +msgid "Lorraine" +msgstr "" + +msgid "Midi-Pyrenees" +msgstr "" + +msgid "Nord-pas-de-Calais" +msgstr "" + +msgid "Pays-de-la-Loire" +msgstr "" + +msgid "Picardie" +msgstr "" + +msgid "Poitou-Charentes" +msgstr "" + +msgid "Provence-Alpes-Cote-d-Azur" +msgstr "" + +msgid "Rhone-Alpes" +msgstr "" + +msgid "Baden-Wuerttemberg" +msgstr "" + +msgid "Bayern" +msgstr "" + +msgid "Mittelfranken" +msgstr "" + +msgid "Niederbayern" +msgstr "" + +msgid "Oberbayern" +msgstr "" + +msgid "Oberfranken" +msgstr "" + +msgid "Oberpfalz" +msgstr "" + +msgid "Schwaben" +msgstr "" + +msgid "Unterfranken" +msgstr "" + +msgid "Berlin" +msgstr "" + +msgid "Brandenburg" +msgstr "" + +msgid "Bremen" +msgstr "" + +msgid "Hamburg" +msgstr "" + +msgid "Hessen" +msgstr "" + +msgid "Mecklenburg-Vorpommern" +msgstr "" + +msgid "Niedersachsen" +msgstr "" + +msgid "Nordrhein-westfalen" +msgstr "" + +msgid "Rheinland-Pfalz" +msgstr "" + +msgid "Saarland" +msgstr "" + +msgid "Sachsen-Anhalt" +msgstr "" + +msgid "Sachsen" +msgstr "" + +msgid "Schleswig-Holstein" +msgstr "" + +msgid "Thueringen" +msgstr "" + +msgid "Mallorca" +msgstr "" + +msgid "Galicia" +msgstr "" + +msgid "Scandinavia" +msgstr "" + +msgid "England" +msgstr "" + +msgid "Buckinghamshire" +msgstr "" + +msgid "Cambridgeshire" +msgstr "" + +msgid "Cumbria" +msgstr "" + +msgid "East yorkshire with hull" +msgstr "" + +msgid "Essex" +msgstr "" + +msgid "Herefordshire" +msgstr "" + +msgid "Kent" +msgstr "" + +msgid "Lancashire" +msgstr "" + +msgid "Leicestershire" +msgstr "" + +msgid "Norfolk" +msgstr "" + +msgid "Nottinghamshire" +msgstr "" + +msgid "Oxfordshire" +msgstr "" + +msgid "Shropshire" +msgstr "" + +msgid "Somerset" +msgstr "" + +msgid "South yorkshire" +msgstr "" + +msgid "Suffolk" +msgstr "" + +msgid "Surrey" +msgstr "" + +msgid "Wiltshire" +msgstr "" + +msgid "Scotland" +msgstr "" + +msgid "Wales" +msgstr "" + +msgid "Crete" +msgstr "" + +msgid "North America" +msgstr "" + +msgid "Alaska" +msgstr "" + +msgid "Hawaii" +msgstr "" + +msgid "USA" +msgstr "" + +msgid " (except Alaska and Hawaii)" +msgstr "" + +msgid "Midwest" +msgstr "" + +msgid "Michigan" +msgstr "" + +msgid "Ohio" +msgstr "" + +msgid "Northeast" +msgstr "" + +msgid "Massachusetts" +msgstr "" + +msgid "Vermont" +msgstr "" + +msgid "Pacific" +msgstr "" + +msgid "South" +msgstr "" + +msgid "Arkansas" +msgstr "" + +msgid "District of Columbia" +msgstr "" + +msgid "Florida" +msgstr "" + +msgid "Louisiana" +msgstr "" + +msgid "Maryland" +msgstr "" + +msgid "Mississippi" +msgstr "" + +msgid "Oklahoma" +msgstr "" + +msgid "Texas" +msgstr "" + +msgid "Virginia" +msgstr "" + +msgid "West Virginia" +msgstr "" + +msgid "West" +msgstr "" + +msgid "Arizona" +msgstr "" + +msgid "California" +msgstr "" + +msgid "Colorado" +msgstr "" + +msgid "Idaho" +msgstr "" + +msgid "Montana" +msgstr "" + +msgid "New Mexico" +msgstr "" + +msgid "Nevada" +msgstr "" + +msgid "Oregon" +msgstr "" + +msgid "Utah" +msgstr "" + +msgid "Washington State" +msgstr "" + +msgid "South+Middle America" +msgstr "" + +msgid "Guyane Francaise" +msgstr "" + +msgid "downloading" +msgstr "" + +#. Android resource: @strings/map_download_ready +msgid "ready" +msgstr "" + +msgid "Media selected for map storage is not available" +msgstr "" + +#. Android resource: @strings/map_download_not_enough_free_space +msgid "Not enough free space" +msgstr "" + +msgid "Error downloading map!" +msgstr "" + +msgid "Error writing map!" +msgstr "" + +msgid "Map download aborted!" +msgstr "" + +#. Android resource: @strings/map_download_eta +msgid "ETA" +msgstr "" + +#. Android resource: @strings/map_download_title +msgid "Map download" +msgstr "" + +msgid "Vehicle Position" +msgstr "" + +msgid "Main menu" +msgstr "" + +msgid "" +"Show\n" +"Map" +msgstr "" + +msgid "Settings" +msgstr "" + +msgid "Tools" +msgstr "" + +msgid "Route" +msgstr "" + +msgid "About" +msgstr "" + +msgid "Quit" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "" +"Former\n" +"Destinations" +msgstr "" + +msgid "Coordinates" +msgstr "" + +msgid "" +"Stop\n" +"Navigation" +msgstr "" + +msgid "Display" +msgstr "" + +msgid "Fullscreen" +msgstr "" + +msgid "Window Mode" +msgstr "" + +msgid "Description" +msgstr "" + +msgid "" +"Drop last \n" +"Waypoint" +msgstr "" + +msgid "" +"Drop next \n" +"Waypoint" +msgstr "" + +msgid "Satellite Status" +msgstr "" + +msgid "NMEA Data" +msgstr "" + +msgid "car_shortest" +msgstr "" + +msgid "car_avoid_tolls" +msgstr "" + +msgid "car_pedantic" +msgstr "" + +msgid "horse" +msgstr "" + +msgid "Truck" +msgstr "" + +#. Strings from android/res/values/strings.xml +#. Android resource: @strings/yes +msgid "Yes" +msgstr "" + +#. Android resource: @strings/notification_ticker +msgid "Navit started" +msgstr "" + +#. Android resource: @strings/notification_event_default +msgid "Navit running" +msgstr "" + +#. Android resource: @strings/initial_info_box_title +msgid "Welcome to Navit" +msgstr "" + +#. Android resource: @strings/initial_info_box_message +msgid "" +"Thank you for installing Navit!\n" +"\n" +"To start, select \"Download maps\" from the menu to download a map. Note: " +"The map filesize may be large (>50MB) - a wifi connection is recommended.\n" +"\n" +"Mapdata: (c) OpenStreetMap contributors\n" +"\n" +"Enjoy Navit!" +msgstr "" + +#. Android resource: @strings/initial_info_box_OK +msgid "OK" +msgstr "" + +#. Android resource: @strings/initial_info_box_more_info +msgid "More info" +msgstr "" + +#. Android resource: @strings/optionsmenu_zoom_in +msgid "Zoom in" +msgstr "" + +#. Android resource: @strings/optionsmenu_zoom_out +msgid "Zoom out" +msgstr "" + +#. Android resource: @strings/optionsmenu_download_maps +msgid "Download maps" +msgstr "" + +#. Android resource: @strings/optionsmenu_toggle_poi +msgid "Toggle POIs" +msgstr "" + +#. Android resource: @strings/optionsmenu_exit_navit +msgid "Exit Navit" +msgstr "" + +#. Android resource: @strings/optionsmenu_backup_restore +msgid "Backup / Restore" +msgstr "" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + +#. Android resource: @strings/map_delete +msgid "Delete this map?" +msgstr "" + +#. Android resource: @strings/map_download_downloading +msgid "Downloading:" +msgstr "" + +#. Android resource: @strings/map_download_download_error +msgid "Error downloading map." +msgstr "" + +#. Android resource: @strings/map_download_download_aborted +msgid "Map download aborted" +msgstr "" + +#. Android resource: @strings/map_no_fix +msgid "No location. Reopen after location fix." +msgstr "" + +#. Android resource: @strings/maps_for_current_location +msgid "Maps containing current location" +msgstr "" + +#. Android resource: @strings/address_search_title +msgid "Address search" +msgstr "" + +#. Android resource: @strings/address_enter_destination +msgid "Enter destination" +msgstr "" + +#. Android resource: @strings/address_partial_match +msgid "Match partial address" +msgstr "" + +#. Android resource: @strings/address_search_searching +msgid "Searching..." +msgstr "" + +#. Android resource: @strings/address_search_not_found +msgid "Address not found" +msgstr "" + +#. Android resource: @strings/address_search_getting_results +msgid "Getting search results" +msgstr "" + +#. Android resource: @strings/address_search_loading_results +msgid "Loading search results" +msgstr "" + +#. Android resource: @strings/address_search_no_results +msgid "No results found" +msgstr "" + +#. Android resource: @strings/address_search_no_text_entered +msgid "No text entered" +msgstr "" + +#. Android resource: @strings/address_search_set_destination +msgid "Setting destination to:" +msgstr "" + +#. Android resource: @strings/choose_an_action +msgid "Choose an action" +msgstr "" + +#. Android resource: @strings/please_insert_an_sd_card +msgid "Please insert an SD Card" +msgstr "" + +#. Android resource: @strings/backing_up +msgid "Backing up..." +msgstr "" + +#. Android resource: @strings/restoring +msgid "Restoring..." +msgstr "" + +#. Android resource: @strings/failed_to_create_backup_directory +msgid "Failed to create backup directory" +msgstr "" + +#. Android resource: @strings/backup_failed +msgid "Backup failed" +msgstr "" + +#. Android resource: @strings/no_backup_found +msgid "No backup found" +msgstr "" + +#. Android resource: @strings/failed_to_restore +msgid "Failed to restore" +msgstr "" + +#. Android resource: @strings/backup_successful +msgid "Backup successful" +msgstr "" + +#. Android resource: @strings/restore_successful_please_restart_navit +msgid "" +"Restore Successful\n" +"Please restart Navit" +msgstr "" + +#. Android resource: @strings/backup_not_found +msgid "Backup not found" +msgstr "" + +#. Android resource: @strings/restore_failed +msgid "Restore failed" +msgstr "" + +#. Android resource: @strings/select_backup +msgid "Select backup" +msgstr "" + +#. Android resource: @strings/backup +msgid "Backup" +msgstr "" + +#. Android resource: @strings/restore +msgid "Restore" +msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "pastaj dilni nga rrethrrotullimi tek %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/sr.po.in navit-0.5.0+dfsg.1/po/sr.po.in --- navit-0.5.0~svn5900+dfsg.1/po/sr.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/sr.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,34 +1,31 @@ -# Serbian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Serbian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Ivan Janjić https://launchpad.net/~milandd # KaZeR https://launchpad.net/~kazer -# Slobodan Simic https://launchpad.net/~simicsl +# Slobodan Simić https://launchpad.net/~slsimic # momcilo https://launchpad.net/~momcilo-majic # Мирослав Николић https://launchpad.net/~lipek - +# Саша Петровић https://launchpad.net/~salepetronije msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:44+0000\n" -"Last-Translator: KaZeR \n" -"Language-Team: Launchpad Serbian Translators\n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" +"Last-Translator: Саша Петровић \n" +"Language-Team: српски \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" -"Language: sr\n" +"Language: \n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" -msgstr "Покренут из изворног директоријума\n" +msgstr "Покренут из изворне фасцикле\n" #, c-format msgid "setting '%s' to '%s'\n" @@ -54,7 +51,7 @@ msgstr "пето" msgid "sixth" -msgstr "шестп" +msgstr "шесто" #. TRANSLATORS: the following counts refer to roundabout exits msgid "zeroth exit" @@ -79,36 +76,42 @@ msgstr "шести излаз" #, c-format -msgid "%d m" -msgstr "%d м" +msgid "%d feet" +msgstr "%d стопа" #, c-format -msgid "in %d m" -msgstr "за %d м" +msgid "in %d feet" +msgstr "за %d стопе" #, c-format -msgid "%d feet" -msgstr "" +msgid "%d.%d miles" +msgstr "%d.%d миља" #, c-format -msgid "in %d feet" -msgstr "" +msgid "in %d.%d miles" +msgstr "за %d.%d миља" #, c-format -msgid "%d meters" -msgstr "%d метара" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "%d миља" +msgstr[1] "%d миље" +msgstr[2] "%d миља" #, c-format -msgid "in %d meters" -msgstr "за %d метара" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "кроз %d миља" +msgstr[1] "кроз %d миље" +msgstr[2] "кроз %d миља" #, c-format -msgid "%d.%d miles" -msgstr "" +msgid "%d meters" +msgstr "%d метара" #, c-format -msgid "in %d.%d miles" -msgstr "" +msgid "in %d meters" +msgstr "за %d метара" #, c-format msgid "%d.%d kilometers" @@ -119,18 +122,6 @@ msgstr "за %d.%d километара" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d километара" @@ -144,30 +135,53 @@ msgstr[1] "за %d километара" msgstr[2] "за %d километара" -msgid "exit" -msgstr "излаз" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "на нагибу" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sу улици %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sу %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sу %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sу %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sу %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -175,32 +189,17 @@ msgid "%sinto the %s" msgstr "%sна %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "десно" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "лево" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "лако " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "јако " +msgid "When possible, please turn around" +msgstr "Када буде могуће, променити смер" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "веома јако " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "непознат " +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -msgid "When possible, please turn around" -msgstr "По могућству, променити смер" +#, c-format +msgid "Follow the road for the next %s" +msgstr "Прати пут до следећег %s" msgid "Enter the roundabout soon" msgstr "Ускоро прелазак на обилазницу" @@ -210,56 +209,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "потом напутстите обилазницу на %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Напуштање обилазнице за %1$s %2$s" + +msgid "soon" +msgstr "ускоро" + +msgid "now" +msgstr "сад" + +msgid "then" +msgstr "потом" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Напуштање обилазнице за %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Прати пут до следећег %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "ускоро" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Прати %1$s пут до %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "после %i путева" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "сад" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "десно" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "лево" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "лако " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "јако " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "потом прати пут %1$s до %2$s" +msgstr "" -msgid "error" -msgstr "грешка" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Прати %1$s пут до %2$s" + +#, c-format +msgid "after %i roads" +msgstr "после %i путева" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Скрени %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "потом скрени %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "потом променити смер" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Променити смер %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "потом променити смер" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Променити смер %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "потом сте стигли на своје одредиште." +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Стигли сте на одредиште %s" -msgid "then you have reached your destination." -msgstr "потом сте стигли на Ваше одредиште." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Излаз" #. Android resource: @strings/position_popup_title msgid "Position" @@ -272,10 +391,10 @@ msgstr "Дужина" msgid "km" -msgstr "км" +msgstr "km" msgid "m" -msgstr "м" +msgstr "m" msgid "Time" msgstr "Време" @@ -291,19 +410,19 @@ #, c-format msgid "Waypoint %d" -msgstr "" +msgstr "Пролазна тачка %d" msgid "Visit before..." -msgstr "" +msgstr "Посети пре..." msgid "Set as position" -msgstr "Постави као позицију" +msgstr "Постави као положај" msgid "Set as destination" msgstr "Постави као одредиште" msgid "Add as bookmark" -msgstr "Додај као пречицу" +msgstr "Додај као забелешку" #, c-format msgid "Point 0x%x 0x%x" @@ -527,7 +646,7 @@ #. 531 msgid "Curacao" -msgstr "" +msgstr "Куракао" #. 162 msgid "Christmas Island" @@ -859,7 +978,7 @@ #. 434 msgid "Libya" -msgstr "" +msgstr "Либија" #. 504 msgid "Morocco" @@ -1147,7 +1266,7 @@ #. 728 msgid "South Sudan" -msgstr "" +msgstr "Јужни Судан" #. 678 msgid "Sao Tome and Principe" @@ -1159,7 +1278,7 @@ #. 534 msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Свети Мартин (Холандски део)" #. 760 msgid "Syrian Arab Republic" @@ -1314,51 +1433,57 @@ msgstr "Зимбабве" msgid "* Unknown, add is_in tags to those cities" -msgstr "* Непознато, додај is_in таг у ове градове" +msgstr "* Непознато, додатак је у is_in ознакама ових градова" msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" msgstr "" +"Нема датотеке подешавања navit.xml, navit.xml.сопствени је пронађен\n" #, c-format msgid "Error parsing config file '%s': %s\n" msgstr "" +"Десила се грешка приликом рашчлањивања датотеке подешавања „%s“: %s\n" #, c-format msgid "Using config file '%s'\n" -msgstr "" +msgstr "Користим датотеку подешавања „%s“\n" #, c-format msgid "Error: No configuration found in config file '%s'\n" -msgstr "" +msgstr "ГРЕШКА: Нису пронађене поставке у датотеци подешавања „%s“\n" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" msgstr "" +"Није успело унутрашње покретање, излазим. Проверите претходне поруке " +"грешака.\n" msgid "unknown street" -msgstr "" +msgstr "непозната улица" #. Safe cast: attr_generic_set_attr does not modify its parameter. msgid "Unnamed vehicle" -msgstr "" +msgstr "Неимановано возила" msgid "Failed to write bookmarks file" -msgstr "" +msgstr "Нисам успео да пишем у датотеци забелешки" #. Strings from navit_shipped.xml msgid "Map Point" -msgstr "Тачка на мапи" +msgstr "Тачка на карти" msgid "Car" msgstr "Кола" @@ -1422,7 +1547,7 @@ msgstr "Обележивачи" msgid "_Map" -msgstr "Карта" +msgstr "_Карта" msgid "_Layout" msgstr "Распоред" @@ -1449,17 +1574,23 @@ msgstr "Прерачунај" msgid "Redraw map" -msgstr "Освежи мапу" +msgstr "Освежи карту" msgid "_Info" msgstr "Подаци" msgid "Set _destination" -msgstr "" +msgstr "Постави _одредиште" msgid "Opens address search dialog" msgstr "Отвара дијалог претраге адресе" +msgid "_POI search" +msgstr "Претрага занимљивих тачака_" + +msgid "Opens POI search dialog" +msgstr "Отвори прозор претраге занимљивих тачака" + msgid "_Stop Navigation" msgstr "Заустави навигацију" @@ -1473,13 +1604,13 @@ msgstr "Изађите из програма" msgid "Show position _cursor" -msgstr "" +msgstr "Прикажи _показивач положаја" msgid "_Lock on Road" msgstr "Прати пут" msgid "_Keep orientation to the North" -msgstr "" +msgstr "_Држи усмерење према северу" msgid "Switches map orientation to the north or the vehicle" msgstr "Пребацује усмерење карте на север или на правац возила" @@ -1502,6 +1633,100 @@ msgid "Data" msgstr "Подаци" +msgid "Pharmacy" +msgstr "Апотека" + +msgid "Restaurant" +msgstr "Одмориште" + +msgid "Restaurant. Fast food" +msgstr "Одмориште. Брза храна" + +msgid "Hotel" +msgstr "Хотел" + +msgid "Car parking" +msgstr "Паркинг" + +msgid "Fuel station" +msgstr "Бензинска пумпа" + +msgid "Bank" +msgstr "Банка" + +msgid "Hospital" +msgstr "Болница" + +msgid "Cinema" +msgstr "Биоскоп" + +msgid "Train station" +msgstr "Возна станица" + +msgid "School" +msgstr "Школа" + +msgid "Police" +msgstr "Полиција" + +msgid "Justice" +msgstr "Суд" + +msgid "Taxi" +msgstr "Такси" + +msgid "Shopping" +msgstr "Куповина" + +msgid "Distance from screen center (km)" +msgstr "Растојање од средишта екрана (km)" + +#, c-format +msgid "POI %s. %s" +msgstr "Занимљива тачка %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Постави одредиште на %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Постави карту на %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "Постави следећу посету на %ld, %ld \n" + +msgid "POI search" +msgstr "Претрага занимљивих тачака" + +msgid "Select a category" +msgstr "Изаберите врсту" + +msgid "Select a distance to look for (km)" +msgstr "Изаберите даљину претраге (km)" + +msgid "Select a POI" +msgstr "Изаберите занимљиву тачку" + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Врста" + +msgid "Direction" +msgstr "Правац" + +msgid "Distance(m)" +msgstr "Растојање(m)" + +msgid "Name" +msgstr "Име" + +msgid "Visit Before" +msgstr "Посети пре" + msgid "N" msgstr "С" @@ -1551,16 +1776,16 @@ #, c-format msgid "Waypoint %s" -msgstr "" +msgstr "Пролазна тачка %s" msgid "Select waypoint to insert the new one before" -msgstr "" +msgstr "Изаберите пролазну тачку за унос пре претходне" msgid "View in Browser" msgstr "Погледај у претраживачу" msgid "Item type" -msgstr "" +msgstr "Врста ставке" #. Android resource: @strings/address_search_streets msgid "Streets" @@ -1573,19 +1798,19 @@ msgstr "Преглед особина" msgid "Set as position (and deactivate vehicle)" -msgstr "" +msgstr "Постави као положај (и искључи возило)" msgid "POIs" msgstr "Тачке интересовања" msgid "View on map" -msgstr "Погледај на мапи" +msgstr "Погледај на карти" msgid "Remove search results from the map" -msgstr "" +msgstr "Уклони излазе из претраге са карте" msgid "Show results on the map" -msgstr "" +msgstr "Прикажи излазе претраге на карти" msgid "Cut Bookmark" msgstr "Исеци обележивач" @@ -1603,26 +1828,26 @@ msgstr "Обриши обележивач" msgid "Delete waypoint" -msgstr "" +msgstr "Избриши пролазну тачку" msgid "Bookmarks" msgstr "Обележивачи" msgid "Bookmarks as waypoints" -msgstr "" +msgstr "Обележивачи као пролазне тачке" msgid "Save waypoints" -msgstr "" +msgstr "Сачувај пролазне тачке" msgid "Replace with waypoints" -msgstr "" +msgstr "Замени пролазним тачкама" msgid "Delete Folder" -msgstr "" +msgstr "Избриши фасциклу" #. Adds the Bookmark folders msgid "Add Bookmark folder" -msgstr "Додај фолдер са обележивачима" +msgstr "Додај фасциклу са обележивачима" #. Pastes the Bookmark msgid "Paste bookmark" @@ -1634,19 +1859,19 @@ #, c-format msgid "Download %s" -msgstr "" +msgstr "Преузми %s" msgid "Map Download" -msgstr "" +msgstr "Преузимање карте" msgid "Active" -msgstr "" +msgstr "Радно" msgid "Download Enabled" -msgstr "" +msgstr "Преузимање је омогућено" msgid "Download completely" -msgstr "" +msgstr "Преузми потпуно" msgid "Show Satellite Status" msgstr "Прикажи стање сателита" @@ -1707,10 +1932,10 @@ msgstr "чланови и доприносиоци" msgid "Waypoints" -msgstr "" +msgstr "Пролазне тачке" msgid "Enter Coordinates" -msgstr "" +msgstr "Унесите координате" #. #. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) @@ -1719,10 +1944,10 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Географска ширина и дужина" msgid "Enter coordinates, for example:" -msgstr "" +msgstr "Унесите координате, на пример:" msgid "Vehicle" msgstr "Возило" @@ -1734,16 +1959,16 @@ msgstr "Прати пут" msgid "Northing" -msgstr "Ништа" +msgstr "Управљање по северу" msgid "Map follows Vehicle" -msgstr "Мапа прати возило" +msgstr "Карта прати возило" msgid "Plan with Waypoints" -msgstr "" +msgstr "Планирање уз помоћ пролазних тачака" msgid "Maps" -msgstr "Мапе" +msgstr "Карте" msgid "Layout" msgstr "Распоред" @@ -1752,16 +1977,16 @@ msgstr "Висински профил" msgid "Route Description" -msgstr "Опис руте" +msgstr "Опис путање" msgid "Show Locale" -msgstr "Прикажи име локализације" +msgstr "Прикажи име превода" msgid "Former Destinations" msgstr "Претходна одредишта" msgid "- No former destinations available -" -msgstr "" +msgstr "- Нису доступна претходна одредишта -" msgid "Message" msgstr "Порука" @@ -1770,7 +1995,7 @@ msgstr "Назад" msgid "Back to map" -msgstr "Назад на мапу" +msgstr "Назад на карту" msgid "Main Menu" msgstr "Главни мени" @@ -1779,93 +2004,112 @@ msgstr "Кућни број" msgid "Next" -msgstr "" +msgstr "Следеће" msgid "Prev" -msgstr "" +msgstr "Претходно" msgid "Return to route!" -msgstr "" +msgstr "Врати се на путању!" #. warning told msgid "Look out! Camera!" -msgstr "" +msgstr "Пажња! Камера!" #. warning told msgid "Please decrease your speed" -msgstr "" +msgstr "Молим, смањите брзину" msgid "partial match" -msgstr "" +msgstr "делимично поклапање" #. Android resource: @strings/address_search_button msgid "Search" -msgstr "" +msgstr "Претражи" #. Android resource: @strings/address_search_towns msgid "Towns" -msgstr "" +msgstr "Градове" #. Android resource: @strings/position_popup_drive_here msgid "Route to here" -msgstr "" +msgstr "Путања довде" msgid "Map data (c) OpenStreetMap contributors, ODBL" +msgstr "Подаци карте (c) доприносиоци Отворене карте улица, ОДБЛ" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." msgstr "" msgid "Downloaded maps" +msgstr "Преузете карте" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." msgstr "" msgid "Cancel" +msgstr "Откажи" + +msgid "filenamePath" msgstr "" -msgid "Whole Planet" +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." msgstr "" +msgid "Whole Planet" +msgstr "Читава планета" + msgid "Africa" -msgstr "" +msgstr "Африка" msgid "Canary Islands" -msgstr "" +msgstr "Канарска Острва" msgid "Asia" -msgstr "" +msgstr "Азија" msgid "Korea" -msgstr "" +msgstr "Кореја" msgid "Taiwan" -msgstr "" +msgstr "Тајван" msgid "UAE+Other" msgstr "" msgid "Oceania" -msgstr "" +msgstr "Океанија" msgid "Tasmania" -msgstr "" +msgstr "Тасманија" msgid "Victoria" -msgstr "" +msgstr "Викторија" msgid "New South Wales" -msgstr "" +msgstr "Нови Јужни Велс" msgid "Europe" -msgstr "" +msgstr "Европа" msgid "Western Europe" -msgstr "" +msgstr "Западна Европа" msgid "Azores" -msgstr "" +msgstr "Азори" msgid "BeNeLux" -msgstr "" +msgstr "Бенелукс" msgid "Alsace" -msgstr "" +msgstr "Алзас" msgid "Aquitaine" msgstr "" @@ -1880,13 +2124,13 @@ msgstr "" msgid "Bretagne" -msgstr "" +msgstr "Бретања" msgid "Centre" -msgstr "" +msgstr "Средиште" msgid "Champagne-Ardenne" -msgstr "" +msgstr "Шампањ-Арден" msgid "Corse" msgstr "" @@ -1907,10 +2151,10 @@ msgstr "" msgid "Lorraine" -msgstr "" +msgstr "Лорена" msgid "Midi-Pyrenees" -msgstr "" +msgstr "Средњи Пиринеји" msgid "Nord-pas-de-Calais" msgstr "" @@ -1958,16 +2202,16 @@ msgstr "" msgid "Berlin" -msgstr "" +msgstr "Берлин" msgid "Brandenburg" -msgstr "" +msgstr "Бранденбург" msgid "Bremen" -msgstr "" +msgstr "Бремен" msgid "Hamburg" -msgstr "" +msgstr "Хамбург" msgid "Hessen" msgstr "" @@ -1985,10 +2229,10 @@ msgstr "" msgid "Saarland" -msgstr "" +msgstr "Сарланд" msgid "Sachsen-Anhalt" -msgstr "" +msgstr "Саксонија-Анхалт" msgid "Sachsen" msgstr "" @@ -2003,13 +2247,13 @@ msgstr "" msgid "Galicia" -msgstr "" +msgstr "Галиција" msgid "Scandinavia" -msgstr "" +msgstr "Скандинавија" msgid "England" -msgstr "" +msgstr "Енглеска" msgid "Buckinghamshire" msgstr "" @@ -2024,13 +2268,13 @@ msgstr "" msgid "Essex" -msgstr "" +msgstr "Есекс" msgid "Herefordshire" msgstr "" msgid "Kent" -msgstr "" +msgstr "Кент" msgid "Lancashire" msgstr "" @@ -2039,7 +2283,7 @@ msgstr "" msgid "Norfolk" -msgstr "" +msgstr "Норфолк" msgid "Nottinghamshire" msgstr "" @@ -2051,7 +2295,7 @@ msgstr "" msgid "Somerset" -msgstr "" +msgstr "Сомерсет" msgid "South yorkshire" msgstr "" @@ -2066,25 +2310,25 @@ msgstr "" msgid "Scotland" -msgstr "" +msgstr "Шкотска" msgid "Wales" -msgstr "" +msgstr "Велс" msgid "Crete" msgstr "" msgid "North America" -msgstr "" +msgstr "Северна Америка" msgid "Alaska" -msgstr "" +msgstr "Аљаска" msgid "Hawaii" -msgstr "" +msgstr "Хаваји" msgid "USA" -msgstr "" +msgstr "САД" msgid " (except Alaska and Hawaii)" msgstr "" @@ -2093,85 +2337,85 @@ msgstr "" msgid "Michigan" -msgstr "" +msgstr "Мичиген" msgid "Ohio" -msgstr "" +msgstr "Охајо" msgid "Northeast" -msgstr "" +msgstr "Североисток" msgid "Massachusetts" -msgstr "" +msgstr "Масачусец" msgid "Vermont" -msgstr "" +msgstr "Вермонт" msgid "Pacific" -msgstr "" +msgstr "Пацифик" msgid "South" msgstr "" msgid "Arkansas" -msgstr "" +msgstr "Арканзас" msgid "District of Columbia" -msgstr "" +msgstr "Колумбијски округ" msgid "Florida" -msgstr "" +msgstr "Флорида" msgid "Louisiana" -msgstr "" +msgstr "Луизијана" msgid "Maryland" -msgstr "" +msgstr "Мериленд" msgid "Mississippi" -msgstr "" +msgstr "Мисисипи" msgid "Oklahoma" -msgstr "" +msgstr "Оклахома" msgid "Texas" -msgstr "" +msgstr "Тексас" msgid "Virginia" -msgstr "" +msgstr "Вирџинија" msgid "West Virginia" -msgstr "" +msgstr "Западна Вирџинија" msgid "West" -msgstr "" +msgstr "Запад" msgid "Arizona" -msgstr "" +msgstr "Аризона" msgid "California" -msgstr "" +msgstr "Калифорнија" msgid "Colorado" -msgstr "" +msgstr "Колорадо" msgid "Idaho" -msgstr "" +msgstr "Ајдахо" msgid "Montana" -msgstr "" +msgstr "Монтана" msgid "New Mexico" -msgstr "" +msgstr "Нови Мексико" msgid "Nevada" -msgstr "" +msgstr "Невада" msgid "Oregon" -msgstr "" +msgstr "Орегон" msgid "Utah" -msgstr "" +msgstr "Јута" msgid "Washington State" msgstr "" @@ -2183,24 +2427,27 @@ msgstr "" msgid "downloading" -msgstr "" +msgstr "преузимање" #. Android resource: @strings/map_download_ready msgid "ready" -msgstr "" +msgstr "спремно" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" -msgstr "" +msgstr "Нема довољно расположивог простора" + +msgid "Error downloading map!" +msgstr "Десила се грешка приликом преузимања карте!" msgid "Error writing map!" -msgstr "" +msgstr "Десила се грешка при упису карте!" msgid "Map download aborted!" -msgstr "" +msgstr "Преузимање карте је прекинуто!" #. Android resource: @strings/map_download_eta msgid "ETA" @@ -2208,7 +2455,7 @@ #. Android resource: @strings/map_download_title msgid "Map download" -msgstr "" +msgstr "Преузимање карте" msgid "Vehicle Position" msgstr "Позиција возила" @@ -2219,7 +2466,9 @@ msgid "" "Show\n" "Map" -msgstr "Прикажи мапу" +msgstr "" +"Прикажи\n" +"карту" msgid "Settings" msgstr "Подешавања" @@ -2243,9 +2492,11 @@ "Former\n" "Destinations" msgstr "" +"Претходна\n" +"одредишта" msgid "Coordinates" -msgstr "" +msgstr "Координате" msgid "" "Stop\n" @@ -2270,23 +2521,27 @@ "Drop last \n" "Waypoint" msgstr "" +"Одбаци последњу\n" +"пролазну тачку" msgid "" "Drop next \n" "Waypoint" msgstr "" +"Одбаци следећу\n" +"пролазну тачку" msgid "Satellite Status" -msgstr "" +msgstr "Стање сателита" msgid "NMEA Data" msgstr "" msgid "car_shortest" -msgstr "" +msgstr "најкраћим_колима" msgid "car_avoid_tolls" -msgstr "" +msgstr "алати_избегавања_колима" msgid "car_pedantic" msgstr "" @@ -2295,24 +2550,24 @@ msgstr "коњ" msgid "Truck" -msgstr "" +msgstr "Камион" #. Strings from android/res/values/strings.xml #. Android resource: @strings/yes msgid "Yes" -msgstr "" +msgstr "Да" #. Android resource: @strings/notification_ticker msgid "Navit started" -msgstr "" +msgstr "Навит је покренут" #. Android resource: @strings/notification_event_default msgid "Navit running" -msgstr "" +msgstr "Навит је покренут" #. Android resource: @strings/initial_info_box_title msgid "Welcome to Navit" -msgstr "" +msgstr "Добродошли у Навит" #. Android resource: @strings/initial_info_box_message msgid "" @@ -2325,161 +2580,190 @@ "\n" "Enjoy Navit!" msgstr "" +"Хвала што уградисте Навит!\n" +"\n" +"За почетак, изаберите „Преузмите карте“ из изборника ради преузимања карте. " +"Примедба: Карта може бити велика (>50MB) - бежична веза је препоручена.\n" +"\n" +"Подаци о картама: доприносиоци (c) OpenStreetMap-а\n" +"\n" +"Уживајте у Навиту!" #. Android resource: @strings/initial_info_box_OK msgid "OK" -msgstr "" +msgstr "У реду" #. Android resource: @strings/initial_info_box_more_info msgid "More info" -msgstr "" +msgstr "Још података" #. Android resource: @strings/optionsmenu_zoom_in msgid "Zoom in" -msgstr "" +msgstr "Приближи" #. Android resource: @strings/optionsmenu_zoom_out msgid "Zoom out" -msgstr "" +msgstr "Удаљи" #. Android resource: @strings/optionsmenu_download_maps msgid "Download maps" -msgstr "" +msgstr "Преузми карте" #. Android resource: @strings/optionsmenu_toggle_poi msgid "Toggle POIs" -msgstr "" +msgstr "Прекидач употребе занимљивих тачака" #. Android resource: @strings/optionsmenu_exit_navit msgid "Exit Navit" -msgstr "" +msgstr "Изађи из Навита" #. Android resource: @strings/optionsmenu_backup_restore msgid "Backup / Restore" +msgstr "Остава / повратак са ње" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" msgstr "" #. Android resource: @strings/map_delete msgid "Delete this map?" -msgstr "" +msgstr "Да ли избрисати ову карту?" #. Android resource: @strings/map_download_downloading msgid "Downloading:" -msgstr "" +msgstr "Преузимам:" #. Android resource: @strings/map_download_download_error msgid "Error downloading map." -msgstr "" +msgstr "Десила се грешка при преузимању карте." #. Android resource: @strings/map_download_download_aborted msgid "Map download aborted" -msgstr "" +msgstr "Преузимање карте је отказано" #. Android resource: @strings/map_no_fix msgid "No location. Reopen after location fix." -msgstr "" +msgstr "Нема положаја. Отварам поново по исправци положаја." #. Android resource: @strings/maps_for_current_location msgid "Maps containing current location" -msgstr "" +msgstr "Карте које садрже тренутни положај" #. Android resource: @strings/address_search_title msgid "Address search" -msgstr "" +msgstr "Претрага адреса" #. Android resource: @strings/address_enter_destination msgid "Enter destination" -msgstr "" +msgstr "Унесите одредиште" #. Android resource: @strings/address_partial_match msgid "Match partial address" -msgstr "" +msgstr "Упореди непотпуну адресу" #. Android resource: @strings/address_search_searching msgid "Searching..." -msgstr "" +msgstr "Претрага..." #. Android resource: @strings/address_search_not_found msgid "Address not found" -msgstr "" +msgstr "Није пронађена адреса" #. Android resource: @strings/address_search_getting_results msgid "Getting search results" -msgstr "" +msgstr "Добављам излазе претраге" #. Android resource: @strings/address_search_loading_results msgid "Loading search results" -msgstr "" +msgstr "Учитавам излазе претраге" #. Android resource: @strings/address_search_no_results msgid "No results found" -msgstr "" +msgstr "Нема излаза претраге" #. Android resource: @strings/address_search_no_text_entered msgid "No text entered" -msgstr "" +msgstr "Нема унетог текста" #. Android resource: @strings/address_search_set_destination msgid "Setting destination to:" -msgstr "" +msgstr "Постављам одредиште на:" #. Android resource: @strings/choose_an_action msgid "Choose an action" -msgstr "" +msgstr "Изаберите радњу" #. Android resource: @strings/please_insert_an_sd_card msgid "Please insert an SD Card" -msgstr "" +msgstr "Молим, утакните СД картицу" #. Android resource: @strings/backing_up msgid "Backing up..." -msgstr "" +msgstr "Чувам у оставу..." #. Android resource: @strings/restoring msgid "Restoring..." -msgstr "" +msgstr "Враћам из оставе..." #. Android resource: @strings/failed_to_create_backup_directory msgid "Failed to create backup directory" -msgstr "" +msgstr "Нисам успео да образујем фасциклу оставе" #. Android resource: @strings/backup_failed msgid "Backup failed" -msgstr "" +msgstr "Чување у оставу није успело" #. Android resource: @strings/no_backup_found msgid "No backup found" -msgstr "" +msgstr "Нисам пронашао оставу" #. Android resource: @strings/failed_to_restore msgid "Failed to restore" -msgstr "" +msgstr "Нисам успео да вратим податке из оставе" #. Android resource: @strings/backup_successful msgid "Backup successful" -msgstr "" +msgstr "Чување у оставу је успешно" #. Android resource: @strings/restore_successful_please_restart_navit msgid "" "Restore Successful\n" "Please restart Navit" msgstr "" +"Враћање из оставе је успешно\n" +"Молим, поново покрените Навит" #. Android resource: @strings/backup_not_found msgid "Backup not found" -msgstr "" +msgstr "Није пронађена остава" #. Android resource: @strings/restore_failed msgid "Restore failed" -msgstr "" +msgstr "Није успео повраћај из оставе" #. Android resource: @strings/select_backup msgid "Select backup" -msgstr "" +msgstr "Изаберите податке за повраћај" #. Android resource: @strings/backup msgid "Backup" -msgstr "" +msgstr "Остава" #. Android resource: @strings/restore msgid "Restore" +msgstr "Поврати" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "потом напутстите обилазницу на %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/sv.po.in navit-0.5.0+dfsg.1/po/sv.po.in --- navit-0.5.0~svn5900+dfsg.1/po/sv.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/sv.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,30 +1,27 @@ -# Swedish translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Swedish translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Erik Lundin https://launchpad.net/~erik-lundin # KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Mikael Olofsson https://launchpad.net/~michlos # Mikko Virkkilä https://launchpad.net/~virkkila # Squall Leonhart https://launchpad.net/~webmaster-square-one # nairobie https://launchpad.net/~samuel-ostman -# pipatron https://launchpad.net/~pipatron - +# pipe https://launchpad.net/~pipatron msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:44+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Swedish \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-Launchpad-Export-Date: 2014-08-08 16:36+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: sv\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -80,14 +77,6 @@ msgstr "sjätte avfarten" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "om %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -96,14 +85,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d meter" - -#, c-format -msgid "in %d meters" -msgstr "om %d meter" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -112,14 +93,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d,%d kilometer" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "om %d,%d kilometer" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -132,6 +105,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d meter" + +#, c-format +msgid "in %d meters" +msgstr "om %d meter" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d,%d kilometer" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "om %d,%d kilometer" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "en kilometer" @@ -143,30 +132,53 @@ msgstr[0] "om en kilometer" msgstr[1] "om %d kilometer" -msgid "exit" -msgstr "avfart" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "ut på påfarten" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sin på gatan %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sin på %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%sin på %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%sin på %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%sin på %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -174,33 +186,18 @@ msgid "%sinto the %s" msgstr "%sut på %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "höger" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "vänster" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "lätt " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "tvärt " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "mycket tvärt " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "okänd " - msgid "When possible, please turn around" msgstr "Vänd när det går" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Följ vägen i %s" + msgid "Enter the roundabout soon" msgstr "Kör snart in i rondellen" @@ -209,56 +206,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "kör sedan ut ur rondellen mot %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Kör ut ur rondellen mot %1$s %2$s" +msgid "soon" +msgstr "snart" + +msgid "now" +msgstr "nu" + +msgid "then" +msgstr "sedan" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Kör ut ur rondellen mot %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Följ vägen i %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "snart" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Ta %1$s vägen mot %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "efter %i vägar" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "nu" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "höger" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "vänster" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "lätt " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "tvärt " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "ta sedan %1$s vägen mot %2$s" +msgstr "" -msgid "error" -msgstr "fel" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Ta %1$s vägen mot %2$s" + +#, c-format +msgid "after %i roads" +msgstr "efter %i vägar" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Sväng %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "sväng sedan %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "vänd sedan" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "Vänd %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "vänd sedan" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "Vänd %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "följ" +msgid "then you have reached your destination." +msgstr "sedan har du nått din destination." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Du har nått din destination %s" -msgid "then you have reached your destination." -msgstr "sedan har du nått din destination." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Korsning" + +msgid "Exit" +msgstr "Avfart" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1318,11 +1435,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1459,6 +1578,12 @@ msgid "Opens address search dialog" msgstr "Öppna adressökning" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Avsluta navigering" @@ -1501,6 +1626,100 @@ msgid "Data" msgstr "Data" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "N" @@ -1812,12 +2031,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2188,13 +2426,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2359,6 +2600,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2484,3 +2729,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "kör sedan ut ur rondellen mot %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/sw.po.in navit-0.5.0+dfsg.1/po/sw.po.in --- navit-0.5.0~svn5900+dfsg.1/po/sw.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/sw.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,23 @@ -# Swahili translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Swahili translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # HinzundKunz https://launchpad.net/~martin-tlustos - +# KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow msgid "" msgstr "" -"Project-Id-Version: navit\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2012-11-05 13:17+0000\n" -"Last-Translator: HinzundKunz \n" +"Project-Id-Version: navit 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2015-07-19 04:00+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Swahili \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-Launchpad-Export-Date: 2014-08-08 22:21+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: sw\n" msgid "Running from source directory\n" msgstr "" @@ -72,14 +71,6 @@ msgstr "exit ya sita" #, c-format -msgid "%d m" -msgstr "mita %d" - -#, c-format -msgid "in %d m" -msgstr "baada ya mita %d" - -#, c-format msgid "%d feet" msgstr "" @@ -88,14 +79,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "mita %d" - -#, c-format -msgid "in %d meters" -msgstr "baada ya mita %d" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -104,14 +87,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "kilomita %d.%d" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "baada ya kilomita %d.%d" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -124,6 +99,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "mita %d" + +#, c-format +msgid "in %d meters" +msgstr "baada ya mita %d" + +#, c-format +msgid "%d.%d kilometers" +msgstr "kilomita %d.%d" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "baada ya kilomita %d.%d" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "kilomita %d" @@ -135,123 +126,251 @@ msgstr[0] "baada ya kilomita %d" msgstr[1] "baada ya kilomita %d" -msgid "exit" -msgstr "ondoka" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s kufuata %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%skufuata %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s kufuata %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%skufuata %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s kufuata %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%skufuata %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s kufuata %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%skufuata %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" -msgstr "%s kufuata %s" +msgstr "%skufuata %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "kulia" +msgid "When possible, please turn around" +msgstr "Geuka na kurudi nyuma inapowezekana" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "kushoto" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" +msgstr "Buata barabara kwa %s" + +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +msgid "then enter the roundabout" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "isiyojulikana " +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Toka kutoka kwenye kipilefti kwenye %1$s %2$s" + +msgid "soon" +msgstr "karibuni" -msgid "When possible, please turn around" -msgstr "geuka na kurudi nyuma inapowezekana" +msgid "now" +msgstr "sasa" -msgid "Enter the roundabout soon" +msgid "then" +msgstr "halafu" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" -msgstr "halafu toka kutoka kwenye kipilefti kwenye %s" +msgid "then merge%1$s|left" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "toka kutoka kwenye kipilefti kwenye %s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Follow the road for the next %s" -msgstr "buata barabara kwa %s" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "soon" -msgstr "karibuni" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "fuata %1$s hadi %2$s" +msgid "then continue straight%1$s" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "after %i roads" -msgstr "baada ya barabara %i" +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" -msgid "now" -msgstr "sasa" +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "kulia" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "kushoto" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "halafu fuata %1$s hadi %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "fuata %1$s hadi %2$s" -msgid "error" -msgstr "kosa" +#, c-format +msgid "after %i roads" +msgstr "baada ya barabara %i" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "piga kona %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "halafu ingia %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" -msgstr "umelifikia lengo lako %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" msgid "then you have reached your destination." msgstr "halafu utakuwa umefika" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "umelifikia lengo lako %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Ondoka" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "ulipo" @@ -1310,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "fungua pa kutafutia lengo" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1493,6 +1620,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1804,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2590,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2719,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "halafu toka kutoka kwenye kipilefti kwenye %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ta.po.in navit-0.5.0+dfsg.1/po/ta.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ta.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ta.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,16 +1,14 @@ -# Tamil translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Tamil translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Dinesh Ramalingam https://launchpad.net/~dinodinu+navit # Rajiv Subrahmanyam https://launchpad.net/~rajiv-public - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" "PO-Revision-Date: 2013-09-04 00:29+0000\n" "Last-Translator: Dinesh Ramalingam \n" "Language-Team: Tamil \n" @@ -18,8 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: ta\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -74,14 +71,6 @@ msgstr "ஐந்தாவது வெளியேற்றம்" #, c-format -msgid "%d m" -msgstr "%d நி" - -#, c-format -msgid "in %d m" -msgstr "%d நி.யில்" - -#, c-format msgid "%d feet" msgstr "" @@ -90,14 +79,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d மீட்டர்கள்" - -#, c-format -msgid "in %d meters" -msgstr "%d மீட்டருக்குள்" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -106,14 +87,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d கிலோமீட்டர்கள்." - -#, c-format -msgid "in %d.%d kilometers" -msgstr "%d.%d கிலோமீட்டருக்குள்" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -126,6 +99,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d மீட்டர்கள்" + +#, c-format +msgid "in %d meters" +msgstr "%d மீட்டருக்குள்" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d கிலோமீட்டர்கள்." + +#, c-format +msgid "in %d.%d kilometers" +msgstr "%d.%d கிலோமீட்டருக்குள்" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "ஒரு கிலோமீட்டர்" @@ -137,30 +126,53 @@ msgstr[0] "ஒரு கிலோமீட்டருக்குள்" msgstr[1] "%d கிலோமீட்டர்களுக்குள்" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -168,90 +180,195 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" +msgid "When possible, please turn around" msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "இயல்பாக " +#, c-format +msgid "Follow the road for the next %s" +msgstr "%s க்கு இதே தெருவில் செல்லவும்" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" +msgstr "சீக்கிரமாக" + +msgid "now" +msgstr "இப்பொழுது" + +msgid "then" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "%s க்கு இதே தெருவில் செல்லவும்" +msgid "Merge %1$s%2$s|left" +msgstr "" -msgid "soon" -msgstr "சீக்கிரமாக" +msgid "on your left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" -msgstr "இப்பொழுது" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "இயல்பாக " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "பிறகு %2$s பக்கத்தில் %1$s ஆம் தெருவில் திரும்பவும்" +msgstr "" -msgid "error" -msgstr "தவறு" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" +msgid "then you have reached your destination." +msgstr "" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "" -msgid "then you have reached your destination." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" msgstr "" #. Android resource: @strings/position_popup_title @@ -1312,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1453,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1495,6 +1620,100 @@ msgid "Data" msgstr "" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1806,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2182,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2349,6 +2590,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2474,3 +2719,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/te.po.in navit-0.5.0+dfsg.1/po/te.po.in --- navit-0.5.0~svn5900+dfsg.1/po/te.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/te.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,16 +1,14 @@ -# Telugu translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Telugu translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer # వీవెన్ https://launchpad.net/~veeven - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" "PO-Revision-Date: 2013-09-27 21:48+0000\n" "Last-Translator: KaZeR \n" "Language-Team: Telugu \n" @@ -18,8 +16,6 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: te\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -75,35 +71,39 @@ msgstr "" #, c-format -msgid "%d m" +msgid "%d feet" msgstr "" #, c-format -msgid "in %d m" +msgid "in %d feet" msgstr "" #, c-format -msgid "%d feet" +msgid "%d.%d miles" msgstr "" #, c-format -msgid "in %d feet" +msgid "in %d.%d miles" msgstr "" #, c-format -msgid "%d meters" -msgstr "%d మీటర్లు" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "in %d meters" -msgstr "" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "%d.%d miles" -msgstr "" +msgid "%d meters" +msgstr "%d మీటర్లు" #, c-format -msgid "in %d.%d miles" +msgid "in %d meters" msgstr "" #, c-format @@ -115,18 +115,6 @@ msgstr "" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "ఒక కిలోమీటరు" @@ -138,30 +126,53 @@ msgstr[0] "" msgstr[1] "" -msgid "exit" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" +msgid "%sinto %s%s%s" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -169,90 +180,195 @@ msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "కుడి" +msgid "When possible, please turn around" +msgstr "" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "ఎడమ" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "తేలికగా " +#, c-format +msgid "Follow the road for the next %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" msgstr "" -msgid "Enter the roundabout soon" +msgid "soon" +msgstr "త్వరలో" + +msgid "now" +msgstr "ఇప్పుడు" + +msgid "then" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" +msgid "Merge %1$s%2$s|left" msgstr "" -msgid "soon" -msgstr "త్వరలో" +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" -msgstr "ఇప్పుడు" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "కుడి" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "ఎడమ" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "తేలికగా " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "" #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" -msgstr "పొరపాటు" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" msgstr "" +msgid "then you have reached your destination." +msgstr "" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "మీరు మీ గమ్యస్థానం %s చేరారు" -msgid "then you have reached your destination." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" msgstr "" #. Android resource: @strings/position_popup_title @@ -1313,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1454,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "" @@ -1496,6 +1620,100 @@ msgid "Data" msgstr "దత్తాంశం" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "" @@ -1807,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2183,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2350,6 +2590,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2475,3 +2719,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/th.po.in navit-0.5.0+dfsg.1/po/th.po.in --- navit-0.5.0~svn5900+dfsg.1/po/th.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/th.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,24 +1,20 @@ -# Thai translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Thai translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # mansv68 https://launchpad.net/~mansv68 - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:46+0000\n" +"PO-Revision-Date: 2015-07-19 04:01+0000\n" "Last-Translator: mansv68 \n" "Language-Team: Thai \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: th\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -74,14 +70,6 @@ msgstr "" #, c-format -msgid "%d m" -msgstr "%d เมตร" - -#, c-format -msgid "in %d m" -msgstr "อีก %d เมตร" - -#, c-format msgid "%d feet" msgstr "" @@ -90,14 +78,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d เมตร" - -#, c-format -msgid "in %d meters" -msgstr "อีก %d เมตร" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -106,14 +86,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "อีก %d.%d กิโลเมตร" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -126,6 +98,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d เมตร" + +#, c-format +msgid "in %d meters" +msgstr "อีก %d เมตร" + +#, c-format +msgid "%d.%d kilometers" +msgstr "" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "อีก %d.%d กิโลเมตร" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d กิโลเมตร" @@ -135,123 +123,251 @@ msgid_plural "in %d kilometers" msgstr[0] "อีก %d กิโลเมตร" -msgid "exit" -msgstr "ทางออก" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s เข้าสู่ถนน %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sเข้าสู่ถนน %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s เข้าสู่ %s%s%s| จาก" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sเข้าสู่ %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s เข้าสู %s%s%s| จาก" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sเข้าสู %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s เข้าสู่ %s%s%s| จาก" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sเข้าสู่ %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "ขวา" +msgid "When possible, please turn around" +msgstr "ถ้าเป็นไปได้ ให้กลับรถ" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "ซ้าย" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " +#, c-format +msgid "Follow the road for the next %s" +msgstr "ตรงไปตามถนน แล้ว %s" + +msgid "Enter the roundabout soon" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "อย่างเคร่งคัด " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " +msgid "then enter the roundabout" msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "ไม่ทราบ " +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "" -msgid "When possible, please turn around" -msgstr "ถ้าเป็นไปได้ ให้กลับรถ" +msgid "soon" +msgstr "ในไม่ช้า" -msgid "Enter the roundabout soon" +msgid "now" +msgstr "เดี๋ยวนี้" + +msgid "then" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "then merge%1$s|right" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" +msgid "then merge%1$s|left" msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "ตรงไปตามถนน แล้ว %s" +msgid "Merge %1$s%2$s|left" +msgstr "" -msgid "soon" -msgstr "ในไม่ช้า" +msgid "on your left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Take the %1$s road to the %2$s" +msgid "Take exit %1$s %2$s %3$s" msgstr "" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination #, c-format -msgid "after %i roads" +msgid "Take the exit %1$s %2$s%3$s" msgstr "" -msgid "now" -msgstr "เดี๋ยวนี้" +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "ขวา" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "ซ้าย" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "" + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "อย่างเคร่งคัด " #, c-format msgid "then take the %1$s road to the %2$s" msgstr "" -msgid "error" -msgstr "ข้อผิดพลาด" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "" + +#, c-format +msgid "after %i roads" +msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" -msgstr "เลี้ยว %1$s%2$s %3$s%4$s" +msgstr "" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "คุณได้ถึงที่หมายแล้ว %s" -msgid "then you have reached your destination." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" msgstr "" +msgid "Exit" +msgstr "ทางออก" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "" @@ -1310,11 +1426,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1451,6 +1569,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "หยุดการนำทาง" @@ -1493,6 +1617,100 @@ msgid "Data" msgstr "ข้อมูล" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "เหนือ" @@ -1804,12 +2022,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2180,13 +2417,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2347,6 +2587,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2472,3 +2716,14 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/tr.po.in navit-0.5.0+dfsg.1/po/tr.po.in --- navit-0.5.0~svn5900+dfsg.1/po/tr.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/tr.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,5 +1,5 @@ # Turkish (tr) translations for navit -# Copyright (C) 2006-2014 The Navit Team +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Abesis https://launchpad.net/~izzetaykutkocak @@ -7,28 +7,25 @@ # Bawer Yekta https://launchpad.net/~e-peyam # Bekir DURAK https://launchpad.net/~bekir-durak # Koray Löker https://launchpad.net/~loker +# Kudret EMRE https://launchpad.net/~kudretemre # ViZiT https://launchpad.net/~vizit # dentist76 https://launchpad.net/~pilatin # eMVP https://launchpad.net/~ercan-i -# lanetherif https://launchpad.net/~lanetherif # seqizz (gurkanGur) https://launchpad.net/~seqizz # tinyos https://launchpad.net/~eygu-mindikoglu - +# Şahin Alp Taşkaya https://launchpad.net/~sahin msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-12-10 00:54+0000\n" -"Last-Translator: seqizz (gurkanGur) \n" +"PO-Revision-Date: 2015-07-19 04:01+0000\n" +"Last-Translator: Kudret EMRE \n" "Language-Team: Turkish \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: tr\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -84,36 +81,40 @@ msgstr "altıncı çıkış" #, c-format -msgid "%d m" -msgstr "%d m" +msgid "%d feet" +msgstr "%d feet" #, c-format -msgid "in %d m" -msgstr "%d m'de" +msgid "in %d feet" +msgstr "%d feet içinde" #, c-format -msgid "%d feet" -msgstr "" +msgid "%d.%d miles" +msgstr "%d.%d mil" #, c-format -msgid "in %d feet" -msgstr "" +msgid "in %d.%d miles" +msgstr "%d.%d mil içinde" #, c-format -msgid "%d meters" -msgstr "%d metre" +msgid "one mile" +msgid_plural "%d miles" +msgstr[0] "bir mil" +msgstr[1] "%d mil" #, c-format -msgid "in %d meters" -msgstr "%d metrede" +msgid "in one mile" +msgid_plural "in %d miles" +msgstr[0] "bir mil içinde" +msgstr[1] "%d mil içinde" #, c-format -msgid "%d.%d miles" -msgstr "" +msgid "%d meters" +msgstr "%d metre" #, c-format -msgid "in %d.%d miles" -msgstr "" +msgid "in %d meters" +msgstr "%d metrede" #, c-format msgid "%d.%d kilometers" @@ -124,18 +125,6 @@ msgstr "%d.%d kilometrede" #, c-format -msgid "one mile" -msgid_plural "%d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format -msgid "in one mile" -msgid_plural "in %d miles" -msgstr[0] "" -msgstr[1] "" - -#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d kilometre" @@ -147,64 +136,72 @@ msgstr[0] "%d kilometrede" msgstr[1] "%d kilometrede" -msgid "exit" -msgstr "çıkış" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "rampada" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%sCaddesi'ne %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%scaddesine %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%scaddesine %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" +msgstr "%scaddesine %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%scaddesine %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" +msgstr "%scaddesine %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%scaddesine %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" +msgstr "%scaddesine %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%s%s yoluna" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "Sağa" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "Sola" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "kolayca " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "sertçe " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "gerçekten sertçe " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "bilinmeyen " - msgid "When possible, please turn around" msgstr "Müsait olduğunda lütfen yönünü değiştir" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Gelecek %s için yolu takip et" + msgid "Enter the roundabout soon" msgstr "Yakındaki kavşağa girin" @@ -213,56 +210,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "ardından %s'de kavşaktan çıkın" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "%1$s'de kavşaktan çıkın %2$s" + +msgid "soon" +msgstr "yakında" +msgid "now" +msgstr "şimdi" + +msgid "then" +msgstr "sonra" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "%s'de kavşaktan çıkın" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Gelecek %s için yolu takip et" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "yakında" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "%1$s yolunda %2$s yönüne dönün" +msgid "Merge %1$s%2$s|left" +msgstr "" +msgid "on your left" +msgstr "solunuzda" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "%i yol sonra" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "şimdi" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "kesişiminde" + +msgid "at exit" +msgstr "çıkışta" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "Sağa" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "Sola" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "kolayca " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "sertçe " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "ardından %1$s yolunda %2$s yönüne dönün" +msgstr "" -msgid "error" -msgstr "hata" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "%1$s yolunda %2$s yönüne dönün" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#, c-format +msgid "after %i roads" +msgstr "%i yol sonra" + +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Dönüş %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "sonra %1$s%2$s %3$s%4$s dönün" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "takip edin" +msgid "then you have reached your destination." +msgstr "ardından hedefinize ulaşacaksınız" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Hedefinize ulaştınız, %s" -msgid "then you have reached your destination." -msgstr "ardından hedefinize ulaşacaksınız" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Kesişim" + +msgid "Exit" +msgstr "Çıkış" #. Android resource: @strings/position_popup_title msgid "Position" @@ -862,7 +979,7 @@ #. 434 msgid "Libya" -msgstr "" +msgstr "Libya" #. 504 msgid "Morocco" @@ -1150,7 +1267,7 @@ #. 728 msgid "South Sudan" -msgstr "" +msgstr "Güney Sudan" #. 678 msgid "Sao Tome and Principe" @@ -1162,7 +1279,7 @@ #. 534 msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Sint Maarten (Hollanda bölümü)" #. 760 msgid "Syrian Arab Republic" @@ -1322,16 +1439,28 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" +"navit kullanımı:\n" +"navit [seçenekler] [yapılandırma dosyası]\n" +"\t-c : argümanını varsayılan dosyayı kullanmak yerine " +"yapılandırma dosyası olarak kullanabilirsiniz.\n" +"\t-d : hata ayıklama seviyesini ayarlayın (0=hata, 1=uyarı, 2=bilgi, " +"3=hata ayıklama).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" +"\t-h: bu kullanım bilgisini göster ve çık.\n" +"\t-v: sürümü göster ve çık.\n" #. We have not found an existing config file from all possibilities msgid "No config file navit.xml, navit.xml.local found\n" -msgstr "" +msgstr "Hiçbir navit.xml, navit.xml.locak yapılandırma dosyası bulunamadı\n" #, c-format msgid "Error parsing config file '%s': %s\n" @@ -1339,22 +1468,22 @@ #, c-format msgid "Using config file '%s'\n" -msgstr "" +msgstr "'%s' yapılandırma dosyası kullanılıyor\n" #, c-format msgid "Error: No configuration found in config file '%s'\n" -msgstr "" +msgstr "Hata: '%s' yapılandırma dosyasında hiçbir yapılandırma bulunamadı\n" msgid "" "Internal initialization failed, exiting. Check previous error messages.\n" msgstr "" msgid "unknown street" -msgstr "" +msgstr "bilinmeyen sokak" #. Safe cast: attr_generic_set_attr does not modify its parameter. msgid "Unnamed vehicle" -msgstr "" +msgstr "İsimsiz araç" msgid "Failed to write bookmarks file" msgstr "" @@ -1463,6 +1592,12 @@ msgid "Opens address search dialog" msgstr "Adres aramayı açar" +msgid "_POI search" +msgstr "_POI arama" + +msgid "Opens POI search dialog" +msgstr "POI arama penceresini açar" + msgid "_Stop Navigation" msgstr "Dolaşmayı Durdur" @@ -1497,7 +1632,7 @@ msgstr "Oto-yaklaş" msgid "Enable/disable automatic zoom level changing" -msgstr "" +msgstr "Otomatik yakınlaştırmayı açar/kapatır" msgid "_Fullscreen" msgstr "Tam Ekran" @@ -1505,6 +1640,100 @@ msgid "Data" msgstr "Veri" +msgid "Pharmacy" +msgstr "Eczane" + +msgid "Restaurant" +msgstr "Restoran" + +msgid "Restaurant. Fast food" +msgstr "Restoran. Hazır gıda" + +msgid "Hotel" +msgstr "Otel" + +msgid "Car parking" +msgstr "Otopark" + +msgid "Fuel station" +msgstr "Akaryakıt istasyonu" + +msgid "Bank" +msgstr "Banka" + +msgid "Hospital" +msgstr "Hastane" + +msgid "Cinema" +msgstr "Sinema" + +msgid "Train station" +msgstr "Tren istasyonu" + +msgid "School" +msgstr "Okul" + +msgid "Police" +msgstr "Polis" + +msgid "Justice" +msgstr "Adaley Sarayı" + +msgid "Taxi" +msgstr "Taksi" + +msgid "Shopping" +msgstr "Alışveriş" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "POI %s. %s" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "Hedefi buraya ayarla %ld, %ld \n" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "Haritayı buraya ayarla %ld, %ld \n" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "POI arama" + +msgid "Select a category" +msgstr "Bir kategori seç" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "Bir POI se." + +msgid " " +msgstr " " + +msgid "Category" +msgstr "Kategori" + +msgid "Direction" +msgstr "Yön" + +msgid "Distance(m)" +msgstr "Mesafe(m)" + +msgid "Name" +msgstr "İsim" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "K" @@ -1585,10 +1814,10 @@ msgstr "Haritada bak" msgid "Remove search results from the map" -msgstr "" +msgstr "Arama sonuçlarını haritadan sil" msgid "Show results on the map" -msgstr "" +msgstr "Sonuçları haritada göster" msgid "Cut Bookmark" msgstr "Yer İmini Kes" @@ -1621,7 +1850,7 @@ msgstr "" msgid "Delete Folder" -msgstr "" +msgstr "Dizini Sil" #. Adds the Bookmark folders msgid "Add Bookmark folder" @@ -1637,16 +1866,16 @@ #, c-format msgid "Download %s" -msgstr "" +msgstr "%s İndir" msgid "Map Download" -msgstr "" +msgstr "Harita İndirme" msgid "Active" -msgstr "" +msgstr "Etkin" msgid "Download Enabled" -msgstr "" +msgstr "İndirme Etkinleştirildi" msgid "Download completely" msgstr "" @@ -1713,7 +1942,7 @@ msgstr "" msgid "Enter Coordinates" -msgstr "" +msgstr "Koordinat Gir" #. #. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill) @@ -1722,10 +1951,10 @@ #. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill) #. gui_internal_widget_append(w, we) msgid "Latitude Longitude" -msgstr "" +msgstr "Enlem Boylam" msgid "Enter coordinates, for example:" -msgstr "" +msgstr "Koordinat gir, örneğin:" msgid "Vehicle" msgstr "Araç" @@ -1782,28 +2011,28 @@ msgstr "Ev no:" msgid "Next" -msgstr "" +msgstr "İleri" msgid "Prev" -msgstr "" +msgstr "Geri" msgid "Return to route!" -msgstr "" +msgstr "Rotaya dön!" #. warning told msgid "Look out! Camera!" -msgstr "" +msgstr "Dikkat! Kamera!" #. warning told msgid "Please decrease your speed" -msgstr "" +msgstr "Lütfen hızınızı düşürünüz" msgid "partial match" msgstr "" #. Android resource: @strings/address_search_button msgid "Search" -msgstr "" +msgstr "Ara" #. Android resource: @strings/address_search_towns msgid "Towns" @@ -1814,91 +2043,113 @@ msgstr "" msgid "Map data (c) OpenStreetMap contributors, ODBL" -msgstr "" +msgstr "Harita verisi (c) OpenStreetMap destekçileri, ODBL" + +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" +"Geçerli harita konumu %s kullanılabilir değil\n" +"Lütfen bir SD kart taktıktan sonra Navit'i yeniden başlatın veya başka bir " +"harita konumu seçin." msgid "Downloaded maps" +msgstr "İndirilen haritalar" + +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." msgstr "" msgid "Cancel" +msgstr "İptal" + +msgid "filenamePath" msgstr "" -msgid "Whole Planet" +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." msgstr "" +msgid "Whole Planet" +msgstr "Tüm Dünya" + msgid "Africa" -msgstr "" +msgstr "Afrika" msgid "Canary Islands" -msgstr "" +msgstr "Kanarya Adaları" msgid "Asia" -msgstr "" +msgstr "Asya" msgid "Korea" -msgstr "" +msgstr "Kore" msgid "Taiwan" -msgstr "" +msgstr "Tayvan" msgid "UAE+Other" -msgstr "" +msgstr "UAE+Diğer" msgid "Oceania" -msgstr "" +msgstr "Okyanusya" msgid "Tasmania" -msgstr "" +msgstr "Tazmanya" msgid "Victoria" -msgstr "" +msgstr "Viktoria" msgid "New South Wales" -msgstr "" +msgstr "Yeni Güney Galler" msgid "Europe" -msgstr "" +msgstr "Avrupa" msgid "Western Europe" -msgstr "" +msgstr "Batı Avrupa" msgid "Azores" -msgstr "" +msgstr "Azorlar" msgid "BeNeLux" -msgstr "" +msgstr "BeNeLux" msgid "Alsace" -msgstr "" +msgstr "Alsas" msgid "Aquitaine" -msgstr "" +msgstr "Akitanya" msgid "Auvergne" msgstr "" msgid "Basse-Normandie" -msgstr "" +msgstr "Aşağı Normandiya" msgid "Bourgogne" -msgstr "" +msgstr "Burgonya" msgid "Bretagne" -msgstr "" +msgstr "Britanya" msgid "Centre" -msgstr "" +msgstr "Merkez" msgid "Champagne-Ardenne" msgstr "" msgid "Corse" -msgstr "" +msgstr "Korsika" msgid "Franche-Comte" msgstr "" msgid "Haute-Normandie" -msgstr "" +msgstr "Yukarı Normandiya" msgid "Ile-de-France" msgstr "" @@ -1943,10 +2194,10 @@ msgstr "" msgid "Niederbayern" -msgstr "" +msgstr "Aşağı Bavyera" msgid "Oberbayern" -msgstr "" +msgstr "Yukarı Bavyera" msgid "Oberfranken" msgstr "" @@ -1961,28 +2212,28 @@ msgstr "" msgid "Berlin" -msgstr "" +msgstr "Berlin" msgid "Brandenburg" msgstr "" msgid "Bremen" -msgstr "" +msgstr "Bremen" msgid "Hamburg" -msgstr "" +msgstr "Hamburg" msgid "Hessen" -msgstr "" +msgstr "Hesse" msgid "Mecklenburg-Vorpommern" msgstr "" msgid "Niedersachsen" -msgstr "" +msgstr "Aşağı Saksonya" msgid "Nordrhein-westfalen" -msgstr "" +msgstr "Kuzey Ren-Vestfalya" msgid "Rheinland-Pfalz" msgstr "" @@ -1994,7 +2245,7 @@ msgstr "" msgid "Sachsen" -msgstr "" +msgstr "Saksonya" msgid "Schleswig-Holstein" msgstr "" @@ -2006,13 +2257,13 @@ msgstr "" msgid "Galicia" -msgstr "" +msgstr "Galiçya" msgid "Scandinavia" -msgstr "" +msgstr "İskandinavya" msgid "England" -msgstr "" +msgstr "İngiltere" msgid "Buckinghamshire" msgstr "" @@ -2069,28 +2320,28 @@ msgstr "" msgid "Scotland" -msgstr "" +msgstr "İskoçya" msgid "Wales" -msgstr "" +msgstr "Galler" msgid "Crete" msgstr "" msgid "North America" -msgstr "" +msgstr "Kuzey Amerika" msgid "Alaska" -msgstr "" +msgstr "Alaska" msgid "Hawaii" -msgstr "" +msgstr "Hawaii" msgid "USA" -msgstr "" +msgstr "ABD" msgid " (except Alaska and Hawaii)" -msgstr "" +msgstr " (Alaska ve Hawaii hariç)" msgid "Midwest" msgstr "" @@ -2102,7 +2353,7 @@ msgstr "" msgid "Northeast" -msgstr "" +msgstr "Kuzeydoğu" msgid "Massachusetts" msgstr "" @@ -2114,7 +2365,7 @@ msgstr "" msgid "South" -msgstr "" +msgstr "Güney" msgid "Arkansas" msgstr "" @@ -2138,25 +2389,25 @@ msgstr "" msgid "Texas" -msgstr "" +msgstr "Teksas" msgid "Virginia" -msgstr "" +msgstr "Virjinya" msgid "West Virginia" -msgstr "" +msgstr "Batı Virjinya" msgid "West" -msgstr "" +msgstr "Batı" msgid "Arizona" msgstr "" msgid "California" -msgstr "" +msgstr "Kaliforniya" msgid "Colorado" -msgstr "" +msgstr "Kolorado" msgid "Idaho" msgstr "" @@ -2180,38 +2431,41 @@ msgstr "" msgid "South+Middle America" -msgstr "" +msgstr "Güney+Orta Amerika" msgid "Guyane Francaise" msgstr "" msgid "downloading" -msgstr "" +msgstr "indiriliyor" #. Android resource: @strings/map_download_ready msgid "ready" -msgstr "" +msgstr "hazır" -msgid "Error downloading map!" -msgstr "" +msgid "Media selected for map storage is not available" +msgstr "Harita saklama için seçilen ortam kullanılabilir değil" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" -msgstr "" +msgstr "Yeterli boş alan yok" + +msgid "Error downloading map!" +msgstr "Harita indirirken hata oluştu!" msgid "Error writing map!" -msgstr "" +msgstr "Harita yazılırken hata oluştu!" msgid "Map download aborted!" -msgstr "" +msgstr "Harita indirmesi iptal edildi!" #. Android resource: @strings/map_download_eta msgid "ETA" -msgstr "" +msgstr "Kalan Süre" #. Android resource: @strings/map_download_title msgid "Map download" -msgstr "" +msgstr "Harita indirme" msgid "Vehicle Position" msgstr "Araç Konumu" @@ -2248,7 +2502,7 @@ msgstr "" msgid "Coordinates" -msgstr "" +msgstr "Koordinatlar" msgid "" "Stop\n" @@ -2280,10 +2534,10 @@ msgstr "" msgid "Satellite Status" -msgstr "" +msgstr "Uydu Durumu" msgid "NMEA Data" -msgstr "" +msgstr "NMEA Verisi" msgid "car_shortest" msgstr "" @@ -2298,24 +2552,24 @@ msgstr "at" msgid "Truck" -msgstr "" +msgstr "Kamyon" #. Strings from android/res/values/strings.xml #. Android resource: @strings/yes msgid "Yes" -msgstr "" +msgstr "Evet" #. Android resource: @strings/notification_ticker msgid "Navit started" -msgstr "" +msgstr "Navit başladı" #. Android resource: @strings/notification_event_default msgid "Navit running" -msgstr "" +msgstr "Navit çalışıyor" #. Android resource: @strings/initial_info_box_title msgid "Welcome to Navit" -msgstr "" +msgstr "Navit'e Hoşgeldiniz" #. Android resource: @strings/initial_info_box_message msgid "" @@ -2328,26 +2582,34 @@ "\n" "Enjoy Navit!" msgstr "" +"Navit'i yüklediğiniz için teşekkürler!\n" +"\n" +"Başlamak için menüden \"Harita indir\"i seçin. Not: Harita dosya boyutu " +"büyük olabilir (>50MB) - kablosuz bağlantı önerilir.\n" +"\n" +"Harita verisi: (c) OpenStreetMap destekçileri\n" +"\n" +"Navit keyfini çıkarın!" #. Android resource: @strings/initial_info_box_OK msgid "OK" -msgstr "" +msgstr "Tamam" #. Android resource: @strings/initial_info_box_more_info msgid "More info" -msgstr "" +msgstr "Daha fazla bilgi" #. Android resource: @strings/optionsmenu_zoom_in msgid "Zoom in" -msgstr "" +msgstr "Yaklaştır" #. Android resource: @strings/optionsmenu_zoom_out msgid "Zoom out" -msgstr "" +msgstr "Uzaklaştır" #. Android resource: @strings/optionsmenu_download_maps msgid "Download maps" -msgstr "" +msgstr "Harita indir" #. Android resource: @strings/optionsmenu_toggle_poi msgid "Toggle POIs" @@ -2355,43 +2617,47 @@ #. Android resource: @strings/optionsmenu_exit_navit msgid "Exit Navit" -msgstr "" +msgstr "Navit'ten Çık" #. Android resource: @strings/optionsmenu_backup_restore msgid "Backup / Restore" -msgstr "" +msgstr "Yedekle / Geri Yükle" + +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "Harita konumunu ayarla" #. Android resource: @strings/map_delete msgid "Delete this map?" -msgstr "" +msgstr "Bu harita silinsin mi?" #. Android resource: @strings/map_download_downloading msgid "Downloading:" -msgstr "" +msgstr "İndiriliyor:" #. Android resource: @strings/map_download_download_error msgid "Error downloading map." -msgstr "" +msgstr "Harita indirilirken hata oluştu." #. Android resource: @strings/map_download_download_aborted msgid "Map download aborted" -msgstr "" +msgstr "Harita indirmesi iptal edildi" #. Android resource: @strings/map_no_fix msgid "No location. Reopen after location fix." -msgstr "" +msgstr "Konum yok. Konum alındıktan sonra tekrar açın." #. Android resource: @strings/maps_for_current_location msgid "Maps containing current location" -msgstr "" +msgstr "Geçerli konumu içeren haritalar" #. Android resource: @strings/address_search_title msgid "Address search" -msgstr "" +msgstr "Adres arama" #. Android resource: @strings/address_enter_destination msgid "Enter destination" -msgstr "" +msgstr "Hedef girin" #. Android resource: @strings/address_partial_match msgid "Match partial address" @@ -2399,90 +2665,107 @@ #. Android resource: @strings/address_search_searching msgid "Searching..." -msgstr "" +msgstr "Arıyor..." #. Android resource: @strings/address_search_not_found msgid "Address not found" -msgstr "" +msgstr "Adres bulunamadı" #. Android resource: @strings/address_search_getting_results msgid "Getting search results" -msgstr "" +msgstr "Arama sonuçları alınıyor" #. Android resource: @strings/address_search_loading_results msgid "Loading search results" -msgstr "" +msgstr "Arama sonuçları yükleniyor" #. Android resource: @strings/address_search_no_results msgid "No results found" -msgstr "" +msgstr "Hiçbir sonuç bulunamadı" #. Android resource: @strings/address_search_no_text_entered msgid "No text entered" -msgstr "" +msgstr "Hiçbir metin girilmedi" #. Android resource: @strings/address_search_set_destination msgid "Setting destination to:" -msgstr "" +msgstr "Hedef buraya ayarlanıyor:" #. Android resource: @strings/choose_an_action msgid "Choose an action" -msgstr "" +msgstr "Bir eylem seçin" #. Android resource: @strings/please_insert_an_sd_card msgid "Please insert an SD Card" -msgstr "" +msgstr "Lütfen bir SD Kart takın" #. Android resource: @strings/backing_up msgid "Backing up..." -msgstr "" +msgstr "Yedekleniyor..." #. Android resource: @strings/restoring msgid "Restoring..." -msgstr "" +msgstr "Geri yükleniyor..." #. Android resource: @strings/failed_to_create_backup_directory msgid "Failed to create backup directory" -msgstr "" +msgstr "Yedekleme dizini oluşturulamadı" #. Android resource: @strings/backup_failed msgid "Backup failed" -msgstr "" +msgstr "Yedekleme başarısız" #. Android resource: @strings/no_backup_found msgid "No backup found" -msgstr "" +msgstr "Hiçbir yedek bulunamadı" #. Android resource: @strings/failed_to_restore msgid "Failed to restore" -msgstr "" +msgstr "Geri yükleme başarısız" #. Android resource: @strings/backup_successful msgid "Backup successful" -msgstr "" +msgstr "Yedekleme başarılı" #. Android resource: @strings/restore_successful_please_restart_navit msgid "" "Restore Successful\n" "Please restart Navit" msgstr "" +"Geri yükleme başarılı\n" +"Lütfen Navit'i yeniden başlatın" #. Android resource: @strings/backup_not_found msgid "Backup not found" -msgstr "" +msgstr "Yedek bulunamadı" #. Android resource: @strings/restore_failed msgid "Restore failed" -msgstr "" +msgstr "Geri yükleme başarısız" #. Android resource: @strings/select_backup msgid "Select backup" -msgstr "" +msgstr "Yedek seçin" #. Android resource: @strings/backup msgid "Backup" -msgstr "" +msgstr "Yedekle" #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "ardından %1$s'de kavşaktan çıkın %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/uk.po.in navit-0.5.0+dfsg.1/po/uk.po.in --- navit-0.5.0~svn5900+dfsg.1/po/uk.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/uk.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,28 +1,26 @@ -# Ukrainian translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Ukrainian translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer # Knedlyk https://launchpad.net/~yupadmin +# Michael von Glasow https://launchpad.net/~michael-vonglasow # andygol https://launchpad.net/~andygol # serg_stetsuk https://launchpad.net/~serg-stetsuk - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:44+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 04:01+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Ukrainian \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: uk\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -77,14 +75,6 @@ msgstr "шостий виїзд" #, c-format -msgid "%d m" -msgstr "%d м" - -#, c-format -msgid "in %d m" -msgstr "за %d м" - -#, c-format msgid "%d feet" msgstr "" @@ -93,14 +83,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d метрів" - -#, c-format -msgid "in %d meters" -msgstr "за %d метрів" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -109,14 +91,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d кілометрів" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "за %d.%d кілометрів" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -129,6 +103,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d метрів" + +#, c-format +msgid "in %d meters" +msgstr "за %d метрів" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d кілометрів" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "за %d.%d кілометрів" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d кілометр" @@ -142,64 +132,72 @@ msgstr[1] "за %d кілометри" msgstr[2] "за %d кілометрів" -msgid "exit" -msgstr "виїзд" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "з'їзд на" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s на вулицю %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%sна %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s на %s%s%s" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sна %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s на %s%s%s" +msgid "%sinto %s%s%s|feminine form" +msgstr "%sна %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s на %s%s%s" +msgid "%sinto %s%s%s|neuter form" +msgstr "%sна %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" -msgstr "%s в %s" - -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "праворуч" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "ліворуч" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "легко " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "круто " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "дуже круто " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "невідомо " +msgstr "%sв %s" msgid "When possible, please turn around" msgstr "Якщо це можливо, то розверніться" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Їдьте дорогою наступні %s" + msgid "Enter the roundabout soon" msgstr "Скоро виїзд на дорогу з кільцевим рухом" @@ -208,56 +206,176 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "тоді виїдьте з кільця через %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Виїдьте з кільця через %1$s %2$s" + +msgid "soon" +msgstr "скоро" +msgid "now" +msgstr "зараз" + +msgid "then" +msgstr "тоді" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Виїдьте з кільця через %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Їдьте дорогою наступні %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "скоро" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "З’їдьте на дорогу %1$s до %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "після %i дороги" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "зараз" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "праворуч" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "ліворуч" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "легко " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "круто " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "тоді виїдьте на доргу %1$s до %2$s" +msgstr "" -msgid "error" -msgstr "помилка" +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "З’їдьте на дорогу %1$s до %2$s" + +#, c-format +msgid "after %i roads" +msgstr "після %i дороги" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Поверніть на %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "тоді поверніть на %1$s%2$s %3$s%4$s" +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "тоді то розверніться" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|left" +msgstr "То розверніться %1$s" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "тоді то розверніться" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. +#, c-format +msgid "Make a U-turn %1$s|right" +msgstr "То розверніться %1$s" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" +msgid "then you have reached your destination." +msgstr "і тоді Ви прибудете в місце призначення." + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "Ви досягли місця призначення %s" -msgid "then you have reached your destination." -msgstr "і тоді Ви прибудете в місце призначення." +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "Розв'язка" + +msgid "Exit" +msgstr "Виїзд" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1317,11 +1435,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1458,6 +1578,12 @@ msgid "Opens address search dialog" msgstr "Відкриває діалог пошуку адреси" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Зупинити навігацію" @@ -1500,6 +1626,100 @@ msgid "Data" msgstr "Дата" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "Пн" @@ -1811,12 +2031,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2187,13 +2426,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2358,6 +2600,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2483,3 +2729,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "тоді виїдьте з кільця через %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/ur.po.in navit-0.5.0+dfsg.1/po/ur.po.in --- navit-0.5.0~svn5900+dfsg.1/po/ur.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/ur.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,25 +1,23 @@ -# Urdu translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Urdu translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer +# Michael von Glasow https://launchpad.net/~michael-vonglasow +# Waqar Ahmed https://launchpad.net/~waqar-17a # asghar https://launchpad.net/~asghar144 - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:44+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-10-10 13:42+0000\n" +"Last-Translator: Waqar Ahmed \n" "Language-Team: Urdu \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: ur\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -67,10 +65,6 @@ msgstr "چھٹا اخراج" #, c-format -msgid "%d m" -msgstr "%d میٹر" - -#, c-format msgid "%d meters" msgstr "%d میٹر" @@ -86,69 +80,30 @@ msgid "in %d.%d kilometers" msgstr "%d.%d کلومیٹر میں" -msgid "exit" -msgstr "اخراج" - -msgid "into the ramp" -msgstr "ڈھلان میں" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name -#, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s سڑک میں سے %s%s%s" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included -#, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s میں سے %s%s%s" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included -#, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s میں سے %s%s%s" - -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included -#, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s میں سے %s%s%s" - #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%sپر %s" -#. TRANSLATORS: right, as in 'Turn right' +msgid "When possible, please turn around" +msgstr "جب ممکن ہو گھومیں" + +#. TRANSLATORS: "right" as in "turn right" msgid "right" msgstr "دایئں" -#. TRANSLATORS: left, as in 'Turn left' +#. TRANSLATORS: "left" as in "turn left" msgid "left" msgstr "بایئں" -#. TRANSLATORS: Don't forget the ending space +#. TRANSLATORS: as in "turn easily right" msgid "easily " msgstr "آسانی سے " -#. TRANSLATORS: Don't forget the ending space +#. TRANSLATORS: as in "turn strongly right" msgid "strongly " msgstr "سختی سے " -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "انتہایَ سختی سے " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "نا معلوم " - -msgid "When possible, please turn around" -msgstr "جب ممکن ہو گھومیں" - -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination -#, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "%1$s%2$s %3$s%4$s پھر گومیں" - msgid "Set as destination" msgstr "بطور منزل انتخاب" @@ -177,10 +132,6 @@ msgstr "صفر سے" #, c-format -msgid "in %d m" -msgstr "%d میٹر میں" - -#, c-format msgid "%d feet" msgstr "" @@ -220,30 +171,166 @@ msgstr[0] "ایک کلومیٹر میں" msgstr[1] "%d کلومیٹر میں" -msgid "Enter the roundabout soon" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name #, c-format -msgid "Enter the roundabout %s" +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" msgstr "" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" + +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" +msgstr "ڈھلان میں" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "then leave the roundabout at the %s" -msgstr "پھر گول چوراہے کو %s پے چھوڑ دیں" +msgid "%sinto %s%s%s" +msgstr "%sمیں سے %s%s%s" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "Leave the roundabout at the %s" -msgstr "گول چوراہے کو %s پے چھوڑ دیں" +msgid "%sinto %s%s%s|masculine form" +msgstr "%sمیں سے %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|feminine form" +msgstr "%sمیں سے %s%s%s" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%sinto %s%s%s|neuter form" +msgstr "%sمیں سے %s%s%s" + +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" #, c-format msgid "Follow the road for the next %s" msgstr "%s تک سڑک کے مطابق جایئں" +msgid "Enter the roundabout soon" +msgstr "" + +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "" + +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "گول چوراہے کو %1$s %2$s پے چھوڑ دیں" + msgid "soon" msgstr "جلد ہی" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "now" +msgstr "اب" + +msgid "then" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|right" +msgstr "" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" + +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance +#, c-format +msgid "Take exit %1$s %2$s %3$s" +msgstr "" + +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#, c-format +msgid "then take the %1$s road to the %2$s" +msgstr "" + #, c-format msgid "Take the %1$s road to the %2$s" msgstr "سڑک تک %1$s سے %2$s" @@ -252,27 +339,58 @@ msgid "after %i roads" msgstr "%i سڑکوں کے بعد" -msgid "now" -msgstr "اب" +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination +#, c-format +msgid "Turn %1$s%2$s %3$s%4$s" +msgstr "%1$s%2$s %3$s%4$s گومیں" + +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then take the %1$s road to the %2$s" -msgstr "پھر %1$s لے کر %2$s تک جائیں" +msgid "Make a U-turn %1$s|left" +msgstr "" -msgid "error" -msgstr "غلطی" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "Turn %1$s%2$s %3$s%4$s" -msgstr "%1$s%2$s %3$s%4$s گومیں" +msgid "Make a U-turn %1$s|right" +msgstr "" +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" + +msgid "then you have reached your destination." +msgstr "پھر آپ اپنی منزل پہ پہنچ جایئں گے" + +#. TRANSLATORS: the arg. is distance #, c-format msgid "You have reached your destination %s" msgstr "آپ اپنی منزل %s پے پہنچ کئے ہیں" -msgid "then you have reached your destination." -msgstr "پھر آپ اپنی منزل پہ پہنچ جایئں گے" +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "اخراج" #. Android resource: @strings/position_popup_title msgid "Position" @@ -1329,11 +1447,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1467,6 +1587,12 @@ msgid "Opens address search dialog" msgstr "پتہ تلاش والا خانہ کھولیں" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "نیویگیشن بند کریں" @@ -1506,6 +1632,100 @@ msgid "Data" msgstr "ڈیٹا" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "شمال" @@ -1807,12 +2027,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2183,13 +2422,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2227,7 +2469,7 @@ msgstr "راستہ" msgid "About" -msgstr "مطعلق" +msgstr "متعلق" msgid "Quit" msgstr "بند" @@ -2354,6 +2596,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2479,3 +2725,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "پھر گول چوراہے کو %1$s %2$s پے چھوڑ دیں" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/vi.po.in navit-0.5.0+dfsg.1/po/vi.po.in --- navit-0.5.0~svn5900+dfsg.1/po/vi.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/vi.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,26 +1,24 @@ -# Vietnamese translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Vietnamese translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Hoàng Đỗ Can Trực https://launchpad.net/~truc294 # Le Viet Thanh https://launchpad.net/~lethanhx2k -# Tada Saki https://launchpad.net/~nhkhoi - +# Michael von Glasow https://launchpad.net/~michael-vonglasow +# Saki https://launchpad.net/~nhkhoi msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:43+0000\n" -"Last-Translator: Nguyễn Hào Khôi \n" +"PO-Revision-Date: 2015-07-19 04:01+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Vietnamese \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: vi\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -75,14 +73,6 @@ msgstr "Thoát thứ 6" #, c-format -msgid "%d m" -msgstr "%d m" - -#, c-format -msgid "in %d m" -msgstr "trong %d m" - -#, c-format msgid "%d feet" msgstr "" @@ -91,14 +81,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d mét" - -#, c-format -msgid "in %d meters" -msgstr "trong %d mét" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -107,14 +89,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d cây số" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "trong %d.%d km" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -127,6 +101,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d mét" + +#, c-format +msgid "in %d meters" +msgstr "trong %d mét" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d cây số" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "trong %d.%d km" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d km" @@ -136,64 +126,72 @@ msgid_plural "in %d kilometers" msgstr[0] "trong %d km" -msgid "exit" -msgstr "thoát" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "vào dốc" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%svào phố %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%svào %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%svào %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" +msgstr "%svào %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%svào %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" +msgstr "%svào %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%svào %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" +msgstr "%svào %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" msgstr "%svào %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "phải" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "trái" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "dễ dàng " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "mạnh " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "thực sự mạnh " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "không rõ " - msgid "When possible, please turn around" msgstr "Khi có thể, hãy quay vòng" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "Đường tiếp theo %s" + msgid "Enter the roundabout soon" msgstr "Sắp tới chỗ vòng" @@ -202,57 +200,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "sau đó ra khỏi đường vòng tại %s" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "Ra khỏi đường vòng tại %1$s %2$s" + +msgid "soon" +msgstr "ngay" + +msgid "now" +msgstr "bây giờ" + +msgid "then" +msgstr "sau đó" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "Ra khỏi đường vòng tại %s" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "Đường tiếp theo %s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "ngay" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "Có %1$s đường đến %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "sau %i đường" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "bây giờ" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "phải" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "trái" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "dễ dàng " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "mạnh " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "sau đó bắt %1$s đường đến %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "Có %1$s đường đến %2$s" -msgid "error" -msgstr "lỗi" +#, c-format +msgid "after %i roads" +msgstr "sau %i đường" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "Rẽ %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "sau đó rẽ %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" -msgstr "Bạn vừa tới điểm đích: %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" msgid "then you have reached your destination." msgstr "sau đó bạn tới điểm đích" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "Bạn vừa tới điểm đích: %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "Thoát" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "Vị trí" @@ -1311,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1452,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "Mở hộp thoại tìm địa chỉ" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "Dừng dẫn đường" @@ -1494,6 +1620,100 @@ msgid "Data" msgstr "Dữ liệu" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "Bắc" @@ -1805,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2181,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2348,6 +2590,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2473,3 +2719,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "sau đó ra khỏi đường vòng tại %1$s %2$s" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/zh_CN.po.in navit-0.5.0+dfsg.1/po/zh_CN.po.in --- navit-0.5.0~svn5900+dfsg.1/po/zh_CN.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/zh_CN.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,29 +1,27 @@ -# Simplified Chinese translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Simplified Chinese translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Feng Chao https://launchpad.net/~chaofeng # Kakurady Drakenar https://launchpad.net/~kakurady # Kyle https://launchpad.net/~kylelover +# Kyle WANG https://launchpad.net/~osfans # Lele Long https://launchpad.net/~schemacs # Li Jin https://launchpad.net/~lijin # kelvin https://launchpad.net/~kelvinz - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:46+0000\n" -"Last-Translator: Kyle WANG \n" +"PO-Revision-Date: 2015-07-19 04:01+0000\n" +"Last-Translator: Kyle WANG \n" "Language-Team: Simplified Chinese \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" +"Language: zh_CN\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" msgid "Running from source directory\n" @@ -78,14 +76,6 @@ msgstr "第六个退出" #, c-format -msgid "%d m" -msgstr "%d米" - -#, c-format -msgid "in %d m" -msgstr "距离%d米" - -#, c-format msgid "%d feet" msgstr "" @@ -94,14 +84,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d米" - -#, c-format -msgid "in %d meters" -msgstr "距离%d米" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -110,14 +92,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d千米" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "距离%d.%d千米" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -130,6 +104,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d米" + +#, c-format +msgid "in %d meters" +msgstr "距离%d米" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d千米" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "距离%d.%d千米" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d千米" @@ -139,64 +129,72 @@ msgid_plural "in %d kilometers" msgstr[0] "距离%d千米" -msgid "exit" -msgstr "退出" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "进入坡道" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s 到达街区 %s%s%s" +msgid "%sinto %s%s%s" +msgstr "%s到达 %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" -msgstr "%s 到达 %s%s%s | male form" +msgid "%sinto %s%s%s|masculine form" +msgstr "%s到达 %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" -msgstr "%s 到达 %s%s%s | female form" +msgid "%sinto %s%s%s|feminine form" +msgstr "%s到达 %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" -msgstr "%s 到达 %s%s%s | neutral form" +msgid "%sinto %s%s%s|neuter form" +msgstr "%s到达 %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) #, c-format msgid "%sinto the %s" -msgstr "%s 到达 %s" - -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "右" - -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "左" - -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "缓 " - -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "急转 " - -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "非常大的急转 " - -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " -msgstr "未知 " +msgstr "%s到达 %s" msgid "When possible, please turn around" msgstr "当遇到路口的时候,请转弯" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" + +#, c-format +msgid "Follow the road for the next %s" +msgstr "沿路继续行驶%s" + msgid "Enter the roundabout soon" msgstr "不久将进入环形交叉路口" @@ -205,57 +203,177 @@ msgid "Enter the roundabout %s" msgstr "" +msgid "then enter the roundabout" +msgstr "" + +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow #, c-format -msgid "then leave the roundabout at the %s" -msgstr "然后在%s处驶出环形区" +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "还有%1$s %2$s就将驶离环形区" + +msgid "soon" +msgstr "不久" + +msgid "now" +msgstr "现在" + +msgid "then" +msgstr "然后" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "还有%s就将驶离环形区" +msgid "then merge%1$s|right" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Follow the road for the next %s" -msgstr "沿路继续行驶%s" +msgid "Merge %1$s%2$s|right" +msgstr "" -msgid "soon" -msgstr "不久" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|left" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "可以经由道路 %1$s 到 %2$s" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "after %i roads" -msgstr "之后有 %i 条道路" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "now" -msgstr "现在" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" + +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then continue straight%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "右" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "左" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "缓 " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "急转 " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "然后可以经由道路 %1$s 到 %2$s" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "可以经由道路 %1$s 到 %2$s" -msgid "error" -msgstr "错误" +#, c-format +msgid "after %i roads" +msgstr "之后有 %i 条道路" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "转向 %1$s%2$s %3$s%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "然后转向 %1$s%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" + +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" -msgstr "您已经抵达您的目的地 %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" msgid "then you have reached your destination." msgstr "然后你就到达您的目的地" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "您已经抵达您的目的地 %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "交流道" + +msgid "Exit" +msgstr "退出" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "位置" @@ -1314,11 +1432,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1455,6 +1575,12 @@ msgid "Opens address search dialog" msgstr "打开地址搜索对话框" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "停止导航" @@ -1497,6 +1623,100 @@ msgid "Data" msgstr "数据" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "北" @@ -1808,12 +2028,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2184,13 +2423,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2351,6 +2593,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2476,3 +2722,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "然后在%1$s %2$s处驶出环形区" diff -Nru navit-0.5.0~svn5900+dfsg.1/po/zh_HK.po.in navit-0.5.0+dfsg.1/po/zh_HK.po.in --- navit-0.5.0~svn5900+dfsg.1/po/zh_HK.po.in 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/po/zh_HK.po.in 2016-01-02 22:29:50.000000000 +0000 @@ -1,26 +1,23 @@ -# Chinese (Hong Kong) translation for navit -# Copyright (C) 2006-2014 The Navit Team +# Chinese (Hong Kong) translations for navit +# Copyright (C) 2006-2015 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # KaZeR https://launchpad.net/~kazer # Kyle https://launchpad.net/~kylelover +# Michael von Glasow https://launchpad.net/~michael-vonglasow # Walter Cheuk https://launchpad.net/~wwycheuk - msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-05 11:04-0700\n" -"PO-Revision-Date: 2013-09-28 01:45+0000\n" -"Last-Translator: KaZeR \n" +"PO-Revision-Date: 2015-07-19 04:01+0000\n" +"Last-Translator: Michael von Glasow \n" "Language-Team: Chinese (Hong Kong) \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-Launchpad-Export-Date: 2014-08-08 16:37+0000\n" -"X-Generator: Launchpad (build 17156)\n" "Language: zh_HK\n" "X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n" @@ -76,14 +73,6 @@ msgstr "第六個出口" #, c-format -msgid "%d m" -msgstr "%d 米" - -#, c-format -msgid "in %d m" -msgstr "在 %d 米內" - -#, c-format msgid "%d feet" msgstr "" @@ -92,14 +81,6 @@ msgstr "" #, c-format -msgid "%d meters" -msgstr "%d 米" - -#, c-format -msgid "in %d meters" -msgstr "在 %d 米內" - -#, c-format msgid "%d.%d miles" msgstr "" @@ -108,14 +89,6 @@ msgstr "" #, c-format -msgid "%d.%d kilometers" -msgstr "%d.%d 千米" - -#, c-format -msgid "in %d.%d kilometers" -msgstr "在 %d.%d 千米內" - -#, c-format msgid "one mile" msgid_plural "%d miles" msgstr[0] "" @@ -128,6 +101,22 @@ msgstr[1] "" #, c-format +msgid "%d meters" +msgstr "%d 米" + +#, c-format +msgid "in %d meters" +msgstr "在 %d 米內" + +#, c-format +msgid "%d.%d kilometers" +msgstr "%d.%d 千米" + +#, c-format +msgid "in %d.%d kilometers" +msgstr "在 %d.%d 千米內" + +#, c-format msgid "one kilometer" msgid_plural "%d kilometers" msgstr[0] "%d 千米" @@ -137,30 +126,53 @@ msgid_plural "in %d kilometers" msgstr[0] "在 %d 千米內" -msgid "exit" -msgstr "退出" +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name +#, c-format +msgid "%1$sonto the %2$s%3$s%4$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name +#, c-format +msgid "%1$sonto %2$s" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|masculine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|feminine form" +msgstr "" + +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included +#, c-format +msgid "%1$sonto %2$s|neuter form" +msgstr "" -msgid "into the ramp" +#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. +msgid "onto the motorway ramp" msgstr "進入斜路" #. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name #, c-format -msgid "%sinto the street %s%s%s" -msgstr "%s進入 %s 街道%s%s" +msgid "%sinto %s%s%s" +msgstr "%s進入 %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Male form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|male form" +msgid "%sinto %s%s%s|masculine form" msgstr "%s進入 %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Female form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|female form" +msgid "%sinto %s%s%s|feminine form" msgstr "%s進入 %s%s%s" -#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neutral form. The stuff after | doesn't have to be included +#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included #, c-format -msgid "%sinto the %s%s%s|neutral form" +msgid "%sinto %s%s%s|neuter form" msgstr "%s進入 %s%s%s" #. TRANSLATORS: gives the name of the next road to turn into (into the E17) @@ -168,92 +180,197 @@ msgid "%sinto the %s" msgstr "%s進入 %s" -#. TRANSLATORS: right, as in 'Turn right' -msgid "right" -msgstr "右" +msgid "When possible, please turn around" +msgstr "如可以請掉頭" -#. TRANSLATORS: left, as in 'Turn left' -msgid "left" -msgstr "左" +#. TRANSLATORS: the argument is the destination to follow +#, c-format +msgid "towards %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "easily " -msgstr "简单 " +#, c-format +msgid "Follow the road for the next %s" +msgstr "直走到下一个%s" -#. TRANSLATORS: Don't forget the ending space -msgid "strongly " -msgstr "大力轉 " +msgid "Enter the roundabout soon" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "really strongly " -msgstr "大大力轉 " +#. TRANSLATORS: %s is the distance to the roundabout +#, c-format +msgid "Enter the roundabout %s" +msgstr "" -#. TRANSLATORS: Don't forget the ending space -msgid "unknown " +msgid "then enter the roundabout" msgstr "" -msgid "When possible, please turn around" -msgstr "如可以請掉頭" +#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow +#, c-format +msgid "Leave the roundabout at the %1$s %2$s" +msgstr "在 %1$s %2$s 離開迴旋處" -msgid "Enter the roundabout soon" +msgid "soon" +msgstr "即將" + +msgid "now" +msgstr "現在" + +msgid "then" +msgstr "然後" + +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. +#, c-format +msgid "then merge%1$s|right" msgstr "" -#. TRANSLATORS: %s is the distance to the roundabout +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. #, c-format -msgid "Enter the roundabout %s" +msgid "Merge %1$s%2$s|right" msgstr "" +#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "then leave the roundabout at the %s" -msgstr "然後在 %s 離開迴旋處" +msgid "then merge%1$s|left" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. #, c-format -msgid "Leave the roundabout at the %s" -msgstr "在 %s 離開迴旋處" +msgid "Merge %1$s%2$s|left" +msgstr "" + +msgid "on your left" +msgstr "" + +msgid "on your right" +msgstr "" +#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance #, c-format -msgid "Follow the road for the next %s" -msgstr "直走到下一个%s" +msgid "Take exit %1$s %2$s %3$s" +msgstr "" -msgid "soon" -msgstr "即將" +#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination +#, c-format +msgid "Take the exit %1$s %2$s%3$s" +msgstr "" + +#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" +msgid "at interchange" +msgstr "" -#. TRANSLATORS: First argument is the how manieth street to take, second the direction +msgid "at exit" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver #, c-format -msgid "Take the %1$s road to the %2$s" -msgstr "取 %1$s 路往%2$s方向" +msgid "then continue straight%1$s" +msgstr "" +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination #, c-format -msgid "after %i roads" -msgstr "%i 條路之後" +msgid "Continue straight %1$s%2$s%3$s" +msgstr "" -msgid "now" -msgstr "現在" +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep right%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep right %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: the arg. is where to do the maneuver +#, c-format +msgid "then keep left%1$s" +msgstr "" + +#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination +#, c-format +msgid "Keep left %1$s%2$s%3$s" +msgstr "" + +#. TRANSLATORS: "right" as in "turn right" +msgid "right" +msgstr "右" + +#. TRANSLATORS: "left" as in "turn left" +msgid "left" +msgstr "左" + +#. TRANSLATORS: as in "turn easily right" +msgid "easily " +msgstr "简单 " + +#. TRANSLATORS: as in "turn strongly right" +msgid "strongly " +msgstr "大力轉 " #, c-format msgid "then take the %1$s road to the %2$s" -msgstr "然後取 %1$s 路往%2$s方向" +msgstr "" + +#, c-format +msgid "Take the %1$s road to the %2$s" +msgstr "取 %1$s 路往%2$s方向" -msgid "error" -msgstr "錯誤" +#, c-format +msgid "after %i roads" +msgstr "%i 條路之後" -#. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' +#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination #, c-format msgid "Turn %1$s%2$s %3$s%4$s" msgstr "%1$s转向%2$s %3$s至%4$s" -#. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination +#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|left" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "然後%1$s轉%2$s %3$s%4$s" +msgid "Make a U-turn %1$s|left" +msgstr "" +#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. +msgid "then make a U-turn|right" +msgstr "" + +#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. #, c-format -msgid "You have reached your destination %s" -msgstr "已到達目的地 %s" +msgid "Make a U-turn %1$s|right" +msgstr "" + +#. An empty placeholder that we can use in the future for +#. * some motorway commands that are now suppressed but we +#. * can in some cases make it say here : +#. * 'follow destination blabla' without any further driving instructions, +#. * in cases where relevant destination info is available. +#. * Even if there is no driving command to be announced, in some cases +#. * there is an overhead roadsign in preparation of an upcoming road-split, +#. * and then we can give useful info to the driver. +#. * +#. * UNTESTED ! +#. * +#. +msgid "follow" +msgstr "" msgid "then you have reached your destination." msgstr "然後會到達目的地" +#. TRANSLATORS: the arg. is distance +#, c-format +msgid "You have reached your destination %s" +msgstr "已到達目的地 %s" + +#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" +msgid "Interchange" +msgstr "" + +msgid "Exit" +msgstr "退出" + #. Android resource: @strings/position_popup_title msgid "Position" msgstr "位置" @@ -1312,11 +1429,13 @@ msgid "" "navit usage:\n" "navit [options] [configfile]\n" -"\t-c : use as config file\n" -"\t-d : set the global debug output level to (0-3). Overrides setting " -"from config file.\n" +"\t-c : use as config file, instead of using the default file.\n" +"\t-d : set the global debug output level to (0=error, 1=warning, " +"2=info, 3=debug).\n" +"\tSettings from config file will still take effect where they set a higher " +"level.\n" "\t-h: print this usage info and exit.\n" -"\t-v: Print the version and exit.\n" +"\t-v: print the version and exit.\n" msgstr "" #. We have not found an existing config file from all possibilities @@ -1453,6 +1572,12 @@ msgid "Opens address search dialog" msgstr "" +msgid "_POI search" +msgstr "" + +msgid "Opens POI search dialog" +msgstr "" + msgid "_Stop Navigation" msgstr "停止浏览" @@ -1495,6 +1620,100 @@ msgid "Data" msgstr "資料" +msgid "Pharmacy" +msgstr "" + +msgid "Restaurant" +msgstr "" + +msgid "Restaurant. Fast food" +msgstr "" + +msgid "Hotel" +msgstr "" + +msgid "Car parking" +msgstr "" + +msgid "Fuel station" +msgstr "" + +msgid "Bank" +msgstr "" + +msgid "Hospital" +msgstr "" + +msgid "Cinema" +msgstr "" + +msgid "Train station" +msgstr "" + +msgid "School" +msgstr "" + +msgid "Police" +msgstr "" + +msgid "Justice" +msgstr "" + +msgid "Taxi" +msgstr "" + +msgid "Shopping" +msgstr "" + +msgid "Distance from screen center (km)" +msgstr "" + +#, c-format +msgid "POI %s. %s" +msgstr "" + +#, c-format +msgid "Set destination to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set map to %ld, %ld \n" +msgstr "" + +#, c-format +msgid "Set next visit to %ld, %ld \n" +msgstr "" + +msgid "POI search" +msgstr "" + +msgid "Select a category" +msgstr "" + +msgid "Select a distance to look for (km)" +msgstr "" + +msgid "Select a POI" +msgstr "" + +msgid " " +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Distance(m)" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Visit Before" +msgstr "" + msgid "N" msgstr "北" @@ -1806,12 +2025,31 @@ msgid "Map data (c) OpenStreetMap contributors, ODBL" msgstr "" +msgid "" +"Current map location %s is not available\n" +"Please restart Navit after you attach an SD card or select a different map " +"location." +msgstr "" + msgid "Downloaded maps" msgstr "" +msgid "" +"Sorry, we currently do not support maps above 3.8G on Android, please select " +"a smaller one." +msgstr "" + msgid "Cancel" msgstr "" +msgid "filenamePath" +msgstr "" + +msgid "" +"New location set to %s\n" +"Restart Navit to apply the changes." +msgstr "" + msgid "Whole Planet" msgstr "" @@ -2182,13 +2420,16 @@ msgid "ready" msgstr "" -msgid "Error downloading map!" +msgid "Media selected for map storage is not available" msgstr "" #. Android resource: @strings/map_download_not_enough_free_space msgid "Not enough free space" msgstr "" +msgid "Error downloading map!" +msgstr "" + msgid "Error writing map!" msgstr "" @@ -2353,6 +2594,10 @@ msgid "Backup / Restore" msgstr "" +#. Android resource: @strings/optionsmenu_set_map_location +msgid "Set map location" +msgstr "" + #. Android resource: @strings/map_delete msgid "Delete this map?" msgstr "" @@ -2478,3 +2723,18 @@ #. Android resource: @strings/restore msgid "Restore" msgstr "" + +#. Android resource: @strings/TTS_title_data_missing +msgid "System text to speech engine data is missing" +msgstr "" + +#. Android resource: @strings/TTS_qery_install_data +msgid "" +"Navit can use any text to speech engine installed on your device. The " +"currently selected engine reports it is unable to speak in your language. " +"Should we ask the system to show voice download dialog?" +msgstr "" + +#, c-format +#~ msgid "then leave the roundabout at the %1$s %2$s" +#~ msgstr "然後在 %1$s %2$s 離開迴旋處" diff -Nru navit-0.5.0~svn5900+dfsg.1/README navit-0.5.0+dfsg.1/README --- navit-0.5.0~svn5900+dfsg.1/README 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/README 2016-01-02 22:29:50.000000000 +0000 @@ -17,34 +17,7 @@ The routing engine not only calculates an optimal route to your destination, but also generates directions and even speaks to you. -Navit currently speaks 27 languages : -- Brazilian Portuguese -- Bulgarian -- Chinese (Hong Kong) -- Czech -- Danish -- Dutch -- English -- Estonian -- Finnish -- French -- German -- Hebrew -- Hungarian -- Italian -- Japanese -- Norwegian Bokmal -- Polish -- Portuguese -- Romanian -- Russian -- Slovak -- Slovenian -- Spanish -- Swedish -- Telugu -- Thai -- Turkish +Navit currently speaks over 70 languages! You can help translating via our web based translation page : http://translations.launchpad.net/navit/trunk/+pots/navit diff -Nru navit-0.5.0~svn5900+dfsg.1/Toolchain/i386-mingw32ce.cmake navit-0.5.0+dfsg.1/Toolchain/i386-mingw32ce.cmake --- navit-0.5.0~svn5900+dfsg.1/Toolchain/i386-mingw32ce.cmake 1970-01-01 00:00:00.000000000 +0000 +++ navit-0.5.0+dfsg.1/Toolchain/i386-mingw32ce.cmake 2016-01-02 22:29:50.000000000 +0000 @@ -0,0 +1,8 @@ +SET(CMAKE_SYSTEM_NAME WINCE) + +# specify the cross compiler +FIND_PROGRAM(CMAKE_C_COMPILER NAMES i386-mingw32ce-gcc ) +FIND_PROGRAM(CMAKE_CXX_COMPILER NAMES i386-mingw32ce-g++ ) +FIND_PROGRAM(CMAKE_RC_COMPILER_INIT NAMES i386-mingw32ce-windres ) +SET(PKG_CONFIG_EXECUTABLE "i386-mingw32ce-pkg-config") +SET(WINCE TRUE) diff -Nru navit-0.5.0~svn5900+dfsg.1/Toolchain/mingw32.cmake navit-0.5.0+dfsg.1/Toolchain/mingw32.cmake --- navit-0.5.0~svn5900+dfsg.1/Toolchain/mingw32.cmake 2014-09-29 09:52:19.000000000 +0000 +++ navit-0.5.0+dfsg.1/Toolchain/mingw32.cmake 2016-01-02 22:29:50.000000000 +0000 @@ -1,14 +1,14 @@ SET(CMAKE_SYSTEM_NAME Windows) -FIND_PROGRAM(CMAKE_C_COMPILER NAMES i686-w64-mingw32-gcc i686-mingw32-gcc i586-mingw32-gcc i386-mingw32-gcc mingw32-gcc) -FIND_PROGRAM(CMAKE_CXX_COMPILER NAMES i686-w64-mingw32-g++ i686-mingw32-g++ i586-mingw32-gcc i386-mingw32-gcc mingw32-g++) +FIND_PROGRAM(CMAKE_C_COMPILER NAMES i686-w64-mingw32-gcc i686-mingw32-gcc i586-mingw32-gcc i386-mingw32-gcc i586-mingw32msvc-gcc mingw32-gcc) +FIND_PROGRAM(CMAKE_CXX_COMPILER NAMES i686-w64-mingw32-g++ i686-mingw32-g++ i586-mingw32-g++ i386-mingw32-g++ i586-mingw32msvc-g++ mingw32-g++) -FIND_PROGRAM(CMAKE_RC_COMPILER_INIT NAMES i686-w64-mingw32-windres i686-mingw32-windres i586-mingw32-windres i386-mingw32-windres mingw32-windres windres.exe) +FIND_PROGRAM(CMAKE_RC_COMPILER_INIT NAMES i686-w64-mingw32-windres i686-mingw32-windres i586-mingw32-windres i386-mingw32-windres mingw32-windres i586-mingw32msvc-windres windres.exe) -FIND_PROGRAM(CMAKE_AR NAMES i686-w64-mingw32-ar i686-mingw32-ar i586-mingw32-ar i386-mingw32-ar mingw32-ar ar.exe) +FIND_PROGRAM(CMAKE_AR NAMES i686-w64-mingw32-ar i686-mingw32-ar i586-mingw32-ar i386-mingw32-ar i586-mingw32msvc-ar mingw32-ar ar.exe) IF (NOT CMAKE_FIND_ROOT_PATH) -EXECUTE_PROCESS( +EXECUTE_PROCESS( COMMAND ${CMAKE_C_COMPILER} -print-sysroot OUTPUT_VARIABLE CMAKE_FIND_ROOT_PATH )