From 92e3469b3d151aed60a4703e3ad8d4ca754eb5bd Mon Sep 17 00:00:00 2001 From: Aleksandr Zatsepin Date: Wed, 9 Jan 2019 11:46:47 +0300 Subject: [PATCH] Removed viator code (#9917) * Removed viator code from core, android and ios. * Removed redundant viator strings * [android][ios] Generated localizations --- android/jni/CMakeLists.txt | 2 - android/jni/com/mapswithme/maps/Framework.cpp | 11 - android/jni/com/mapswithme/maps/Framework.hpp | 5 - .../maps/discovery/DiscoveryManager.cpp | 29 -- .../jni/com/mapswithme/maps/viator/Viator.cpp | 75 ----- .../jni/com/mapswithme/maps/viator/Viator.hpp | 9 - .../res/drawable-hdpi/ic_logo_viator_dark.png | Bin 1984 -> 0 bytes .../drawable-hdpi/ic_logo_viator_light.png | Bin 2999 -> 0 bytes .../res/drawable-mdpi/ic_logo_viator_dark.png | Bin 1542 -> 0 bytes .../drawable-mdpi/ic_logo_viator_light.png | Bin 1797 -> 0 bytes .../drawable-xhdpi/ic_logo_viator_dark.png | Bin 3402 -> 0 bytes .../drawable-xhdpi/ic_logo_viator_light.png | Bin 3602 -> 0 bytes .../drawable-xxhdpi/ic_logo_viator_dark.png | Bin 5434 -> 0 bytes .../drawable-xxhdpi/ic_logo_viator_light.png | Bin 7637 -> 0 bytes .../drawable-xxxhdpi/ic_logo_viator_dark.png | Bin 6608 -> 0 bytes .../drawable-xxxhdpi/ic_logo_viator_light.png | Bin 10546 -> 0 bytes android/res/layout/place_page_details.xml | 2 - .../layout/place_page_sponsored_gallery.xml | 59 ---- android/res/values-ar/strings.xml | 9 - android/res/values-cs/strings.xml | 9 - android/res/values-da/strings.xml | 9 - android/res/values-de/strings.xml | 9 - android/res/values-el/strings.xml | 9 - android/res/values-es/strings.xml | 9 - android/res/values-fa/strings.xml | 9 - android/res/values-fi/strings.xml | 9 - android/res/values-fr/strings.xml | 9 - android/res/values-hu/strings.xml | 9 - android/res/values-in/strings.xml | 9 - android/res/values-it/strings.xml | 9 - android/res/values-ja/strings.xml | 9 - android/res/values-ko/strings.xml | 9 - android/res/values-nb/strings.xml | 9 - android/res/values-nl/strings.xml | 9 - android/res/values-pl/strings.xml | 9 - android/res/values-pt/strings.xml | 9 - android/res/values-ro/strings.xml | 9 - android/res/values-ru/strings.xml | 9 - android/res/values-sk/strings.xml | 9 - android/res/values-sv/strings.xml | 9 - android/res/values-th/strings.xml | 9 - android/res/values-tr/strings.xml | 9 - android/res/values-uk/strings.xml | 9 - android/res/values-vi/strings.xml | 9 - android/res/values-zh-rTW/strings.xml | 9 - android/res/values-zh/strings.xml | 9 - android/res/values/strings.xml | 9 - android/res/values/themes-attrs.xml | 1 - android/res/values/themes-base.xml | 2 - .../maps/discovery/DiscoveryFragment.java | 16 - .../maps/discovery/DiscoveryManager.java | 12 - .../maps/discovery/DiscoveryParams.java | 11 +- .../mapswithme/maps/discovery/ItemType.java | 2 - .../com/mapswithme/maps/gallery/Holders.java | 50 --- .../com/mapswithme/maps/gallery/Items.java | 40 --- .../mapswithme/maps/gallery/impl/Factory.java | 36 --- .../gallery/impl/ViatorAdapterStrategy.java | 61 ---- .../impl/ViatorErrorAdapterStrategy.java | 43 --- .../impl/ViatorLoadingAdapterStrategy.java | 43 --- .../impl/ViatorOfflineAdapterStrategy.java | 43 --- .../com/mapswithme/maps/viator/Viator.java | 58 ---- .../mapswithme/maps/viator/ViatorProduct.java | 177 ----------- .../maps/widget/placepage/PlacePageView.java | 164 +--------- .../maps/widget/placepage/Sponsored.java | 3 +- .../util/statistics/GalleryType.java | 9 - .../util/statistics/Statistics.java | 4 - data/classificator.txt | 2 - data/strings/strings.txt | 290 ------------------ data/types.txt | 2 - generator/CMakeLists.txt | 2 - generator/emitter_planet.cpp | 11 - generator/emitter_planet.hpp | 2 - generator/generate_info.hpp | 1 - generator/generator_tool/generator_tool.cpp | 2 - generator/osm_source.cpp | 1 - generator/viator_dataset.cpp | 107 ------- generator/viator_dataset.hpp | 57 ---- indexer/ftypes_sponsored.hpp | 1 - .../Common/Statistics/StatisticsStrings.h | 1 - .../icLogoViatorLight.imageset/Contents.json | 23 -- .../icLogoViatorLight.png | Bin 2316 -> 0 bytes .../icLogoViatorLight@2x.png | Bin 5243 -> 0 bytes .../icLogoViatorLight@3x.png | Bin 7637 -> 0 bytes .../Contents.json | 23 -- .../img_viator_placeholder.png | Bin 6858 -> 0 bytes .../img_viator_placeholder@2x.png | Bin 15883 -> 0 bytes .../img_viator_placeholder@3x.png | Bin 25210 -> 0 bytes .../ar.lproj/Localizable.strings | 18 -- .../cs.lproj/Localizable.strings | 18 -- .../da.lproj/Localizable.strings | 18 -- .../de.lproj/Localizable.strings | 18 -- .../el.lproj/Localizable.strings | 18 -- .../en-GB.lproj/Localizable.strings | 18 -- .../en.lproj/Localizable.strings | 18 -- .../es.lproj/Localizable.strings | 18 -- .../fa.lproj/Localizable.strings | 18 -- .../fi.lproj/Localizable.strings | 18 -- .../fr.lproj/Localizable.strings | 18 -- .../hu.lproj/Localizable.strings | 18 -- .../id.lproj/Localizable.strings | 18 -- .../it.lproj/Localizable.strings | 18 -- .../ja.lproj/Localizable.strings | 18 -- .../ko.lproj/Localizable.strings | 18 -- .../nb.lproj/Localizable.strings | 18 -- .../nl.lproj/Localizable.strings | 18 -- .../pl.lproj/Localizable.strings | 18 -- .../pt.lproj/Localizable.strings | 18 -- .../ro.lproj/Localizable.strings | 18 -- .../ru.lproj/Localizable.strings | 18 -- .../sk.lproj/Localizable.strings | 18 -- .../sv.lproj/Localizable.strings | 18 -- .../th.lproj/Localizable.strings | 18 -- .../tr.lproj/Localizable.strings | 18 -- .../uk.lproj/Localizable.strings | 18 -- .../vi.lproj/Localizable.strings | 18 -- .../zh-Hans.lproj/Localizable.strings | 18 -- .../zh-Hant.lproj/Localizable.strings | 18 -- iphone/Maps/Maps.xcodeproj/project.pbxproj | 32 -- .../DiscoveryCollectionHolderCell.swift | 16 - .../DiscoveryControllerViewModel.hpp | 10 - .../DiscoveryOnlineTemplateCell.swift | 4 - .../DiscoveryViatorCollectionHolderCell.xib | 88 ------ .../UI/Discovery/MWMDiscoveryController.mm | 34 +- .../UI/Discovery/MWMDiscoveryTableManager.mm | 63 +--- .../UI/Discovery/MWMDiscoveryTapDelegate.h | 1 - iphone/Maps/UI/PlacePage/MWMPlacePageData.h | 13 - iphone/Maps/UI/PlacePage/MWMPlacePageData.mm | 72 +---- .../Maps/UI/PlacePage/MWMPlacePageManager.mm | 4 +- .../ViatorCells/PPViatorCarouselCell.swift | 75 ----- .../ViatorCells/PPViatorCarouselCell.xib | 71 ----- .../Content/ViatorCells/ViatorElement.swift | 97 ------ .../Content/ViatorCells/ViatorElement.xib | 147 --------- .../Content/ViatorCells/ViatorItemModel.swift | 20 -- .../PlacePageLayout/MWMPlacePageLayout.mm | 32 -- map/discovery/discovery_client_params.hpp | 1 - map/discovery/discovery_manager.cpp | 32 +- map/discovery/discovery_manager.hpp | 51 +-- map/framework.cpp | 52 +--- map/framework.hpp | 9 +- map/place_page_info.hpp | 3 +- partners_api/CMakeLists.txt | 2 - .../partners_api_tests/CMakeLists.txt | 1 - .../partners_api_tests/viator_tests.cpp | 47 --- partners_api/viator_api.cpp | 247 --------------- partners_api/viator_api.hpp | 49 --- tools/python/viator_cities.py | 70 ----- tools/unix/generate_planet.sh | 22 -- .../partners_api.xcodeproj/project.pbxproj | 4 - 148 files changed, 31 insertions(+), 3631 deletions(-) delete mode 100644 android/jni/com/mapswithme/maps/viator/Viator.cpp delete mode 100644 android/jni/com/mapswithme/maps/viator/Viator.hpp delete mode 100644 android/res/drawable-hdpi/ic_logo_viator_dark.png delete mode 100644 android/res/drawable-hdpi/ic_logo_viator_light.png delete mode 100644 android/res/drawable-mdpi/ic_logo_viator_dark.png delete mode 100644 android/res/drawable-mdpi/ic_logo_viator_light.png delete mode 100644 android/res/drawable-xhdpi/ic_logo_viator_dark.png delete mode 100644 android/res/drawable-xhdpi/ic_logo_viator_light.png delete mode 100644 android/res/drawable-xxhdpi/ic_logo_viator_dark.png delete mode 100644 android/res/drawable-xxhdpi/ic_logo_viator_light.png delete mode 100644 android/res/drawable-xxxhdpi/ic_logo_viator_dark.png delete mode 100644 android/res/drawable-xxxhdpi/ic_logo_viator_light.png delete mode 100644 android/res/layout/place_page_sponsored_gallery.xml delete mode 100644 android/src/com/mapswithme/maps/gallery/impl/ViatorAdapterStrategy.java delete mode 100644 android/src/com/mapswithme/maps/gallery/impl/ViatorErrorAdapterStrategy.java delete mode 100644 android/src/com/mapswithme/maps/gallery/impl/ViatorLoadingAdapterStrategy.java delete mode 100644 android/src/com/mapswithme/maps/gallery/impl/ViatorOfflineAdapterStrategy.java delete mode 100644 android/src/com/mapswithme/maps/viator/Viator.java delete mode 100644 android/src/com/mapswithme/maps/viator/ViatorProduct.java delete mode 100644 generator/viator_dataset.cpp delete mode 100644 generator/viator_dataset.hpp delete mode 100644 iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/Contents.json delete mode 100644 iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/icLogoViatorLight.png delete mode 100644 iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/icLogoViatorLight@2x.png delete mode 100644 iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/icLogoViatorLight@3x.png delete mode 100644 iphone/Maps/Images.xcassets/Discovery/img_viator_placeholder.imageset/Contents.json delete mode 100644 iphone/Maps/Images.xcassets/Discovery/img_viator_placeholder.imageset/img_viator_placeholder.png delete mode 100644 iphone/Maps/Images.xcassets/Discovery/img_viator_placeholder.imageset/img_viator_placeholder@2x.png delete mode 100644 iphone/Maps/Images.xcassets/Discovery/img_viator_placeholder.imageset/img_viator_placeholder@3x.png delete mode 100644 iphone/Maps/UI/Discovery/DiscoveryViatorCollectionHolderCell.xib delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/PPViatorCarouselCell.swift delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/PPViatorCarouselCell.xib delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorElement.swift delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorElement.xib delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorItemModel.swift delete mode 100644 partners_api/partners_api_tests/viator_tests.cpp delete mode 100644 partners_api/viator_api.cpp delete mode 100644 partners_api/viator_api.hpp delete mode 100644 tools/python/viator_cities.py diff --git a/android/jni/CMakeLists.txt b/android/jni/CMakeLists.txt index 6acc2974e0..5e49de6b32 100644 --- a/android/jni/CMakeLists.txt +++ b/android/jni/CMakeLists.txt @@ -27,7 +27,6 @@ set( com/mapswithme/maps/discovery/Locals.hpp com/mapswithme/maps/Framework.hpp com/mapswithme/maps/SearchEngine.hpp - com/mapswithme/maps/viator/Viator.hpp com/mapswithme/opengl/android_gl_utils.hpp com/mapswithme/opengl/androidoglcontext.hpp com/mapswithme/opengl/androidoglcontextfactory.hpp @@ -68,7 +67,6 @@ set( com/mapswithme/maps/subway/SubwayManager.cpp com/mapswithme/maps/ugc/UGC.cpp com/mapswithme/maps/UserMarkHelper.cpp - com/mapswithme/maps/viator/Viator.cpp com/mapswithme/opengl/android_gl_utils.cpp com/mapswithme/opengl/androidoglcontext.cpp com/mapswithme/opengl/androidoglcontextfactory.cpp diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index cfb53a1516..40d86b931b 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -623,17 +623,6 @@ taxi::RideRequestLinks Framework::GetTaxiLinks(JNIEnv * env, jobject policy, tax return taxiEngine->GetRideRequestLinks(type, productId, from, to); } -void Framework::RequestViatorProducts(JNIEnv * env, jobject policy, std::string const & destId, - std::string const & currency, - viator::GetTop5ProductsCallback const & callback) -{ - auto const viatorApi = m_work.GetViatorApi(ToNativeNetworkPolicy(env, policy)); - if (!viatorApi) - return; - - viatorApi->GetTop5Products(destId, currency, callback); -} - void Framework::RequestUGC(FeatureID const & fid, ugc::Api::UGCCallback const & ugcCallback) { m_work.GetUGC(fid, ugcCallback); diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index cc2325ad65..5115f85f05 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -205,11 +205,6 @@ namespace android taxi::RideRequestLinks GetTaxiLinks(JNIEnv * env, jobject policy, taxi::Provider::Type type, std::string const & productId, ms::LatLon const & from, ms::LatLon const & to); - - void RequestViatorProducts(JNIEnv * env, jobject policy, std::string const & destId, - std::string const & currency, - viator::GetTop5ProductsCallback const & callback); - void RequestUGC(FeatureID const & fid, ugc::Api::UGCCallback const & ugcCallback); void SetUGCUpdate(FeatureID const & fid, ugc::UGCUpdate const & ugc); void UploadUGC(); diff --git a/android/jni/com/mapswithme/maps/discovery/DiscoveryManager.cpp b/android/jni/com/mapswithme/maps/discovery/DiscoveryManager.cpp index 37162cbbcc..0c72c6d69e 100644 --- a/android/jni/com/mapswithme/maps/discovery/DiscoveryManager.cpp +++ b/android/jni/com/mapswithme/maps/discovery/DiscoveryManager.cpp @@ -1,6 +1,5 @@ #include "com/mapswithme/core/jni_helper.hpp" #include "com/mapswithme/maps/discovery/Locals.hpp" -#include "com/mapswithme/maps/viator/Viator.hpp" #include "com/mapswithme/maps/Framework.hpp" #include "com/mapswithme/maps/SearchEngine.hpp" @@ -24,7 +23,6 @@ namespace jclass g_discoveryManagerClass = nullptr; jfieldID g_discoveryManagerInstanceField; jmethodID g_onResultReceivedMethod; -jmethodID g_onViatorProductsReceivedMethod; jmethodID g_onLocalExpertsReceivedMethod; jmethodID g_onErrorMethod; uint32_t g_lastRequestId = 0; @@ -45,10 +43,6 @@ void PrepareClassRefs(JNIEnv * env) g_onResultReceivedMethod = jni::GetMethodID(env, discoveryManagerInstance, "onResultReceived", "([Lcom/mapswithme/maps/search/SearchResult;I)V"); - g_onViatorProductsReceivedMethod = jni::GetMethodID(env, discoveryManagerInstance, - "onViatorProductsReceived", - "([Lcom/mapswithme/maps/viator/ViatorProduct;)V"); - g_onLocalExpertsReceivedMethod = jni::GetMethodID(env, discoveryManagerInstance, "onLocalExpertsReceived", "([Lcom/mapswithme/maps/discovery/LocalExpert;)V"); @@ -80,23 +74,6 @@ struct DiscoveryCallback jni::HandleJavaException(env); } - void operator()(uint32_t const requestId, std::vector const & products) const - { - if (g_lastRequestId != requestId) - return; - - ASSERT(g_discoveryManagerClass != nullptr, ()); - JNIEnv * env = jni::GetEnv(); - - jni::TScopedLocalObjectArrayRef jProducts(env, ToViatorProductsArray(products)); - jobject discoveryManagerInstance = env->GetStaticObjectField(g_discoveryManagerClass, - g_discoveryManagerInstanceField); - env->CallVoidMethod(discoveryManagerInstance, g_onViatorProductsReceivedMethod, - jProducts.get()); - - jni::HandleJavaException(env); - } - void operator()(uint32_t const requestId, std::vector const & experts) const { if (g_lastRequestId != requestId) @@ -183,12 +160,6 @@ Java_com_mapswithme_maps_discovery_DiscoveryManager_nativeDiscover(JNIEnv * env, std::bind(&OnDiscoveryError, _1, _2)); } -JNIEXPORT jstring JNICALL -Java_com_mapswithme_maps_discovery_DiscoveryManager_nativeGetViatorUrl(JNIEnv * env, jclass) -{ - return jni::ToJavaString(env, g_framework->NativeFramework()->GetDiscoveryViatorUrl()); -} - JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_discovery_DiscoveryManager_nativeGetLocalExpertsUrl(JNIEnv * env, jclass) { diff --git a/android/jni/com/mapswithme/maps/viator/Viator.cpp b/android/jni/com/mapswithme/maps/viator/Viator.cpp deleted file mode 100644 index fcdc3cafa8..0000000000 --- a/android/jni/com/mapswithme/maps/viator/Viator.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "com/mapswithme/maps/viator/Viator.hpp" -#include "com/mapswithme/maps/Framework.hpp" - -#include - -namespace -{ -jclass g_viatorClass = nullptr; -jclass g_viatorProductClass; -jmethodID g_viatorProductConstructor; -jmethodID g_viatorCallback; -std::string g_lastDestId; - -void PrepareClassRefs(JNIEnv * env) -{ - if (g_viatorClass != nullptr) - return; - - g_viatorClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/viator/Viator"); - g_viatorProductClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/viator/ViatorProduct"); - g_viatorProductConstructor = - jni::GetConstructorID(env, g_viatorProductClass, - "(Ljava/lang/String;DILjava/lang/String;DLjava/lang/String;Ljava/lang/" - "String;Ljava/lang/String;Ljava/lang/String;)V"); - g_viatorCallback = - jni::GetStaticMethodID(env, g_viatorClass, "onViatorProductsReceived", - "(Ljava/lang/String;[Lcom/mapswithme/maps/viator/ViatorProduct;)V"); -} -} // namespace - -jobjectArray ToViatorProductsArray(std::vector const & products) -{ - JNIEnv * env = jni::GetEnv(); - PrepareClassRefs(env); - - return jni::ToJavaArray(env, g_viatorProductClass, products, - [](JNIEnv * env, viator::Product const & item) - { - jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, item.m_title)); - jni::TScopedLocalRef jDuration(env, jni::ToJavaString(env, item.m_duration)); - jni::TScopedLocalRef jPriceFormatted(env, jni::ToJavaString(env, item.m_priceFormatted)); - jni::TScopedLocalRef jCurrency(env, jni::ToJavaString(env, item.m_currency)); - jni::TScopedLocalRef jPhotoUrl(env, jni::ToJavaString(env, item.m_photoUrl)); - jni::TScopedLocalRef jPageUrl(env, jni::ToJavaString(env, item.m_pageUrl)); - return env->NewObject(g_viatorProductClass, g_viatorProductConstructor, jTitle.get(), - item.m_rating, item.m_reviewCount, jDuration.get(), item.m_price, - jPriceFormatted.get(), jCurrency.get(), jPhotoUrl.get(), - jPageUrl.get()); - }); -} - -void OnViatorProductsReceived(std::string const & destId, - std::vector const & products) -{ - if (g_lastDestId != destId) - return; - - JNIEnv * env = jni::GetEnv(); - jni::TScopedLocalRef jDestId(env, jni::ToJavaString(env, destId)); - jni::TScopedLocalObjectArrayRef jProducts(env, ToViatorProductsArray(products)); - env->CallStaticVoidMethod(g_viatorClass, g_viatorCallback, jDestId.get(), jProducts.get()); -} - -extern "C" { - -JNIEXPORT void JNICALL Java_com_mapswithme_maps_viator_Viator_nativeRequestViatorProducts( - JNIEnv * env, jclass clazz, jobject policy, jstring destId, jstring currency) -{ - PrepareClassRefs(env); - - g_lastDestId = jni::ToNativeString(env, destId); - g_framework->RequestViatorProducts(env, policy, g_lastDestId, jni::ToNativeString(env, currency), - &OnViatorProductsReceived); -} -} // extern "C" diff --git a/android/jni/com/mapswithme/maps/viator/Viator.hpp b/android/jni/com/mapswithme/maps/viator/Viator.hpp deleted file mode 100644 index e54e24d8d5..0000000000 --- a/android/jni/com/mapswithme/maps/viator/Viator.hpp +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include "com/mapswithme/core/jni_helper.hpp" - -#include "partners_api/viator_api.hpp" - -#include - -extern jobjectArray ToViatorProductsArray(std::vector const & products); diff --git a/android/res/drawable-hdpi/ic_logo_viator_dark.png b/android/res/drawable-hdpi/ic_logo_viator_dark.png deleted file mode 100644 index b5f5bfd8c602ff0c7257ca65522fe605ab554ea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmV;x2S50UP)2U+Q36`)^Y0n&3uN* z%yN>wzjN+AXA|Ybi4!MIoH%jf)4?8!k-hbnx{ z!3v+zv3zis(2BuEd%5pOQ(4wE##H5oa%jb8&~ubZs$VqVufejc6CGt|8tu!ny70Au z*3h!7Nk)b8KsmJHH*n+Q=?g(0#1Ybn=a;T+=f}0iK)nevLOlMFaxvjGh|~lrejvrZ2TPO z!vkf(g)8w#yojxM8OtyU$w-uLwAcuKedPvSY;t1ITm*oW>!uo;&@^&kyTp%L9_#6&!eCdll= z7$iao1z3ef=n}zN6k@-)=sPeFub=~V5`Z5rm?vo&zD7@JMioYif^NbIi|=(66teIv z%-N_bW(xMeoE8+r3uR#nK7~0A7>}hm23_t)x)^H${*5qt%ONz0Vzyx*UO+qS}FpM+A1$i2HCF6efXUv?)Uxc0%TPT`^Pfp=Ne&!0;aKyQP}h{T~#Gl_XOv?)4*3 zjWA-(wpdn-shC@E6tN_X`=jMd?xC0!C-c7LAaM{h&U1)+X>vhGrkb~von+CBI1EGY;_yp#x!7#Xx05|T$p&p7Eg%4m( z2#b+}1abf0fHuhdP5higPz!T5Xm({Dyo!+KmV5`2#p@F>7JKC+iI$cHH~g9v7&Mjt z85W`lS0Y~)BcB<2Va^s@u6Z*RVwQ(61O2oG>Wgt8Y7#^zyi2!e#St{T9Mv3!ZIJOfzz0E#~`J z19R$eA3X4(0uk{X8V1$JVn%D8X_Yp9_!PX2&XX)A89T*=Jpdn+4Q{+9imgMAMKK>C zIo4vlcu<@{B3K1K#$Y?lnUBmEiW#L@F)!IzG3nTS3Ra98JH$8voMUsvc(F?qTMHjj zG{w9LS8T-qmt!l;*@^2h2LZA4uSH@E#pG+AF|`=o%Nw{@Ty(p|Y}8DkXAu-k45HsXmTm;p}V*Z3nkbzN}U0?`H zG$;S_u?g)KhqeM_z>VZ+SwWcdA!cA0vf)LQ=5?(o#$a(<9f-S8hlu7@nFbZlV)|n- zg0RXH7!*S>K^(#!Pg z@e~eQyzVG2LPETYap87+1YKHjtBvj7&7v52J{pEg@gD4^6D^2XT<{B#fNUGTO1K_w zT!AkUOWN@hc%b4@j5HL_SX_X2Q2^D8>#z^Hyo_^A_v{*kY?M-rO=yG6F$_1&-0|3r zPUvF(Ol$()K^S)PF@7YTM{zI4jbEa{#_v?Dq@n_ikl8E_ruldtEzqSNcjI*2h+0If zR*ZNqEWkl|(KTD+6#NPY#n>`mU?B!sZ0*w!fH{AUtr)#CQHTjBiW-khyN4xsQGjbr z<4nW|oUVCoAy(rvG+;O8Ax~Vy^DquYCgbEM+@heXF&*>q8)RF&k1X7R=kN&vIE;0; zOZ?_j$AhcI`@PipE14cRf4<~!igAi@IK?={IGkb}PBBg~4yPEW7>84gL*sw4wCJ7U S59>|<0000AhVqRe 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 diff --git a/android/res/drawable-mdpi/ic_logo_viator_dark.png b/android/res/drawable-mdpi/ic_logo_viator_dark.png deleted file mode 100644 index da73917e6affc3aa8666a00fc50367dda5c0dec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1542 zcmV+h2Ko7kP)Px)z)3_wRA>e5n0siIWgN%fvzNTBMLEi3!#aCV9(C-gY^cKHszVcli09v!!QILgxpc z{cg|mywCew-?JbnN^t~=BTyWH!bc!hc-0^{wd&Tofdk^(O5!CIiO$r))92b|4qJNc zWN+I1uj`idq5~y;OVe+~Q>lu?h0dT)ELGjNB>qY-+Pf~Q#tZGmoH0RJ;!hYO*v37HKV@S*6oFm7rf#``eK0%#kDt`HR`gJ#!6Gat7K*rm{H zNpu4Yg=z36m}n`MKpE_|Ai4z>LKW1&D)7>ZGXzG%OD=H;djgDuVem9~S&vf-gF$td z!8tHlhcO-&gRQ={(3bxxybkm2U9+0t4A63usM17BV&4m$Ah`e|UG9NQwCm4a#WB^E zwuMCc5i4(+*e)eQIf~ZIsqSnGqILCV1>aA~M*J&hmXgGthXj~R!59SREr8ZwJd}onLLGIE9P?!pcYG@`#9Uo85q{~FW5UQ;dFzuW!l-3*>YhnM#ps! z>qRS36T-N*$x8a6Eftlu1a`aN{n*xb3$Lbbqd8t%rvnOTpKf)@d2}KUeThBf;v1aZ zovCxkWH)WMo8z>u)ad?p=^RsS-WWztqkqdOL4arJHt{QKguifmusKd^CHRiIR9;i7!rE0`(Vh5J>+7lfMfknDidPH> zqpPL1Gc2smJ_-xL%IO>BOqlOU`3FvCmHFGr>P^GY){KfDB)zl^!ZB>SX>@bdL@UY< zSG2xOOrk4E0~Ea-t!(y1vjL3HoTCA;15qpI1DDHZ+MeD{(jGbrTkT|pPHWY?oDFon z^rg_()-|~eW0D*uLIa|6PNG43jduK%o=GSU6GKN^br*EEO2cA3C>~M?XF;MH!fu}L zv2&IwF@GzZ!e0*6@C}$8$9NS+!c5o#UM}Ih0aM`?@E=_*_$xuT$1G?E6J7I)kA(-J z5&RAFj$V~m71%AKcdP7S2y#lwt~ zvkFch33E$b%uIbIL}e#|0b!jg?5i3OI~!Eb%Np-sYw2x?#LR8M_|u$Fm$Ss1vFAgp z%iVyj<^C(^H^zR*CtCI^z@JyVQ@V_H^_95*eg+eN7U>4k%6NjZ)-OF%x1~f{eqPC& z;K8c&Fz7)lbCSk&F60%;PbN_fDl3{PuYuBRYk4k)=Rgy%7S@p0$JiKb{r^K-QMtXu z51=zbel&(|yYZkiq=9_qoFb>$*XRF>Fa`Aa-Uu5hqaS%$p{yoiF6b=LS=dAw-8Mxj sjzDn)iX%`Qf#L`hN1!+Y*Ubq01@&VMB`-9lDgXcg07*qoM6N<$f(aw)w*UYD diff --git a/android/res/drawable-mdpi/ic_logo_viator_light.png b/android/res/drawable-mdpi/ic_logo_viator_light.png deleted file mode 100644 index 198232c293a00c82367a99d38f7bb035b4a43a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1797 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 diff --git a/android/res/drawable-xhdpi/ic_logo_viator_light.png b/android/res/drawable-xhdpi/ic_logo_viator_light.png deleted file mode 100644 index e9490b41398b544fa6208cb71cce3ee7f4cc834e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3602 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 diff --git a/android/res/drawable-xxxhdpi/ic_logo_viator_light.png b/android/res/drawable-xxxhdpi/ic_logo_viator_light.png deleted file mode 100644 index 9f629ee2380dfa2c45b3a64192c671b3a47f6b64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10546 zcmchdQ*$Ov*S2HZxMDk**tTs=Y}>YN+jep#nb?{*6Wey)`}+ys&a<<6^+wmK?&_nv z>Re}(l7b{693C792neFIl$Z(#2q?;bc_0kbe{mR}WBi}O zcapW~(EpJ0@6-I4lT~aK7Xkqc3N$287)We{!VH7+znG%1f{`9Sdb>F{2LU$RR+DHn zeP?B3gwrYb$BH?1bbB?=B?tQ2HL+(=98fC3z$5}e)TGH(2DXnj)5Q;@qeVk0-lI57 zgF*U}caS3qA4@qqu6^hVYDD-m$q~W&(1HY*gg6-1+#)kzP&4gzRtIK^Ge-1GmxZ?W#jqE8ySFM zf=ow0v1yDf(5kdu+#P`b1Dh>z(B+51cOe@i#(d8y2q*71@lf3-g&wae? zC0RyLL389_O0ys3Hhw0j%JB^SIrh&{zLkX8L`2!qiKfz4Kh8_j1Rke3r&%ia5Wip^ zwLwMtJAtHDvRD8f(kC9k4D6u&r%ZAH2+v0!m0aon4lw2#t3;J4TXrs z36lSBm)+7t^;Y@px5m2jSq5sb#cU{_qNJlo#Jf{W$rp^I__gW^eI~f*KqRWPZw?i$ ztdwZ4OA44rY0x1zGS#X#nzLMMbc&Tw%QZNYu0g~<5^(>mCFWau_c`>5PX|dtLxXUN zy-54-#PP#7i0r*56}?;t;5i6t!x}N7?$;OTF1AtZP$D6N1Zskqy}uUO2P{!_CH`{l zyFO-3;;7@RTN2j>+7_j{W1!Cy-)f5%&RG-dB^B?5lp_nS@pV%W=+T%qmW`$#-b-M& zGn3|#OhR+n4pP~wG&F}79eLQRBemO~@%+IpdOSyC7kYj6E z5?8TNgb2B`k#N>~alrUWpqxH{k?SVta+YeMlxf;_$F?g{ZW|j+?sQ*H=NA^HXA4f3 z8}}oE`5}Um3Ef-w{-iyELcj*x`%WwV2R1QLkN`h)GIIEv-G6|GiUMI09X+$=|ASr# z=|8p(1C0q0!JvX1VQ@gvkeJXn{(A?;g@JO#$AJr?M3DOKOYNPizoFrR^`#=OjPIbx zFu8DdLoM)6$f7(P3ubgvH=6V7`#cXSbdeVDcmhyK6i($P#X2v`gD_f=id(nvGp}Ri zlXXE?jX~B)^>83A`FH#ADx~}%2GR}}=*YKUEU!-$Crh_{dMjpY$*LQMov`hB7wmtN z&2TxWe%$mz?<^><$?G(tYd=>RO%K&%^=_(6Vr0Iu%as2JYZ^Q%?}b)>x}OIVjJpp6 zPZG!&7^MW-dH1(Oa@Kx^n8)eY_l`2umU*+l#m*BQE%7GnUoo0VNP00`tg93rTM&J7 z&f;YC9>N#C4*>r_2YU^KItT#Q2R(ug9e+isQ8qaQ?-f8}{m2dtq?pTVty0|n@!C`^ z{x=~-wZItJ4RQWBL@CK9&pK+9)ic9#9OMQUp9;BSHx%0kQF|+O4KCa3^jcK29sF#B zx^X55R1Aa5n8D0=06{hE7jqf?>N+s{QxOgo!4daLs{P$0wI@6NA+&sf^y&_L(Zf2- zP=z?A1tR=RLkVqN2XWQ_MFYmVegP$R6rXPTq!1CkKh+{HVOJ3g{b#GjIjgiev(!Qd zpxho2^!feOi%ezvKL&H{#_M^Jj<}$LA6%&aNnMuKYaW>bf{kcq_--zLTVbpU*;**d zJmv93FoTh|Ctibwv={Bams#rQQX=EdMG?wglpv8Q& zDoo@J;lAcDIz7c$(PwT@`GbYi4`t`>V0*op&G71Mt2xU z?=mqcZN1L6$q&zWTfd=pfq8p|Li`ISXuEwt!hm^WhQ|L{nQA+}c7B-mU}bJ`AABGE zDbu=(L~@Htz;`k$47Gc0I)2t&&zPM-xxsbD28QMd?tHMmGuof z!}rtHywHiBIE!;hNfdW~Q{H&g4m8trgOl?tsYGz6Pt%BxoPiIIF;+iNiEgH{wvvFoAHRoBr{Prib}0{X z^m-`|ZOJTWe5XNyT4d>zj*D1GH%1nM`2^)Bwjp#o9K;F})E;F_LtKT_^v44$7+|oW zURjna5A{U|Hl@vLr!OkjZCpJmPcm#*8F*-FNeZV=gj%W+weja}zLQxQYb;{71t+;BK)dc^^II?=h{E#BZoVZC)m4Z(#60!%P}L`X zh(jyJrGzGaRh@ggDpw62ft0E+8u4#68-kPjo;cZ#DFK5`UuCjVSdg?e4Y>fU#Kt*XQo-7t`OrLm*qX;7yYx_2}Mnc#*-{QZxw;MJd_EMY{v%}~>5B*XeOwR6mQi~N1> zCOlya%jCQ`ud4o-(Nbjz2#Om=md#AB0LBWlDmz3V-gdUh62T1PRmIriSvnUvhl~|l zn#Z{XWp^OKmdTHaR6VHH<(mr)Pdzp2oA||>-E9i1-)btA<}yP*=f?0SiOuz^uKLQwQKvG=BOb#0ch#LHsN z#8R+3H(p4Ypb3ndyzrk0ttW^IS}^|iF3r^lQj7iGqRb*4I5!uf6}s?fJz=A3TssRQqe$t) zQ)?SY3|GZvs~CldM!o2wKi9avf+Nk&V?doCyPL4L@Sh@Sc!g^$6#Dbb&)jg5ToZX) zo17+dq5+US2{Y}U1r1&T47##htwjO6IQzhC(`f#?O4uQV!uo=Ks38}^iH(270BF~m z+i@(W(H*KB(}ef@9ZyQiVh1o}d-RNKLfJPy1go|1F*k?NUa6-rm`#|boZj6S%S6_@ zWv>xAFOBa8I4}sbRcRyj(0+ApFK!w(HZ84eJ~D+TI;y8@pUabPgyG&{S;hnpBKCs1 zTt;nQDDO83Hnlb7M-&EjY~yn2wI>;%e80fXb5ahnV2dA82kxF;Tvzv1^~%{OlTfB- zeiS8w37&ndgS5xN{1?b4wl}$nW0o7>g|8i4J^8K*NJB;?*W98X8ndDeP1L?R-@aW< z>=1wcak{;MP`|cT{RN&~ET_n_ZQHt>uVA0uHP_o1_?9DLzqrq2QsggyR#jKo#QYUY zaXhvnxe!XVu5-63!F_nRVh`#)Q9XGKOlBOtv?W!{V*PeS+P z^~sLL_X*CDPV_iyZ{JvKotT-Oo=|LcpmsM0bzwZ4git2Kjbh%!m7$>7sx_0DQ-ZXh zaRG8AS4cxEAaQI?J52H7b7{{TfOR%m(;0b@na5 z6%7!g=&nP>HpP3KScC;iJM8>mKO{6PQlcOE?d~)|M@u3vte95;*AK{lb?%U!GN`>sPiz8~~1)^Gw579+nTvT!;i8(>0a1S9K zn*Isjklt7|+G75-U7Nl%Tu6-K1!MYhxg>jc3QBhKW4F6oNv+JPXAoMuS9zyeti5}2 zlb1V~S-$u|H~VB2F=qpdqrMW>QhoSp+ohRCZ`~2o)DMIL3^lpcm=(b1G7a9+^**Pd z7Rp=pNfyQl9nkETvkg7N(s2bhei2I=V8hlMz>8Rjex$)A;`*Dq7aNiEvEf>Q)-P#vNR&2fiaez7W8Ctt3682FNa5u1AY@g zBb89LelmbTY3;MNejxbg0U_J}iwvU^eqI0xhN4y*hs&P-{8)0HT+x1&a+B54=QQC8 zM*d#?cHV!3PffsS9#<~f&P(I8sS+=E zqOEdwNd!KD{>`Pah;GH11LCHDIV;`oWBskZBYw2`RCyzgR@Yf$rVN^_{Wz@T0*9_~%E0MOf-IrfX+z>r=aG{VA!K<~RQKL8 zpM3xC(7{)X?(0+Ni1Pk^IOF4M`Mpp0Cu5j}8+lL+Pwv|SX7o#lse z6f^E|L1zR-{L76$_3zOD6ptb>(UoT=@3!53`S;!QtA(PCC}US3q*;H_h^)@h-&^3%7T=S4o&CLk7W z;^nMwV4XJ0F+8l^e3HU!=eF04i|te|o7>y&GVBBjH}YX#XfvbBe*rAeQ zVmfE>XXTcnElj7+M+W**!qAwYjGZKhA}WH>-g6A7X9la)2KiN)1v zyH3QoCh*Zew&{DS$w-Gf$!69EG@GY=0-I~CTFKLY%&$2Q2gX=ST2hz(DR%d9DU)2@ zFXPxM7gL3=j8R|@B2otw#iJ@Mh*28TYj9D09<pOgU4$-%uMFWifQhXtd) zw%(9w3P2OUp1 z<+-#_Cr((=cysK?!r-_AxX8jG9!9PVwiB9Y zq_T%yDWhcMhNj8=8;Y4iE5F!f(M`r)XLYI8D#xuv49R0VOde%<;IBPdF6t7M6%$~b zoy)mDjI>%>^~T#$e+u49^PSQ3Ld^Z*Z$FImw{N8}LXBmzLhy>dO3p4#Oa$2_$%b69 zT7Uz)`Cp>N*^&)V@!u%Nf<^^}S*SKdK|eg)RoLt%q41+Mzf|}LtFMQS=J|`jgX|Ew zI#gHh{&<7rlxn<}*r!Ghx0POxh0=z$nWG=X|7{LWT=Pzdewd{Mdik8C%?o(4>Z|9P zpE=)~!}FgpAyVkCkSDbvcd>t*l&ZZeLrEG*$10LC5inlV;1PMR;iA*A>P(emk98c~ zq@P`}Q^2tD>?Q7;6DsxTX%mbp_bW2R`3>T~TVz)n;Iw0`=1;lfZyy{RwxZ$kmoU_7 zgFETjBHp^k#R;{YqitchMQKFD--3mzx;YV6o%j{bMB+MHJ5mn9@`zO(tkDm>#p@KY z27yV@1EOnMWi(h8U!Vbu6oRt@4T4 z<;U&+W{Hg&cCtuSFs6$b)0M71E{09ae$fQYj1ZMCzt4{q%9rvbl;G}o2y-(4Fl^WyVH z@8F-?6|(*p1NAf7)Xp?tWVh;xKX$OMt!_o7A_J;WX@ltEGY6tnT3jM*phH%$u{0FR z#`!+;PFq}hdRwHm4rvJfT$kbycl`Ji|J`NUy&&}>;6TlnzM@y8^H6(S-q4Dxroy2Y zNUhl8F^QaI;9@EUQCPgX6-2_@uUD>RNBGq?^=vyIUs(muZ>nDo$f}tO5VzH|1kg2ooYO)jFIw`QQ+l_ODkxWpG4kjTs-na#jA$A1^Dgm;xAKGZG3= z+K7qudSygg{*xq+9~o{mv(>s@(_jsjs>) z+h*e)0MvB>$CA(#+jkiDpHsupu5u>3zsqdAAtk>Lkg~7M&woFL`U&2eT(bz$s<9->OL_`B?a>p<60WtPr+O?;|+8Y|;-*=E4q&vvSpB{KU`*Ih|!ZdrZX^F7)u$N;goy!ziHm z&9S|869^@$)P!=@7e5zdR@(|7kG%M8jTRoeeMRqM=*J@r$dHcq)QEY#{%yce*Ic6) zIF0kcDDx#$87Ip3h|&nVXL8bFzu#L&%&z#?z)xB7Yj2IiVX0)D+Yv zaPoSC0Xo?1CWxETl34wu&N)@=C1Y@^NbwtOjdwWbwtMRC+Jy#b;aV$;@o&0sb@jHy z*2s+|Fs*bNe{Bs-4V%GCkQAwGhKy(0Jtc~4KJXXx^7(x6bbrXE&vX}2m?hS;?tFPF zn*Mmt6t5YyNI}JaTHfhC_9{HCFL!DZ~~Dgxjd7ekt2-Er<^85Ztlno99Bum@Efmt_YS9 z$1Jd!-ND2GXyKjD_O}b~bIba&E1kg+f;Ce4wg-MySEKO~f)-0XT#t6T#;{Z;W@cAyNy>v<@-6NUCL=awje)tlT9Et#^akQ{vudrfc+f4bsvAHJannh92 zgTRE>>IjN;JQ>4p2&}cB(B16D5FCkk0AI0OM5_d`3^*CqCurdYY{903Yi#JJWuc|@!k3dbX zFWy+Fq2LuK$M{G;r`j-F=SL^4$xkeIi_vV`j6V>4=+?oih?{_1t(OVT?o##pumJ#n z@3$9zZaNR>Hm;Sh!s(-@<%3^<)E4nlgk}!;t?XDd14W!5ayDT zwVpLuV+T|BR)aM>Ar>(fzfzj0liMj0KBd$rBpC7oadxNU`&Ol`51+jL<5S~0Cc;lh zSO|^r3{VdNe-;A)ZBrJvHkfi^73Gx5sz`;PhGhBht`_z}DOFbl(WLV-3qIv|u@xVA zg-VH)+%S{D5=lUVnjyBS`P4l-U_mmQ`zh1t?mzZbhPsfa2NVK+VfHcH6%9KxG4z`k zg4@m@owgH(5O<9G&y47rrM#et)WVFM((5twU?KVo$m@36h@072R+3-tqi8 zj$U-3Avy{}RmG`*ptPT_@n{&Sa?`bvZ2OduD?g|wb*1fAKtwf;AphJfiUO42*V%SX z#8n8n^g_Cg#(bIDq#`w$Z6+mn|-wVm@-rv6Mgz z#53)HC-%xZY zRHE>-1nrqj@K?+y*|mfqqSSB6?o`P$8D}ny&dRDERQopEE_R{K#`gmj@d4l)NUe#9 zw$p2HKFoNZzp|SxWyaq!X4Tk?K#k6m3wGW4V32(RpZN?pFw6C!;G?D%;q{$H6LfG$ z>>(p7F2qmbb$36(eOnQ7Fj#*G@lUFIj`R~evCO9;npc@P5~Zn@$M|xn?lT+^3EkAn67@m6J=nf@*1q7j~9 zQ-_I%8^$+$ZY2;Z^`FC_FlHu%g!3UoPmVIj-Yw#wymq)D8;~gWz{xIO-ucQbbDz@u zJ8cgyvlQc}j#K&u6G5<8A1x(Frxk?vO_&u4F+k7Z(4iH4&S5_mFFrm9x;e0RF$a8V zGR`@F%Z0!P9s2|no4$8;GIcU$__2T0Pzlv@zYri${%ARoDaRu9fZ^R{Sc5GjaaS0PS&RV3snWXh&Nb&kpHcUP2=fqRLbF)SA^x1=`lW zBQ{gT(&z#+o?>HcSQL;i!BJQFZvgKH0`DPd9_|;kqMKw$KJOWNHj6vLTh#(id!N2~ zEd1V3XUpF`uZH4y#ftS4{pEve23j$XagP;DVurILkeik91G{<%q7NxRfcChvIC6es z=BKRSDns^QEWBa)jBb2|>y%q&#_ey-2koAuW?a$8smdQ8lMP%g`!6uOm6GjpR7bn% zu3NY2Hic1$eb2+M>};uco8&$mt! z_HVoy!jBIX@@Mmbb2t{qwZfn43+xFpWKmNahz_R%cj20)d zLqb;itH?5O7Kg%Y_G=MKeyXCP2BkO0d}VgD_%Xy3c_qFZ8eau4aKn{}q2#u%R8CBt z!Kt(~mcu6$#1dW0=U0hZF#-hN02uuA6HEy?2doooOaGR!+S2s{#vl}K1Tb4v&-)St z3C!JG-L7eT?RT?AD6i?^#w%u=4}FCJys1%3CoVuQMls@GB1OF1RGIQu7Moxvc=9W~ zR6y=5hO_qQn73IVL58xuC!OZK%C`$;E$~Rwu&nS$tJx{I7XhkB+yVOh32G_JC+BYo zk}GbYxLIzgaw(!m*7CZulZDtqB@|d|O79hPB z^<;#R!Ta!_7nW(CKE0vH_9WyZAruTklq*INYRRM*ctB90wGg%Y3w=UUW%$#^D&>m; zBbKwx4{~G+F$~xz>^rW6nz5kscupc1)rD=mCUxNWcan*vp9^$@y~`!Uk@nXW z4PU$6prcxKt^rpavd44q#2D8LX5(Sca?vMP+XF=PHYpTG%flHTI7~EjqyMOsQ1s#h zgYX6R9DR5>b%xP@k?>zzmd%tM!gNMsZMA3&-IqJfqAsB+VkR>h-UGV%$SBo<8SgOB z{Wpb9J+O|u{Q>FNCBLu>eaHSK<{gOt+>WqG0OnzsyXS;6{rDnExCw5vMN*0fhIVq7SWx$N#uC&N0jm(h-sr8vbk2l!vtv}6j zEV}{F7J|XnlVHXA%>C3Fvqi_$B|Z4RGuZvloP7VEg - - diff --git a/android/res/layout/place_page_sponsored_gallery.xml b/android/res/layout/place_page_sponsored_gallery.xml deleted file mode 100644 index f05de21ceb..0000000000 --- a/android/res/layout/place_page_sponsored_gallery.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - diff --git a/android/res/values-ar/strings.xml b/android/res/values-ar/strings.xml index c7bac50444..d26cb1985c 100644 --- a/android/res/values-ar/strings.xml +++ b/android/res/values-ar/strings.xml @@ -1033,8 +1033,6 @@ بحث سريع في أكثر من 50000 صنف بأسعار منخفضة. إيجار السيارات على الإنترنت 800 شركة تأجير سيارات في أكثر من 49000 مكان لتأجير السيارات. - بحث عن الرحلات على الإنترنت - بحث في أكثر من 50000 رحلة في كافة أنحاء العالم. البيانات المرورية في 36 دولة @@ -1076,8 +1074,6 @@ الخرائط تتطلب مساحة تخزين أقل بمقدار 20%. نقاط الطريق في المسار المس الأماكن لإضافة نقاط طريق إلى المسار. - حجز جولة - اختر جولات شائعة في المدن السياحية في كافة أنحاء العالم. نمط خريطة جديد للقيادة وضع التنقل بالسيارة أصبح سهل الاستخدام. المزيد عن Booking.com @@ -1134,7 +1130,6 @@ بطاقة الذاكرة %s متوفر تم رفض إذن الموقع للتطبيق - معالم الجذب والجولات استخدام إدارة المسار خطة @@ -1149,8 +1144,6 @@ إضافة موضعي اختيار نقطة البداية اختيار الوجهة - اكتشاف الجولات والأنشطة غير المعتادة - الجولات والأنشطة ومشاهدة المعالم وغيره تعلم المزيد تم تحسين مسارات السيارات ومسارات المشاه قمنا بتصحيح الأخطاء وجعلنا عملية بناء المسارات أسرع عدة مرات، وأضفنا نقاط توقف وسيطة @@ -1206,8 +1199,6 @@ معالم الجذب تناول المأكولات والمشروبات أدلة محلية - اكتشف الجولات والأشياء غير العادية التي يمكن القيام بها - جولات وأشياء يمكن القيام بها وجولات مشاهدة المعالم وغيره. خطأ في تحميل البيانات خطأ في تحميل البيانات يجري تحميل البيانات diff --git a/android/res/values-cs/strings.xml b/android/res/values-cs/strings.xml index aecb512805..6624a0df37 100644 --- a/android/res/values-cs/strings.xml +++ b/android/res/values-cs/strings.xml @@ -1034,8 +1034,6 @@ Rychlé hledání ve více než 50 000 položkách za nízké ceny. Pronájem auta online 800 autopůjčoven na více než 49 000 místech. - Online vyhledávání zájezdů - Hledejte ve více než 50 000 zájezdů po celém světě. Údaje o provozu ve 36 zemích @@ -1077,8 +1075,6 @@ Mapy vyžadují až o 20 % méně místa. Body průjezdu na trase Klepněte na místo a přidejte bod průjezdu. - Objednat výlet - Vyberte si oblíbené výlety v turistických městech po celém světě. Nový styl mapy pro vozidla Navigační režim pro auto ještě snadnější. Více na Booking.com @@ -1135,7 +1131,6 @@ Paměťovou kartu %s k dispozici Povolení k určení polohy bylo zamítnuto - Atrakce a výlety Použít Spravovat trasu Naplánovat @@ -1150,8 +1145,6 @@ Přidat moji polohu Vybrat počáteční bod Vybrat cílové místo - Objevte výlety a neobvyklé aktivity - Výlety, aktivity, památky a více Zjistit více Byly vylepšeny cyklostezky a pěší trasy Opravili jsme chyby, několikanásobně jsme zrychlili vypočítávání trasy a přidali jsme možnost nastavení průjezdního bodu @@ -1207,8 +1200,6 @@ Atrakce Jídlo a pití Místní průvodci - Objevte výlety a neobvyklé aktivity - Výlety, aktivity, vyhlídkové jízdy a další. Chyba při načítání dat Chyba při načítání dat Probíhá načítání dat diff --git a/android/res/values-da/strings.xml b/android/res/values-da/strings.xml index d37079153d..ec28c70fe1 100644 --- a/android/res/values-da/strings.xml +++ b/android/res/values-da/strings.xml @@ -1031,8 +1031,6 @@ Hurtig søgning blandt over 50.000 varer til lave priser. Udlejning biler online 800 biludlejningsselskaber på mere end 49.000 steder. - Online rejsesøgning - Søg blandt mere end 50.000 rejser over hele verden. Trafikdata i 36 lande @@ -1074,8 +1072,6 @@ Maps kræver op til 20% mindre lager. Vejpunkter i ruteføring Tryk på positioner for at føje vejsteder til din rute. - Bestil en tur - Vælg populære ture i turistbyer over hele verden. Nyt kortformat til kørsel Bilnavigationstilstand er blevet lettere at bruge. Mere på Booking.com @@ -1132,7 +1128,6 @@ Kortets hukommelse %s tilgængelig App-position tilladelse nægtet - Seværdigheder og ture Brug Administrer rute Planlæg @@ -1147,8 +1142,6 @@ Tilføj min position Vælg et udgangspunkt Vælg en destination - Find ture og usædvanlige aktiviteter - Ture, aktiviteter, sightseeing med mere Flere oplysninger Cykelruter og vandreruter blev forbedret Vi rettede fejl, gjorte ruteoprettelse flere gange hurtigere og tilføjede mellemliggende stop @@ -1204,8 +1197,6 @@ Seværdigheder Spise og drikke Lokale guider - Find ture og nye oplevelser - Ture, oplevelser, sightseeing med mere. Fejl ved indlæsning af data Fejl ved indlæsning af data Data indlæses diff --git a/android/res/values-de/strings.xml b/android/res/values-de/strings.xml index 93978dbcb8..3df409f6d1 100644 --- a/android/res/values-de/strings.xml +++ b/android/res/values-de/strings.xml @@ -1041,8 +1041,6 @@ Sofortsuche bei über 50.000 Artikeln zu günstigen Preisen. Autos online mieten 800 Autovermietungen mit über 49.000 Mietstationen. - Online-Toursuche - Suche bei über 50.000 Touren auf der ganzen Welt. Verkehrsdaten in 36 Ländern @@ -1084,8 +1082,6 @@ Karten benötigen bis zu 20 % weniger Speicherplatz. Wegpunkte bei der Streckenführung Tippen Sie auf Orte, um Wegpunkte zu Ihrer Route hinzuzufügen. - Tour buchen - Wählen Sie beliebte Touren in Touristenstädten auf der ganzen Welt. Neuer Kartenstil zum Fahren Der Modus Autonavigation ist jetzt einfacher zu nutzen. Mehr bei Booking.com @@ -1142,7 +1138,6 @@ Speicherkarte %s verfügbar App-Zugriff auf Standort verweigert - Attraktionen und Touren Nutzen Route verwalten Planen @@ -1157,8 +1152,6 @@ Meinen Standort hinzufügen Startpunkt auswählen Ziel auswählen - Entdecken Sie Touren und ungewöhnliche Aktivitäten - Touren, Aktivitäten, Sehenswürdigkeiten und mehr Weitere Informationen Fahrradrouten und Routen für Fußgänger wurden verbessert Wir haben Fehler behoben, die Routenerstellung deutlich schneller gemacht und Zwischenstopps hinzugefügt @@ -1214,8 +1207,6 @@ Sehenswürdigkeiten Essen und Trinken Örtliche Reiseführer - Entdecken Sie Touren und ungewöhnliche Aktivitäten - Touren, Aktivitäten, Besichtigungen und mehr. Fehler beim Laden der Daten Fehler beim Laden der Daten Daten werden geladen diff --git a/android/res/values-el/strings.xml b/android/res/values-el/strings.xml index 98d6b6b7a3..e59282011e 100644 --- a/android/res/values-el/strings.xml +++ b/android/res/values-el/strings.xml @@ -791,8 +791,6 @@ Άμεση αναζήτηση σε περισσότερα από 50.000 αντικείμενα σε χαμηλές τιμές. Ενοικίαση αυτοκινήτων online 800 εταιρείες ενοικίασης αυτοκινήτων σε περισσότερες από 49.000 τοποθεσίες. - Αναζήτηση οργανωμένων εκδρομών online - Αναζήτηση σε περισσότερες από 50.000 εκδρομές σε όλο τον κόσμο. Πληροφορίες για την κίνηση σε 36 χώρες @@ -834,8 +832,6 @@ Οι χάρτες απαιτούν 20% λιγότερο αποθηκευτικό χώρο. Ενδιάμεσα σημεία στη διαδρομή Πατήστε στα μέρη για να προσθέσετε ενδιάμεσα σημεία στη διαδρομή σας. - Κάντε κράτηση σε μια ξενάγηση - Επιλέξτε δημοφιλείς ξεναγήσεις σε τουριστικές πόλεις σε όλο τον κόσμο. Νέο στυλ χάρτη για την οδήγηση Ευκολότερη λειτουργία πλοήγησης αυτοκινήτου. Περισσότερα στο Booking.com @@ -892,7 +888,6 @@ Κάρτα μνήμης %s διαθέσιμα Άρνηση πρόσβασης εφαρμογής στον εντοπισμό τοποθεσίας - Αξιοθέατα και περιηγήσεις Χρήση Διαχείριση διαδρομής Σχέδιο @@ -907,8 +902,6 @@ Πρόσθεσε τη θέση μου Επιλέξτε αφετηρία Επιλέξτε προορισμό - Ανακαλύψτε περιηγήσεις και ασυνήθιστες δραστηριότητες - Περιηγήσεις, δραστηριότητες, αξιοθέατα και πολλά άλλα Μάθετε περισσότερα Βελτιωμένες διαδρομές ποδηλάτων και πεζών Επιδιορθώσαμε σφάλματα, κάναμε την δημιουργία διαδρομής αρκετές φορές γρηγορότερη, και προσθέσαμε ενδιάμεσες στάσεις @@ -964,8 +957,6 @@ Αξιοθέατα Φαγητό και ποτό Τοπικοί οδηγοί - Ανακαλύψτε περιηγήσεις και ασυνήθιστες δραστηριότητες - Εκδρομές, πράγματα να κάνετε, περιηγήσεις στα αξιοθέατα και πολλά άλλα. Σφάλμα κατά τη φόρτωση δεδομένων Σφάλμα κατά τη φόρτωση δεδομένων Φόρτωση δεδομένων diff --git a/android/res/values-es/strings.xml b/android/res/values-es/strings.xml index 199752351e..cf16a2c34c 100644 --- a/android/res/values-es/strings.xml +++ b/android/res/values-es/strings.xml @@ -1020,8 +1020,6 @@ Búsqueda instantánea de más de 50 000 artículos a precios bajos. Alquiler de coches en línea 800 compañías de alquiler de coches en más de 49 000 localidades. - Reserva de visitas guiadas en línea - Más de 50 000 visitas guiadas por todo el mundo. Datos del tráfico en 36 países @@ -1063,8 +1061,6 @@ Los mapas requieren un 20% menos de espacio de almacenamiento. Puntos de referencia en las rutas Pulse sobre los lugares para añadir puntos de referencia a su ruta. - Reservar una visita guiada - Elija visitas guiadas populares por ciudades turísticas en cualquier parte del mundo. Nuevo estilo de mapa para la conducción Modo de navegación más fácil de usar. Más información en Booking.com @@ -1121,7 +1117,6 @@ Tarjeta de memoria %s disponible A la aplicación se le ha denegado el permiso de acceso a la ubicación - Lugar de interés y visitas guiadas Utilizar Administrar ruta Planificar @@ -1136,8 +1131,6 @@ Añadir mi posición Elegir un punto de partida Elegir un destino - Descubrir tours y actividades extraordinarias - Tours, actividades, excursiones y más Más información Las rutas en bicicleta y a pie han sido mejoradas Hemos corregido errores, hemos agilizado mucho la creación de rutas y hemos añadido paradas intermedias @@ -1193,8 +1186,6 @@ Atracciones Comida y bebida Guías locales - Descubrir visitas guiadas y actividades inusuales - Visitas guiadas, cosas que hacer, atracciones turísticas y mucho más. De produjo un error al cargar datos De produjo un error al cargar datos Cargando datos diff --git a/android/res/values-fa/strings.xml b/android/res/values-fa/strings.xml index ff72d65912..d4819ee84f 100644 --- a/android/res/values-fa/strings.xml +++ b/android/res/values-fa/strings.xml @@ -977,8 +977,6 @@ جستجوی سریع در بیش از 50،000 مورد با قیمت پایین. اجاره اتومبیل ها آنلاین شرکت کرایه ماشین در بیش از 49،000 مکان اجاره ماشین. - جستجوی آنلاین تور - جستجو در بیش از 50،000 تور در سراسر جهان. اطلاعات ترافیکی در 36 کشور @@ -1020,8 +1018,6 @@ نقشه ها نیاز به ذخیره سازی 20٪ کمتر دارند. مسیرهای مسیریابی مکان ها را برای افزودن ایستگاه های راه به مسیر خود ضربه بزنید. - رزرو تور - تورهای محبوب را در شهرهای توریستی در سراسر جهان انتخاب کنید. نقشه جدید برای رانندگی حالت ناوبری خودرو برای استفاده آسان تر شد. بیشتر در Booking.com @@ -1078,7 +1074,6 @@ کارت حافظه %s موجود مجوز مکان برنامه صادر نشد - جاذبه ها و تورها استفاده مدیریت مسیر برنامه @@ -1093,8 +1088,6 @@ موقعیت من را اضافه کنید نقطه شروع را انتخاب کنید یک مقصد را انتخاب کنید - تور و فعالیت های غیر معمول را کشف کنید - تور، فعالیت ها، گشت و گذار و ... بیشتر بدانید مسیرهای دوچرخه و مسیرهای پیاده روی بهبود یافته است ما خطاهایی را برطرف کردیم، محاسبه مسیر چندین بار سریعتر شده و ایستگاه‌های بین راهی اضافه شد @@ -1150,8 +1143,6 @@ جاذبه ها خوردن و آشامیدن راهنماهای محلی - تورها را پیدا کنید و چیزهای غیر معمول را انجام دهید - تور، چیزهایی که باید انجام شود، تورهای گشت و گذار و بیشتر. خطای بارگذاری داده یافت نشد متأسفیم، ما چیزی جالب در اطراف پیدا نکردیم. diff --git a/android/res/values-fi/strings.xml b/android/res/values-fi/strings.xml index 29c29eb91e..9601de6bac 100644 --- a/android/res/values-fi/strings.xml +++ b/android/res/values-fi/strings.xml @@ -1027,8 +1027,6 @@ Hae nopeasti yli 50 000 kohteesta edullisin hinnoin. Autonvuokraus verkossa 800 autonvuokrausyritystä yli 49 000 autonvuokrauskohteessa. - Kierrosten haku verkossa - Hae yli 50 000 kierroksesta ympäri maailmaa. Liikennetiedot 36 maassa @@ -1070,8 +1068,6 @@ Kartat vaativat jopa 20 % vähemmän tilaa. Reittipisteet reitillä Lisää reittiisi reittipisteitä napauttamalla paikkoja. - Varaa kierros - Valitse suosittuja kierroksia turistikaupungeissa ympäri maailman. Uusi karttatyyli ajettaessa Auton navigointitila on helppokäyttöisempi. Lisää osoitteessa Booking.com @@ -1128,7 +1124,6 @@ Muistkortti %s käytettävissä Sovelluksen sijainnin käyttöoikeus evättiin - Nähtävyydet ja kierrokset Käytä Hallitse reittiä Suunnittele @@ -1143,8 +1138,6 @@ Lisää oma sijainti Valitse aloituspiste Valitse kohde - Tutustu kierroksiin ja epätavallisiin aktiviteetteihin - Kierroksia, aktiviteetteja, nähtävyyksien katselua ja muuta Lisätietoja Parannetut pyörä- ja kävelyreitit Korjasimme virheitä, teimme reittien muodostuksesta monta kertaa nopeampaa ja lisäsimme välipysähdyksiä @@ -1200,8 +1193,6 @@ Nähtävyydet Syötävää ja juotavaa Paikalliset oppaat - Tutustu kierroksiin ja epätavallisiin aktiviteetteihin - Kierroksia, tekemistä, kiertoajeluita ja muuta. Virhe ladattaessa tietoja Virhe ladattaessa tietoja Tietoja ladataan diff --git a/android/res/values-fr/strings.xml b/android/res/values-fr/strings.xml index fc218e5683..705e20232a 100644 --- a/android/res/values-fr/strings.xml +++ b/android/res/values-fr/strings.xml @@ -1040,8 +1040,6 @@ Recherche instantanée parmi plus de 50.000 articles à bas prix. Location de voitures en ligne 800 sociétés de location de voiture dans plus de 49.000 points de location de voiture. - Recherche d\'excursions en ligne - Recherchez parmi plus 50.000 excursions partout dans le monde. Données de circulation dans 36 pays @@ -1083,8 +1081,6 @@ Les cartes nécessitent jusqu\'à 20 % d\'espace de stockage en moins. Points de repère dans les itinéraires Appuyez sur les lieux pour ajouter des points de repère à votre itinéraire. - Réserver une excursion - Choisissez des excursions populaires dans les villes touristiques du monde entier. Nouveau style de carte pour la conduite Mode de navigation en voiture plus facile à utiliser. Plus d\'infos sur Booking.com @@ -1141,7 +1137,6 @@ Mémoire carte %s disponible Autorisation de localisation refusée à l\'application - Attractions et visites Utiliser Gérer l’itinéraire Planifier @@ -1156,8 +1151,6 @@ Ajouter ma position Choisissez un point de départ Choisissez une destination - Découvrez les excursions et les activités insolites - Excursions, activités, visites et plus En savoir plus Les pistes cyclables et voies piétonnes ont été améliorées Nous avons corrigé les erreurs, amélioré considérablement la vitesse de construction d\'itinéraires et ajouté des arrêts intermédiaires @@ -1213,8 +1206,6 @@ Attractions Boire et manger Guides locaux - Découvrez les visites et les activités insolites - Visites, activités, excursions et bien plus encore. Erreur de chargement des données Erreur de chargement des données Données en cours de chargement diff --git a/android/res/values-hu/strings.xml b/android/res/values-hu/strings.xml index 318b6bb3af..d30c1db30e 100644 --- a/android/res/values-hu/strings.xml +++ b/android/res/values-hu/strings.xml @@ -1027,8 +1027,6 @@ Több mint 50.000 cikk azonnali keresése alacsony áron. Autóbérlés az interneten 800 autókölcsönző cég több mint 49.000 autókölcsönzési helyszínen. - Utazások keresése az interneten - Több mint 50.000 utazás keresése a világ minden táján. Forgalmi adatok 36 országban @@ -1070,8 +1068,6 @@ A térképek 20 %-kal kevesebb tárolóterületet igényelnek. Iránypontok az útvonaltervezésben Érintsen meg helyeket iránypontok hozzáadásához az útvonatervhez. - Foglaljon helyet egy utazásra - Válasszon népszerű városnéző utakat a világ minden táján. Új térképstílus vezetéshez Az autós navigáció üzemmód használata egyszerűbb lett. Továbbiak a Booking.com-on @@ -1128,7 +1124,6 @@ Memóriakártya %s rendelkezésre áll Alkalmazás helymeghatározási engedélye megtagadva - Látványosságok és kirándulások Használat Útvonal kezelése Terv @@ -1143,8 +1138,6 @@ Add hozzá saját pozíciómat Válasszon egy kiindulási pontot Válassza ki a célt - Fedezze fel a túrákat és a szokatlan tevékenységeket - Túrák, tevékenységek, városnézés, és sok egyéb Tudjon meg többet A kerékpáros és gyalogos útvonalakat is tovább javítottuk Kijavítottuk a hibákat, töredékére csökkentettük az útvonalak felépítéséhez szükséges időt, közbülső megállókat építettünk be @@ -1200,8 +1193,6 @@ Látnivalók Enni és inni Helyi idegenvezetők - Fedezze fel a túrákat és a szokatlan tevékenységeket - Kirándulások, teendők, városnéző túrák és egyebek. Hiba az adatok betöltésekor Hiba az adatok betöltésekor Adatok betöltése diff --git a/android/res/values-in/strings.xml b/android/res/values-in/strings.xml index d4b9f5c41f..29e85d76ef 100644 --- a/android/res/values-in/strings.xml +++ b/android/res/values-in/strings.xml @@ -1026,8 +1026,6 @@ Cari cepat di antara lebih dari 50.000 barang berharga murah. Penyewaan mobil online 800 perusahaan penyewaan mobil di lebih dari 49.000 lokasi penyewaan mobil. - Pencarian wisata online - Cari di antara lebih dari 50.000 wisata di seluruh dunia. Data Lalu Lintas di 36 Negara @@ -1069,8 +1067,6 @@ Peta memerlukan pengurangan penyimpanan hingga 20%. Titik Koordinat dalam Pembuatan Rute Ketuk tempat untuk menambahkan titik acuan koordinat ke rute Anda. - Pesan tur - Pilih wisata populer di kota-kota wisata seluruh dunia. Model Peta Baru untuk Berkendara Mode navigasi mobil menjadi semakin mudah digunakan. Selengkapnya di Booking.com @@ -1127,7 +1123,6 @@ Memori kartu %s tersedia Izin lokasi aplikasi ditolak - Objek wisata dan tur Gunakan Kelola rute Rencana @@ -1142,8 +1137,6 @@ Tambahkan posisi saya Pilih titik awal Pilih destinasi - Temukan wisata dan kegiatan yang unik - Wisata, kegiatan, tamasya, dan lain-lain Pelajari selengkapnya Rute sepeda dan pejalan kaki sudah diperbagus Kami sudah memperbaiki kesalahan, membuat pembangunan rute menjadi berkali-kali lipat lebih cepat, dan menambahkan sejumlah perhentian antara @@ -1199,8 +1192,6 @@ Atraksi Makan dan minum Panduan Lokal - Temukan wisata dan hal unik yang akan dilakukan - Wisata, hal yang akan dilakukan, wisata pemandangan, dan lain sebagainya. Ada kesalahan saat memuat data Ada kesalahan saat memuat data Data sedang dimuat diff --git a/android/res/values-it/strings.xml b/android/res/values-it/strings.xml index bde8dd532d..16914792f4 100644 --- a/android/res/values-it/strings.xml +++ b/android/res/values-it/strings.xml @@ -1026,8 +1026,6 @@ Ricerca istantanea fra oltre 50.000 articoli a prezzo scontato. Autonoleggio online 800 società di autonoleggio in oltre 49.000 località. - Ricerca viaggi online - Ricerca di oltre 50.000 viaggi organizzati in tutto il mondo. Dati sul traffico in 36 Paesi @@ -1069,8 +1067,6 @@ Maps richiede fino al 20% in meno di memoria. Waypoint di percorso Tocca i luoghi e aggiungi waypoint al tuo percorso. - Prenota un tour - Scegli i migliori tour nelle città turistiche di tutto il mondo. Nuovo stile di mappa per la guida Modalità di navigazione in auto più semplice da usare. Altro su Booking.com @@ -1127,7 +1123,6 @@ Scheda di memoria %s disponibile Autorizzazione a posizione app negata - Attrazioni e tour Usa Gestisci percorso Pianifica @@ -1142,8 +1137,6 @@ Aggiungi mia posizione Scegli un punto di partenza Scegli una destinazione - Scopri tour e attività insolite - Tour, attività, turismo e altro Ulteriori informazioni Piste ciclabili e percorsi pedonali migliorati Abbiamo corretto gli errori, reso la creazione dei percorsi notevolmente più veloce e aggiunto soste intermedie @@ -1199,8 +1192,6 @@ Luoghi di interesse Bere e mangiare Guide locali - Scopri tour e cose da fare insolite - Tour, cose da fare, giri turistici e altro. Errore nel caricamento dei dati Errore nel caricamento dei dati Caricamento dei dati diff --git a/android/res/values-ja/strings.xml b/android/res/values-ja/strings.xml index 3f5d2c6a45..371754f6f8 100644 --- a/android/res/values-ja/strings.xml +++ b/android/res/values-ja/strings.xml @@ -1026,8 +1026,6 @@ 低価格で 50,000 件を超えるアイテムを素早く検索。 オンラインでレンタカーを予約 800 社のレンタカー会社による 49,000 カ所を超えるレンタカー店舗をご利用いただけます。 - オンラインツアー検索 - 世界中から 50,000 件を超えるツアーを検索してください。 36か国の交通データ @@ -1069,8 +1067,6 @@ 地図が必要とするストレージ容量が最大で 20% 少なくなりました。 ルート上の経由地 場所をタップしてルートに経由地を追加します。 - ツアーの予約 - 世界中の観光都市で人気のツアーを選択してください。 運転用の新しい地図のスタイル カーナビゲーションモードの使用がより簡単になりました。 さらに Booking.com で表示 @@ -1127,7 +1123,6 @@ カードのメモリ %s 使用可能 アプリの位置情報へのアクセスが拒否されました - 観光地およびツアー 使う ルートを管理 計画する @@ -1142,8 +1137,6 @@ 自分の場所を追加 出発地点を選択 目的地を選択 - 旅行や通常ではないアクティビティを検知します - 旅行、アクティビティ、観光など 詳細情報 自転車と歩行者用のルートが改良されました エラーの修正を行い、ルート探索速度を数倍に改善し、中間停止地点を追加しました。 @@ -1199,8 +1192,6 @@ 観光地 飲食 地元のガイド - 旅行や変わった活動を探します - ツアー、活動、観光ツアーなど。 データの読み込みエラー データの読み込みエラー データを読み込み中です diff --git a/android/res/values-ko/strings.xml b/android/res/values-ko/strings.xml index 4cd7b52d8c..00361e7030 100644 --- a/android/res/values-ko/strings.xml +++ b/android/res/values-ko/strings.xml @@ -1023,8 +1023,6 @@ 저렴한 가격의 50,000개 이상 품목에서 즉시 검색. 온라인 자동차 렌트 800개의 자동차 렌트 회사와 49,000곳 이상의 자동차 렌트 지점 - 온라인 투어 검색 - 전 세계 50,000개 이상의 투어에서 검색하세요. 36개국의 교통 데이터 @@ -1066,8 +1064,6 @@ 지도가 저장소를 최대 20% 적게 필요로 합니다. 경로의 중간 지점 경로에 중간 지점을 추가할 위치를 탭하세요. - 투어 예약 - 전 세계 관광 도시에서 인기 투어를 선택하세요. 운전을 위한 새로운 지도 스타일 자동차 네비게이션 모드 사용이 더욱 쉬워졌습니다. Booking.com의 추가 정보 @@ -1124,7 +1120,6 @@ 카드 메모리 %s 사용 가능 앱 위치 권한 거부됨 - 관광 명소 및 투어 사용 경로 관리 계획 @@ -1139,8 +1134,6 @@ 내 위치 추가 시작 지점 선택 목적지 선택 - 투어와 특별한 활동 알아보기 - 투어, 활동, 관광 등 자세히 알아보기 자전거 경로 및 보행자 경로가 개선되었습니다. 오류를 수정하고, 경로 탐색 속도를 몇 배 더 빠르게 개선하고, 중간 정지 지점을 추가했습니다. @@ -1196,8 +1189,6 @@ 관광명소 음식과 음료 지역 가이드 - 투어 그리고 기억에 남을 일 알아보기 - 투어, 할 일, 관광 투어 등. 데이터 로드 중에 오류 발생 데이터 로드 중에 오류 발생 데이터를 로드하는 중입니다. diff --git a/android/res/values-nb/strings.xml b/android/res/values-nb/strings.xml index 8e4465e715..dcb07a1ba8 100644 --- a/android/res/values-nb/strings.xml +++ b/android/res/values-nb/strings.xml @@ -1025,8 +1025,6 @@ Hurtigsøk blant over 50 000 varer til lave priser. Leie av bil online 800 leiebilfirmaer på over 49 000 steder. - Søk etter omvisninger med guide online - Søk blant over 50 000 omvisninger verden over. Trafikkdata i 36 land @@ -1068,8 +1066,6 @@ Kartene trenger opptil 20 % mindre lagringsplass. Rutepunkter Trykk på steder for å legge til rutepunkter. - Bestill omvisning - Velg populære omvisninger i turistbyer over hele verden. Ny kartstil for bruk under kjøring Modusen for bilnavigering er blitt enklere å bruke. Mer på Booking.com @@ -1126,7 +1122,6 @@ Minnekort %s tilgjengelig App-plasseringstillatelse avvist - Attraksjoner og omvisninger Bruk Administrere rute Planlegge @@ -1141,8 +1136,6 @@ Legg til min posisjon Velg startpunkt Velg destinasjon - Finn omvisninger og aktiviteter utenom det vanlige - Omvisninger, aktiviteter, sightseeing og mye mer Finn ut mer Ruter for syklister og fotgjengere er blitt forbedret Vi har rettet opp i feil, gjort ruteplanlegging mye kjappere og ordnet for muligheten til å legge til mellomstopp @@ -1198,8 +1191,6 @@ Attraksjoner Spise og drikke Lokale guider - Finn omvisninger og ting å gjøre utenom det vanlige - Omvisninger, ting å gjøre, sightseeingturer og mer. En feil oppstod under datalasting En feil oppstod under datalasting Data lastes diff --git a/android/res/values-nl/strings.xml b/android/res/values-nl/strings.xml index 86b41a9b0c..df9ea540b4 100644 --- a/android/res/values-nl/strings.xml +++ b/android/res/values-nl/strings.xml @@ -1027,8 +1027,6 @@ Onmiddellijk zoeken tussen meer dan 50.000 artikelen aan lage prijzen. Online auto\'s huren 800 autoverhuurbedrijven in meer dan 49.000 locaties voor autoverhuur. - Online tours zoeken - Zoek in meer dan 50.000 tours over de hele wereld. Verkeersgegevens in 36 Landen @@ -1070,8 +1068,6 @@ Kaarten vereisen tot 20% minder opslagruimte. Tussenstops in Route Tap op plaatsen om tussenstops toe te voegen aan uw route. - Boek een tour - Kies populaire tours in toeristische steden over de hele wereld. Nieuwe Kaartstijl voor het Rijden Modus autonavigatie is eenvoudiger te gebruiken. Meer op Booking.com @@ -1128,7 +1124,6 @@ Kaartgeheugen %s beschikbaar App toelating locatie geweigerd - Attracties en tours Gebruiken Route beheren Plannen @@ -1143,8 +1138,6 @@ Voeg mijn positie toe Kies een vertrekpunt Kies een bestemming - Ontdek tours en ongewone activiteiten - Tours, activiteiten, bezienswaardigheden en meer Meer leren Fietsroutes en wandelroutes zijn verbeterd We hebben fouten hersteld, het bouwen van routes meermaals versneld, en tussenstops toegevoegd @@ -1200,8 +1193,6 @@ Attracties Eten en drinken Lokale Gidsen - Ontdek tours en ongewone activiteiten - Rondleidingen, activiteiten, excursies en meer. Fout bij laden gegevens Fout bij laden gegevens Gegevens worden geladen diff --git a/android/res/values-pl/strings.xml b/android/res/values-pl/strings.xml index 329cd0e5b6..0388f4fdb1 100644 --- a/android/res/values-pl/strings.xml +++ b/android/res/values-pl/strings.xml @@ -1030,8 +1030,6 @@ Natychmiastowe wyszukiwanie ponad 50.000 towarów w niskich cenach. Wynajem samochodów online 800 wypożyczalni samochodów w ponad 49.000 miejscowościach. - Wyszukiwanie podróży online - Szukaj spośród 50.000 podróży na całym świecie. Dane o ruchu w 36 krajach @@ -1073,8 +1071,6 @@ Mapy wymagają o 20% mniej pamięci. Punkty nawigacyjne w trasowaniu Naciśnij punkt nawigacyjny, aby dodać go do trasy. - Zarezerwuj wycieczkę - Wybieraj popularne wycieczki w turystycznych miastach z całego świata. Nowy styl mapy dla jazdy Uproszczono tryb nawigacji pojazdu. Więcej na Booking.com @@ -1131,7 +1127,6 @@ Pamięć na karcie dostępne %s Odmowa dla aplikacji uprawnień do lokalizacji - Atrakcje i wycieczki Użyj Zarządzaj trasą Zaplanuj @@ -1146,8 +1141,6 @@ Dodaj moją pozycję Wybierz punkty początkowy Wybierz punkt docelowy - Odkrywaj wycieczki i nietypowe aktywności - Turyści, aktywności, zwiedzanie i wiele innych Dowiedz się więcej Poprawione trasy rowerowe i piesze Naprawione błędy, wielokrotnie szybsze budowanie tras, dodane postoje @@ -1203,8 +1196,6 @@ Atrakcje Jedzenie i picie Przewodniki po okolicy - Odkrywaj wycieczki i nietypowe atrakcje - Wycieczki, atrakcje, zwiedzanie i wiele innych. Błąd wczytywania danych Błąd wczytywania danych Wczytywanie danych diff --git a/android/res/values-pt/strings.xml b/android/res/values-pt/strings.xml index aff7d625fe..b9717ca034 100644 --- a/android/res/values-pt/strings.xml +++ b/android/res/values-pt/strings.xml @@ -1030,8 +1030,6 @@ Pesquisa instantânea em mais de 50.000 itens a preços baixos. Aluguer de carros online 800 empresas de aluguer de automóveis em mais de 49.000 locais de aluguer de automóveis. - Pesquisa de turismo online - Procurar em mais de 50.000 visitas em todo o mundo. Dados de tráfego em 36 países @@ -1073,8 +1071,6 @@ Mapas requer até 20% menos espaço de armazenamento. Pontos de caminho (waypoints) no Roteamento Toque nos locais para adicionar pontos de caminho à sua rota. - Reservar um passeio - Escolha passeios populares em cidades turísticas em todo o mundo. Novo estilo de mapa para a condução O modo de navegação do carro ficou mais fácil de utilizar. Mais em Booking.com @@ -1131,7 +1127,6 @@ Memória do cartão %s disponível Permissão de localização da aplicação não autorizada - Atrações e passeios Utilizar Gerir rota Planear @@ -1146,8 +1141,6 @@ Adicionar a minha posição Escolher um ponto de partida Escolher um destino - Descubrir as excursões e atividades incomuns - Tours, atividades, passeios e muito mais Saiba Mais As ciclovias e rotas pedestres foram melhoradas Corrigimos erros, tornamos a construção da rota várias vezes mais rápida e adicionamos paragens intermédias @@ -1203,8 +1196,6 @@ Atrações Comer e beber Guias locais - Descobrir excursões e atividades incomuns - Excursões, coisas para fazer, passeios turísticos e muito mais. Erro no carregamento de dados Erro no carregamento de dados A carregar dados diff --git a/android/res/values-ro/strings.xml b/android/res/values-ro/strings.xml index c755420f25..f06c4e7ade 100644 --- a/android/res/values-ro/strings.xml +++ b/android/res/values-ro/strings.xml @@ -1023,8 +1023,6 @@ Căutare instantanee printre peste 50.000 de articole la prețuri mici. Închiriere mașini online 800 de firme care închiriază mașini în peste 49.000 de locații de închiriere mașini. - Căutare excursii online - Căutați în peste 50.000 de excursii din întreaga lume. Date privind traficul în 36 de țări @@ -1066,8 +1064,6 @@ Hărţile necesită cu 20% mai puțin spațiu de stocare. Puncte de schimbare a direcției de pe traseu Atingeți locații pentru a adăuga puncte de schimbare a direcției pe traseu. - Rezervați un tur - Selectați dintre tururile populare din orașe turistice din întreaga lume. Un nou stil de hartă pentru condus Modul de navigare din mașină este acum mai ușor de utilizat. Mai multe pe Booking.com @@ -1124,7 +1120,6 @@ Card %s disponibil Permisiune de accesare a locației respinsă - Atracții și tururi Utilizare Administrare traseu Planificare @@ -1139,8 +1134,6 @@ Adaugă poziția mea Alege un punct de plecare Alege o destinație - Descoperă tururi și activități neobișnuite - Tururi, activități, obiective turistice și multe altele Află mai multe Au fost îmbunătățite traseele de biciclete și de pietoni Am remediat erorile, am făcut crearea traseelor mai rapidă și am adăugat opriri intermediare @@ -1196,8 +1189,6 @@ Atracții Restaurante și baruri Ghizi locali - Descoperă tururi și activități neobișnuite - Tururi, activități, panorame și multe altele. Eroare la încărcarea datelor Eroare la încărcarea datelor Datele se încarcă diff --git a/android/res/values-ru/strings.xml b/android/res/values-ru/strings.xml index 32ffbd1824..ea34f49b8c 100644 --- a/android/res/values-ru/strings.xml +++ b/android/res/values-ru/strings.xml @@ -1048,8 +1048,6 @@ Мгновенный поиск по более чем 50 тысячам товаров по низким ценам. Прокат автомобилей онлайн 800 прокатных компаний в более чем 49 тысячах пунктах проката. - Онлайн-поиск экскурсий - Поиск по более чем 50 тысячам экскурсий по всему миру. Пробки в 36 странах мира @@ -1091,8 +1089,6 @@ Занимают на 20% меньше места на телефоне. Маршруты с промежуточными точками Нажмите на объекты, чтобы включить их в маршрут. - Забронируйте экскурсию - Выбирайте популярные экскурсии в туристических городах мира. Новый автомобильный стиль карт Режим автомобильной навигации стал удобнее. Больше на Booking.com @@ -1150,7 +1146,6 @@ Карта памяти %s доступно Определение местоположения запрещено - Экскурсии и достопримечательности Использовать Изменить маршрут Построить @@ -1173,8 +1168,6 @@ Добавить мое местоположение Выберите начало маршрута Выберите конец маршрута - Откройте для себя экскурсии и необычные туры - Туры, достопримечательности, экскурсии и многое другое Посмотреть Вело- и пешеходные маршруты стали лучше Исправили ошибки, ускорили построение маршрутов в несколько раз, а также добавили промежуточные остановки @@ -1231,8 +1224,6 @@ Достопримечательности Перекусить Местные гиды - Откройте для себя туры и необычные активности - Туры, активности, достопримечательности и многое другое Ошибка загрузки данных Ошибка загрузки данных Данные загружаются diff --git a/android/res/values-sk/strings.xml b/android/res/values-sk/strings.xml index 3d9d45c63b..c258e57572 100644 --- a/android/res/values-sk/strings.xml +++ b/android/res/values-sk/strings.xml @@ -1030,8 +1030,6 @@ Okamžité vyhľadávanie vo viac ako 50 000 druhoch tovaru za nízke ceny. Prenájom auta online 800 spoločností prenajímajúcich vozidlá vo viac ako 49 000 prevádzkach. - Online vyhľadávanie zájazdov - Vyhľadávanie vo viac ako 50 000 zájazdoch po celom svete. Dopravné informácie v 36 krajinách @@ -1073,8 +1071,6 @@ Mapy Maps vyžadujú až o 20% menej ukladacieho priestoru. Trasovanie cez určené body Ťuknite na miesta, ak chcete do trasy pridať body. - Rezervovať prehliadku - Vyberte si obľúbené prehliadky po turistických mestách po celom svete. Nový štýl máp pre jazdu Režim navigácie v aute sa zjednodušil. Viac na Booking.com @@ -1131,7 +1127,6 @@ Pamäť na karte K dispozícii %s Zamietnutý prístup aplikácie k lokalite - Atrakcie a prehliadky Použiť Spravovať trasu Naplánovať @@ -1146,8 +1141,6 @@ Pridať moju polohu Vyberte počiatočný bod Vyberte cieľ - Objavte výlety a nezvyčajné aktivity - Výlety, aktivity, prehliadky a ďalšie Zistiť viac Vylepšili sme cyklotrasy a pešie trasy Opravili sme chyby, niekoľkonásobne sme zrýchlili zostavovanie trasy a pridali sme zastávky na trase @@ -1203,8 +1196,6 @@ Atrakcie Jedlo a pitie Miestni sprievodcovia - Objavte výlety a nezvyčajné aktivity - Zájazdy, voľnočasové aktivity, okružné jazdy a ďalšie. Chyba pri načítaní dat Chyba pri načítaní dat Prebieha načítanie dát diff --git a/android/res/values-sv/strings.xml b/android/res/values-sv/strings.xml index af0af1356e..aa1b5eb9a2 100644 --- a/android/res/values-sv/strings.xml +++ b/android/res/values-sv/strings.xml @@ -1031,8 +1031,6 @@ Snabbsökning i över 50000 föremål till låga priser. Biluthyrning online 800 biluthyrningsföretag på mer än 49000 biluthyrningsplatser. - Sökning efter turer online - Sök bland mer än 50000 turer över hela världen. Trafikdata i 36 länder @@ -1074,8 +1072,6 @@ Kartor kräver upp till 20 % mindre lagringsutrymme. Vägpunkter i ruttning Tryck på platser för att lägga till vägpunkter till din rutt. - Boka en tur - Välj populära turer i turiststäder över hela världen. En ny kartstil när du kör Bilens navigeringsläge är lättare att använda. Mer på Booking.com @@ -1132,7 +1128,6 @@ Kortets minne %s tillgängligt Behörighet till appens plats nekades - Attraktioner och turer Använd Hantera rutt Planera @@ -1147,8 +1142,6 @@ Lägg till min position Välj en startpunkt Välj en destination - Upptäck turer och ovanliga aktiviteter - Turer, aktiviteter, sightseeing med mera Läs mer Cykelturer och gångvägar har förbättrats Vi har fixat problem, gjort det mycket lättare att skapa rutter och lagt till mellanliggande punkter @@ -1204,8 +1197,6 @@ Attraktioner Äta och dricka Lokala guider - Upptäck turer och ovanliga saker att göra - Turer, saker att göra, sightseeing-turer med mera. Det gick inte att ladda data Det gick inte att ladda data Laddar data diff --git a/android/res/values-th/strings.xml b/android/res/values-th/strings.xml index ecf7da16ba..8cce10853f 100644 --- a/android/res/values-th/strings.xml +++ b/android/res/values-th/strings.xml @@ -1033,8 +1033,6 @@ การค้นหาทันทีในกว่า 50,000 รายการในราคาที่ต่ำ การเช่ารถออนไลน์ 800 บริษัทเช่ารถในสถานเช่ารถมากกว่า 49,000 แห่ง - การค้นหาทัวร์ออนไลน์ - ค้นหาในทัวร์มากกว่า 50,000 แห่งทั่วโลก ข้อมูลการจราจรใน 36 ประเทศ @@ -1076,8 +1074,6 @@ แผนที่ใช้พื้นที่เก็บน้อยลง 20% จุดกำหนดในเส้นทาง แตะสถานที่เพื่อเพิ่มจุดกำหนดเข้าไปยังเส้นทางของคุณ - จองทัวร์ - เลือกทัวร์ยอดนิยมในเมืองท่องเที่ยวทั่วโลก แผนที่รูปแบบใหม่สำหรับการขับขี่ โหมดการนำทางรถยนต์ใช้งานได้ง่ายยิ่งขึ้น เพิ่มเติมบน Booking.com @@ -1134,7 +1130,6 @@ หน่วยความจำการ์ด เหลือให้ใช้ได้ %s สิทธิ์ตำแหน่งที่ตั้งของแอปถูกปฏิเสธ - สถานที่ท่องเที่ยวและทัวร์ ใช้ จัดการเส้นทาง วางแผน @@ -1149,8 +1144,6 @@ เพิ่มตำแหน่งของฉัน เลือกจุดเริ่มต้น เลือกปลายทาง - ค้นพบทัวร์และกิจกรรมที่แหวกแนว - ทัวร์ กิจกรรม การชมทิวทัศน์ และอื่น ๆ เรียนรู้เพิ่มเติม เส้นทางจักรยานและเส้นทางเดินเท้าได้รับการปรับปรุงยิ่งขึ้น เราได้แก้ไขข้อผิดพลาด ทำให้การสร้างเส้นทางรวดเร็วขึ้นอีกหลายเท่า และเพิ่มจุดแวะพักระหว่างทาง @@ -1206,8 +1199,6 @@ สถานที่ท่องเที่ยว กินและดื่ม มัคคุเทศก์ท้องถิ่น - ค้นหาทัวร์และเรื่องแหวกแนวที่จะทำ - ทัวร์ สิ่งที่จะทำ ทัวร์ชมทิวทัศน์ และอื่น ๆ ข้อผิดพลาดในการโหลดข้อมูล ข้อผิดพลาดในการโหลดข้อมูล กำลังโหลดข้อมูล diff --git a/android/res/values-tr/strings.xml b/android/res/values-tr/strings.xml index 30aecfbddb..b639ce0d15 100644 --- a/android/res/values-tr/strings.xml +++ b/android/res/values-tr/strings.xml @@ -1033,8 +1033,6 @@ En uygun fiyatlarla 50.000\'den fazla ürün için hızlı arama yapın. Çevrimiçi araba kiralama 49.000\'den fazla araç kiralama bölgesinde yer alan 800 araç kiralama şirketi. - Çevrimiçi tur arama - Dünyanın her yerinden 50.000\'den fazla tur içinden arama yapın. 36 Ülkeden Trafik Verileri @@ -1076,8 +1074,6 @@ Artık haritalar %20\'ye kadar daha az depolama alanı gerektiriyor. Güzergâhtaki Yol Noktaları Güzergâhınıza yol noktası olarak eklemek istediğiniz yerlere dokunun. - Tur rezervasyonu - Dünyanın dört bir yanındaki turistik şehirleri kapsayan popüler turları seçin. Sürüş İçin Yeni Harita Stili Araç navigasyon modunu kullanmak şimdi çok daha kolay. Booking.com hakkında daha fazla @@ -1134,7 +1130,6 @@ Kart belleği %s kullanılabilir Uygulamanın konum bilgilerine erişim isteği reddedildi - Geziler ve turlar Kullan Güzergâhı yönet Plan @@ -1149,8 +1144,6 @@ Konumumu ekle Bir başlangıç noktası seçin Bir hedef seçin - Turları ve sıra dışı etkinlikleri keşfedin - Turlar, etkinlikler, geziler ve çok daha fazlası Daha fazla bilgi edinin Bisiklet ve yaya güzergahları iyileştirildi Hataları düzelttik, güzergah oluşturmayı daha hızlı hale getirdik ve ara duraklar ekledik @@ -1206,8 +1199,6 @@ Cazibe Merkezleri Yeme-içme Yerel Rehberler - Turları ve sıra dışı şeyleri keşfedin - Turlar, etkinlikler, şehir gezileri ve daha fazlası. Veri yükleme hatası Veri yükleme hatası Veriler yükleniyor diff --git a/android/res/values-uk/strings.xml b/android/res/values-uk/strings.xml index 6245783004..1373628ff0 100644 --- a/android/res/values-uk/strings.xml +++ b/android/res/values-uk/strings.xml @@ -1031,8 +1031,6 @@ Миттєвий пошук по більш ніж 50 000 виробів за зниженими цінами. Онлайн-оренда автомобілів 800 компаній з прокату автомобілів та понад 49 000 агентів. - Онлайн-пошук турів - Вибір з понад 50 000 турів у різних куточках світу. Дані про трафік у 36 країнах @@ -1074,8 +1072,6 @@ Тепер карти займають на 20% менше дискового простору. Точки маршруту Додавання точок до маршруту одним дотиком. - Забронювати екскурсію - На ваш вибір — популярні екскурсії в різних куточках світу. Новий дизайн карт для водіїв Режим навігації став ще простішим. Більше на Booking.com @@ -1132,7 +1128,6 @@ Карта пам\'яті Доступно: %s Відмовлено у доступі до функції визначення геолокації - Визначні пам\'ятки та екскурсії Використовувати Редагування маршруту Прокласти маршрут @@ -1147,8 +1142,6 @@ Додати моє розташування Вибрати відправну точку Вибрати пункт призначення - Екскурсії та цікаві ідеї - Екскурсії, розваги, відвідування пам\'яток і багато іншого Докладніше Вдосконалено велосипедні та пішохідні маршрути Виправлено помилки, скорочено час прокладання маршруту, додано проміжні зупинки @@ -1204,8 +1197,6 @@ Пам’ятки Їжа та напої Місцеві гіди - Екскурсії та цікаві ідеї - Тури, цікаві ідеї, екскурсії та багато іншого. Помилка завантаження даних Помилка завантаження даних Завантаження даних diff --git a/android/res/values-vi/strings.xml b/android/res/values-vi/strings.xml index c88a3e4652..a2284dddc3 100644 --- a/android/res/values-vi/strings.xml +++ b/android/res/values-vi/strings.xml @@ -1027,8 +1027,6 @@ Tìm kiếm nhanh hơn 50.000 sản phẩm ở mức giá thấp. Thuê ô tô trực tuyến 800 công ty thuê ô tô ở hơn 49.000 địa điểm thuê ô tô. - Tìm kiếm tour trực tuyến - Tìm hơn 50.000 trên toàn thế giới. Dữ liệu Giao thông tại 36 Quốc gia @@ -1070,8 +1068,6 @@ Giảm đến 20% kích cỡ của các bản đồ. Điểm tọa độ trong Lộ trình Chạm vào các điểm để thêm điểm tọa độ vào lộ trình của bạn. - Đặt tour du lịch - Chọn các tour phổ biến trong các thành phố du lịch trên toàn thế giới. Phong cách Bản đồ Mới cho Lái xe Chế độ điều hướng ô tô dễ sử dụng hơn. Xem thêm trên Booking.com @@ -1128,7 +1124,6 @@ Bộ nhớ thẻ %s trống Quyền định vị của ứng dụng bị từ chối - Các điểm tham quan và du lịch Sử dụng Quản lý lộ trình Kế hoạch @@ -1143,8 +1138,6 @@ Thêm vị trí của tôi Chọn một điểm bắt đầu Chọn một điểm đến - Khám phá các tour và hoạt động khác lạ - Tour, hoạt động, ngắm cảnh, v.v… Tìm hiểu thêm Các lộ trình đạp xe đạp và lộ trình đi bộ đã được cải thiện Chúng tôi đã khắc phục các lỗi, giúp cải thiện thời gian xây dựng lộ trình nhanh hơn một vài lần, và bổ sung các điểm dừng trung gian @@ -1200,8 +1193,6 @@ Thắng cảnh Ăn uống Hướng dẫn Địa phương - Khám phá các tour du lịch và những điều lạ bạn có thể làm - Tour du lịch, việc có thể làm, tour ngắm cảnh và nhiều hơn thế nữa. Lỗi tải dữ liệu Lỗi tải dữ liệu Dữ liệu đang tải diff --git a/android/res/values-zh-rTW/strings.xml b/android/res/values-zh-rTW/strings.xml index 53b198da61..39a352d42b 100644 --- a/android/res/values-zh-rTW/strings.xml +++ b/android/res/values-zh-rTW/strings.xml @@ -1037,8 +1037,6 @@ 立即搜尋超過 50,000 樣低價品項。 線上租車 營運 49,000 多個租車地點的 800 家租車公司。 - 線上行程搜尋 - 搜尋全世界 50,000 多個行程。 36 個國家的交通資料 @@ -1080,8 +1078,6 @@ Maps 所需存儲空間減少 20%。 在路線中新增路徑點 點按地點,即可向您的路線新增路徑點。 - 預訂行程 - 選擇全世界旅遊城市的熱門行程。 新的駕駛地圖模式 汽車導航模式更好用。 Booking.com 上的更多資訊 @@ -1138,7 +1134,6 @@ 卡記憶體 %s 可用 應用程式地點存取權限被拒絕 - 景點和行程 使用 管理路線 計畫 @@ -1153,8 +1148,6 @@ 新增我的位置 選擇起點 選擇目的地 - 探索行程與特殊活動 - 行程、活動、觀光等等 進一步了解 改善自行車路線與行人路線 我們修正了錯誤,讓路線產生的速度加快好幾倍,並新增了中途點 @@ -1210,8 +1203,6 @@ 景點 餐飲 本地指南 - 探索行程與特殊活動 - 旅行、活動、觀光及其他。 載入數據時,發生錯誤 載入數據時,發生錯誤 正在載入數據 diff --git a/android/res/values-zh/strings.xml b/android/res/values-zh/strings.xml index e30fea00d9..12813cd51e 100644 --- a/android/res/values-zh/strings.xml +++ b/android/res/values-zh/strings.xml @@ -1033,8 +1033,6 @@ 立即搜索价格超低的 50,000 余种商品。 在线租车 800 家租车公司,超过 49,000 个租车网点。 - 在线导游搜索 - 搜索全世界范围内的 50,000 多位导游。 36 个国家/地区的交通数据 @@ -1076,8 +1074,6 @@ 地图需要的存储空间减少 20%。 在路线中添加路径点 点按地点即可向您的路线添加路径点。 - 预订游览 - 选择全世界旅游城市的热门游览。 新的驾驶地图样式 汽车导航模式更加易用。 Booking.com 上的更多信息 @@ -1134,7 +1130,6 @@ 存储卡 %s 可用 应用已拒绝地点获取权限 - 景点和游览 使用 管理路线 规划 @@ -1149,8 +1144,6 @@ 添加我的位置 选择起点 选择终点 - 探索行程和特殊活动 - 行程、活动、观光,等等 了解更多 已改进自行车路线和行人路线 我们修复了错误,使生成路线的速度加快几倍,并新增了中间点。 @@ -1206,8 +1199,6 @@ 景点 餐饮 本地指南 - 探索行程和特殊活动 - 旅行、活动、观光,等等。 加载数据时出错 加载数据时出错 正在加载数据 diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index 414481f8b4..2c03b87483 100644 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -1054,8 +1054,6 @@ Instant search in over 50,000 items at low prices. Renting cars online 800 car rental companies in more than 49,000 car rental locations. - Online tour search - Search in over 50,000 tours all over the world. Traffic Data in 36 Countries @@ -1102,8 +1100,6 @@ Maps require up to 20% less storage. Waypoints in Routing Tap places to add waypoints to your route. - Book a tour - Choose popular tours in tourist cities all over the world. New Map Style for Driving Car navigation mode got easier to use. More on Booking.com @@ -1162,7 +1158,6 @@ Card memory %s available App location permission denied - Attractions and Tours Use Manage Route Plan @@ -1185,8 +1180,6 @@ Add my position Choose a starting point Choose a destination - Discover tours and unusual activities - Tours, activities, sightseeing and more Learn more Bicycle routes and pedestrian routes were improved We fixed errors, made route building several times faster, and added intermediate stops @@ -1243,8 +1236,6 @@ Attractions Eat and drink Local Guides - Discover tours and unusual things to do - Tours, things to do, sightseeing tours and more. Error loading data Error loading data Data is loading diff --git a/android/res/values/themes-attrs.xml b/android/res/values/themes-attrs.xml index fe4fd0298c..e8350f3359 100644 --- a/android/res/values/themes-attrs.xml +++ b/android/res/values/themes-attrs.xml @@ -94,7 +94,6 @@ - diff --git a/android/res/values/themes-base.xml b/android/res/values/themes-base.xml index 1e3c9d8b13..014b1e7a4b 100644 --- a/android/res/values/themes-base.xml +++ b/android/res/values/themes-base.xml @@ -113,7 +113,6 @@ @drawable/ic_sponsored_gallery_more @drawable/logo_luggagehero_light - @drawable/ic_logo_viator_light @drawable/bg_rating_button @@ -261,7 +260,6 @@ @drawable/ic_sponsored_gallery_more_night @drawable/logo_luggagehero_dark - @drawable/ic_logo_viator_dark @drawable/bg_rating_button_night diff --git a/android/src/com/mapswithme/maps/discovery/DiscoveryFragment.java b/android/src/com/mapswithme/maps/discovery/DiscoveryFragment.java index c6a180aaa4..e61d424a1f 100644 --- a/android/src/com/mapswithme/maps/discovery/DiscoveryFragment.java +++ b/android/src/com/mapswithme/maps/discovery/DiscoveryFragment.java @@ -1,6 +1,5 @@ package com.mapswithme.maps.discovery; -import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -27,7 +26,6 @@ import com.mapswithme.maps.bookmarks.data.MapObject; import com.mapswithme.maps.gallery.GalleryAdapter; import com.mapswithme.maps.gallery.ItemSelectedListener; import com.mapswithme.maps.gallery.Items; -import com.mapswithme.maps.gallery.impl.BaseItemSelectedListener; import com.mapswithme.maps.gallery.impl.Factory; import com.mapswithme.maps.gallery.impl.LoggableItemSelectedListener; import com.mapswithme.maps.metrics.UserActionsLogger; @@ -415,20 +413,6 @@ public class DiscoveryFragment extends BaseMwmToolbarFragment implements Discove }; } - private static class ViatorOfflineSelectedListener extends BaseItemSelectedListener - { - private ViatorOfflineSelectedListener(@NonNull Activity context) - { - super(context, ItemType.VIATOR); - } - - @Override - public void onActionButtonSelected(@NonNull Items.Item item, int position) - { - Utils.showSystemSettings(getContext()); - } - } - private static class SearchBasedListener extends LoggableItemSelectedListener { @NonNull diff --git a/android/src/com/mapswithme/maps/discovery/DiscoveryManager.java b/android/src/com/mapswithme/maps/discovery/DiscoveryManager.java index 2f7ae188f7..0d206f8e8d 100644 --- a/android/src/com/mapswithme/maps/discovery/DiscoveryManager.java +++ b/android/src/com/mapswithme/maps/discovery/DiscoveryManager.java @@ -6,7 +6,6 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.mapswithme.maps.search.SearchResult; -import com.mapswithme.maps.viator.ViatorProduct; import com.mapswithme.util.log.Logger; import com.mapswithme.util.log.LoggerFactory; @@ -37,7 +36,6 @@ enum DiscoveryManager private void onResultReceived(final @NonNull SearchResult[] results, final @DiscoveryParams.ItemType int typeIndex) { - if (typeIndex >= ItemType.values().length) { throw new AssertionError("Unsupported discovery item type " + @@ -55,13 +53,6 @@ enum DiscoveryManager type.onResultReceived(callback, results); } - // Called from JNI. - @MainThread - private void onViatorProductsReceived(@NonNull final ViatorProduct[] products) - { - throw new UnsupportedOperationException("Viator is not supported!"); - } - // Called from JNI. @MainThread private void onLocalExpertsReceived(@NonNull final LocalExpert[] experts) @@ -117,9 +108,6 @@ enum DiscoveryManager public static native void nativeDiscover(@NonNull DiscoveryParams params); - @NonNull - public static native String nativeGetViatorUrl(); - @NonNull public static native String nativeGetLocalExpertsUrl(); diff --git a/android/src/com/mapswithme/maps/discovery/DiscoveryParams.java b/android/src/com/mapswithme/maps/discovery/DiscoveryParams.java index 4519a76139..4f0bc203a4 100644 --- a/android/src/com/mapswithme/maps/discovery/DiscoveryParams.java +++ b/android/src/com/mapswithme/maps/discovery/DiscoveryParams.java @@ -12,14 +12,13 @@ import java.util.Arrays; * Represents discovery::ClientParams from core. */ public final class DiscoveryParams { - public static final int ITEM_TYPE_VIATOR = 0; - public static final int ITEM_TYPE_ATTRACTIONS = 1; - public static final int ITEM_TYPE_CAFES = 2; - public static final int ITEM_TYPE_HOTELS = 3; - public static final int ITEM_TYPE_LOCAL_EXPERTS = 4; + public static final int ITEM_TYPE_ATTRACTIONS = 0; + public static final int ITEM_TYPE_CAFES = 1; + public static final int ITEM_TYPE_HOTELS = 2; + public static final int ITEM_TYPE_LOCAL_EXPERTS = 3; @Retention(RetentionPolicy.SOURCE) - @IntDef({ ITEM_TYPE_VIATOR, ITEM_TYPE_ATTRACTIONS, ITEM_TYPE_CAFES, ITEM_TYPE_HOTELS, ITEM_TYPE_LOCAL_EXPERTS }) + @IntDef({ ITEM_TYPE_ATTRACTIONS, ITEM_TYPE_CAFES, ITEM_TYPE_HOTELS, ITEM_TYPE_LOCAL_EXPERTS }) @interface ItemType {} diff --git a/android/src/com/mapswithme/maps/discovery/ItemType.java b/android/src/com/mapswithme/maps/discovery/ItemType.java index 30f83728d3..149d7f898f 100644 --- a/android/src/com/mapswithme/maps/discovery/ItemType.java +++ b/android/src/com/mapswithme/maps/discovery/ItemType.java @@ -9,8 +9,6 @@ import com.mapswithme.util.UiUtils; public enum ItemType { - VIATOR, - ATTRACTIONS(R.string.tourism, DiscoveryUserEvent.MORE_ATTRACTIONS_CLICKED, DiscoveryUserEvent.ATTRACTIONS_CLICKED) diff --git a/android/src/com/mapswithme/maps/gallery/Holders.java b/android/src/com/mapswithme/maps/gallery/Holders.java index 2b019e3aef..4e21537c2d 100644 --- a/android/src/com/mapswithme/maps/gallery/Holders.java +++ b/android/src/com/mapswithme/maps/gallery/Holders.java @@ -29,58 +29,8 @@ import com.mapswithme.util.Utils; import java.util.List; -import static com.mapswithme.maps.gallery.Items.ViatorItem; - public class Holders { - public static final class ViatorProductViewHolder - extends BaseViewHolder - { - @NonNull - ImageView mImage; - @NonNull - TextView mDuration; - @NonNull - RatingView mRating; - @NonNull - TextView mPrice; - - @NonNull - Context mContext; - - public ViatorProductViewHolder(@NonNull View itemView, @NonNull List items, - @NonNull GalleryAdapter adapter) - { - super(itemView, items, adapter); - mContext = itemView.getContext(); - mImage = (ImageView) itemView.findViewById(R.id.iv__image); - mDuration = (TextView) itemView.findViewById(R.id.tv__duration); - mRating = (RatingView) itemView.findViewById(R.id.ratingView); - mPrice = (TextView) itemView.findViewById(R.id.tv__price); - } - - @Override - public void bind(@NonNull ViatorItem item) - { - super.bind(item); - - if (item.mPhotoUrl != null) - { - Glide.with(mContext) - .load(item.mPhotoUrl) - .centerCrop() - .into(mImage); - } - - UiUtils.setTextAndHideIfEmpty(mDuration, item.mDuration); - UiUtils.setTextAndHideIfEmpty(mPrice, mContext.getString(R.string.place_page_starting_from, - item.mPrice)); - float rating = (float) item.mRating; - Impress impress = Impress.values()[UGC.nativeToImpress(rating)]; - mRating.setRating(impress, String.valueOf(rating)); - } - } - public static class GenericMoreHolder extends BaseViewHolder { diff --git a/android/src/com/mapswithme/maps/gallery/Items.java b/android/src/com/mapswithme/maps/gallery/Items.java index 53925adfae..8e702ef1ea 100644 --- a/android/src/com/mapswithme/maps/gallery/Items.java +++ b/android/src/com/mapswithme/maps/gallery/Items.java @@ -14,46 +14,6 @@ import static com.mapswithme.util.Constants.Rating.RATING_INCORRECT_VALUE; public class Items { - public static class ViatorItem extends RegularAdapterStrategy.Item - { - @Nullable - final String mPhotoUrl; - @Nullable - final String mDuration; - final double mRating; - @Nullable - final String mPrice; - - public ViatorItem(@Nullable String photoUrl, @NonNull String title, - @Nullable String duration, double rating, @Nullable String price, - @NonNull String url) - { - super(TYPE_PRODUCT, title, url, null); - mPhotoUrl = photoUrl; - mDuration = duration; - mRating = rating; - mPrice = price; - } - - ViatorItem(@Constants.ViewType int type, @NonNull String title, @Nullable String url) - { - super(type, title, url, null); - mPhotoUrl = null; - mDuration = null; - mRating = -1; - mPrice = null; - } - } - - public static class ViatorMoreItem extends ViatorItem - { - - public ViatorMoreItem(@Nullable String url) - { - super(TYPE_MORE, MwmApplication.get().getString(R.string.placepage_more_button), url); - } - } - public static class LocalExpertItem extends RegularAdapterStrategy.Item { @Nullable diff --git a/android/src/com/mapswithme/maps/gallery/impl/Factory.java b/android/src/com/mapswithme/maps/gallery/impl/Factory.java index bd66f8b980..e51d1a690b 100644 --- a/android/src/com/mapswithme/maps/gallery/impl/Factory.java +++ b/android/src/com/mapswithme/maps/gallery/impl/Factory.java @@ -8,7 +8,6 @@ import com.mapswithme.maps.gallery.GalleryAdapter; import com.mapswithme.maps.gallery.ItemSelectedListener; import com.mapswithme.maps.gallery.Items; import com.mapswithme.maps.search.SearchResult; -import com.mapswithme.maps.viator.ViatorProduct; import com.mapswithme.util.statistics.GalleryPlacement; import com.mapswithme.util.statistics.GalleryState; import com.mapswithme.util.statistics.GalleryType; @@ -17,44 +16,9 @@ import com.mapswithme.util.statistics.Statistics; import static com.mapswithme.util.statistics.GalleryState.OFFLINE; import static com.mapswithme.util.statistics.GalleryState.ONLINE; import static com.mapswithme.util.statistics.GalleryType.LOCAL_EXPERTS; -import static com.mapswithme.util.statistics.GalleryType.VIATOR; public class Factory { - @NonNull - public static GalleryAdapter createViatorLoadingAdapter( - @Nullable String cityUrl, @Nullable ItemSelectedListener listener) - { - return new GalleryAdapter<>(new ViatorLoadingAdapterStrategy(cityUrl), listener); - } - - @NonNull - public static GalleryAdapter createViatorOfflineAdapter - (@Nullable ItemSelectedListener listener, @NonNull GalleryPlacement placement) - { - Statistics.INSTANCE.trackGalleryShown(VIATOR, OFFLINE, placement); - return new GalleryAdapter<>(new ViatorOfflineAdapterStrategy(null), listener); - } - - @NonNull - public static GalleryAdapter createViatorErrorAdapter(@Nullable String url, - @Nullable ItemSelectedListener - listener) - { - return new GalleryAdapter<>(new ViatorErrorAdapterStrategy(url), listener); - } - - @NonNull - public static GalleryAdapter createViatorAdapter(@NonNull ViatorProduct[] products, - @Nullable String cityUrl, - @Nullable ItemSelectedListener - listener, - @NonNull GalleryPlacement placement) - { - trackProductGalleryShownOrError(products, VIATOR, ONLINE, placement); - return new GalleryAdapter<>(new ViatorAdapterStrategy(products, cityUrl), listener); - } - @NonNull public static GalleryAdapter createSearchBasedAdapter(@NonNull SearchResult[] results, @Nullable ItemSelectedListener -{ - ViatorAdapterStrategy(@NonNull ViatorProduct[] products, @Nullable String moreUrl) - { - super(convertItems(products), new Items.ViatorMoreItem(moreUrl)); - } - - @NonNull - @Override - protected Holders.BaseViewHolder createProductViewHolder - (@NonNull ViewGroup parent, int viewType, @NonNull GalleryAdapter adapter) - { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.item_viator_product, parent, - false); - return new Holders.ViatorProductViewHolder(view, mItems, adapter); - } - - @NonNull - @Override - protected Holders.BaseViewHolder createMoreProductsViewHolder - (@NonNull ViewGroup parent, int viewType, @NonNull GalleryAdapter adapter) - { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_viator_more, parent, - false); - return new Holders.GenericMoreHolder<>(view, mItems, adapter); - } - - @NonNull - private static List convertItems(@NonNull ViatorProduct[] items) - { - List viewItems = new ArrayList<>(); - for (ViatorProduct product : items) - { - viewItems.add(new Items.ViatorItem(product.getPhotoUrl(), product.getTitle(), - product.getDuration(), product.getRating(), product.getPriceFormatted(), - product.getPageUrl())); - } - - return viewItems; - } -} diff --git a/android/src/com/mapswithme/maps/gallery/impl/ViatorErrorAdapterStrategy.java b/android/src/com/mapswithme/maps/gallery/impl/ViatorErrorAdapterStrategy.java deleted file mode 100644 index 5f01a353f4..0000000000 --- a/android/src/com/mapswithme/maps/gallery/impl/ViatorErrorAdapterStrategy.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.mapswithme.maps.gallery.impl; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.mapswithme.maps.R; -import com.mapswithme.maps.gallery.ErrorAdapterStrategy; - -public class ViatorErrorAdapterStrategy extends ErrorAdapterStrategy -{ - ViatorErrorAdapterStrategy(@Nullable String url) - { - super(url); - } - - @Override - protected int getTitle() - { - return R.string.preloader_viator_title; - } - - @Override - protected int getSubtitle() - { - return R.string.preloader_viator_message; - } - - @NonNull - @Override - protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) - { - return inflater.inflate(R.layout.item_viator_loading, parent, false); - } - - @Override - protected int getLabelForDetailsView() - { - return R.string.preloader_viator_button; - } -} diff --git a/android/src/com/mapswithme/maps/gallery/impl/ViatorLoadingAdapterStrategy.java b/android/src/com/mapswithme/maps/gallery/impl/ViatorLoadingAdapterStrategy.java deleted file mode 100644 index 686f1a28d3..0000000000 --- a/android/src/com/mapswithme/maps/gallery/impl/ViatorLoadingAdapterStrategy.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.mapswithme.maps.gallery.impl; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.mapswithme.maps.R; -import com.mapswithme.maps.gallery.LoadingAdapterStrategy; - -public class ViatorLoadingAdapterStrategy extends LoadingAdapterStrategy -{ - ViatorLoadingAdapterStrategy(@Nullable String url) - { - super(url); - } - - @Override - protected int getTitle() - { - return R.string.preloader_viator_title; - } - - @Override - protected int getSubtitle() - { - return R.string.preloader_viator_message; - } - - @NonNull - @Override - protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) - { - return inflater.inflate(R.layout.item_viator_loading, parent, false); - } - - @Override - protected int getLabelForDetailsView() - { - return R.string.preloader_viator_button; - } -} diff --git a/android/src/com/mapswithme/maps/gallery/impl/ViatorOfflineAdapterStrategy.java b/android/src/com/mapswithme/maps/gallery/impl/ViatorOfflineAdapterStrategy.java deleted file mode 100644 index 82cbfc7b41..0000000000 --- a/android/src/com/mapswithme/maps/gallery/impl/ViatorOfflineAdapterStrategy.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.mapswithme.maps.gallery.impl; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.mapswithme.maps.R; -import com.mapswithme.maps.gallery.OfflineAdapterStrategy; - -public class ViatorOfflineAdapterStrategy extends OfflineAdapterStrategy -{ - ViatorOfflineAdapterStrategy(@Nullable String url) - { - super(url); - } - - @Override - protected int getTitle() - { - return R.string.preloader_viator_title; - } - - @Override - protected int getSubtitle() - { - return R.string.common_check_internet_connection_dialog; - } - - @Override - protected int getLabelForDetailsView() - { - return R.string.settings; - } - - @NonNull - @Override - protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) - { - return inflater.inflate(R.layout.item_viator_loading, parent, false); - } -} diff --git a/android/src/com/mapswithme/maps/viator/Viator.java b/android/src/com/mapswithme/maps/viator/Viator.java deleted file mode 100644 index 63a5d6027a..0000000000 --- a/android/src/com/mapswithme/maps/viator/Viator.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.mapswithme.maps.viator; - -import android.support.annotation.NonNull; - -import com.mapswithme.util.NetworkPolicy; - -import java.lang.ref.WeakReference; -import java.util.HashMap; -import java.util.Map; - -public final class Viator -{ - @NonNull - private static WeakReference sViatorListener = new WeakReference<>(null); - @NonNull - private static final Map sProductsCache = new HashMap<>(); - - public static void setViatorListener(@NonNull ViatorListener listener) - { - sViatorListener = new WeakReference<>(listener); - } - - private static void onViatorProductsReceived(@NonNull String destId, - @NonNull ViatorProduct[] products) - { - sProductsCache.put(destId, products); - ViatorListener listener = sViatorListener.get(); - if (listener != null) - listener.onViatorProductsReceived(destId, products); - } - - private Viator() {} - - public static void requestViatorProducts(@NonNull NetworkPolicy policy, - @NonNull String destId, - @NonNull String currency) - { - ViatorProduct[] products = sProductsCache.get(destId); - if (products != null && products.length > 0) - onViatorProductsReceived(destId, products); - - nativeRequestViatorProducts(policy, destId, currency); - } - - public static boolean hasCache(@NonNull String id) - { - return sProductsCache.containsKey(id); - } - - private static native void nativeRequestViatorProducts(@NonNull NetworkPolicy policy, - @NonNull String destId, - @NonNull String currency); - - public interface ViatorListener - { - void onViatorProductsReceived(@NonNull String destId, @NonNull ViatorProduct[] products); - } -} diff --git a/android/src/com/mapswithme/maps/viator/ViatorProduct.java b/android/src/com/mapswithme/maps/viator/ViatorProduct.java deleted file mode 100644 index 83441e7281..0000000000 --- a/android/src/com/mapswithme/maps/viator/ViatorProduct.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.mapswithme.maps.viator; - -import android.os.Parcel; -import android.os.Parcelable; -import android.support.annotation.NonNull; - -public final class ViatorProduct implements Parcelable -{ - @NonNull - private final String mTitle; - private final double mRating; - private final int mReviewCount; - @NonNull - private final String mDuration; - private final double mPrice; - @NonNull - private final String mPriceFormatted; - @NonNull - private final String mCurrency; - @NonNull - private final String mPhotoUrl; - @NonNull - private final String mPageUrl; - - public static final Creator CREATOR = new Creator() - { - @Override - public ViatorProduct createFromParcel(Parcel in) - { - return new ViatorProduct(in); - } - - @Override - public ViatorProduct[] newArray(int size) - { - return new ViatorProduct[size]; - } - }; - - @SuppressWarnings("unused") - public ViatorProduct(@NonNull String title, double rating, int reviewCount, - @NonNull String duration, double price, @NonNull String priceFormatted, - @NonNull String currency, @NonNull String photoUrl, @NonNull String pageUrl) - { - mTitle = title; - mRating = rating; - mReviewCount = reviewCount; - mDuration = duration; - mPrice = price; - mPriceFormatted = priceFormatted; - mCurrency = currency; - mPhotoUrl = photoUrl; - mPageUrl = pageUrl; - } - - private ViatorProduct(Parcel in) - { - mTitle = in.readString(); - mRating = in.readDouble(); - mReviewCount = in.readInt(); - mDuration = in.readString(); - mPrice = in.readDouble(); - mPriceFormatted = in.readString(); - mCurrency = in.readString(); - mPhotoUrl = in.readString(); - mPageUrl = in.readString(); - } - - @Override - public void writeToParcel(Parcel dest, int flags) - { - dest.writeString(mTitle); - dest.writeDouble(mRating); - dest.writeInt(mReviewCount); - dest.writeString(mDuration); - dest.writeDouble(mPrice); - dest.writeString(mPriceFormatted); - dest.writeString(mCurrency); - dest.writeString(mPhotoUrl); - dest.writeString(mPageUrl); - } - - @Override - public int describeContents() - { - return 0; - } - - @NonNull - public String getTitle() - { - return mTitle; - } - - public double getRating() - { - return mRating; - } - - public int getReviewCount() - { - return mReviewCount; - } - - @NonNull - public String getDuration() - { - return mDuration; - } - - public double getPrice() - { - return mPrice; - } - - @NonNull - public String getPriceFormatted() - { - return mPriceFormatted; - } - - @NonNull - public String getCurrency() - { - return mCurrency; - } - - @NonNull - public String getPhotoUrl() - { - return mPhotoUrl; - } - - @NonNull - public String getPageUrl() - { - return mPageUrl; - } - - @Override - public boolean equals(Object o) - { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - ViatorProduct that = (ViatorProduct) o; - - if (Double.compare(that.mRating, mRating) != 0) return false; - if (mReviewCount != that.mReviewCount) return false; - if (Double.compare(that.mPrice, mPrice) != 0) return false; - if (!mTitle.equals(that.mTitle)) return false; - if (!mDuration.equals(that.mDuration)) return false; - if (!mPriceFormatted.equals(that.mPriceFormatted)) return false; - if (!mCurrency.equals(that.mCurrency)) return false; - if (!mPhotoUrl.equals(that.mPhotoUrl)) return false; - return mPageUrl.equals(that.mPageUrl); - } - - @Override - public int hashCode() - { - int result; - long temp; - result = mTitle.hashCode(); - temp = Double.doubleToLongBits(mRating); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + mReviewCount; - result = 31 * result + mDuration.hashCode(); - temp = Double.doubleToLongBits(mPrice); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + mPriceFormatted.hashCode(); - result = 31 * result + mCurrency.hashCode(); - result = 31 * result + mPhotoUrl.hashCode(); - result = 31 * result + mPageUrl.hashCode(); - return result; - } -} diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java index bd95d60281..dcae4b22ef 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java +++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java @@ -55,7 +55,6 @@ import com.mapswithme.maps.bookmarks.data.BookmarkManager; import com.mapswithme.maps.bookmarks.data.DistanceAndAzimut; import com.mapswithme.maps.bookmarks.data.MapObject; import com.mapswithme.maps.bookmarks.data.Metadata; -import com.mapswithme.maps.discovery.ItemType; import com.mapswithme.maps.downloader.CountryItem; import com.mapswithme.maps.downloader.DownloaderStatusIcon; import com.mapswithme.maps.downloader.MapManager; @@ -66,10 +65,6 @@ import com.mapswithme.maps.editor.data.Timetable; import com.mapswithme.maps.gallery.FullScreenGalleryActivity; import com.mapswithme.maps.gallery.GalleryActivity; import com.mapswithme.maps.gallery.Image; -import com.mapswithme.maps.gallery.ItemSelectedListener; -import com.mapswithme.maps.gallery.Items; -import com.mapswithme.maps.gallery.impl.BaseItemSelectedListener; -import com.mapswithme.maps.gallery.impl.Factory; import com.mapswithme.maps.location.LocationHelper; import com.mapswithme.maps.review.Review; import com.mapswithme.maps.routing.RoutingController; @@ -79,8 +74,6 @@ import com.mapswithme.maps.search.Popularity; import com.mapswithme.maps.taxi.TaxiType; import com.mapswithme.maps.ugc.Impress; import com.mapswithme.maps.ugc.UGCController; -import com.mapswithme.maps.viator.Viator; -import com.mapswithme.maps.viator.ViatorProduct; import com.mapswithme.maps.widget.ArrowView; import com.mapswithme.maps.widget.BaseShadowController; import com.mapswithme.maps.widget.LineCountTextView; @@ -102,8 +95,6 @@ import com.mapswithme.util.log.Logger; import com.mapswithme.util.log.LoggerFactory; import com.mapswithme.util.sharing.ShareOption; import com.mapswithme.util.statistics.AlohaHelper; -import com.mapswithme.util.statistics.GalleryPlacement; -import com.mapswithme.util.statistics.GalleryType; import com.mapswithme.util.statistics.Statistics; import java.util.ArrayList; @@ -115,8 +106,6 @@ import java.util.Locale; import java.util.Objects; import static com.mapswithme.maps.widget.placepage.PlacePageButtons.Item.BOOKING; -import static com.mapswithme.util.statistics.Destination.EXTERNAL; -import static com.mapswithme.util.statistics.GalleryPlacement.PLACEPAGE; import static com.mapswithme.util.statistics.Statistics.EventName.PP_HOTEL_DESCRIPTION_LAND; import static com.mapswithme.util.statistics.Statistics.EventName.PP_HOTEL_FACILITIES; import static com.mapswithme.util.statistics.Statistics.EventName.PP_HOTEL_GALLERY_OPEN; @@ -135,8 +124,7 @@ public class PlacePageView extends RelativeLayout NearbyAdapter.OnItemClickListener, BottomPlacePageAnimationController.OnBannerOpenListener, EditBookmarkFragment.EditBookmarkListener, - BannerController.BannerListener, - Viator.ViatorListener + BannerController.BannerListener { private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC); private static final String TAG = PlacePageView.class.getSimpleName(); @@ -212,10 +200,6 @@ public class PlacePageView extends RelativeLayout private TextView mHotelRating; private TextView mHotelRatingBase; private View mHotelMore; - private View mSponsoredGalleryView; - private RecyclerView mRvSponsoredProducts; - private TextView mTvSponsoredTitle; - private ImageView mIvSponsoredLogo; @Nullable private View mBookmarkButtonFrame; @@ -263,8 +247,6 @@ public class PlacePageView extends RelativeLayout private final NearbyAdapter mNearbyAdapter = new NearbyAdapter(this); @NonNull private final ReviewAdapter mReviewAdapter = new ReviewAdapter(); - @NonNull - private final ItemSelectedListener mDefaultGalleryItemListener; // Downloader`s stuff private DownloaderStatusIcon mDownloaderIcon; @@ -371,7 +353,6 @@ public class PlacePageView extends RelativeLayout { super(context, attrs); Activity activity = (Activity) context; - mDefaultGalleryItemListener = new BaseItemSelectedListener<>(activity, ItemType.VIATOR); mIsLatLonDms = MwmApplication.prefs().getBoolean(PREF_USE_DMS, false); mGalleryAdapter = new com.mapswithme.maps.widget.placepage.GalleryAdapter(context); mMarginBase = (int) getResources().getDimension(R.dimen.margin_base); @@ -382,8 +363,7 @@ public class PlacePageView extends RelativeLayout public boolean isHorizontalScrollAreaTouched(@NonNull MotionEvent event) { - return UiUtils.isViewTouched(event, mHotelGallery) - || UiUtils.isViewTouched(event, mRvSponsoredProducts); + return UiUtils.isViewTouched(event, mHotelGallery); } public void onActivityResume() @@ -504,8 +484,6 @@ public class PlacePageView extends RelativeLayout initHotelNearbyView(); initHotelRatingView(); - initSponsoredGalleryView(); - mUgcController = new UGCController(this); ViewGroup bannerContainer = findViewById(R.id.banner_container); @@ -699,7 +677,7 @@ public class PlacePageView extends RelativeLayout Sponsored.setPriceListener(this); Sponsored.setInfoListener(this); - Viator.setViatorListener(this); + initPlaceDescriptionView(); } @@ -922,72 +900,6 @@ public class PlacePageView extends RelativeLayout mUgcController.clear(); } - @Override - public void onViatorProductsReceived(@NonNull String destId, final @NonNull ViatorProduct[] products) - { - if (mSponsored != null) - updateViatorView(products, mSponsored.getUrl()); - } - - private void initSponsoredGalleryView() - { - mSponsoredGalleryView = findViewById(R.id.ll__place_sponsored_gallery); - mTvSponsoredTitle = mSponsoredGalleryView.findViewById(R.id.tv__sponsored_title); - mIvSponsoredLogo = mSponsoredGalleryView.findViewById(R.id.btn__sponsored_logo); - mRvSponsoredProducts = mSponsoredGalleryView.findViewById(R.id.rv__sponsored_products); - mRvSponsoredProducts.setLayoutManager(new LinearLayoutManager(getContext(), - LinearLayoutManager.HORIZONTAL, - false)); - mRvSponsoredProducts.addItemDecoration( - ItemDecoratorFactory.createSponsoredGalleryDecorator(getContext(), LinearLayoutManager.HORIZONTAL)); - mIvSponsoredLogo.setOnClickListener(this); - } - - private void updateViatorView(@NonNull final ViatorProduct[] products, - @NonNull final String cityUrl) - { - if (products.length == 0) - { - mRvSponsoredProducts.setAdapter(Factory.createViatorErrorAdapter(cityUrl, - mDefaultGalleryItemListener)); - Statistics.INSTANCE.trackGalleryError(GalleryType.VIATOR, GalleryPlacement.PLACEPAGE, - Statistics.ParamValue.NO_PRODUCTS); - } - else - { - ItemSelectedListener listener = - createSponsoredProductItemListener(GalleryType.VIATOR, ItemType.VIATOR); - - com.mapswithme.maps.gallery.GalleryAdapter adapter = - Factory.createViatorAdapter(products, cityUrl, listener, GalleryPlacement.PLACEPAGE); - - mRvSponsoredProducts.setAdapter(adapter); - } - } - - private void updateGallerySponsoredLogo(@Sponsored.SponsoredType int type) - { - if (type != Sponsored.TYPE_VIATOR) - throw new AssertionError("Unsupported type: " + type); - - int logoAttr = R.attr.viatorLogo; - TypedArray array = getActivity().getTheme().obtainStyledAttributes(new int[] {logoAttr}); - int attributeResourceId = array.getResourceId(0 /* index */, 0 /* defValue */); - Drawable drawable = getResources().getDrawable(attributeResourceId); - array.recycle(); - mIvSponsoredLogo.setImageDrawable(drawable); - } - - private void updateGallerySponsoredTitle(@Sponsored.SponsoredType int type) - { - mTvSponsoredTitle.setText(R.string.place_page_viator_title); - } - - private void clearSponsoredGalleryViews() - { - mRvSponsoredProducts.swapAdapter(null /* adapter */ , false); - } - @Override public void onLineCountCalculated(boolean grater) { @@ -1275,7 +1187,6 @@ public class PlacePageView extends RelativeLayout if (mMapObject != null) { clearHotelViews(); - clearSponsoredGalleryViews(); clearUGCViews(); processSponsored(policy); initEditMapObjectBtn(); @@ -1303,34 +1214,11 @@ public class PlacePageView extends RelativeLayout if (mSponsored.getId() == null || TextUtils.isEmpty(currencyCode)) return; - if (mSponsored.getType() == Sponsored.TYPE_BOOKING) - { - Sponsored.requestPrice(mSponsored.getId(), currencyCode, policy); - Sponsored.requestInfo(mSponsored, Locale.getDefault().toString(), policy); - return; - } - - boolean isViator = mSponsored.getType() == Sponsored.TYPE_VIATOR; - - if (!isViator) + if (mSponsored.getType() != Sponsored.TYPE_BOOKING) return; - updateGallerySponsoredLogo(mSponsored.getType()); - updateGallerySponsoredTitle(mSponsored.getType()); - UiUtils.show(mSponsoredGalleryView); - - boolean hasInCache = Viator.hasCache(mSponsored.getId()); - final String url = !TextUtils.isEmpty(mSponsored.getUrl()) ? mSponsored.getUrl() - : mSponsored.getDescriptionUrl(); - if (!ConnectionState.isConnected() && !hasInCache) - { - updateViatorView(new ViatorProduct[]{}, url); - return; - } - - mRvSponsoredProducts.setAdapter(Factory.createViatorLoadingAdapter(url, - mDefaultGalleryItemListener)); - Viator.requestViatorProducts(policy, mSponsored.getId(), currencyCode); + Sponsored.requestPrice(mSponsored.getId(), currencyCode, policy); + Sponsored.requestInfo(mSponsored, Locale.getDefault().toString(), policy); } private boolean isNetworkNeeded() @@ -1550,12 +1438,10 @@ public class PlacePageView extends RelativeLayout if (mSponsored == null) { hideHotelDetailViews(); - UiUtils.hide(mSponsoredGalleryView); return; } boolean isConnected = ConnectionState.isConnected(); - UiUtils.showIf(isConnected, mSponsoredGalleryView); if (isConnected) showHotelDetailViews(); else @@ -1569,9 +1455,6 @@ public class PlacePageView extends RelativeLayout if (mSponsored.getType() != Sponsored.TYPE_BOOKING) hideHotelDetailViews(); - - if (mSponsored.getType() != Sponsored.TYPE_VIATOR) - UiUtils.hide(mSponsoredGalleryView); } private void showTaxiOffer(@NonNull MapObject mapObject) @@ -2018,19 +1901,6 @@ public class PlacePageView extends RelativeLayout } } break; - case R.id.btn__sponsored_logo: - if (mSponsored == null) - break; - - String url = !TextUtils.isEmpty(mSponsored.getUrl()) ? mSponsored.getUrl() - : mSponsored.getDescriptionUrl(); - if (!TextUtils.isEmpty(url)) - { - Utils.openUrl(getContext(), url); - Statistics.INSTANCE.trackGalleryEvent(Statistics.EventName.PP_SPONSOR_LOGO_SELECTED, - GalleryType.VIATOR, GalleryPlacement.PLACEPAGE); - } - break; case R.id.search_hotels_btn: if (mMapObject == null) break; @@ -2292,28 +2162,6 @@ public class PlacePageView extends RelativeLayout } } - private ItemSelectedListener createSponsoredProductItemListener(@NonNull GalleryType type, - @NonNull ItemType itemType) - { - return new BaseItemSelectedListener(getActivity(), itemType) - { - @Override - public void onItemSelected(@NonNull I item, int position) - { - super.onItemSelected(item, position); - Statistics.INSTANCE.trackGalleryProductItemSelected(type, PLACEPAGE, position, EXTERNAL); - } - - @Override - public void onMoreItemSelected(@NonNull I item) - { - super.onMoreItemSelected(item); - Statistics.INSTANCE.trackGalleryEvent(Statistics.EventName.PP_SPONSOR_MORE_SELECTED, type, - PLACEPAGE); - } - }; - } - private class EditBookmarkClickListener implements OnClickListener { @Override diff --git a/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java b/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java index a2dc3a3626..829c1c3089 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java +++ b/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java @@ -25,12 +25,11 @@ public final class Sponsored public static final int TYPE_NONE = 0; public static final int TYPE_BOOKING = 1; public static final int TYPE_OPENTABLE = 2; - public static final int TYPE_VIATOR = 3; public static final int TYPE_PARTNER = 4; public static final int TYPE_HOLIDAY = 5; @Retention(RetentionPolicy.SOURCE) - @IntDef({ TYPE_NONE, TYPE_BOOKING, TYPE_OPENTABLE, TYPE_VIATOR, TYPE_PARTNER, TYPE_HOLIDAY }) + @IntDef({ TYPE_NONE, TYPE_BOOKING, TYPE_OPENTABLE, TYPE_PARTNER, TYPE_HOLIDAY }) public @interface SponsoredType {} static class FacilityType diff --git a/android/src/com/mapswithme/util/statistics/GalleryType.java b/android/src/com/mapswithme/util/statistics/GalleryType.java index c12229b983..1444dfc554 100644 --- a/android/src/com/mapswithme/util/statistics/GalleryType.java +++ b/android/src/com/mapswithme/util/statistics/GalleryType.java @@ -4,15 +4,6 @@ import android.support.annotation.NonNull; public enum GalleryType { - VIATOR - { - @NonNull - @Override - public String getProvider() - { - return Statistics.ParamValue.VIATOR; - } - }, LOCAL_EXPERTS { @NonNull diff --git a/android/src/com/mapswithme/util/statistics/Statistics.java b/android/src/com/mapswithme/util/statistics/Statistics.java index 439e539b0c..fa1dbbe09d 100644 --- a/android/src/com/mapswithme/util/statistics/Statistics.java +++ b/android/src/com/mapswithme/util/statistics/Statistics.java @@ -146,7 +146,6 @@ import static com.mapswithme.util.statistics.Statistics.ParamValue.TRAFFIC; import static com.mapswithme.util.statistics.Statistics.ParamValue.TRANSIT; import static com.mapswithme.util.statistics.Statistics.ParamValue.UNKNOWN; import static com.mapswithme.util.statistics.Statistics.ParamValue.VEHICLE; -import static com.mapswithme.util.statistics.Statistics.ParamValue.VIATOR; public enum Statistics { @@ -533,7 +532,6 @@ public enum Statistics public static final String COPY_LINK = "copy_link"; static final String SEARCH_BOOKING_COM = "Search.Booking.Com"; static final String OPENTABLE = "OpenTable"; - static final String VIATOR = "Viator.Com"; static final String LOCALS_EXPERTS = "Locals.Maps.Me"; static final String SEARCH_RESTAURANTS = "Search.Restaurants"; static final String SEARCH_ATTRACTIONS = "Search.Attractions"; @@ -1089,8 +1087,6 @@ public enum Statistics { case Sponsored.TYPE_BOOKING: return BOOKING_COM; - case Sponsored.TYPE_VIATOR: - return VIATOR; case Sponsored.TYPE_OPENTABLE: return OPENTABLE; case Sponsored.TYPE_HOLIDAY: diff --git a/data/classificator.txt b/data/classificator.txt index 0eb5cdfd7f..8ccb05db25 100644 --- a/data/classificator.txt +++ b/data/classificator.txt @@ -956,7 +956,6 @@ world + raileurope - rentalcars - tutu - - viator - {} booking - holiday - @@ -981,7 +980,6 @@ world + partner7 - partner8 - partner9 - - viator - {} sport + american_football - diff --git a/data/strings/strings.txt b/data/strings/strings.txt index a99d9dc25a..78e3c29ded 100644 --- a/data/strings/strings.txt +++ b/data/strings/strings.txt @@ -23538,68 +23538,6 @@ sk = 800 spoločností prenajímajúcich vozidlá vo viac ako 49 000 prevádzkach. fa = شرکت کرایه ماشین در بیش از 49،000 مکان اجاره ماشین. - [banner_viator_title] - en = Online tour search - ru = Онлайн-поиск экскурсий - ar = بحث عن الرحلات على الإنترنت - cs = Online vyhledávání zájezdů - da = Online rejsesøgning - nl = Online tours zoeken - fi = Kierrosten haku verkossa - fr = Recherche d'excursions en ligne - de = Online-Toursuche - hu = Utazások keresése az interneten - id = Pencarian wisata online - it = Ricerca viaggi online - ja = オンラインツアー検索 - ko = 온라인 투어 검색 - nb = Søk etter omvisninger med guide online - pl = Wyszukiwanie podróży online - pt = Pesquisa de turismo online - ro = Căutare excursii online - es = Reserva de visitas guiadas en línea - sv = Sökning efter turer online - th = การค้นหาทัวร์ออนไลน์ - tr = Çevrimiçi tur arama - uk = Онлайн-пошук турів - vi = Tìm kiếm tour trực tuyến - zh-Hans = 在线导游搜索 - zh-Hant = 線上行程搜尋 - el = Αναζήτηση οργανωμένων εκδρομών online - sk = Online vyhľadávanie zájazdov - fa = جستجوی آنلاین تور - - [banner_viator_message] - en = Search in over 50,000 tours all over the world. - ru = Поиск по более чем 50 тысячам экскурсий по всему миру. - ar = بحث في أكثر من 50000 رحلة في كافة أنحاء العالم. - cs = Hledejte ve více než 50 000 zájezdů po celém světě. - da = Søg blandt mere end 50.000 rejser over hele verden. - nl = Zoek in meer dan 50.000 tours over de hele wereld. - fi = Hae yli 50 000 kierroksesta ympäri maailmaa. - fr = Recherchez parmi plus 50.000 excursions partout dans le monde. - de = Suche bei über 50.000 Touren auf der ganzen Welt. - hu = Több mint 50.000 utazás keresése a világ minden táján. - id = Cari di antara lebih dari 50.000 wisata di seluruh dunia. - it = Ricerca di oltre 50.000 viaggi organizzati in tutto il mondo. - ja = 世界中から 50,000 件を超えるツアーを検索してください。 - ko = 전 세계 50,000개 이상의 투어에서 검색하세요. - nb = Søk blant over 50 000 omvisninger verden over. - pl = Szukaj spośród 50.000 podróży na całym świecie. - pt = Procurar em mais de 50.000 visitas em todo o mundo. - ro = Căutați în peste 50.000 de excursii din întreaga lume. - es = Más de 50 000 visitas guiadas por todo el mundo. - sv = Sök bland mer än 50000 turer över hela världen. - th = ค้นหาในทัวร์มากกว่า 50,000 แห่งทั่วโลก - tr = Dünyanın her yerinden 50.000'den fazla tur içinden arama yapın. - uk = Вибір з понад 50 000 турів у різних куточках світу. - vi = Tìm hơn 50.000 trên toàn thế giới. - zh-Hans = 搜索全世界范围内的 50,000 多位导游。 - zh-Hant = 搜尋全世界 50,000 多個行程。 - el = Αναζήτηση σε περισσότερες από 50.000 εκδρομές σε όλο τον κόσμο. - sk = Vyhľadávanie vo viac ako 50 000 zájazdoch po celom svete. - fa = جستجو در بیش از 50،000 تور در سراسر جهان. - [whatsnew_traffic] comment = december en = Traffic Data in 36 Countries @@ -24489,70 +24427,6 @@ sk = Ťuknite na miesta, ak chcete do trasy pridať body. fa = مکان ها را برای افزودن ایستگاه های راه به مسیر خود ضربه بزنید. - [whatsnew_viator_title] - en = Book a tour - ru = Забронируйте экскурсию - ar = حجز جولة - cs = Objednat výlet - da = Bestil en tur - nl = Boek een tour - fi = Varaa kierros - fr = Réserver une excursion - de = Tour buchen - hu = Foglaljon helyet egy utazásra - id = Pesan tur - it = Prenota un tour - ja = ツアーの予約 - ko = 투어 예약 - nb = Bestill omvisning - pl = Zarezerwuj wycieczkę - pt = Reservar um passeio - ro = Rezervați un tur - es = Reservar una visita guiada - sv = Boka en tur - th = จองทัวร์ - tr = Tur rezervasyonu - uk = Забронювати екскурсію - vi = Đặt tour du lịch - zh-Hans = 预订游览 - zh-Hant = 預訂行程 - el = Κάντε κράτηση σε μια ξενάγηση - sk = Rezervovať prehliadku - sw = Hifadhi nafasi ya kutalii - fa = رزرو تور - - [whatsnew_viator_message] - en = Choose popular tours in tourist cities all over the world. - ru = Выбирайте популярные экскурсии в туристических городах мира. - ar = اختر جولات شائعة في المدن السياحية في كافة أنحاء العالم. - cs = Vyberte si oblíbené výlety v turistických městech po celém světě. - da = Vælg populære ture i turistbyer over hele verden. - nl = Kies populaire tours in toeristische steden over de hele wereld. - fi = Valitse suosittuja kierroksia turistikaupungeissa ympäri maailman. - fr = Choisissez des excursions populaires dans les villes touristiques du monde entier. - de = Wählen Sie beliebte Touren in Touristenstädten auf der ganzen Welt. - hu = Válasszon népszerű városnéző utakat a világ minden táján. - id = Pilih wisata populer di kota-kota wisata seluruh dunia. - it = Scegli i migliori tour nelle città turistiche di tutto il mondo. - ja = 世界中の観光都市で人気のツアーを選択してください。 - ko = 전 세계 관광 도시에서 인기 투어를 선택하세요. - nb = Velg populære omvisninger i turistbyer over hele verden. - pl = Wybieraj popularne wycieczki w turystycznych miastach z całego świata. - pt = Escolha passeios populares em cidades turísticas em todo o mundo. - ro = Selectați dintre tururile populare din orașe turistice din întreaga lume. - es = Elija visitas guiadas populares por ciudades turísticas en cualquier parte del mundo. - sv = Välj populära turer i turiststäder över hela världen. - th = เลือกทัวร์ยอดนิยมในเมืองท่องเที่ยวทั่วโลก - tr = Dünyanın dört bir yanındaki turistik şehirleri kapsayan popüler turları seçin. - uk = На ваш вибір — популярні екскурсії в різних куточках світу. - vi = Chọn các tour phổ biến trong các thành phố du lịch trên toàn thế giới. - zh-Hans = 选择全世界旅游城市的热门游览。 - zh-Hant = 選擇全世界旅遊城市的熱門行程。 - el = Επιλέξτε δημοφιλείς ξεναγήσεις σε τουριστικές πόλεις σε όλο τον κόσμο. - sk = Vyberte si obľúbené prehliadky po turistických mestách po celom svete. - sw = Chagua utalii maarufu katika miji ya kitalii kote ulimwenguni. - fa = تورهای محبوب را در شهرهای توریستی در سراسر جهان انتخاب کنید. - [whatsnew_driving_style_title] en = New Map Style for Driving ru = Новый автомобильный стиль карт @@ -26270,38 +26144,6 @@ sw = Ruhusu ya programu-tumizi kufikia maeneo imekataliwa fa = مجوز مکان برنامه صادر نشد - [place_page_viator_title] - en = Attractions and Tours - ru = Экскурсии и достопримечательности - ar = معالم الجذب والجولات - cs = Atrakce a výlety - da = Seværdigheder og ture - nl = Attracties en tours - fi = Nähtävyydet ja kierrokset - fr = Attractions et visites - de = Attraktionen und Touren - hu = Látványosságok és kirándulások - id = Objek wisata dan tur - it = Attrazioni e tour - ja = 観光地およびツアー - ko = 관광 명소 및 투어 - nb = Attraksjoner og omvisninger - pl = Atrakcje i wycieczki - pt = Atrações e passeios - ro = Atracții și tururi - es = Lugar de interés y visitas guiadas - sv = Attraktioner och turer - th = สถานที่ท่องเที่ยวและทัวร์ - tr = Geziler ve turlar - uk = Визначні пам'ятки та екскурсії - vi = Các điểm tham quan và du lịch - zh-Hans = 景点和游览 - zh-Hant = 景點和行程 - el = Αξιοθέατα και περιηγήσεις - sk = Atrakcie a prehliadky - sw = Vivutio na utalii - fa = جاذبه ها و تورها - [button_use] en = Use ru = Использовать @@ -26770,70 +26612,6 @@ sw = Chagua eneo unakoelekea fa = یک مقصد را انتخاب کنید - [preloader_viator_title] - en = Discover tours and unusual activities - ru = Откройте для себя экскурсии и необычные туры - ar = اكتشاف الجولات والأنشطة غير المعتادة - cs = Objevte výlety a neobvyklé aktivity - da = Find ture og usædvanlige aktiviteter - nl = Ontdek tours en ongewone activiteiten - fi = Tutustu kierroksiin ja epätavallisiin aktiviteetteihin - fr = Découvrez les excursions et les activités insolites - de = Entdecken Sie Touren und ungewöhnliche Aktivitäten - hu = Fedezze fel a túrákat és a szokatlan tevékenységeket - id = Temukan wisata dan kegiatan yang unik - it = Scopri tour e attività insolite - ja = 旅行や通常ではないアクティビティを検知します - ko = 투어와 특별한 활동 알아보기 - nb = Finn omvisninger og aktiviteter utenom det vanlige - pl = Odkrywaj wycieczki i nietypowe aktywności - pt = Descubrir as excursões e atividades incomuns - ro = Descoperă tururi și activități neobișnuite - es = Descubrir tours y actividades extraordinarias - sv = Upptäck turer och ovanliga aktiviteter - th = ค้นพบทัวร์และกิจกรรมที่แหวกแนว - tr = Turları ve sıra dışı etkinlikleri keşfedin - uk = Екскурсії та цікаві ідеї - vi = Khám phá các tour và hoạt động khác lạ - zh-Hans = 探索行程和特殊活动 - zh-Hant = 探索行程與特殊活動 - el = Ανακαλύψτε περιηγήσεις και ασυνήθιστες δραστηριότητες - sk = Objavte výlety a nezvyčajné aktivity - sw = Gundua safari za utalii na shughuli zisizo za kawaida - fa = تور و فعالیت های غیر معمول را کشف کنید - - [preloader_viator_message] - en = Tours, activities, sightseeing and more - ru = Туры, достопримечательности, экскурсии и многое другое - ar = الجولات والأنشطة ومشاهدة المعالم وغيره - cs = Výlety, aktivity, památky a více - da = Ture, aktiviteter, sightseeing med mere - nl = Tours, activiteiten, bezienswaardigheden en meer - fi = Kierroksia, aktiviteetteja, nähtävyyksien katselua ja muuta - fr = Excursions, activités, visites et plus - de = Touren, Aktivitäten, Sehenswürdigkeiten und mehr - hu = Túrák, tevékenységek, városnézés, és sok egyéb - id = Wisata, kegiatan, tamasya, dan lain-lain - it = Tour, attività, turismo e altro - ja = 旅行、アクティビティ、観光など - ko = 투어, 활동, 관광 등 - nb = Omvisninger, aktiviteter, sightseeing og mye mer - pl = Turyści, aktywności, zwiedzanie i wiele innych - pt = Tours, atividades, passeios e muito mais - ro = Tururi, activități, obiective turistice și multe altele - es = Tours, actividades, excursiones y más - sv = Turer, aktiviteter, sightseeing med mera - th = ทัวร์ กิจกรรม การชมทิวทัศน์ และอื่น ๆ - tr = Turlar, etkinlikler, geziler ve çok daha fazlası - uk = Екскурсії, розваги, відвідування пам'яток і багато іншого - vi = Tour, hoạt động, ngắm cảnh, v.v… - zh-Hans = 行程、活动、观光,等等 - zh-Hant = 行程、活動、觀光等等 - el = Περιηγήσεις, δραστηριότητες, αξιοθέατα και πολλά άλλα - sk = Výlety, aktivity, prehliadky a ďalšie - sw = Utalii, shughuli, kutazama maeneo ya kuvutia na mengi zaidi - fa = تور، فعالیت ها، گشت و گذار و ... - [preloader_viator_button] en = Learn more ru = Посмотреть @@ -28567,74 +28345,6 @@ sw = Miongozo ya ndani fa = راهنماهای محلی - [discovery_button_viator_offline_title] - en = Discover tours and unusual things to do - ru = Откройте для себя туры и необычные активности - ar = اكتشف الجولات والأشياء غير العادية التي يمكن القيام بها - cs = Objevte výlety a neobvyklé aktivity - da = Find ture og nye oplevelser - nl = Ontdek tours en ongewone activiteiten - fi = Tutustu kierroksiin ja epätavallisiin aktiviteetteihin - fr = Découvrez les visites et les activités insolites - de = Entdecken Sie Touren und ungewöhnliche Aktivitäten - hu = Fedezze fel a túrákat és a szokatlan tevékenységeket - id = Temukan wisata dan hal unik yang akan dilakukan - it = Scopri tour e cose da fare insolite - ja = 旅行や変わった活動を探します - ko = 투어 그리고 기억에 남을 일 알아보기 - pl = Odkrywaj wycieczki i nietypowe atrakcje - pt = Descobrir excursões e atividades incomuns - ro = Descoperă tururi și activități neobișnuite - es = Descubrir visitas guiadas y actividades inusuales - sv = Upptäck turer och ovanliga saker att göra - th = ค้นหาทัวร์และเรื่องแหวกแนวที่จะทำ - tr = Turları ve sıra dışı şeyleri keşfedin - uk = Екскурсії та цікаві ідеї - vi = Khám phá các tour du lịch và những điều lạ bạn có thể làm - zh-Hans = 探索行程和特殊活动 - zh-Hant = 探索行程與特殊活動 - el = Ανακαλύψτε περιηγήσεις και ασυνήθιστες δραστηριότητες - es_MX = Descubrir visitas guiadas y actividades diferentes - nb = Finn omvisninger og ting å gjøre utenom det vanlige - pt-BR = Descobrir excursões e atividades incomuns - sk = Objavte výlety a nezvyčajné aktivity - sw = Gundua safari za utalii na mambo ya kufanya yasiyo ya kawaida - fa = تورها را پیدا کنید و چیزهای غیر معمول را انجام دهید - - [discovery_button_viator_offline_message] - en = Tours, things to do, sightseeing tours and more. - ru = Туры, активности, достопримечательности и многое другое - ar = جولات وأشياء يمكن القيام بها وجولات مشاهدة المعالم وغيره. - cs = Výlety, aktivity, vyhlídkové jízdy a další. - da = Ture, oplevelser, sightseeing med mere. - nl = Rondleidingen, activiteiten, excursies en meer. - fi = Kierroksia, tekemistä, kiertoajeluita ja muuta. - fr = Visites, activités, excursions et bien plus encore. - de = Touren, Aktivitäten, Besichtigungen und mehr. - hu = Kirándulások, teendők, városnéző túrák és egyebek. - id = Wisata, hal yang akan dilakukan, wisata pemandangan, dan lain sebagainya. - it = Tour, cose da fare, giri turistici e altro. - ja = ツアー、活動、観光ツアーなど。 - ko = 투어, 할 일, 관광 투어 등. - pl = Wycieczki, atrakcje, zwiedzanie i wiele innych. - pt = Excursões, coisas para fazer, passeios turísticos e muito mais. - ro = Tururi, activități, panorame și multe altele. - es = Visitas guiadas, cosas que hacer, atracciones turísticas y mucho más. - sv = Turer, saker att göra, sightseeing-turer med mera. - th = ทัวร์ สิ่งที่จะทำ ทัวร์ชมทิวทัศน์ และอื่น ๆ - tr = Turlar, etkinlikler, şehir gezileri ve daha fazlası. - uk = Тури, цікаві ідеї, екскурсії та багато іншого. - vi = Tour du lịch, việc có thể làm, tour ngắm cảnh và nhiều hơn thế nữa. - zh-Hans = 旅行、活动、观光,等等。 - zh-Hant = 旅行、活動、觀光及其他。 - el = Εκδρομές, πράγματα να κάνετε, περιηγήσεις στα αξιοθέατα και πολλά άλλα. - es_MX = Visitas guiadas, cosas que hacer, atracciones turísticas y mucho más. - nb = Omvisninger, ting å gjøre, sightseeingturer og mer. - pt-BR = Excursões, atividades, passeios turísticos e muito mais. - sk = Zájazdy, voľnočasové aktivity, okružné jazdy a ďalšie. - sw = Utalii, mambo ya kufanya, utalii wa kutazama maeneo ya kuvutia na mengi zaidi. - fa = تور، چیزهایی که باید انجام شود، تورهای گشت و گذار و بیشتر. - [discovery_button_viator_error_title] en = Error loading data ru = Ошибка загрузки данных diff --git a/data/types.txt b/data/types.txt index b975b8fe39..e26f2ff18a 100644 --- a/data/types.txt +++ b/data/types.txt @@ -1143,7 +1143,6 @@ sponsored|banner|deliveryclub sponsored|banner|tutu sponsored|banner|geerbest_uk sponsored|banner|rentalcars -sponsored|banner|viator sponsored|banner|geerbest_de sponsored|banner|geerbest_fr sponsored|banner|raileurope @@ -1154,7 +1153,6 @@ historic|fort shop|coffee shop|tea mapswithme -sponsored|viator hwtag|toll amenity|arts_centre amenity|biergarten diff --git a/generator/CMakeLists.txt b/generator/CMakeLists.txt index b50f110665..ddb25f717e 100644 --- a/generator/CMakeLists.txt +++ b/generator/CMakeLists.txt @@ -180,8 +180,6 @@ set(SRC unpack_mwm.hpp utils.cpp utils.hpp - viator_dataset.cpp - viator_dataset.hpp ways_merger.hpp ways_merger.cpp wiki_url_dumper.cpp diff --git a/generator/emitter_planet.cpp b/generator/emitter_planet.cpp index 85880245e9..5d1d2759d8 100644 --- a/generator/emitter_planet.cpp +++ b/generator/emitter_planet.cpp @@ -18,7 +18,6 @@ EmitterPlanet::EmitterPlanet(feature::GenerateInfo const & info) : m_failOnCoasts(info.m_failOnCoasts), m_bookingDataset(info.m_bookingDatafileName), m_opentableDataset(info.m_opentableDatafileName), - m_viatorDataset(info.m_viatorDatafileName), m_boundariesTable(info.m_boundariesTable) { if (!info.m_brandsFilename.empty() && !info.m_brandsTranslationsFilename.empty()) @@ -67,16 +66,6 @@ void EmitterPlanet::operator()(FeatureBuilder1 & fb) // The first object which perform action terminates the cahin. if (type != ftype::GetEmptyValue() && !fb.GetName().empty()) { - auto const viatorObjId = m_viatorDataset.FindMatchingObjectId(fb); - if (viatorObjId != ViatorCity::InvalidObjectId()) - { - m_viatorDataset.PreprocessMatchedOsmObject(viatorObjId, fb, [this, viatorObjId](FeatureBuilder1 & fb) - { - m_skippedElements << "VIATOR\t" << DebugPrint(fb.GetMostGenericOsmId()) - << '\t' << viatorObjId.Get() << endl; - }); - } - Place const place(fb, type); UnionEqualPlacesIds(place); m_places.ReplaceEqualInRect( diff --git a/generator/emitter_planet.hpp b/generator/emitter_planet.hpp index 877455af67..29b083d358 100644 --- a/generator/emitter_planet.hpp +++ b/generator/emitter_planet.hpp @@ -9,7 +9,6 @@ #include "generator/opentable_dataset.hpp" #include "generator/place.hpp" #include "generator/polygonizer.hpp" -#include "generator/viator_dataset.hpp" #include "generator/world_map_generator.hpp" #include "indexer/feature_data.hpp" @@ -67,7 +66,6 @@ private: bool m_failOnCoasts; BookingDataset m_bookingDataset; OpentableDataset m_opentableDataset; - ViatorDataset m_viatorDataset; std::unordered_map m_brands; shared_ptr m_boundariesTable; /// Used to prepare a list of cities to serve as a list of nodes diff --git a/generator/generate_info.hpp b/generator/generate_info.hpp index 39ffa2d733..3fb11fc403 100644 --- a/generator/generate_info.hpp +++ b/generator/generate_info.hpp @@ -47,7 +47,6 @@ struct GenerateInfo std::string m_bookingDatafileName; std::string m_opentableDatafileName; - std::string m_viatorDatafileName; std::string m_brandsFilename; std::string m_brandsTranslationsFilename; diff --git a/generator/generator_tool/generator_tool.cpp b/generator/generator_tool/generator_tool.cpp index e8c8d7316c..53398299d6 100644 --- a/generator/generator_tool/generator_tool.cpp +++ b/generator/generator_tool/generator_tool.cpp @@ -149,7 +149,6 @@ DEFINE_bool(generate_maxspeed, false, "Generate section with maxspeed of road fe // Sponsored-related. DEFINE_string(booking_data, "", "Path to booking data in .tsv format."); DEFINE_string(opentable_data, "", "Path to opentable data in .tsv format."); -DEFINE_string(viator_data, "", "Path to viator data in .tsv format."); DEFINE_string(ugc_data, "", "Input UGC source database file name."); @@ -249,7 +248,6 @@ int GeneratorToolMain(int argc, char ** argv) genInfo.m_preloadCache = FLAGS_preload_cache; genInfo.m_bookingDatafileName = FLAGS_booking_data; genInfo.m_opentableDatafileName = FLAGS_opentable_data; - genInfo.m_viatorDatafileName = FLAGS_viator_data; genInfo.m_popularPlacesFilename = FLAGS_popular_places_data; genInfo.m_brandsFilename = FLAGS_brands_data; genInfo.m_brandsTranslationsFilename = FLAGS_brands_translations_data; diff --git a/generator/osm_source.cpp b/generator/osm_source.cpp index 293bd4ff38..d0585aae34 100644 --- a/generator/osm_source.cpp +++ b/generator/osm_source.cpp @@ -21,7 +21,6 @@ #include "generator/world_map_generator.hpp" #include "generator/booking_dataset.hpp" #include "generator/opentable_dataset.hpp" -#include "generator/viator_dataset.hpp" #include "indexer/city_boundary.hpp" #include "indexer/classificator.hpp" diff --git a/generator/viator_dataset.cpp b/generator/viator_dataset.cpp deleted file mode 100644 index 36deb8f113..0000000000 --- a/generator/viator_dataset.cpp +++ /dev/null @@ -1,107 +0,0 @@ -#include "generator/viator_dataset.hpp" - -#include "generator/feature_builder.hpp" -#include "generator/utils.hpp" - -#include "indexer/classificator.hpp" -#include "indexer/ftypes_matcher.hpp" - -#include "coding/string_utf8_multilang.hpp" - -#include "geometry/mercator.hpp" - -#include "boost/algorithm/string/replace.hpp" - -namespace -{ -enum class TsvFields -{ - Id = 0, - Name, - Latitude, - Longtitude, - - FieldsCount -}; - -static constexpr size_t FieldIndex(TsvFields field) { return static_cast(field); } -static constexpr size_t FieldsCount() { return static_cast(TsvFields::FieldsCount); } -} // namespace - -namespace generator -{ -// ViatorCity ------------------------------------------------------------------------------------- -ViatorCity::ViatorCity(std::string const & src) -{ - vector rec; - strings::ParseCSVRow(src, '\t', rec); - CHECK_EQUAL(rec.size(), FieldsCount(), - ("Error parsing viator cities, line:", boost::replace_all_copy(src, "\t", "\\t"))); - - CLOG(LDEBUG, strings::to_uint(rec[FieldIndex(TsvFields::Id)], m_id.Get()), ()); - CLOG(LDEBUG, strings::to_double(rec[FieldIndex(TsvFields::Latitude)], m_latLon.lat), ()); - CLOG(LDEBUG, strings::to_double(rec[FieldIndex(TsvFields::Longtitude)], m_latLon.lon), ()); - - m_name = rec[FieldIndex(TsvFields::Name)]; -} - -std::ostream & operator<<(std::ostream & s, ViatorCity const & h) -{ - s << std::fixed << std::setprecision(7); - return s << "Id: " << h.m_id << "\t Name: " << h.m_name << "\t lat: " << h.m_latLon.lat - << " lon: " << h.m_latLon.lon; -} - -// ViatorDataset ---------------------------------------------------------------------------------- -ViatorDataset::ViatorDataset(std::string const & dataPath) - : m_storage(3000.0 /* distanceLimitMeters */, 3 /* maxSelectedElements */) -{ - LoadDataSource(m_dataSource); - m_cityFinder = make_unique(m_dataSource); - - m_storage.LoadData(dataPath); -} - -ViatorCity::ObjectId ViatorDataset::FindMatchingObjectId(FeatureBuilder1 const & fb) const -{ - if (!ftypes::IsCityChecker::Instance()(fb.GetTypes())) - return ViatorCity::InvalidObjectId(); - - auto const name = m_cityFinder->GetCityName(fb.GetKeyPoint(), StringUtf8Multilang::kEnglishCode); - - auto const nearbyIds = m_storage.GetNearestObjects(MercatorBounds::ToLatLon(fb.GetKeyPoint())); - - for (auto const objId : nearbyIds) - { - auto const city = m_storage.GetObjectById(objId); - if (name == city.m_name) - return objId; - - auto const viatorName = m_cityFinder->GetCityName(MercatorBounds::FromLatLon(city.m_latLon), - StringUtf8Multilang::kEnglishCode); - if (name == viatorName) - return objId; - } - - CLOG(LWARNING, nearbyIds.empty(), - ("Viator city matching failed! OSM city:", name, "OSM point:", fb.GetKeyPoint(), - "Viator cities:", nearbyIds)); - - return ViatorCity::InvalidObjectId(); -} - -void ViatorDataset::PreprocessMatchedOsmObject(ViatorCity::ObjectId const matchedObjId, - FeatureBuilder1 & fb, - function const fn) const -{ - auto const & city = m_storage.GetObjectById(matchedObjId); - auto & metadata = fb.GetMetadata(); - metadata.Set(feature::Metadata::FMD_SPONSORED_ID, strings::to_string(city.m_id.Get())); - - auto const & clf = classif(); - FeatureParams & params = fb.GetParams(); - params.AddType(clf.GetTypeByPath({"sponsored", "viator"})); - - fn(fb); -} -} // namespace generator diff --git a/generator/viator_dataset.hpp b/generator/viator_dataset.hpp deleted file mode 100644 index 0bf2ca992c..0000000000 --- a/generator/viator_dataset.hpp +++ /dev/null @@ -1,57 +0,0 @@ -#pragma once - -#include "generator/sponsored_object_storage.hpp" - -#include "search/city_finder.hpp" - -#include "indexer/data_source.hpp" - -#include "geometry/latlon.hpp" - -#include "base/newtype.hpp" - -#include -#include -#include -#include - -class FeatureBuilder1; - -namespace generator -{ -struct ViatorCity -{ - explicit ViatorCity(std::string const & src); - - NEWTYPE(uint32_t, ObjectId); - - static constexpr ObjectId InvalidObjectId() - { - return ObjectId(std::numeric_limits::max()); - } - - ObjectId m_id{InvalidObjectId()}; - ms::LatLon m_latLon = ms::LatLon::Zero(); - std::string m_name; -}; - -std::ostream & operator<<(std::ostream & s, ViatorCity const & r); - -NEWTYPE_SIMPLE_OUTPUT(ViatorCity::ObjectId); - -class ViatorDataset -{ -public: - ViatorDataset(std::string const & dataPath); - - ViatorCity::ObjectId FindMatchingObjectId(FeatureBuilder1 const & fb) const; - - void PreprocessMatchedOsmObject(ViatorCity::ObjectId const matchedObjId, FeatureBuilder1 & fb, - function const fn) const; - -private: - SponsoredObjectStorage m_storage; - FrozenDataSource m_dataSource; - std::unique_ptr m_cityFinder; -}; -} // namespace generator diff --git a/indexer/ftypes_sponsored.hpp b/indexer/ftypes_sponsored.hpp index a6b77341fa..d32fa2b0fc 100644 --- a/indexer/ftypes_sponsored.hpp +++ b/indexer/ftypes_sponsored.hpp @@ -20,7 +20,6 @@ protected: // Checkers. SPONSORED_CHECKER(IsBookingChecker, "booking"); SPONSORED_CHECKER(IsOpentableChecker, "opentable"); -SPONSORED_CHECKER(IsViatorChecker, "viator"); SPONSORED_CHECKER(IsHolidayChecker, "holiday"); #undef SPONSORED_CHECKER diff --git a/iphone/Maps/Common/Statistics/StatisticsStrings.h b/iphone/Maps/Common/Statistics/StatisticsStrings.h index a1c66efc0e..da698f75cc 100644 --- a/iphone/Maps/Common/Statistics/StatisticsStrings.h +++ b/iphone/Maps/Common/Statistics/StatisticsStrings.h @@ -423,7 +423,6 @@ static NSString * const kStatUserInterrupted = @"user_interrupted"; static NSString * const kStatValue = @"Value"; static NSString * const kStatVehicle = @"Vehicle"; static NSString * const kStatVendor = @"vendor"; -static NSString * const kStatViator = @"Viator.com"; static NSString * const kStatViewOnMap = @"view_on_map"; static NSString * const kStatVisible = @"Visible"; static NSString * const kStatWhatsNew = @"What's New"; diff --git a/iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/Contents.json b/iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/Contents.json deleted file mode 100644 index 0cbec95a3d..0000000000 --- a/iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "icLogoViatorLight.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "icLogoViatorLight@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "icLogoViatorLight@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/icLogoViatorLight.png b/iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/icLogoViatorLight.png deleted file mode 100644 index 135d5d74e9736ff4bd1ba57df81edc6c30350de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2316 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 diff --git a/iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/icLogoViatorLight@3x.png b/iphone/Maps/Images.xcassets/Discovery/icLogoViatorLight.imageset/icLogoViatorLight@3x.png deleted file mode 100644 index f589035e0dd5e20196c9adbbaae7ec38ac24c689..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7637 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 D?rmJ& diff --git a/iphone/Maps/Images.xcassets/Discovery/img_viator_placeholder.imageset/img_viator_placeholder@3x.png b/iphone/Maps/Images.xcassets/Discovery/img_viator_placeholder.imageset/img_viator_placeholder@3x.png deleted file mode 100644 index 7aacbdd754df1ac5a5be42b0ee334e843f80e6c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25210 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 diff --git a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings index 9109322b57..00ec4e593e 100644 --- a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 شركة تأجير سيارات في أكثر من 49000 مكان لتأجير السيارات."; -"banner_viator_title" = "بحث عن الرحلات على الإنترنت"; - -"banner_viator_message" = "بحث في أكثر من 50000 رحلة في كافة أنحاء العالم."; - /* december */ "whatsnew_traffic" = "البيانات المرورية في 36 دولة"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "المس الأماكن لإضافة نقاط طريق إلى المسار."; -"whatsnew_viator_title" = "حجز جولة"; - -"whatsnew_viator_message" = "اختر جولات شائعة في المدن السياحية في كافة أنحاء العالم."; - "whatsnew_driving_style_title" = "نمط خريطة جديد للقيادة"; "whatsnew_driving_style_message" = "وضع التنقل بالسيارة أصبح سهل الاستخدام."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "تم رفض إذن الموقع للتطبيق"; -"place_page_viator_title" = "معالم الجذب والجولات"; - "button_use" = "استخدام"; "planning_route_manage_route" = "إدارة المسار"; @@ -2019,10 +2009,6 @@ "choose_destination" = "اختيار الوجهة"; -"preloader_viator_title" = "اكتشاف الجولات والأنشطة غير المعتادة"; - -"preloader_viator_message" = "الجولات والأنشطة ومشاهدة المعالم وغيره"; - "preloader_viator_button" = "تعلم المزيد"; "whats_new_title_route" = "تم تحسين مسارات السيارات ومسارات المشاه"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "أدلة محلية"; -"discovery_button_viator_offline_title" = "اكتشف الجولات والأشياء غير العادية التي يمكن القيام بها"; - -"discovery_button_viator_offline_message" = "جولات وأشياء يمكن القيام بها وجولات مشاهدة المعالم وغيره."; - "discovery_button_viator_error_title" = "خطأ في تحميل البيانات"; "discovery_button_other_error_message" = "خطأ في تحميل البيانات"; diff --git a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings index 49a9d77242..d354311720 100644 --- a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 autopůjčoven na více než 49 000 místech."; -"banner_viator_title" = "Online vyhledávání zájezdů"; - -"banner_viator_message" = "Hledejte ve více než 50 000 zájezdů po celém světě."; - /* december */ "whatsnew_traffic" = "Údaje o provozu ve 36 zemích"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Klepněte na místo a přidejte bod průjezdu."; -"whatsnew_viator_title" = "Objednat výlet"; - -"whatsnew_viator_message" = "Vyberte si oblíbené výlety v turistických městech po celém světě."; - "whatsnew_driving_style_title" = "Nový styl mapy pro vozidla"; "whatsnew_driving_style_message" = "Navigační režim pro auto ještě snadnější."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Povolení k určení polohy bylo zamítnuto"; -"place_page_viator_title" = "Atrakce a výlety"; - "button_use" = "Použít"; "planning_route_manage_route" = "Spravovat trasu"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Vybrat cílové místo"; -"preloader_viator_title" = "Objevte výlety a neobvyklé aktivity"; - -"preloader_viator_message" = "Výlety, aktivity, památky a více"; - "preloader_viator_button" = "Zjistit více"; "whats_new_title_route" = "Byly vylepšeny cyklostezky a pěší trasy"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Místní průvodci"; -"discovery_button_viator_offline_title" = "Objevte výlety a neobvyklé aktivity"; - -"discovery_button_viator_offline_message" = "Výlety, aktivity, vyhlídkové jízdy a další."; - "discovery_button_viator_error_title" = "Chyba při načítání dat"; "discovery_button_other_error_message" = "Chyba při načítání dat"; diff --git a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings index b6ca13f18b..7f08953dc1 100644 --- a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 biludlejningsselskaber på mere end 49.000 steder."; -"banner_viator_title" = "Online rejsesøgning"; - -"banner_viator_message" = "Søg blandt mere end 50.000 rejser over hele verden."; - /* december */ "whatsnew_traffic" = "Trafikdata i 36 lande"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Tryk på positioner for at føje vejsteder til din rute."; -"whatsnew_viator_title" = "Bestil en tur"; - -"whatsnew_viator_message" = "Vælg populære ture i turistbyer over hele verden."; - "whatsnew_driving_style_title" = "Nyt kortformat til kørsel"; "whatsnew_driving_style_message" = "Bilnavigationstilstand er blevet lettere at bruge."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "App-position tilladelse nægtet"; -"place_page_viator_title" = "Seværdigheder og ture"; - "button_use" = "Brug"; "planning_route_manage_route" = "Administrer rute"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Vælg en destination"; -"preloader_viator_title" = "Find ture og usædvanlige aktiviteter"; - -"preloader_viator_message" = "Ture, aktiviteter, sightseeing med mere"; - "preloader_viator_button" = "Flere oplysninger"; "whats_new_title_route" = "Cykelruter og vandreruter blev forbedret"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Lokale guider"; -"discovery_button_viator_offline_title" = "Find ture og nye oplevelser"; - -"discovery_button_viator_offline_message" = "Ture, oplevelser, sightseeing med mere."; - "discovery_button_viator_error_title" = "Fejl ved indlæsning af data"; "discovery_button_other_error_message" = "Fejl ved indlæsning af data"; diff --git a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings index 78e19e7484..57642e0516 100644 --- a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 Autovermietungen mit über 49.000 Mietstationen."; -"banner_viator_title" = "Online-Toursuche"; - -"banner_viator_message" = "Suche bei über 50.000 Touren auf der ganzen Welt."; - /* december */ "whatsnew_traffic" = "Verkehrsdaten in 36 Ländern"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Tippen Sie auf Orte, um Wegpunkte zu Ihrer Route hinzuzufügen."; -"whatsnew_viator_title" = "Tour buchen"; - -"whatsnew_viator_message" = "Wählen Sie beliebte Touren in Touristenstädten auf der ganzen Welt."; - "whatsnew_driving_style_title" = "Neuer Kartenstil zum Fahren"; "whatsnew_driving_style_message" = "Der Modus Autonavigation ist jetzt einfacher zu nutzen."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "App-Zugriff auf Standort verweigert"; -"place_page_viator_title" = "Attraktionen und Touren"; - "button_use" = "Nutzen"; "planning_route_manage_route" = "Route verwalten"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Ziel auswählen"; -"preloader_viator_title" = "Entdecken Sie Touren und ungewöhnliche Aktivitäten"; - -"preloader_viator_message" = "Touren, Aktivitäten, Sehenswürdigkeiten und mehr"; - "preloader_viator_button" = "Weitere Informationen"; "whats_new_title_route" = "Fahrradrouten und Routen für Fußgänger wurden verbessert"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Örtliche Reiseführer"; -"discovery_button_viator_offline_title" = "Entdecken Sie Touren und ungewöhnliche Aktivitäten"; - -"discovery_button_viator_offline_message" = "Touren, Aktivitäten, Besichtigungen und mehr."; - "discovery_button_viator_error_title" = "Fehler beim Laden der Daten"; "discovery_button_other_error_message" = "Fehler beim Laden der Daten"; diff --git a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings index 32c42f7f13..24ccd67f8e 100644 --- a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 εταιρείες ενοικίασης αυτοκινήτων σε περισσότερες από 49.000 τοποθεσίες."; -"banner_viator_title" = "Αναζήτηση οργανωμένων εκδρομών online"; - -"banner_viator_message" = "Αναζήτηση σε περισσότερες από 50.000 εκδρομές σε όλο τον κόσμο."; - /* december */ "whatsnew_traffic" = "Πληροφορίες για την κίνηση σε 36 χώρες"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Πατήστε στα μέρη για να προσθέσετε ενδιάμεσα σημεία στη διαδρομή σας."; -"whatsnew_viator_title" = "Κάντε κράτηση σε μια ξενάγηση"; - -"whatsnew_viator_message" = "Επιλέξτε δημοφιλείς ξεναγήσεις σε τουριστικές πόλεις σε όλο τον κόσμο."; - "whatsnew_driving_style_title" = "Νέο στυλ χάρτη για την οδήγηση"; "whatsnew_driving_style_message" = "Ευκολότερη λειτουργία πλοήγησης αυτοκινήτου."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Άρνηση πρόσβασης εφαρμογής στον εντοπισμό τοποθεσίας"; -"place_page_viator_title" = "Αξιοθέατα και περιηγήσεις"; - "button_use" = "Χρήση"; "planning_route_manage_route" = "Διαχείριση διαδρομής"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Επιλέξτε προορισμό"; -"preloader_viator_title" = "Ανακαλύψτε περιηγήσεις και ασυνήθιστες δραστηριότητες"; - -"preloader_viator_message" = "Περιηγήσεις, δραστηριότητες, αξιοθέατα και πολλά άλλα"; - "preloader_viator_button" = "Μάθετε περισσότερα"; "whats_new_title_route" = "Βελτιωμένες διαδρομές ποδηλάτων και πεζών"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Τοπικοί οδηγοί"; -"discovery_button_viator_offline_title" = "Ανακαλύψτε περιηγήσεις και ασυνήθιστες δραστηριότητες"; - -"discovery_button_viator_offline_message" = "Εκδρομές, πράγματα να κάνετε, περιηγήσεις στα αξιοθέατα και πολλά άλλα."; - "discovery_button_viator_error_title" = "Σφάλμα κατά τη φόρτωση δεδομένων"; "discovery_button_other_error_message" = "Σφάλμα κατά τη φόρτωση δεδομένων"; diff --git a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings index 53e051b793..49b61090c2 100644 --- a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 car rental companies in more than 49,000 car rental locations."; -"banner_viator_title" = "Online tour search"; - -"banner_viator_message" = "Search in over 50,000 tours all over the world."; - /* december */ "whatsnew_traffic" = "Traffic Data in 36 Countries"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Tap places to add waypoints to your route."; -"whatsnew_viator_title" = "Book a tour"; - -"whatsnew_viator_message" = "Choose popular tours in tourist cities all over the world."; - "whatsnew_driving_style_title" = "New Map Style for Driving"; "whatsnew_driving_style_message" = "Car navigation mode got easier to use."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "App location permission denied"; -"place_page_viator_title" = "Attractions and Tours"; - "button_use" = "Use"; "planning_route_manage_route" = "Manage Route"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Choose a destination"; -"preloader_viator_title" = "Discover tours and unusual activities"; - -"preloader_viator_message" = "Tours, activities, sightseeing and more"; - "preloader_viator_button" = "Learn more"; "whats_new_title_route" = "Bicycle routes and pedestrian routes were improved"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Local Guides"; -"discovery_button_viator_offline_title" = "Discover tours and unusual things to do"; - -"discovery_button_viator_offline_message" = "Tours, things to do, sightseeing tours and more."; - "discovery_button_viator_error_title" = "Error loading data"; "discovery_button_other_error_message" = "Error loading data"; diff --git a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings index 16fa13e724..cb66ab4e0d 100644 --- a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 car rental companies in more than 49,000 car rental locations."; -"banner_viator_title" = "Online tour search"; - -"banner_viator_message" = "Search in over 50,000 tours all over the world."; - /* december */ "whatsnew_traffic" = "Traffic Data in 36 Countries"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Tap places to add waypoints to your route."; -"whatsnew_viator_title" = "Book a tour"; - -"whatsnew_viator_message" = "Choose popular tours in tourist cities all over the world."; - "whatsnew_driving_style_title" = "New Map Style for Driving"; "whatsnew_driving_style_message" = "Car navigation mode got easier to use."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "App location permission denied"; -"place_page_viator_title" = "Attractions and Tours"; - "button_use" = "Use"; "planning_route_manage_route" = "Manage Route"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Choose a destination"; -"preloader_viator_title" = "Discover tours and unusual activities"; - -"preloader_viator_message" = "Tours, activities, sightseeing and more"; - "preloader_viator_button" = "Learn more"; "whats_new_title_route" = "Bicycle routes and pedestrian routes were improved"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Local Guides"; -"discovery_button_viator_offline_title" = "Discover tours and unusual things to do"; - -"discovery_button_viator_offline_message" = "Tours, things to do, sightseeing tours and more."; - "discovery_button_viator_error_title" = "Error loading data"; "discovery_button_other_error_message" = "Error loading data"; diff --git a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings index 2823cd677f..d4e81bc9ea 100644 --- a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 compañías de alquiler de coches en más de 49 000 localidades."; -"banner_viator_title" = "Reserva de visitas guiadas en línea"; - -"banner_viator_message" = "Más de 50 000 visitas guiadas por todo el mundo."; - /* december */ "whatsnew_traffic" = "Datos del tráfico en 36 países"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Pulse sobre los lugares para añadir puntos de referencia a su ruta."; -"whatsnew_viator_title" = "Reservar una visita guiada"; - -"whatsnew_viator_message" = "Elija visitas guiadas populares por ciudades turísticas en cualquier parte del mundo."; - "whatsnew_driving_style_title" = "Nuevo estilo de mapa para la conducción"; "whatsnew_driving_style_message" = "Modo de navegación más fácil de usar."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "A la aplicación se le ha denegado el permiso de acceso a la ubicación"; -"place_page_viator_title" = "Lugar de interés y visitas guiadas"; - "button_use" = "Utilizar"; "planning_route_manage_route" = "Administrar ruta"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Elegir un destino"; -"preloader_viator_title" = "Descubrir tours y actividades extraordinarias"; - -"preloader_viator_message" = "Tours, actividades, excursiones y más"; - "preloader_viator_button" = "Más información"; "whats_new_title_route" = "Las rutas en bicicleta y a pie han sido mejoradas"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Guías locales"; -"discovery_button_viator_offline_title" = "Descubrir visitas guiadas y actividades inusuales"; - -"discovery_button_viator_offline_message" = "Visitas guiadas, cosas que hacer, atracciones turísticas y mucho más."; - "discovery_button_viator_error_title" = "De produjo un error al cargar datos"; "discovery_button_other_error_message" = "De produjo un error al cargar datos"; diff --git a/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings index b112dc171e..9f956d0bec 100644 --- a/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "شرکت کرایه ماشین در بیش از 49،000 مکان اجاره ماشین."; -"banner_viator_title" = "جستجوی آنلاین تور"; - -"banner_viator_message" = "جستجو در بیش از 50،000 تور در سراسر جهان."; - /* december */ "whatsnew_traffic" = "اطلاعات ترافیکی در 36 کشور"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "مکان ها را برای افزودن ایستگاه های راه به مسیر خود ضربه بزنید."; -"whatsnew_viator_title" = "رزرو تور"; - -"whatsnew_viator_message" = "تورهای محبوب را در شهرهای توریستی در سراسر جهان انتخاب کنید."; - "whatsnew_driving_style_title" = "نقشه جدید برای رانندگی"; "whatsnew_driving_style_message" = "حالت ناوبری خودرو برای استفاده آسان تر شد."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "مجوز مکان برنامه صادر نشد"; -"place_page_viator_title" = "جاذبه ها و تورها"; - "button_use" = "استفاده"; "planning_route_manage_route" = "مدیریت مسیر"; @@ -2019,10 +2009,6 @@ "choose_destination" = "یک مقصد را انتخاب کنید"; -"preloader_viator_title" = "تور و فعالیت های غیر معمول را کشف کنید"; - -"preloader_viator_message" = "تور، فعالیت ها، گشت و گذار و ..."; - "preloader_viator_button" = "بیشتر بدانید"; "whats_new_title_route" = "مسیرهای دوچرخه و مسیرهای پیاده روی بهبود یافته است"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "راهنماهای محلی"; -"discovery_button_viator_offline_title" = "تورها را پیدا کنید و چیزهای غیر معمول را انجام دهید"; - -"discovery_button_viator_offline_message" = "تور، چیزهایی که باید انجام شود، تورهای گشت و گذار و بیشتر."; - "discovery_button_viator_error_title" = "خطای بارگذاری داده"; "discovery_button_other_error_message" = "Error loading data"; diff --git a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings index fde6b8789f..6ff9620498 100644 --- a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 autonvuokrausyritystä yli 49 000 autonvuokrauskohteessa."; -"banner_viator_title" = "Kierrosten haku verkossa"; - -"banner_viator_message" = "Hae yli 50 000 kierroksesta ympäri maailmaa."; - /* december */ "whatsnew_traffic" = "Liikennetiedot 36 maassa"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Lisää reittiisi reittipisteitä napauttamalla paikkoja."; -"whatsnew_viator_title" = "Varaa kierros"; - -"whatsnew_viator_message" = "Valitse suosittuja kierroksia turistikaupungeissa ympäri maailman."; - "whatsnew_driving_style_title" = "Uusi karttatyyli ajettaessa"; "whatsnew_driving_style_message" = "Auton navigointitila on helppokäyttöisempi."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Sovelluksen sijainnin käyttöoikeus evättiin"; -"place_page_viator_title" = "Nähtävyydet ja kierrokset"; - "button_use" = "Käytä"; "planning_route_manage_route" = "Hallitse reittiä"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Valitse kohde"; -"preloader_viator_title" = "Tutustu kierroksiin ja epätavallisiin aktiviteetteihin"; - -"preloader_viator_message" = "Kierroksia, aktiviteetteja, nähtävyyksien katselua ja muuta"; - "preloader_viator_button" = "Lisätietoja"; "whats_new_title_route" = "Parannetut pyörä- ja kävelyreitit"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Paikalliset oppaat"; -"discovery_button_viator_offline_title" = "Tutustu kierroksiin ja epätavallisiin aktiviteetteihin"; - -"discovery_button_viator_offline_message" = "Kierroksia, tekemistä, kiertoajeluita ja muuta."; - "discovery_button_viator_error_title" = "Virhe ladattaessa tietoja"; "discovery_button_other_error_message" = "Virhe ladattaessa tietoja"; diff --git a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings index 9369eb6a0b..050d2ae2b3 100644 --- a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 sociétés de location de voiture dans plus de 49.000 points de location de voiture."; -"banner_viator_title" = "Recherche d'excursions en ligne"; - -"banner_viator_message" = "Recherchez parmi plus 50.000 excursions partout dans le monde."; - /* december */ "whatsnew_traffic" = "Données de circulation dans 36 pays"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Appuyez sur les lieux pour ajouter des points de repère à votre itinéraire."; -"whatsnew_viator_title" = "Réserver une excursion"; - -"whatsnew_viator_message" = "Choisissez des excursions populaires dans les villes touristiques du monde entier."; - "whatsnew_driving_style_title" = "Nouveau style de carte pour la conduite"; "whatsnew_driving_style_message" = "Mode de navigation en voiture plus facile à utiliser."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Autorisation de localisation refusée à l'application"; -"place_page_viator_title" = "Attractions et visites"; - "button_use" = "Utiliser"; "planning_route_manage_route" = "Gérer l’itinéraire"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Choisissez une destination"; -"preloader_viator_title" = "Découvrez les excursions et les activités insolites"; - -"preloader_viator_message" = "Excursions, activités, visites et plus"; - "preloader_viator_button" = "En savoir plus"; "whats_new_title_route" = "Les pistes cyclables et voies piétonnes ont été améliorées"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Guides locaux"; -"discovery_button_viator_offline_title" = "Découvrez les visites et les activités insolites"; - -"discovery_button_viator_offline_message" = "Visites, activités, excursions et bien plus encore."; - "discovery_button_viator_error_title" = "Erreur de chargement des données"; "discovery_button_other_error_message" = "Erreur de chargement des données"; diff --git a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings index 746f936a31..21cca2a65f 100644 --- a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 autókölcsönző cég több mint 49.000 autókölcsönzési helyszínen."; -"banner_viator_title" = "Utazások keresése az interneten"; - -"banner_viator_message" = "Több mint 50.000 utazás keresése a világ minden táján."; - /* december */ "whatsnew_traffic" = "Forgalmi adatok 36 országban"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Érintsen meg helyeket iránypontok hozzáadásához az útvonatervhez."; -"whatsnew_viator_title" = "Foglaljon helyet egy utazásra"; - -"whatsnew_viator_message" = "Válasszon népszerű városnéző utakat a világ minden táján."; - "whatsnew_driving_style_title" = "Új térképstílus vezetéshez"; "whatsnew_driving_style_message" = "Az autós navigáció üzemmód használata egyszerűbb lett."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Alkalmazás helymeghatározási engedélye megtagadva"; -"place_page_viator_title" = "Látványosságok és kirándulások"; - "button_use" = "Használat"; "planning_route_manage_route" = "Útvonal kezelése"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Válassza ki a célt"; -"preloader_viator_title" = "Fedezze fel a túrákat és a szokatlan tevékenységeket"; - -"preloader_viator_message" = "Túrák, tevékenységek, városnézés, és sok egyéb"; - "preloader_viator_button" = "Tudjon meg többet"; "whats_new_title_route" = "A kerékpáros és gyalogos útvonalakat is tovább javítottuk"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Helyi idegenvezetők"; -"discovery_button_viator_offline_title" = "Fedezze fel a túrákat és a szokatlan tevékenységeket"; - -"discovery_button_viator_offline_message" = "Kirándulások, teendők, városnéző túrák és egyebek."; - "discovery_button_viator_error_title" = "Hiba az adatok betöltésekor"; "discovery_button_other_error_message" = "Hiba az adatok betöltésekor"; diff --git a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings index b5dd382206..b4539e0744 100644 --- a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 perusahaan penyewaan mobil di lebih dari 49.000 lokasi penyewaan mobil."; -"banner_viator_title" = "Pencarian wisata online"; - -"banner_viator_message" = "Cari di antara lebih dari 50.000 wisata di seluruh dunia."; - /* december */ "whatsnew_traffic" = "Data Lalu Lintas di 36 Negara"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Ketuk tempat untuk menambahkan titik acuan koordinat ke rute Anda."; -"whatsnew_viator_title" = "Pesan tur"; - -"whatsnew_viator_message" = "Pilih wisata populer di kota-kota wisata seluruh dunia."; - "whatsnew_driving_style_title" = "Model Peta Baru untuk Berkendara"; "whatsnew_driving_style_message" = "Mode navigasi mobil menjadi semakin mudah digunakan."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Izin lokasi aplikasi ditolak"; -"place_page_viator_title" = "Objek wisata dan tur"; - "button_use" = "Gunakan"; "planning_route_manage_route" = "Kelola rute"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Pilih destinasi"; -"preloader_viator_title" = "Temukan wisata dan kegiatan yang unik"; - -"preloader_viator_message" = "Wisata, kegiatan, tamasya, dan lain-lain"; - "preloader_viator_button" = "Pelajari selengkapnya"; "whats_new_title_route" = "Rute sepeda dan pejalan kaki sudah diperbagus"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Panduan Lokal"; -"discovery_button_viator_offline_title" = "Temukan wisata dan hal unik yang akan dilakukan"; - -"discovery_button_viator_offline_message" = "Wisata, hal yang akan dilakukan, wisata pemandangan, dan lain sebagainya."; - "discovery_button_viator_error_title" = "Ada kesalahan saat memuat data"; "discovery_button_other_error_message" = "Ada kesalahan saat memuat data"; diff --git a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings index 03d027c864..751a613514 100644 --- a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 società di autonoleggio in oltre 49.000 località."; -"banner_viator_title" = "Ricerca viaggi online"; - -"banner_viator_message" = "Ricerca di oltre 50.000 viaggi organizzati in tutto il mondo."; - /* december */ "whatsnew_traffic" = "Dati sul traffico in 36 Paesi"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Tocca i luoghi e aggiungi waypoint al tuo percorso."; -"whatsnew_viator_title" = "Prenota un tour"; - -"whatsnew_viator_message" = "Scegli i migliori tour nelle città turistiche di tutto il mondo."; - "whatsnew_driving_style_title" = "Nuovo stile di mappa per la guida"; "whatsnew_driving_style_message" = "Modalità di navigazione in auto più semplice da usare."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Autorizzazione a posizione app negata"; -"place_page_viator_title" = "Attrazioni e tour"; - "button_use" = "Usa"; "planning_route_manage_route" = "Gestisci percorso"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Scegli una destinazione"; -"preloader_viator_title" = "Scopri tour e attività insolite"; - -"preloader_viator_message" = "Tour, attività, turismo e altro"; - "preloader_viator_button" = "Ulteriori informazioni"; "whats_new_title_route" = "Piste ciclabili e percorsi pedonali migliorati"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Guide locali"; -"discovery_button_viator_offline_title" = "Scopri tour e cose da fare insolite"; - -"discovery_button_viator_offline_message" = "Tour, cose da fare, giri turistici e altro."; - "discovery_button_viator_error_title" = "Errore nel caricamento dei dati"; "discovery_button_other_error_message" = "Errore nel caricamento dei dati"; diff --git a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings index c415a26a36..5ad0dbb9ae 100644 --- a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 社のレンタカー会社による 49,000 カ所を超えるレンタカー店舗をご利用いただけます。"; -"banner_viator_title" = "オンラインツアー検索"; - -"banner_viator_message" = "世界中から 50,000 件を超えるツアーを検索してください。"; - /* december */ "whatsnew_traffic" = "36か国の交通データ"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "場所をタップしてルートに経由地を追加します。"; -"whatsnew_viator_title" = "ツアーの予約"; - -"whatsnew_viator_message" = "世界中の観光都市で人気のツアーを選択してください。"; - "whatsnew_driving_style_title" = "運転用の新しい地図のスタイル"; "whatsnew_driving_style_message" = "カーナビゲーションモードの使用がより簡単になりました。"; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "アプリの位置情報へのアクセスが拒否されました"; -"place_page_viator_title" = "観光地およびツアー"; - "button_use" = "使う"; "planning_route_manage_route" = "ルートを管理"; @@ -2019,10 +2009,6 @@ "choose_destination" = "目的地を選択"; -"preloader_viator_title" = "旅行や通常ではないアクティビティを検知します"; - -"preloader_viator_message" = "旅行、アクティビティ、観光など"; - "preloader_viator_button" = "詳細情報"; "whats_new_title_route" = "自転車と歩行者用のルートが改良されました"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "地元のガイド"; -"discovery_button_viator_offline_title" = "旅行や変わった活動を探します"; - -"discovery_button_viator_offline_message" = "ツアー、活動、観光ツアーなど。"; - "discovery_button_viator_error_title" = "データの読み込みエラー"; "discovery_button_other_error_message" = "データの読み込みエラー"; diff --git a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings index 4686cf13d0..8d400dadf2 100644 --- a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800개의 자동차 렌트 회사와 49,000곳 이상의 자동차 렌트 지점"; -"banner_viator_title" = "온라인 투어 검색"; - -"banner_viator_message" = "전 세계 50,000개 이상의 투어에서 검색하세요."; - /* december */ "whatsnew_traffic" = "36개국의 교통 데이터"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "경로에 중간 지점을 추가할 위치를 탭하세요."; -"whatsnew_viator_title" = "투어 예약"; - -"whatsnew_viator_message" = "전 세계 관광 도시에서 인기 투어를 선택하세요."; - "whatsnew_driving_style_title" = "운전을 위한 새로운 지도 스타일"; "whatsnew_driving_style_message" = "자동차 네비게이션 모드 사용이 더욱 쉬워졌습니다."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "앱 위치 권한 거부됨"; -"place_page_viator_title" = "관광 명소 및 투어"; - "button_use" = "사용"; "planning_route_manage_route" = "경로 관리"; @@ -2019,10 +2009,6 @@ "choose_destination" = "목적지 선택"; -"preloader_viator_title" = "투어와 특별한 활동 알아보기"; - -"preloader_viator_message" = "투어, 활동, 관광 등"; - "preloader_viator_button" = "자세히 알아보기"; "whats_new_title_route" = "자전거 경로 및 보행자 경로가 개선되었습니다."; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "지역 가이드"; -"discovery_button_viator_offline_title" = "투어 그리고 기억에 남을 일 알아보기"; - -"discovery_button_viator_offline_message" = "투어, 할 일, 관광 투어 등."; - "discovery_button_viator_error_title" = "데이터 로드 중에 오류 발생"; "discovery_button_other_error_message" = "데이터 로드 중에 오류 발생"; diff --git a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings index ac5affa724..7dc70fa73f 100644 --- a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 leiebilfirmaer på over 49 000 steder."; -"banner_viator_title" = "Søk etter omvisninger med guide online"; - -"banner_viator_message" = "Søk blant over 50 000 omvisninger verden over."; - /* december */ "whatsnew_traffic" = "Trafikkdata i 36 land"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Trykk på steder for å legge til rutepunkter."; -"whatsnew_viator_title" = "Bestill omvisning"; - -"whatsnew_viator_message" = "Velg populære omvisninger i turistbyer over hele verden."; - "whatsnew_driving_style_title" = "Ny kartstil for bruk under kjøring"; "whatsnew_driving_style_message" = "Modusen for bilnavigering er blitt enklere å bruke."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "App-plasseringstillatelse avvist"; -"place_page_viator_title" = "Attraksjoner og omvisninger"; - "button_use" = "Bruk"; "planning_route_manage_route" = "Administrere rute"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Velg destinasjon"; -"preloader_viator_title" = "Finn omvisninger og aktiviteter utenom det vanlige"; - -"preloader_viator_message" = "Omvisninger, aktiviteter, sightseeing og mye mer"; - "preloader_viator_button" = "Finn ut mer"; "whats_new_title_route" = "Ruter for syklister og fotgjengere er blitt forbedret"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Lokale guider"; -"discovery_button_viator_offline_title" = "Finn omvisninger og ting å gjøre utenom det vanlige"; - -"discovery_button_viator_offline_message" = "Omvisninger, ting å gjøre, sightseeingturer og mer."; - "discovery_button_viator_error_title" = "En feil oppstod under datalasting"; "discovery_button_other_error_message" = "En feil oppstod under datalasting"; diff --git a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings index 752c254f6d..47d1e535d1 100644 --- a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 autoverhuurbedrijven in meer dan 49.000 locaties voor autoverhuur."; -"banner_viator_title" = "Online tours zoeken"; - -"banner_viator_message" = "Zoek in meer dan 50.000 tours over de hele wereld."; - /* december */ "whatsnew_traffic" = "Verkeersgegevens in 36 Landen"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Tap op plaatsen om tussenstops toe te voegen aan uw route."; -"whatsnew_viator_title" = "Boek een tour"; - -"whatsnew_viator_message" = "Kies populaire tours in toeristische steden over de hele wereld."; - "whatsnew_driving_style_title" = "Nieuwe Kaartstijl voor het Rijden"; "whatsnew_driving_style_message" = "Modus autonavigatie is eenvoudiger te gebruiken."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "App toelating locatie geweigerd"; -"place_page_viator_title" = "Attracties en tours"; - "button_use" = "Gebruiken"; "planning_route_manage_route" = "Route beheren"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Kies een bestemming"; -"preloader_viator_title" = "Ontdek tours en ongewone activiteiten"; - -"preloader_viator_message" = "Tours, activiteiten, bezienswaardigheden en meer"; - "preloader_viator_button" = "Meer leren"; "whats_new_title_route" = "Fietsroutes en wandelroutes zijn verbeterd"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Lokale Gidsen"; -"discovery_button_viator_offline_title" = "Ontdek tours en ongewone activiteiten"; - -"discovery_button_viator_offline_message" = "Rondleidingen, activiteiten, excursies en meer."; - "discovery_button_viator_error_title" = "Fout bij laden gegevens"; "discovery_button_other_error_message" = "Fout bij laden gegevens"; diff --git a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings index 64b3f15ccb..e481d29eb8 100644 --- a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 wypożyczalni samochodów w ponad 49.000 miejscowościach."; -"banner_viator_title" = "Wyszukiwanie podróży online"; - -"banner_viator_message" = "Szukaj spośród 50.000 podróży na całym świecie."; - /* december */ "whatsnew_traffic" = "Dane o ruchu w 36 krajach"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Naciśnij punkt nawigacyjny, aby dodać go do trasy."; -"whatsnew_viator_title" = "Zarezerwuj wycieczkę"; - -"whatsnew_viator_message" = "Wybieraj popularne wycieczki w turystycznych miastach z całego świata."; - "whatsnew_driving_style_title" = "Nowy styl mapy dla jazdy"; "whatsnew_driving_style_message" = "Uproszczono tryb nawigacji pojazdu."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Odmowa dla aplikacji uprawnień do lokalizacji"; -"place_page_viator_title" = "Atrakcje i wycieczki"; - "button_use" = "Użyj"; "planning_route_manage_route" = "Zarządzaj trasą"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Wybierz punkt docelowy"; -"preloader_viator_title" = "Odkrywaj wycieczki i nietypowe aktywności"; - -"preloader_viator_message" = "Turyści, aktywności, zwiedzanie i wiele innych"; - "preloader_viator_button" = "Dowiedz się więcej"; "whats_new_title_route" = "Poprawione trasy rowerowe i piesze"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Przewodniki po okolicy"; -"discovery_button_viator_offline_title" = "Odkrywaj wycieczki i nietypowe atrakcje"; - -"discovery_button_viator_offline_message" = "Wycieczki, atrakcje, zwiedzanie i wiele innych."; - "discovery_button_viator_error_title" = "Błąd wczytywania danych"; "discovery_button_other_error_message" = "Błąd wczytywania danych"; diff --git a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings index b62e666c13..419926200b 100644 --- a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 empresas de aluguer de automóveis em mais de 49.000 locais de aluguer de automóveis."; -"banner_viator_title" = "Pesquisa de turismo online"; - -"banner_viator_message" = "Procurar em mais de 50.000 visitas em todo o mundo."; - /* december */ "whatsnew_traffic" = "Dados de tráfego em 36 países"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Toque nos locais para adicionar pontos de caminho à sua rota."; -"whatsnew_viator_title" = "Reservar um passeio"; - -"whatsnew_viator_message" = "Escolha passeios populares em cidades turísticas em todo o mundo."; - "whatsnew_driving_style_title" = "Novo estilo de mapa para a condução"; "whatsnew_driving_style_message" = "O modo de navegação do carro ficou mais fácil de utilizar."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Permissão de localização da aplicação não autorizada"; -"place_page_viator_title" = "Atrações e passeios"; - "button_use" = "Utilizar"; "planning_route_manage_route" = "Gerir rota"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Escolher um destino"; -"preloader_viator_title" = "Descubrir as excursões e atividades incomuns"; - -"preloader_viator_message" = "Tours, atividades, passeios e muito mais"; - "preloader_viator_button" = "Saiba Mais"; "whats_new_title_route" = "As ciclovias e rotas pedestres foram melhoradas"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Guias locais"; -"discovery_button_viator_offline_title" = "Descobrir excursões e atividades incomuns"; - -"discovery_button_viator_offline_message" = "Excursões, coisas para fazer, passeios turísticos e muito mais."; - "discovery_button_viator_error_title" = "Erro no carregamento de dados"; "discovery_button_other_error_message" = "Erro no carregamento de dados"; diff --git a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings index bfdef3600f..143348731c 100644 --- a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 de firme care închiriază mașini în peste 49.000 de locații de închiriere mașini."; -"banner_viator_title" = "Căutare excursii online"; - -"banner_viator_message" = "Căutați în peste 50.000 de excursii din întreaga lume."; - /* december */ "whatsnew_traffic" = "Date privind traficul în 36 de țări"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Atingeți locații pentru a adăuga puncte de schimbare a direcției pe traseu."; -"whatsnew_viator_title" = "Rezervați un tur"; - -"whatsnew_viator_message" = "Selectați dintre tururile populare din orașe turistice din întreaga lume."; - "whatsnew_driving_style_title" = "Un nou stil de hartă pentru condus"; "whatsnew_driving_style_message" = "Modul de navigare din mașină este acum mai ușor de utilizat."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Permisiune de accesare a locației respinsă"; -"place_page_viator_title" = "Atracții și tururi"; - "button_use" = "Utilizare"; "planning_route_manage_route" = "Administrare traseu"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Alege o destinație"; -"preloader_viator_title" = "Descoperă tururi și activități neobișnuite"; - -"preloader_viator_message" = "Tururi, activități, obiective turistice și multe altele"; - "preloader_viator_button" = "Află mai multe"; "whats_new_title_route" = "Au fost îmbunătățite traseele de biciclete și de pietoni"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Ghizi locali"; -"discovery_button_viator_offline_title" = "Descoperă tururi și activități neobișnuite"; - -"discovery_button_viator_offline_message" = "Tururi, activități, panorame și multe altele."; - "discovery_button_viator_error_title" = "Eroare la încărcarea datelor"; "discovery_button_other_error_message" = "Eroare la încărcarea datelor"; diff --git a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings index af02ba3e3c..2b41197425 100644 --- a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 прокатных компаний в более чем 49 тысячах пунктах проката."; -"banner_viator_title" = "Онлайн-поиск экскурсий"; - -"banner_viator_message" = "Поиск по более чем 50 тысячам экскурсий по всему миру."; - /* december */ "whatsnew_traffic" = "Пробки в 36 странах мира"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Нажмите на объекты, чтобы включить их в маршрут."; -"whatsnew_viator_title" = "Забронируйте экскурсию"; - -"whatsnew_viator_message" = "Выбирайте популярные экскурсии в туристических городах мира."; - "whatsnew_driving_style_title" = "Новый автомобильный стиль карт"; "whatsnew_driving_style_message" = "Режим автомобильной навигации стал удобнее."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Определение местоположения запрещено"; -"place_page_viator_title" = "Экскурсии и достопримечательности"; - "button_use" = "Использовать"; "planning_route_manage_route" = "Изменить маршрут"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Выберите конец маршрута"; -"preloader_viator_title" = "Откройте для себя экскурсии и необычные туры"; - -"preloader_viator_message" = "Туры, достопримечательности, экскурсии и многое другое"; - "preloader_viator_button" = "Посмотреть"; "whats_new_title_route" = "Вело- и пешеходные маршруты стали лучше"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Местные гиды"; -"discovery_button_viator_offline_title" = "Откройте для себя туры и необычные активности"; - -"discovery_button_viator_offline_message" = "Туры, активности, достопримечательности и многое другое"; - "discovery_button_viator_error_title" = "Ошибка загрузки данных"; "discovery_button_other_error_message" = "Ошибка загрузки данных"; diff --git a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings index 15fd0e766e..f97c98cdf8 100644 --- a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 spoločností prenajímajúcich vozidlá vo viac ako 49 000 prevádzkach."; -"banner_viator_title" = "Online vyhľadávanie zájazdov"; - -"banner_viator_message" = "Vyhľadávanie vo viac ako 50 000 zájazdoch po celom svete."; - /* december */ "whatsnew_traffic" = "Dopravné informácie v 36 krajinách"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Ťuknite na miesta, ak chcete do trasy pridať body."; -"whatsnew_viator_title" = "Rezervovať prehliadku"; - -"whatsnew_viator_message" = "Vyberte si obľúbené prehliadky po turistických mestách po celom svete."; - "whatsnew_driving_style_title" = "Nový štýl máp pre jazdu"; "whatsnew_driving_style_message" = "Režim navigácie v aute sa zjednodušil."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Zamietnutý prístup aplikácie k lokalite"; -"place_page_viator_title" = "Atrakcie a prehliadky"; - "button_use" = "Použiť"; "planning_route_manage_route" = "Spravovať trasu"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Vyberte cieľ"; -"preloader_viator_title" = "Objavte výlety a nezvyčajné aktivity"; - -"preloader_viator_message" = "Výlety, aktivity, prehliadky a ďalšie"; - "preloader_viator_button" = "Zistiť viac"; "whats_new_title_route" = "Vylepšili sme cyklotrasy a pešie trasy"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Miestni sprievodcovia"; -"discovery_button_viator_offline_title" = "Objavte výlety a nezvyčajné aktivity"; - -"discovery_button_viator_offline_message" = "Zájazdy, voľnočasové aktivity, okružné jazdy a ďalšie."; - "discovery_button_viator_error_title" = "Chyba pri načítaní dat"; "discovery_button_other_error_message" = "Chyba pri načítaní dat"; diff --git a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings index c9c91e4b05..f799faa4a5 100644 --- a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 biluthyrningsföretag på mer än 49000 biluthyrningsplatser."; -"banner_viator_title" = "Sökning efter turer online"; - -"banner_viator_message" = "Sök bland mer än 50000 turer över hela världen."; - /* december */ "whatsnew_traffic" = "Trafikdata i 36 länder"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Tryck på platser för att lägga till vägpunkter till din rutt."; -"whatsnew_viator_title" = "Boka en tur"; - -"whatsnew_viator_message" = "Välj populära turer i turiststäder över hela världen."; - "whatsnew_driving_style_title" = "En ny kartstil när du kör"; "whatsnew_driving_style_message" = "Bilens navigeringsläge är lättare att använda."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Behörighet till appens plats nekades"; -"place_page_viator_title" = "Attraktioner och turer"; - "button_use" = "Använd"; "planning_route_manage_route" = "Hantera rutt"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Välj en destination"; -"preloader_viator_title" = "Upptäck turer och ovanliga aktiviteter"; - -"preloader_viator_message" = "Turer, aktiviteter, sightseeing med mera"; - "preloader_viator_button" = "Läs mer"; "whats_new_title_route" = "Cykelturer och gångvägar har förbättrats"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Lokala guider"; -"discovery_button_viator_offline_title" = "Upptäck turer och ovanliga saker att göra"; - -"discovery_button_viator_offline_message" = "Turer, saker att göra, sightseeing-turer med mera."; - "discovery_button_viator_error_title" = "Det gick inte att ladda data"; "discovery_button_other_error_message" = "Det gick inte att ladda data"; diff --git a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings index 812d5f33a5..bcfef79065 100644 --- a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 บริษัทเช่ารถในสถานเช่ารถมากกว่า 49,000 แห่ง"; -"banner_viator_title" = "การค้นหาทัวร์ออนไลน์"; - -"banner_viator_message" = "ค้นหาในทัวร์มากกว่า 50,000 แห่งทั่วโลก"; - /* december */ "whatsnew_traffic" = "ข้อมูลการจราจรใน 36 ประเทศ"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "แตะสถานที่เพื่อเพิ่มจุดกำหนดเข้าไปยังเส้นทางของคุณ"; -"whatsnew_viator_title" = "จองทัวร์"; - -"whatsnew_viator_message" = "เลือกทัวร์ยอดนิยมในเมืองท่องเที่ยวทั่วโลก"; - "whatsnew_driving_style_title" = "แผนที่รูปแบบใหม่สำหรับการขับขี่"; "whatsnew_driving_style_message" = "โหมดการนำทางรถยนต์ใช้งานได้ง่ายยิ่งขึ้น"; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "สิทธิ์ตำแหน่งที่ตั้งของแอปถูกปฏิเสธ"; -"place_page_viator_title" = "สถานที่ท่องเที่ยวและทัวร์"; - "button_use" = "ใช้"; "planning_route_manage_route" = "จัดการเส้นทาง"; @@ -2019,10 +2009,6 @@ "choose_destination" = "เลือกปลายทาง"; -"preloader_viator_title" = "ค้นพบทัวร์และกิจกรรมที่แหวกแนว"; - -"preloader_viator_message" = "ทัวร์ กิจกรรม การชมทิวทัศน์ และอื่น ๆ"; - "preloader_viator_button" = "เรียนรู้เพิ่มเติม"; "whats_new_title_route" = "เส้นทางจักรยานและเส้นทางเดินเท้าได้รับการปรับปรุงยิ่งขึ้น"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "มัคคุเทศก์ท้องถิ่น"; -"discovery_button_viator_offline_title" = "ค้นหาทัวร์และเรื่องแหวกแนวที่จะทำ"; - -"discovery_button_viator_offline_message" = "ทัวร์ สิ่งที่จะทำ ทัวร์ชมทิวทัศน์ และอื่น ๆ"; - "discovery_button_viator_error_title" = "ข้อผิดพลาดในการโหลดข้อมูล"; "discovery_button_other_error_message" = "ข้อผิดพลาดในการโหลดข้อมูล"; diff --git a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings index c1a9279728..3a78d1fcaf 100644 --- a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "49.000'den fazla araç kiralama bölgesinde yer alan 800 araç kiralama şirketi."; -"banner_viator_title" = "Çevrimiçi tur arama"; - -"banner_viator_message" = "Dünyanın her yerinden 50.000'den fazla tur içinden arama yapın."; - /* december */ "whatsnew_traffic" = "36 Ülkeden Trafik Verileri"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Güzergâhınıza yol noktası olarak eklemek istediğiniz yerlere dokunun."; -"whatsnew_viator_title" = "Tur rezervasyonu"; - -"whatsnew_viator_message" = "Dünyanın dört bir yanındaki turistik şehirleri kapsayan popüler turları seçin."; - "whatsnew_driving_style_title" = "Sürüş İçin Yeni Harita Stili"; "whatsnew_driving_style_message" = "Araç navigasyon modunu kullanmak şimdi çok daha kolay."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Uygulamanın konum bilgilerine erişim isteği reddedildi"; -"place_page_viator_title" = "Geziler ve turlar"; - "button_use" = "Kullan"; "planning_route_manage_route" = "Güzergâhı yönet"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Bir hedef seçin"; -"preloader_viator_title" = "Turları ve sıra dışı etkinlikleri keşfedin"; - -"preloader_viator_message" = "Turlar, etkinlikler, geziler ve çok daha fazlası"; - "preloader_viator_button" = "Daha fazla bilgi edinin"; "whats_new_title_route" = "Bisiklet ve yaya güzergahları iyileştirildi"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Yerel Rehberler"; -"discovery_button_viator_offline_title" = "Turları ve sıra dışı şeyleri keşfedin"; - -"discovery_button_viator_offline_message" = "Turlar, etkinlikler, şehir gezileri ve daha fazlası."; - "discovery_button_viator_error_title" = "Veri yükleme hatası"; "discovery_button_other_error_message" = "Veri yükleme hatası"; diff --git a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings index bd96f70d19..8342323e16 100644 --- a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 компаній з прокату автомобілів та понад 49 000 агентів."; -"banner_viator_title" = "Онлайн-пошук турів"; - -"banner_viator_message" = "Вибір з понад 50 000 турів у різних куточках світу."; - /* december */ "whatsnew_traffic" = "Дані про трафік у 36 країнах"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Додавання точок до маршруту одним дотиком."; -"whatsnew_viator_title" = "Забронювати екскурсію"; - -"whatsnew_viator_message" = "На ваш вибір — популярні екскурсії в різних куточках світу."; - "whatsnew_driving_style_title" = "Новий дизайн карт для водіїв"; "whatsnew_driving_style_message" = "Режим навігації став ще простішим."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Відмовлено у доступі до функції визначення геолокації"; -"place_page_viator_title" = "Визначні пам'ятки та екскурсії"; - "button_use" = "Використовувати"; "planning_route_manage_route" = "Редагування маршруту"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Вибрати пункт призначення"; -"preloader_viator_title" = "Екскурсії та цікаві ідеї"; - -"preloader_viator_message" = "Екскурсії, розваги, відвідування пам'яток і багато іншого"; - "preloader_viator_button" = "Докладніше"; "whats_new_title_route" = "Вдосконалено велосипедні та пішохідні маршрути"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Місцеві гіди"; -"discovery_button_viator_offline_title" = "Екскурсії та цікаві ідеї"; - -"discovery_button_viator_offline_message" = "Тури, цікаві ідеї, екскурсії та багато іншого."; - "discovery_button_viator_error_title" = "Помилка завантаження даних"; "discovery_button_other_error_message" = "Помилка завантаження даних"; diff --git a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings index 078a7964b3..8bfa2fc7ac 100644 --- a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 công ty thuê ô tô ở hơn 49.000 địa điểm thuê ô tô."; -"banner_viator_title" = "Tìm kiếm tour trực tuyến"; - -"banner_viator_message" = "Tìm hơn 50.000 trên toàn thế giới."; - /* december */ "whatsnew_traffic" = "Dữ liệu Giao thông tại 36 Quốc gia"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "Chạm vào các điểm để thêm điểm tọa độ vào lộ trình của bạn."; -"whatsnew_viator_title" = "Đặt tour du lịch"; - -"whatsnew_viator_message" = "Chọn các tour phổ biến trong các thành phố du lịch trên toàn thế giới."; - "whatsnew_driving_style_title" = "Phong cách Bản đồ Mới cho Lái xe"; "whatsnew_driving_style_message" = "Chế độ điều hướng ô tô dễ sử dụng hơn."; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "Quyền định vị của ứng dụng bị từ chối"; -"place_page_viator_title" = "Các điểm tham quan và du lịch"; - "button_use" = "Sử dụng"; "planning_route_manage_route" = "Quản lý lộ trình"; @@ -2019,10 +2009,6 @@ "choose_destination" = "Chọn một điểm đến"; -"preloader_viator_title" = "Khám phá các tour và hoạt động khác lạ"; - -"preloader_viator_message" = "Tour, hoạt động, ngắm cảnh, v.v…"; - "preloader_viator_button" = "Tìm hiểu thêm"; "whats_new_title_route" = "Các lộ trình đạp xe đạp và lộ trình đi bộ đã được cải thiện"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "Hướng dẫn Địa phương"; -"discovery_button_viator_offline_title" = "Khám phá các tour du lịch và những điều lạ bạn có thể làm"; - -"discovery_button_viator_offline_message" = "Tour du lịch, việc có thể làm, tour ngắm cảnh và nhiều hơn thế nữa."; - "discovery_button_viator_error_title" = "Lỗi tải dữ liệu"; "discovery_button_other_error_message" = "Lỗi tải dữ liệu"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings index eaf4a44b98..fc87719975 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "800 家租车公司,超过 49,000 个租车网点。"; -"banner_viator_title" = "在线导游搜索"; - -"banner_viator_message" = "搜索全世界范围内的 50,000 多位导游。"; - /* december */ "whatsnew_traffic" = "36 个国家/地区的交通数据"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "点按地点即可向您的路线添加路径点。"; -"whatsnew_viator_title" = "预订游览"; - -"whatsnew_viator_message" = "选择全世界旅游城市的热门游览。"; - "whatsnew_driving_style_title" = "新的驾驶地图样式"; "whatsnew_driving_style_message" = "汽车导航模式更加易用。"; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "应用已拒绝地点获取权限"; -"place_page_viator_title" = "景点和游览"; - "button_use" = "使用"; "planning_route_manage_route" = "管理路线"; @@ -2019,10 +2009,6 @@ "choose_destination" = "选择终点"; -"preloader_viator_title" = "探索行程和特殊活动"; - -"preloader_viator_message" = "行程、活动、观光,等等"; - "preloader_viator_button" = "了解更多"; "whats_new_title_route" = "已改进自行车路线和行人路线"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "本地指南"; -"discovery_button_viator_offline_title" = "探索行程和特殊活动"; - -"discovery_button_viator_offline_message" = "旅行、活动、观光,等等。"; - "discovery_button_viator_error_title" = "加载数据时出错"; "discovery_button_other_error_message" = "加载数据时出错"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings index b89b6716c5..33d38229da 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings @@ -1782,10 +1782,6 @@ "banner_rentalcars_message" = "營運 49,000 多個租車地點的 800 家租車公司。"; -"banner_viator_title" = "線上行程搜尋"; - -"banner_viator_message" = "搜尋全世界 50,000 多個行程。"; - /* december */ "whatsnew_traffic" = "36 個國家的交通資料"; @@ -1861,10 +1857,6 @@ "whatsnew_waypoints_message" = "點按地點,即可向您的路線新增路徑點。"; -"whatsnew_viator_title" = "預訂行程"; - -"whatsnew_viator_message" = "選擇全世界旅遊城市的熱門行程。"; - "whatsnew_driving_style_title" = "新的駕駛地圖模式"; "whatsnew_driving_style_message" = "汽車導航模式更好用。"; @@ -1977,8 +1969,6 @@ "toast_location_permission_denied" = "應用程式地點存取權限被拒絕"; -"place_page_viator_title" = "景點和行程"; - "button_use" = "使用"; "planning_route_manage_route" = "管理路線"; @@ -2019,10 +2009,6 @@ "choose_destination" = "選擇目的地"; -"preloader_viator_title" = "探索行程與特殊活動"; - -"preloader_viator_message" = "行程、活動、觀光等等"; - "preloader_viator_button" = "進一步了解"; "whats_new_title_route" = "改善自行車路線與行人路線"; @@ -2127,10 +2113,6 @@ "discovery_button_subtitle_local_guides" = "本地指南"; -"discovery_button_viator_offline_title" = "探索行程與特殊活動"; - -"discovery_button_viator_offline_message" = "旅行、活動、觀光及其他。"; - "discovery_button_viator_error_title" = "載入數據時,發生錯誤"; "discovery_button_other_error_message" = "載入數據時,發生錯誤"; diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index d78859b9d7..2dd320b99e 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -269,7 +269,6 @@ 34ABA6251C2D551900FE1BEC /* MWMInputValidatorFactory.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA6231C2D551900FE1BEC /* MWMInputValidatorFactory.mm */; }; 34ABA6291C2D567B00FE1BEC /* MWMInputLoginValidator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA6271C2D567B00FE1BEC /* MWMInputLoginValidator.mm */; }; 34ABA62D1C2D57D500FE1BEC /* MWMInputPasswordValidator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA62B1C2D57D500FE1BEC /* MWMInputPasswordValidator.mm */; }; - 34AC8FBB1EFBAD1900E7F910 /* ViatorElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34AC8FB91EFBAD1900E7F910 /* ViatorElement.swift */; }; 34AC8FD11EFC02C000E7F910 /* MWMRoutePoint.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34AC8FC71EFC01F500E7F910 /* MWMRoutePoint.mm */; }; 34AC8FDB1EFC07FE00E7F910 /* UILabel+NumberOfVisibleLines.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34AC8FD91EFC062400E7F910 /* UILabel+NumberOfVisibleLines.swift */; }; 34B1104C1FC8474D0010F76F /* CoreActionSheetPicker.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34B1104A1FC843420010F76F /* CoreActionSheetPicker.framework */; }; @@ -335,10 +334,6 @@ 34E776141F14B17F003040B3 /* AvailableArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E776121F14B17F003040B3 /* AvailableArea.swift */; }; 34E7761F1F14DB48003040B3 /* PlacePageArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E7761D1F14DB48003040B3 /* PlacePageArea.swift */; }; 34E776331F15FAC2003040B3 /* MWMPlacePageManagerHelper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34E776311F15FAC2003040B3 /* MWMPlacePageManagerHelper.mm */; }; - 34EE259E1EFA682D00F870AB /* PPViatorCarouselCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE259C1EFA682D00F870AB /* PPViatorCarouselCell.swift */; }; - 34EE25A21EFA68BC00F870AB /* PPViatorCarouselCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34EE25A01EFA68BC00F870AB /* PPViatorCarouselCell.xib */; }; - 34EE25A61EFA6AD400F870AB /* ViatorElement.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34EE25A41EFA6AD400F870AB /* ViatorElement.xib */; }; - 34EE25AA1EFA726400F870AB /* ViatorItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE25A81EFA726400F870AB /* ViatorItemModel.swift */; }; 34EF94291C05A6F30050B714 /* MWMSegue.mm in Sources */ = {isa = PBXBuildFile; fileRef = F607C18D1C047FDC00B53A87 /* MWMSegue.mm */; }; 34F1ADD31F6BC09E001CE79D /* PPPReview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F1ADD11F6BC09E001CE79D /* PPPReview.swift */; }; 34F4072C1E9E1AFF00E57AC0 /* Banner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F4071D1E9E1AFF00E57AC0 /* Banner.swift */; }; @@ -619,7 +614,6 @@ F69CE8DA1E5C5088002B5881 /* PPHotelCarouselCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F69CE8D81E5C5088002B5881 /* PPHotelCarouselCell.xib */; }; F69CE8DE1E5C51AB002B5881 /* CarouselElement.xib in Resources */ = {isa = PBXBuildFile; fileRef = F69CE8DC1E5C51AB002B5881 /* CarouselElement.xib */; }; F6A2184A1CA3F26800BE2CC6 /* MWMEditorViralActivityItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6A218481CA3F26800BE2CC6 /* MWMEditorViralActivityItem.mm */; }; - F6A806531FDAE51600D4D26F /* DiscoveryViatorCollectionHolderCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6A806511FDAE51600D4D26F /* DiscoveryViatorCollectionHolderCell.xib */; }; F6BD1D211CA412920047B8E8 /* MWMOsmAuthAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BD1D1F1CA412920047B8E8 /* MWMOsmAuthAlert.mm */; }; F6BD1D241CA412E40047B8E8 /* MWMOsmAuthAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6BD1D221CA412E30047B8E8 /* MWMOsmAuthAlert.xib */; }; F6C16A671F9626B2000FE296 /* ReviewsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3430291B1F87BC3000D0A07C /* ReviewsViewController.xib */; }; @@ -1197,7 +1191,6 @@ 34ABA62E1C2D58F300FE1BEC /* MWMInputEmailValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMInputEmailValidator.h; sourceTree = ""; }; 34ABA62F1C2D58F300FE1BEC /* MWMInputEmailValidator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMInputEmailValidator.mm; sourceTree = ""; }; 34AC7F901F06538B0050DE2B /* MWMPlacePageTaxiProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageTaxiProvider.h; sourceTree = ""; }; - 34AC8FB91EFBAD1900E7F910 /* ViatorElement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViatorElement.swift; sourceTree = ""; }; 34AC8FC71EFC01F500E7F910 /* MWMRoutePoint.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMRoutePoint.mm; sourceTree = ""; }; 34AC8FC81EFC01F500E7F910 /* MWMRoutePoint+CPP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MWMRoutePoint+CPP.h"; sourceTree = ""; }; 34AC8FD91EFC062400E7F910 /* UILabel+NumberOfVisibleLines.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+NumberOfVisibleLines.swift"; sourceTree = ""; }; @@ -1290,10 +1283,6 @@ 34E7761D1F14DB48003040B3 /* PlacePageArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlacePageArea.swift; sourceTree = ""; }; 34E776301F15FAC2003040B3 /* MWMPlacePageManagerHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageManagerHelper.h; sourceTree = ""; }; 34E776311F15FAC2003040B3 /* MWMPlacePageManagerHelper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPlacePageManagerHelper.mm; sourceTree = ""; }; - 34EE259C1EFA682D00F870AB /* PPViatorCarouselCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PPViatorCarouselCell.swift; sourceTree = ""; }; - 34EE25A01EFA68BC00F870AB /* PPViatorCarouselCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PPViatorCarouselCell.xib; sourceTree = ""; }; - 34EE25A41EFA6AD400F870AB /* ViatorElement.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ViatorElement.xib; sourceTree = ""; }; - 34EE25A81EFA726400F870AB /* ViatorItemModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViatorItemModel.swift; sourceTree = ""; }; 34F1ADD11F6BC09E001CE79D /* PPPReview.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PPPReview.swift; sourceTree = ""; }; 34F4071D1E9E1AFF00E57AC0 /* Banner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Banner.swift; sourceTree = ""; }; 34F4071E1E9E1AFF00E57AC0 /* BannersCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BannersCache.swift; sourceTree = ""; }; @@ -1687,7 +1676,6 @@ F69CE8DC1E5C51AB002B5881 /* CarouselElement.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CarouselElement.xib; sourceTree = ""; }; F6A218471CA3F26800BE2CC6 /* MWMEditorViralActivityItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorViralActivityItem.h; sourceTree = ""; }; F6A218481CA3F26800BE2CC6 /* MWMEditorViralActivityItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorViralActivityItem.mm; sourceTree = ""; }; - F6A806511FDAE51600D4D26F /* DiscoveryViatorCollectionHolderCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DiscoveryViatorCollectionHolderCell.xib; sourceTree = ""; }; F6BBF2C41B4FFB72000CF8E2 /* MWMLocationAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMLocationAlert.h; sourceTree = ""; }; F6BBF2C51B4FFB72000CF8E2 /* MWMLocationAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMLocationAlert.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; F6BBF2C71B4FFB8C000CF8E2 /* MWMLocationAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMLocationAlert.xib; sourceTree = ""; }; @@ -3235,18 +3223,6 @@ path = AvailableArea; sourceTree = ""; }; - 34EE259B1EFA681000F870AB /* ViatorCells */ = { - isa = PBXGroup; - children = ( - 34EE259C1EFA682D00F870AB /* PPViatorCarouselCell.swift */, - 34EE25A01EFA68BC00F870AB /* PPViatorCarouselCell.xib */, - 34AC8FB91EFBAD1900E7F910 /* ViatorElement.swift */, - 34EE25A41EFA6AD400F870AB /* ViatorElement.xib */, - 34EE25A81EFA726400F870AB /* ViatorItemModel.swift */, - ); - path = ViatorCells; - sourceTree = ""; - }; 34F4071C1E9E1AFF00E57AC0 /* Ads */ = { isa = PBXGroup; children = ( @@ -4063,7 +4039,6 @@ F6E2FCC11E097B9F0083EBEC /* RegularCell */, F6E2FCC61E097B9F0083EBEC /* TaxiCell */, F68BDF181EF80DCC0009BB81 /* UGC */, - 34EE259B1EFA681000F870AB /* ViatorCells */, ); path = Content; sourceTree = ""; @@ -4328,7 +4303,6 @@ F603E05C1FDE9703006B84D6 /* DiscoverySearchCollectionHolderCell.xib */, F5BD246A7E6BE8CD8600EDD9 /* DiscoverySpinnerCell.swift */, F61757E71FC72CDE000AD0D0 /* DiscoverySpinnerCell.xib */, - F6A806511FDAE51600D4D26F /* DiscoveryViatorCollectionHolderCell.xib */, F6E407CD1FC45EF5001F7821 /* MWMDiscoveryController.h */, F6E407CE1FC45EF5001F7821 /* MWMDiscoveryController.mm */, F6E407D21FC4722F001F7821 /* MWMDiscoveryController.xib */, @@ -4556,7 +4530,6 @@ 4560F585213D53C100CC736C /* shaders_metal.metallib in Resources */, F642D1231F0F9D1D005E3C25 /* ugc_types.csv in Resources */, 34E50DFB1F6FCC96008EED49 /* UGCReviewCell.xib in Resources */, - 34EE25A21EFA68BC00F870AB /* PPViatorCarouselCell.xib in Resources */, 3495433D1EB22D9600F08F73 /* MPAdBrowserController.xib in Resources */, 6741A9531BF340DE002C974C /* 01_dejavusans.ttf in Resources */, 6741A9541BF340DE002C974C /* 02_droidsans-fallback.ttf in Resources */, @@ -4614,7 +4587,6 @@ 6741A9881BF340DE002C974C /* MWMAPIBarView.xib in Resources */, F6E2FE641E097BA00083EBEC /* MWMBookmarkCell.xib in Resources */, B366130B20D5E2E000E7DC3E /* CatalogCategoryCell.xib in Resources */, - 34EE25A61EFA6AD400F870AB /* ViatorElement.xib in Resources */, F6E2FD951E097BA00083EBEC /* MWMBookmarkColorViewController.xib in Resources */, F6E2FD9B1E097BA00083EBEC /* MWMBookmarkTitleCell.xib in Resources */, 4501B1942077C35A001B9173 /* resources-xxxhdpi_clear in Resources */, @@ -4681,7 +4653,6 @@ 33BCD61621777A7400CA30B4 /* BookmarksSharingFlow.storyboard in Resources */, F6E2FE011E097BA00083EBEC /* MWMOpeningHoursClosedSpanTableViewCell.xib in Resources */, F6E2FE071E097BA00083EBEC /* MWMOpeningHoursDaysSelectorTableViewCell.xib in Resources */, - F6A806531FDAE51600D4D26F /* DiscoveryViatorCollectionHolderCell.xib in Resources */, 3DF9C22B207CC14A00DA0793 /* taxi_places in Resources */, F6E2FE0D1E097BA00083EBEC /* MWMOpeningHoursDeleteScheduleTableViewCell.xib in Resources */, F6E2FE161E097BA00083EBEC /* MWMOpeningHoursTimeSelectorTableViewCell.xib in Resources */, @@ -4935,7 +4906,6 @@ 349D1ABC1E2D05EF004A2006 /* SearchBar.swift in Sources */, F6E2FD7A1E097BA00083EBEC /* MWMMapDownloaderDefaultDataSource.mm in Sources */, 34E50DF81F6FCC96008EED49 /* UGCReviewCell.swift in Sources */, - 34AC8FBB1EFBAD1900E7F910 /* ViatorElement.swift in Sources */, F6E2FF3F1E097BA00083EBEC /* MWMSearchTableViewController.mm in Sources */, F6E2FDE01E097BA00083EBEC /* MWMEditorViewController.mm in Sources */, F69739DC1FD6ECCE00FDA07D /* DiscoveryLocalExpertCell.swift in Sources */, @@ -5265,7 +5235,6 @@ F69CE8D61E5C49B4002B5881 /* PPHotelCarouselCell.swift in Sources */, F6FEA82E1C58F108007223CC /* MWMButton.mm in Sources */, 3445324E1F714FD70059FBCC /* UGCAddReviewController.swift in Sources */, - 34EE259E1EFA682D00F870AB /* PPViatorCarouselCell.swift in Sources */, 34B924431DC8A29C0008D971 /* MWMMailViewController.mm in Sources */, 340475651E081A4600C92850 /* MWMRouter.mm in Sources */, 47E3C72F2111F472008B3B27 /* CoverVerticalModalTransitioning.swift in Sources */, @@ -5289,7 +5258,6 @@ 4788739220EE326500F6826B /* VerticallyAlignedButton.swift in Sources */, 3444DFDE1F18A5AF00E73099 /* SideButtonsArea.swift in Sources */, 3451F4EE1F026DAF00A981F2 /* PlacePageTaxiCell.swift in Sources */, - 34EE25AA1EFA726400F870AB /* ViatorItemModel.swift in Sources */, 3404F48E2028966C0090E401 /* BMCViewModel.swift in Sources */, 3467CEB6202C6FA900D3C670 /* BMCNotificationsCell.swift in Sources */, 34B846A32029DFEB0081ECCD /* BMCPermissionsHeader.swift in Sources */, diff --git a/iphone/Maps/UI/Discovery/DiscoveryCollectionHolderCell.swift b/iphone/Maps/UI/Discovery/DiscoveryCollectionHolderCell.swift index fdf4390c47..2946b40547 100644 --- a/iphone/Maps/UI/Discovery/DiscoveryCollectionHolderCell.swift +++ b/iphone/Maps/UI/Discovery/DiscoveryCollectionHolderCell.swift @@ -3,22 +3,6 @@ class DiscoveryCollectionHolder: UITableViewCell { @IBOutlet fileprivate weak var header: UILabel! } -@objc(MWMDiscoveryViatorCollectionHolderCell) -final class DiscoveryViatorCollectionHolderCell: DiscoveryCollectionHolder { - typealias Tap = () -> Void - private var tap: Tap? - - @objc func config(tap: @escaping Tap) { - self.tap = tap - header.text = L("discovery_button_subtitle_things_to_do").uppercased() - collectionView.register(cellClass: ViatorElement.self) - } - - @IBAction private func onTap() { - tap?() - } -} - @objc(MWMDiscoveryLocalExpertCollectionHolderCell) final class DiscoveryLocalExpertCollectionHolderCell: DiscoveryCollectionHolder { @objc func config() { diff --git a/iphone/Maps/UI/Discovery/DiscoveryControllerViewModel.hpp b/iphone/Maps/UI/Discovery/DiscoveryControllerViewModel.hpp index 353638acab..cb9797b1c7 100644 --- a/iphone/Maps/UI/Discovery/DiscoveryControllerViewModel.hpp +++ b/iphone/Maps/UI/Discovery/DiscoveryControllerViewModel.hpp @@ -4,7 +4,6 @@ #include "map/search_product_info.hpp" #include "partners_api/locals_api.hpp" -#include "partners_api/viator_api.hpp" #include "search/result.hpp" @@ -38,14 +37,12 @@ public: } } - void SetViator(std::vector const & viator) { m_viator = viator; } void SetExperts(std::vector const & experts) { m_experts = experts; } size_t GetItemsCount(ItemType const type) const { switch (type) { - case ItemType::Viator: return m_viator.size(); case ItemType::Attractions: return m_attractions.m_results.GetCount(); case ItemType::Cafes: return m_cafes.m_results.GetCount(); case ItemType::Hotels: return m_hotels.m_results.GetCount(); @@ -53,12 +50,6 @@ public: } } - viator::Product const & GetViatorAt(size_t const index) const - { - CHECK_LESS(index, m_viator.size(), ("Incorrect viator index:", index)); - return m_viator[index]; - } - search::Result const & GetAttractionAt(size_t const index) const { return m_attractions.GetSearchResultAt(index); @@ -128,7 +119,6 @@ private: UISearchResults m_attractions; UISearchResults m_cafes; UISearchResults m_hotels; - std::vector m_viator; std::vector m_experts; }; } // namespace discovery diff --git a/iphone/Maps/UI/Discovery/DiscoveryOnlineTemplateCell.swift b/iphone/Maps/UI/Discovery/DiscoveryOnlineTemplateCell.swift index 56d4982d88..533bc53dd2 100644 --- a/iphone/Maps/UI/Discovery/DiscoveryOnlineTemplateCell.swift +++ b/iphone/Maps/UI/Discovery/DiscoveryOnlineTemplateCell.swift @@ -1,6 +1,5 @@ @objc(MWMDiscoveryOnlineTemplateType) enum DiscoveryOnlineTemplateType: Int { - case viator case locals } @@ -27,9 +26,6 @@ final class DiscoveryOnlineTemplateCell: MWMTableViewCell { @objc func config(type: DiscoveryOnlineTemplateType, needSpinner: Bool, tap: @escaping Tap) { switch type { - case .viator: - title.text = L("preloader_viator_title") - subtitle.text = L("preloader_viator_message") case .locals: title.text = needSpinner ? L("discovery_button_other_loading_message") : L("discovery_button_other_error_message") diff --git a/iphone/Maps/UI/Discovery/DiscoveryViatorCollectionHolderCell.xib b/iphone/Maps/UI/Discovery/DiscoveryViatorCollectionHolderCell.xib deleted file mode 100644 index c5aab3e490..0000000000 --- a/iphone/Maps/UI/Discovery/DiscoveryViatorCollectionHolderCell.xib +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/UI/Discovery/MWMDiscoveryController.mm b/iphone/Maps/UI/Discovery/MWMDiscoveryController.mm index 113e724dfd..219033d515 100644 --- a/iphone/Maps/UI/Discovery/MWMDiscoveryController.mm +++ b/iphone/Maps/UI/Discovery/MWMDiscoveryController.mm @@ -18,7 +18,6 @@ #include "map/search_product_info.hpp" #include "partners_api/locals_api.hpp" -#include "partners_api/viator_api.hpp" #include "search/result.hpp" @@ -51,14 +50,6 @@ struct Callback m_refreshSection(type); } - void operator()(uint32_t const requestId, vector const & products) const - { - CHECK(m_setViatorProducts, ()); - CHECK(m_refreshSection, ()); - m_setViatorProducts(products); - m_refreshSection(ItemType::Viator); - } - void operator()(uint32_t const requestId, vector const & experts) const { CHECK(m_setLocalExperts, ()); @@ -70,12 +61,10 @@ struct Callback using SetSearchResults = function const & productInfo, m2::PointD const & viewportCenter, ItemType const type)>; - using SetViatorProducts = function const & viator)>; using SetLocalExperts = function const & experts)>; using RefreshSection = function; SetSearchResults m_setSearchResults; - SetViatorProducts m_setViatorProducts; SetLocalExperts m_setLocalExperts; RefreshSection m_refreshSection; }; @@ -112,7 +101,6 @@ struct Callback cb.m_setLocalExperts = bind(&DiscoveryControllerViewModel::SetExperts, &m_model, _1); cb.m_setSearchResults = bind(&DiscoveryControllerViewModel::SetSearchResults, &m_model, _1, _2, _3, _4); - cb.m_setViatorProducts = bind(&DiscoveryControllerViewModel::SetViator, &m_model, _1); cb.m_refreshSection = [self](ItemType const type) { [self.tableManager reloadItem:type]; }; } return self; @@ -158,12 +146,6 @@ struct Callback MWMEyeDiscoveryEvent eyeEvent; switch (type) { - case ItemType::Viator: - [self openUrl:[NSURL URLWithString:@(m_model.GetViatorAt(index).m_pageUrl.c_str())]]; - dest = kStatExternal; - CHECK(false, ("Not reachable")); - return; - break; case ItemType::LocalExperts: if (index == m_model.GetItemsCount(type)) { @@ -280,7 +262,6 @@ struct Callback case ItemType::Attractions: getRoutePointInfo(m_model.GetAttractionAt(index)); break; case ItemType::Cafes: getRoutePointInfo(m_model.GetCafeAt(index)); break; case ItemType::Hotels: getRoutePointInfo(m_model.GetHotelAt(index)); break; - case ItemType::Viator: case ItemType::LocalExperts: CHECK(false, ("Attempt to route to item with type:", static_cast(type))); break; @@ -306,22 +287,11 @@ struct Callback - (void)openURLForItem:(discovery::ItemType const)type { - CHECK(type == ItemType::Viator || type == ItemType::LocalExperts, + CHECK(type == ItemType::LocalExperts, ("Attempt to open url for item with type:", static_cast(type))); auto & f = GetFramework(); - auto const url = - type == ItemType::Viator ? f.GetDiscoveryViatorUrl() : f.GetDiscoveryLocalExpertsUrl(); - + auto const url = f.GetDiscoveryLocalExpertsUrl(); [self openUrl:[NSURL URLWithString:@(url.c_str())]]; } -- (void)tapOnLogo:(discovery::ItemType const)type -{ - CHECK(type == ItemType::Viator, - ("Attempt to open url for item with type:", static_cast(type))); - [Statistics logEvent:kStatPlacepageSponsoredLogoSelected - withParameters:@{kStatProvider: StatProvider(type), kStatPlacement: kStatDiscovery}]; - [self openURLForItem:type]; -} - @end diff --git a/iphone/Maps/UI/Discovery/MWMDiscoveryTableManager.mm b/iphone/Maps/UI/Discovery/MWMDiscoveryTableManager.mm index df15203e9c..7a8affb911 100644 --- a/iphone/Maps/UI/Discovery/MWMDiscoveryTableManager.mm +++ b/iphone/Maps/UI/Discovery/MWMDiscoveryTableManager.mm @@ -8,7 +8,6 @@ #include "map/place_page_info.hpp" #include "partners_api/locals_api.hpp" -#include "partners_api/viator_api.hpp" #include "search/result.hpp" @@ -35,7 +34,6 @@ NSString * StatProvider(ItemType const type) { switch (type) { - case ItemType::Viator: return kStatViator; case ItemType::LocalExperts: return kStatLocalsProvider; case ItemType::Attractions: return kStatSearchAttractions; case ItemType::Cafes: return kStatSearchRestaurants; @@ -139,13 +137,13 @@ string GetDistance(m2::PointD const & from, m2::PointD const & to) withParameters:@{ kStatProvider: StatProvider(type), kStatPlacement: kStatDiscovery, - kStatState: self.isOnline ? kStatOnline : kStatOffline + kStatState: self.hasOnlineSections ? kStatOnline : kStatOffline }]; } - (void)errorAtItem:(ItemType const)type { - CHECK(type == ItemType::Viator || type == ItemType::LocalExperts, + CHECK(type == ItemType::LocalExperts, ("Error on item with type:", static_cast(type))); m_loadingTypes.erase(remove(m_loadingTypes.begin(), m_loadingTypes.end(), type), m_loadingTypes.end()); @@ -161,7 +159,10 @@ string GetDistance(m2::PointD const & from, m2::PointD const & to) #pragma mark - Private -- (BOOL)isOnline { return find(m_types.begin(), m_types.end(), ItemType::Viator) != m_types.end(); } +- (BOOL)hasOnlineSections +{ + return find(m_types.begin(), m_types.end(), ItemType::LocalExperts) != m_types.end(); +} - (void)removeItem:(ItemType const)type { @@ -186,7 +187,6 @@ string GetDistance(m2::PointD const & from, m2::PointD const & to) [tv registerWithCellClass:[MWMDiscoverySpinnerCell class]]; [tv registerWithCellClass:[MWMDiscoveryOnlineTemplateCell class]]; [tv registerWithCellClass:[MWMDiscoverySearchCollectionHolderCell class]]; - [tv registerWithCellClass:[MWMDiscoveryViatorCollectionHolderCell class]]; [tv registerWithCellClass:[MWMDiscoveryLocalExpertCollectionHolderCell class]]; [tv registerWithCellClass:[MWMDiscoveryBookingCollectionHolderCell class]]; [tv registerWithCellClass:[MWMDiscoveryNoResultsCell class]]; @@ -220,22 +220,6 @@ string GetDistance(m2::PointD const & from, m2::PointD const & to) return cell; } -- (MWMDiscoveryViatorCollectionHolderCell *)viatorCollectionHolderCell:(NSIndexPath *)indexPath -{ - Class cls = [MWMDiscoveryViatorCollectionHolderCell class]; - auto cell = static_cast( - [self.tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]); - auto collection = static_cast(cell.collectionView); - [cell configWithTap:^{ - [self.delegate tapOnLogo:ItemType::Viator]; - }]; - - collection.delegate = self; - collection.dataSource = self; - collection.itemType = ItemType::Viator; - return cell; -} - - (MWMDiscoveryLocalExpertCollectionHolderCell *)localExpertsCollectionHolderCell: (NSIndexPath *)indexPath { @@ -289,7 +273,6 @@ string GetDistance(m2::PointD const & from, m2::PointD const & to) switch (type) { - case ItemType::Viator: case ItemType::LocalExperts: { if (isLoading || isFailed) @@ -297,16 +280,14 @@ string GetDistance(m2::PointD const & from, m2::PointD const & to) Class cls = [MWMDiscoveryOnlineTemplateCell class]; auto cell = static_cast( [tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]); - [cell configWithType:type == ItemType::Viator ? MWMDiscoveryOnlineTemplateTypeViator : - MWMDiscoveryOnlineTemplateTypeLocals + [cell configWithType:MWMDiscoveryOnlineTemplateTypeLocals needSpinner:isLoading tap:^{ [self.delegate openURLForItem:type]; }]; return cell; } - return type == ItemType::Viator ? [self viatorCollectionHolderCell:indexPath] - : [self localExpertsCollectionHolderCell:indexPath]; + return [self localExpertsCollectionHolderCell:indexPath]; } case ItemType::Attractions: case ItemType::Cafes: @@ -343,11 +324,7 @@ string GetDistance(m2::PointD const & from, m2::PointD const & to) numberOfItemsInSection:(NSInteger)section { auto const count = self.model().GetItemsCount(collectionView.itemType); - auto type = collectionView.itemType; - if (type != ItemType::Viator) - return count > 0 ? count + 1 : 0; - - return count; + return count > 0 ? count + 1 : 0; } - (UICollectionViewCell *)collectionView:(MWMDiscoveryCollectionView *)collectionView @@ -395,28 +372,6 @@ string GetDistance(m2::PointD const & from, m2::PointD const & to) }]; return cell; } - case ItemType::Viator: - { - Class cls = [MWMViatorElement class]; - auto cell = static_cast( - [collectionView dequeueReusableCellWithCellClass:cls indexPath:indexPath]); - auto const & v = model.GetViatorAt(indexPath.row); - auto imageURL = [NSURL URLWithString:@(v.m_photoUrl.c_str())]; - auto pageURL = [NSURL URLWithString:@(v.m_pageUrl.c_str())]; - - tie(ratingValue, ratingType) = FormattedRating(v.m_rating); - - auto viatorModel = [[MWMViatorItemModel alloc] - initWithImageURL:imageURL - pageURL:pageURL - title:@(v.m_title.c_str()) - ratingFormatted:ratingValue - ratingType:ratingType - duration:@(v.m_duration.c_str()) - price:@(v.m_priceFormatted.c_str())]; - cell.model = viatorModel; - return cell; - } case ItemType::LocalExperts: { if (indexPath.row == model.GetItemsCount(type)) diff --git a/iphone/Maps/UI/Discovery/MWMDiscoveryTapDelegate.h b/iphone/Maps/UI/Discovery/MWMDiscoveryTapDelegate.h index 399e43cabe..422738d02b 100644 --- a/iphone/Maps/UI/Discovery/MWMDiscoveryTapDelegate.h +++ b/iphone/Maps/UI/Discovery/MWMDiscoveryTapDelegate.h @@ -5,6 +5,5 @@ - (void)tapOnItem:(discovery::ItemType const)type atIndex:(size_t const)index; - (void)routeToItem:(discovery::ItemType const)type atIndex:(size_t const)index; - (void)openURLForItem:(discovery::ItemType const)type; -- (void)tapOnLogo:(discovery::ItemType const)type; @end diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageData.h b/iphone/Maps/UI/PlacePage/MWMPlacePageData.h index f113f649a4..67118fc09b 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageData.h +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageData.h @@ -46,7 +46,6 @@ enum class Sections HotelDescription, HotelFacilities, HotelReviews, - SpecialProjects, Metainfo, Ad, Buttons, @@ -92,11 +91,6 @@ enum class HotelReviewsRow ShowMore }; -enum class SpecialProject -{ - Viator -}; - enum class MetainfoRows { OpeningHours, @@ -139,7 +133,6 @@ using NewSectionsAreReady = void (^)(NSRange const & range, MWMPlacePageData * d } // namespace place_page @class MWMGalleryItemModel; -@class MWMViatorItemModel; @class MWMUGCViewModel; @class MWMUGCReviewModel; @class MWMUGCRatingValueType; @@ -206,10 +199,6 @@ using NewSectionsAreReady = void (^)(NSRange const & range, MWMPlacePageData * d - (ftraits::UGCRatingCategories)ugcRatingCategories; - (void)setUGCUpdateFrom:(MWMUGCReviewModel *)reviewModel; -// Viator -- (void)fillOnlineViatorSection; -- (NSArray *)viatorItems; - // Route points - (RouteMarkType)routeMarkType; - (size_t)intermediateIndex; @@ -244,7 +233,6 @@ using NewSectionsAreReady = void (^)(NSRange const & range, MWMPlacePageData * d - (std::vector const &)hotelFacilitiesRows; - (std::vector const &)hotelReviewsRows; - (std::vector const &)metainfoRows; -- (std::vector const &)specialProjectRows; - (std::vector const &)adRows; - (std::vector const &)buttonsRows; @@ -257,7 +245,6 @@ using NewSectionsAreReady = void (^)(NSRange const & range, MWMPlacePageData * d - (BOOL)isApi; - (BOOL)isBooking; - (BOOL)isOpentable; -- (BOOL)isViator; - (BOOL)isPartner; - (BOOL)isHolidayObject; - (BOOL)isBookingSearch; diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm index 9f2cb76d47..fc3574a5c7 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm @@ -35,7 +35,6 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; @property(copy, nonatomic) NSString * cachedMinPrice; @property(nonatomic) id nativeAd; @property(copy, nonatomic) NSArray * photos; -@property(copy, nonatomic) NSArray * viatorItems; @property(nonatomic) NSNumberFormatter * currencyFormatter; @property(nonatomic, readwrite) MWMUGCViewModel * ugc; @property(nonatomic) NSInteger bookingDiscount; @@ -49,7 +48,6 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; std::vector m_sections; std::vector m_previewRows; - std::vector m_specialProjectRows; std::vector m_metainfoRows; std::vector m_adRows; std::vector m_buttonsRows; @@ -253,7 +251,7 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; m_previewRows.push_back(PreviewRows::Space); NSAssert(!m_previewRows.empty(), @"Preview row's can't be empty!"); - if (network_policy::CanUseNetwork() && m_info.HasBanner() && ![self isViator]) + if (network_policy::CanUseNetwork() && m_info.HasBanner()) { __weak auto wSelf = self; [[MWMBannersCache cache] @@ -342,69 +340,6 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; m_buttonsRows.push_back(ButtonsRows::AddBusiness); } -- (void)insertSpecialProjectsSectionWithProject:(SpecialProject)project -{ - auto const begin = m_sections.begin(); - auto const end = m_sections.end(); - - if (std::find(begin, end, Sections::SpecialProjects) != end) - return; - - m_sections.insert(find(begin, end, Sections::Preview) + 1, Sections::SpecialProjects); - m_specialProjectRows.emplace_back(project); - - self.sectionsAreReadyCallback({1, 1}, self, YES); -} - -- (void)fillOnlineViatorSection -{ - if (!self.isViator) - return; - - network_policy::CallPartnersApi([self](auto const & canUseNetwork) { - auto api = GetFramework().GetViatorApi(canUseNetwork); - if (!api) - return; - - std::string const currency = self.currencyFormatter.currencyCode.UTF8String; - std::string const viatorId = [self sponsoredId].UTF8String; - - __weak auto wSelf = self; - api->GetTop5Products( - viatorId, currency, [wSelf, viatorId](std::string const & destId, - std::vector const & products) { - __strong auto self = wSelf; - if (!self || viatorId != destId) - return; - NSMutableArray * items = [@[] mutableCopy]; - for (auto const & p : products) - { - auto imageURL = [NSURL URLWithString:@(p.m_photoUrl.c_str())]; - auto pageURL = [NSURL URLWithString:@(p.m_pageUrl.c_str())]; - if (!pageURL) - continue; - std::string const ratingFormatted = rating::GetRatingFormatted(p.m_rating); - auto const ratingValue = rating::GetImpress(p.m_rating); - auto item = [[MWMViatorItemModel alloc] - initWithImageURL:imageURL - pageURL:pageURL - title:@(p.m_title.c_str()) - ratingFormatted:@(ratingFormatted.c_str()) - ratingType:static_cast(ratingValue) - duration:@(p.m_duration.c_str()) - price:@(p.m_priceFormatted.c_str())]; - [items addObject:item]; - } - - dispatch_async(dispatch_get_main_queue(), [items, self] { - self.viatorItems = items; - - [self insertSpecialProjectsSectionWithProject:SpecialProject::Viator]; - }); - }); - }); -} - - (float)ratingRawValue { return m_info.GetRatingRawValue(); @@ -798,10 +733,6 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; - (NSString *)apiURL { return @(m_info.GetApiUrl().c_str()); } - (std::vector const &)sections { return m_sections; } - (std::vector const &)previewRows { return m_previewRows; } -- (std::vector const &)specialProjectRows -{ - return m_specialProjectRows; -} - (std::vector const &)metainfoRows { return m_metainfoRows; } - (std::vector &)mutableMetainfoRows { return m_metainfoRows; } - (std::vector const &)adRows { return m_adRows; } @@ -841,7 +772,6 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; - (BOOL)isApi { return m_info.HasApiUrl(); } - (BOOL)isBooking { return m_info.GetSponsoredType() == SponsoredType::Booking; } - (BOOL)isOpentable { return m_info.GetSponsoredType() == SponsoredType::Opentable; } -- (BOOL)isViator { return m_info.GetSponsoredType() == SponsoredType::Viator; } - (BOOL)isPartner { return m_info.GetSponsoredType() == SponsoredType::Partner; } - (BOOL)isHolidayObject { return m_info.GetSponsoredType() == SponsoredType::Holiday; } - (BOOL)isBookingSearch { return !m_info.GetBookingSearchUrl().empty(); } diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm index d2b85a9f56..696dc2c2ed 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm @@ -255,9 +255,7 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type, place_page: if (!data) return; NSMutableDictionary * parameters = [@{} mutableCopy]; - if (data.isViator) - parameters[kStatProvider] = kStatViator; - else if (data.isBooking) + if (data.isBooking) parameters[kStatProvider] = kStatBooking; else if (data.isPartner) parameters[kStatProvider] = data.partnerName; diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/PPViatorCarouselCell.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/PPViatorCarouselCell.swift deleted file mode 100644 index 8b1e8237ea..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/PPViatorCarouselCell.swift +++ /dev/null @@ -1,75 +0,0 @@ -@objc(MWMPPViatorCarouselCell) -final class PPViatorCarouselCell: MWMTableViewCell { - @IBOutlet private weak var title: UILabel! { - didSet { - title.text = L("place_page_viator_title") - title.font = UIFont.bold14() - title.textColor = UIColor.blackSecondaryText() - } - } - - @IBOutlet private weak var more: UIButton! { - didSet { - more.setTitle(L("placepage_more_button"), for: .normal) - more.titleLabel?.font = UIFont.regular17() - more.setTitleColor(UIColor.linkBlue(), for: .normal) - } - } - - @IBOutlet private weak var collectionView: UICollectionView! - fileprivate var dataSource: [ViatorItemModel] = [] - fileprivate let kMaximumNumberOfElements = 5 - fileprivate var delegate: MWMPlacePageButtonsProtocol? - - fileprivate var statisticsParameters: [AnyHashable: Any] { return [kStatProvider: kStatViator, - kStatPlacement : kStatPlacePage] } - - @objc func config(with ds: [ViatorItemModel], delegate d: MWMPlacePageButtonsProtocol?) { - if ds.isEmpty { - Statistics.logEvent(kStatPlacepageSponsoredError, withParameters: statisticsParameters) - } - dataSource = ds - delegate = d - collectionView.contentOffset = .zero - collectionView.delegate = self - collectionView.dataSource = self - collectionView.register(cellClass: ViatorElement.self) - collectionView.reloadData() - - isSeparatorHidden = true - backgroundColor = UIColor.clear - } - - fileprivate func isLastCell(_ indexPath: IndexPath) -> Bool { - return indexPath.item == collectionView.numberOfItems(inSection: indexPath.section) - 1 - } - - @IBAction - func onMore() { - Statistics.logEvent(kStatPlacepageSponsoredLogoSelected, withParameters: statisticsParameters) - delegate?.openSponsoredURL(nil) - } -} - -extension PPViatorCarouselCell: UICollectionViewDelegate, UICollectionViewDataSource { - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCell(withCellClass: ViatorElement.self, - indexPath: indexPath) as! ViatorElement - cell.model = isLastCell(indexPath) ? nil : dataSource[indexPath.item] - cell.onMoreAction = { [weak self] in - self?.onMore() - } - return cell - } - - func collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int { - return min(dataSource.count, kMaximumNumberOfElements) + 1 - } - - func collectionView(_: UICollectionView, didSelectItemAt indexPath: IndexPath) { - let isMore = isLastCell(indexPath) - let url: URL? = isMore ? nil : dataSource[indexPath.item].pageURL - delegate?.openSponsoredURL(url) - Statistics.logEvent(isMore ? kStatPlacepageSponsoredMoreSelected : kStatPlacepageSponsoredItemSelected, withParameters: statisticsParameters) - } -} diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/PPViatorCarouselCell.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/PPViatorCarouselCell.xib deleted file mode 100644 index 5e847ed8c6..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/PPViatorCarouselCell.xib +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorElement.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorElement.swift deleted file mode 100644 index 4972458f94..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorElement.swift +++ /dev/null @@ -1,97 +0,0 @@ -@objc(MWMViatorElement) -final class ViatorElement: UICollectionViewCell { - @IBOutlet private weak var more: UIButton! - @IBOutlet private weak var priceView: UIView! - - @IBOutlet private weak var image: UIImageView! - @IBOutlet private weak var title: UILabel! { - didSet { - title.font = UIFont.medium14() - title.textColor = UIColor.blackPrimaryText() - } - } - - @IBOutlet private weak var duration: UILabel! { - didSet { - duration.font = UIFont.regular12() - duration.textColor = UIColor.blackSecondaryText() - } - } - - @IBOutlet private weak var price: UILabel! { - didSet { - price.textColor = UIColor.linkBlue() - price.font = UIFont.medium14() - } - } - - @IBOutlet private weak var rating: RatingSummaryView! { - didSet { - rating.defaultConfig() - rating.textFont = UIFont.bold12() - rating.textSize = 12 - } - } - - private var isLastCell = false { - didSet { - more.isHidden = !isLastCell - image.isHidden = isLastCell - title.isHidden = isLastCell - duration.isHidden = isLastCell - price.isHidden = isLastCell - rating.isHidden = isLastCell - priceView.isHidden = isLastCell - } - } - - override var isHighlighted: Bool { - didSet { - guard model != nil else { return } - UIView.animate(withDuration: kDefaultAnimationDuration, - delay: 0, - options: [.allowUserInteraction, .beginFromCurrentState], - animations: { self.alpha = self.isHighlighted ? 0.3 : 1 }, - completion: nil) - } - } - - @IBAction - private func onMore() { - onMoreAction?() - } - - @objc - var model: ViatorItemModel? { - didSet { - if let model = model { - if let url = model.imageURL { - image.af_setImage(withURL: url, placeholderImage: #imageLiteral(resourceName: "img_viator_placeholder"), imageTransition: .crossDissolve(kDefaultAnimationDuration)) - } else { - image.image = #imageLiteral(resourceName: "img_viator_placeholder") - } - title.text = model.title - duration.text = model.duration - price.text = String(coreFormat: L("place_page_starting_from"), arguments: [model.price]) - rating.value = model.ratingFormatted - rating.type = model.ratingType - - backgroundColor = UIColor.white() - layer.cornerRadius = 6 - layer.borderWidth = 1 - layer.borderColor = UIColor.blackDividers().cgColor - - isLastCell = false - } else { - more.setImage(UIColor.isNightMode() ? #imageLiteral(resourceName: "btn_float_more_dark") : #imageLiteral(resourceName: "btn_float_more_light"), for: .normal) - - backgroundColor = UIColor.clear - layer.borderColor = UIColor.clear.cgColor - - isLastCell = true - } - } - } - - var onMoreAction: (() -> Void)? -} diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorElement.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorElement.xib deleted file mode 100644 index e3daa1d7be..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorElement.xib +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorItemModel.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorItemModel.swift deleted file mode 100644 index 53952768a0..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/ViatorCells/ViatorItemModel.swift +++ /dev/null @@ -1,20 +0,0 @@ -@objc(MWMViatorItemModel) -final class ViatorItemModel: NSObject { - let imageURL: URL? - let pageURL: URL - let title: String - let ratingFormatted: String - let ratingType: MWMRatingSummaryViewValueType - let duration: String - let price: String - - @objc init(imageURL: URL?, pageURL: URL, title: String, ratingFormatted: String, ratingType: MWMRatingSummaryViewValueType, duration: String, price: String) { - self.imageURL = imageURL - self.pageURL = pageURL - self.title = title - self.ratingFormatted = ratingFormatted - self.ratingType = ratingType - self.duration = duration - self.price = price - } -} diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm b/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm index 9599ca7068..7ef6f52ecd 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm @@ -57,7 +57,6 @@ map const kMetaInfoCells = { @property(nonatomic) MWMOpeningHoursLayoutHelper * openingHoursLayoutHelper; @property(weak, nonatomic) MWMPlacePageTaxiCell * taxiCell; -@property(weak, nonatomic) MWMPPViatorCarouselCell * viatorCell; @property(nonatomic) BOOL buttonsSectionEnabled; @@ -94,7 +93,6 @@ map const kMetaInfoCells = { [tv registerWithCellClass:[MWMBookmarkCell class]]; [tv registerWithCellClass:[MWMPPHotelDescriptionCell class]]; [tv registerWithCellClass:[MWMPPHotelCarouselCell class]]; - [tv registerWithCellClass:[MWMPPViatorCarouselCell class]]; [tv registerWithCellClass:[MWMPPReviewHeaderCell class]]; [tv registerWithCellClass:[MWMPPReviewCell class]]; [tv registerWithCellClass:[MWMPPFacilityCell class]]; @@ -119,7 +117,6 @@ map const kMetaInfoCells = { dispatch_async(dispatch_get_main_queue(), ^{ [data fillOnlineBookingSections]; - [data fillOnlineViatorSection]; }); } @@ -289,7 +286,6 @@ map const kMetaInfoCells = { case Sections::Bookmark: return 1; case Sections::Description: return 1; case Sections::Preview: return data.previewRows.size(); - case Sections::SpecialProjects: return data.specialProjectRows.size(); case Sections::Metainfo: return data.metainfoRows.size(); case Sections::Ad: return data.adRows.size(); case Sections::Buttons: return data.buttonsRows.size(); @@ -425,21 +421,6 @@ map const kMetaInfoCells = { c.enabled = self.buttonsSectionEnabled || (row == ButtonsRows::HotelDescription); return c; } - case Sections::SpecialProjects: - { - switch (data.specialProjectRows[indexPath.row]) - { - case SpecialProject::Viator: - { - Class cls = [MWMPPViatorCarouselCell class]; - auto c = static_cast( - [tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]); - [c configWith:data.viatorItems delegate:delegate]; - self.viatorCell = c; - return c; - } - } - } case Sections::HotelPhotos: { Class cls = [MWMPPHotelCarouselCell class]; @@ -645,19 +626,6 @@ map const kMetaInfoCells = { [Statistics logEvent:kStatPlacepageTaxiShow withParameters:@{kStatProvider: provider, kStatPlacement: kStatPlacePage}]; }); - - checkCell(self.viatorCell, ^{ - self.viatorCell = nil; - - auto viatorItems = data.viatorItems; - if (viatorItems.count == 0) - { - NSAssert(NO, @"Viator is shown but items are empty."); - return; - } - [Statistics logEvent:kStatPlacepageSponsoredShow - withParameters:@{kStatProvider: kStatViator, kStatPlacement: kStatPlacePage}]; - }); } #pragma mark - MWMOpeningHoursLayoutHelper diff --git a/map/discovery/discovery_client_params.hpp b/map/discovery/discovery_client_params.hpp index 08ac6e5d5b..86dd677d26 100644 --- a/map/discovery/discovery_client_params.hpp +++ b/map/discovery/discovery_client_params.hpp @@ -9,7 +9,6 @@ namespace discovery { enum class ItemType { - Viator, Attractions, Cafes, Hotels, diff --git a/map/discovery/discovery_manager.cpp b/map/discovery/discovery_manager.cpp index ba99e8109c..e44232aa78 100644 --- a/map/discovery/discovery_manager.cpp +++ b/map/discovery/discovery_manager.cpp @@ -15,8 +15,7 @@ std::string GetQuery(discovery::ItemType const type) case discovery::ItemType::Hotels: return "hotel "; case discovery::ItemType::Attractions: return "attractions "; case discovery::ItemType::Cafes: return "cafe "; - case discovery::ItemType::LocalExperts: - case discovery::ItemType::Viator: ASSERT(false, ()); return ""; + case discovery::ItemType::LocalExperts: return ""; } UNREACHABLE(); @@ -29,7 +28,6 @@ Manager::Manager(DataSource const & dataSource, search::CityFinder & cityFinder, : m_dataSource(dataSource) , m_cityFinder(cityFinder) , m_searchApi(apis.m_search) - , m_viatorApi(apis.m_viator) , m_localsApi(apis.m_locals) { } @@ -45,14 +43,6 @@ DiscoverySearchParams Manager::GetSearchParams(Manager::Params const & params, I return p; } -std::string Manager::GetViatorUrl(m2::PointD const & point) const -{ - auto const viatorId = GetCityViatorId(point); - if (viatorId.empty()) - return {}; - return viator::Api::GetCityUrl(viatorId); -} - std::string Manager::GetLocalExpertsUrl(m2::PointD const & point) const { ms::LatLon const ll(MercatorBounds::ToLatLon(point)); @@ -60,24 +50,4 @@ std::string Manager::GetLocalExpertsUrl(m2::PointD const & point) const os << locals::Api::GetLocalsPageUrl() << "?lat=" << ll.lat << "&lon=" << ll.lon; return os.str(); } - -std::string Manager::GetCityViatorId(m2::PointD const & point) const -{ - CHECK_THREAD_CHECKER(m_threadChecker, ()); - auto const fid = m_cityFinder.GetCityFeatureID(point); - if (!fid.IsValid()) - return {}; - - FeaturesLoaderGuard const guard(m_dataSource, fid.m_mwmId); - FeatureType ft; - if (!guard.GetFeatureByIndex(fid.m_index, ft)) - { - LOG(LERROR, ("Feature can't be loaded:", fid)); - return {}; - } - - auto const & metadata = ft.GetMetadata(); - auto const sponsoredId = metadata.Get(feature::Metadata::FMD_SPONSORED_ID); - return sponsoredId; -} } // namespace discovery diff --git a/map/discovery/discovery_manager.hpp b/map/discovery/discovery_manager.hpp index 022cfc74e1..03fb7e2b7c 100644 --- a/map/discovery/discovery_manager.hpp +++ b/map/discovery/discovery_manager.hpp @@ -10,7 +10,6 @@ #include "partners_api/booking_api.hpp" #include "partners_api/locals_api.hpp" -#include "partners_api/viator_api.hpp" #include "platform/marketing_service.hpp" #include "platform/platform.hpp" @@ -35,13 +34,12 @@ class Manager final public: struct APIs { - APIs(SearchAPI & search, viator::Api const & viator, locals::Api & locals) - : m_search(search), m_viator(viator), m_locals(locals) + APIs(SearchAPI & search, locals::Api & locals) + : m_search(search), m_locals(locals) { } SearchAPI & m_search; - viator::Api const & m_viator; locals::Api & m_locals; }; @@ -73,44 +71,6 @@ public: { switch (type) { - case ItemType::Viator: - { - std::string const sponsoredId = GetCityViatorId(params.m_viewportCenter); - if (sponsoredId.empty()) - { - GetPlatform().RunTask(Platform::Thread::Gui, - [requestId, onResult] { - onResult(requestId, std::vector()); - }); - break; - } - - if (m_cachedViator.first == sponsoredId) - { - GetPlatform().RunTask(Platform::Thread::Gui, [this, requestId, onResult] { - onResult(requestId, m_cachedViator.second); - }); - break; - } - - m_viatorApi.GetTop5Products( - sponsoredId, params.m_curency, - [this, requestId, sponsoredId, onResult, onError](std::string const & destId, - std::vector const & products) { - CHECK_THREAD_CHECKER(m_threadChecker, ()); - if (destId == sponsoredId) - { - if (products.empty()) - { - onError(requestId, ItemType::Viator); - return; - } - m_cachedViator = std::make_pair(sponsoredId, products); - onResult(requestId, products); - } - }); - break; - } case ItemType::Attractions: // fallthrough case ItemType::Cafes: case ItemType::Hotels: @@ -156,23 +116,16 @@ public: return requestId; } - std::string GetViatorUrl(m2::PointD const & point) const; std::string GetLocalExpertsUrl(m2::PointD const & point) const; private: static DiscoverySearchParams GetSearchParams(Manager::Params const & params, ItemType const type); - std::string GetCityViatorId(m2::PointD const & point) const; DataSource const & m_dataSource; search::CityFinder & m_cityFinder; SearchAPI & m_searchApi; - viator::Api const & m_viatorApi; locals::Api & m_localsApi; uint32_t m_requestCounter = 0; ThreadChecker m_threadChecker; - - // We save last succeed viator result for the nearest city and rewrite it when the nearest city - // was changed. - std::pair> m_cachedViator; }; } // namespace discovery diff --git a/map/framework.cpp b/map/framework.cpp index 28571979a3..ca6eb1916e 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -606,15 +606,6 @@ booking::Api const * Framework::GetBookingApi(platform::NetworkPolicy const & po return nullptr; } -viator::Api * Framework::GetViatorApi(platform::NetworkPolicy const & policy) -{ - ASSERT(m_viatorApi, ()); - if (policy.CanUse()) - return m_viatorApi.get(); - - return nullptr; -} - taxi::Engine * Framework::GetTaxiEngine(platform::NetworkPolicy const & policy) { ASSERT(m_taxiEngine, ()); @@ -1464,7 +1455,7 @@ void Framework::InitDiscoveryManager() CHECK(m_searchAPI.get(), ("InitDiscoveryManager() must be called after InitSearchApi()")); CHECK(m_cityFinder.get(), ("InitDiscoveryManager() must be called after InitCityFinder()")); - discovery::Manager::APIs const apis(*m_searchAPI.get(), *m_viatorApi.get(), *m_localsApi.get()); + discovery::Manager::APIs const apis(*m_searchAPI.get(), *m_localsApi.get()); m_discoveryManager = make_unique(m_model.GetDataSource(), *m_cityFinder.get(), apis); } @@ -2713,11 +2704,6 @@ discovery::Manager::Params Framework::GetDiscoveryParams( return p; } -std::string Framework::GetDiscoveryViatorUrl() const -{ - return m_discoveryManager->GetViatorUrl(GetDiscoveryViewportCenter()); -} - std::string Framework::GetDiscoveryLocalExpertsUrl() const { return m_discoveryManager->GetLocalExpertsUrl(GetDiscoveryViewportCenter()); @@ -3626,42 +3612,6 @@ void Framework::SetPlacePageLocation(place_page::Info & info) } } -void Framework::InjectViator(place_page::Info & info) -{ - auto needToInject = GetDrawScale() <= scales::GetUpperWorldScale() && !info.IsSponsored() && - !info.GetCountryId().empty() && - GetStorage().IsNodeDownloaded(info.GetCountryId()) && - ftypes::IsCityChecker::Instance()(info.GetTypes()); - - if (!needToInject) - return; - - auto const & country = GetStorage().CountryByCountryId(info.GetCountryId()); - auto const mwmId = m_model.GetDataSource().GetMwmIdByCountryFile(country.GetFile()); - - if (!mwmId.IsAlive() || !mwmId.GetInfo()->IsRegistered()) - return; - - auto const point = MercatorBounds::FromLatLon(info.GetLatLon()); - // 3 meters - empirically calculated search radius. - static double constexpr kSearchRadiusM = 3.0; - m2::RectD const rect = MercatorBounds::RectByCenterXYAndSizeInMeters(point, kSearchRadiusM); - - m_model.GetDataSource().ForEachInRectForMWM( - [&info](FeatureType & ft) { - if (ft.GetFeatureType() != feature::EGeomType::GEOM_POINT || info.IsSponsored() || - !ftypes::IsViatorChecker::Instance()(ft)) - { - return; - } - - info.SetSponsoredType(place_page::SponsoredType::Viator); - auto const & sponsoredId = ft.GetMetadata().Get(feature::Metadata::FMD_SPONSORED_ID); - info.SetSponsoredDescriptionUrl(viator::Api::GetCityUrl(sponsoredId)); - }, - rect, scales::GetUpperScale(), mwmId); -} - void Framework::FillLocalExperts(FeatureType & ft, place_page::Info & info) const { if (GetDrawScale() > scales::GetUpperWorldScale() || diff --git a/map/framework.hpp b/map/framework.hpp index 62a5fe24fd..99ae4bd19b 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -60,7 +60,6 @@ #include "partners_api/booking_api.hpp" #include "partners_api/locals_api.hpp" #include "partners_api/taxi_engine.hpp" -#include "partners_api/viator_api.hpp" #include "metrics/eye_info.hpp" @@ -218,7 +217,6 @@ protected: SearchMarks m_searchMarks; unique_ptr m_bookingApi = make_unique(); - unique_ptr m_viatorApi = make_unique(); unique_ptr m_localsApi = make_unique(); df::DrapeApi m_drapeApi; @@ -263,7 +261,6 @@ public: /// Get access to booking api helpers booking::Api * GetBookingApi(platform::NetworkPolicy const & policy); booking::Api const * GetBookingApi(platform::NetworkPolicy const & policy) const; - viator::Api * GetViatorApi(platform::NetworkPolicy const & policy); taxi::Engine * GetTaxiEngine(platform::NetworkPolicy const & policy); locals::Api * GetLocalsApi(platform::NetworkPolicy const & policy); // NotificationManager::Delegate override. @@ -808,7 +805,6 @@ public: discovery::Manager::Params GetDiscoveryParams(discovery::ClientParams && clientParams) const; - std::string GetDiscoveryViatorUrl() const; std::string GetDiscoveryLocalExpertsUrl() const; private: @@ -879,9 +875,6 @@ private: void SetPlacePageLocation(place_page::Info & info); - /// Find feature with viator near point, provided in |info|, and inject viator data into |info|. - void InjectViator(place_page::Info & info); - void FillLocalExperts(FeatureType & ft, place_page::Info & info) const; void FillDescription(FeatureType & ft, place_page::Info & info) const; @@ -902,7 +895,7 @@ public: booking::AvailabilityParams GetLastBookingAvailabilityParams() const; private: - // m_discoveryManager must be bellow m_searchApi, m_viatorApi, m_localsApi + // m_discoveryManager must be bellow m_searchApi, m_localsApi unique_ptr m_discoveryManager; public: diff --git a/map/place_page_info.hpp b/map/place_page_info.hpp index 80c468a691..44c4a565fc 100644 --- a/map/place_page_info.hpp +++ b/map/place_page_info.hpp @@ -44,7 +44,6 @@ enum class SponsoredType None, Booking, Opentable, - Viator, Partner, Holiday }; @@ -152,7 +151,7 @@ public: std::string const & GetSponsoredReviewUrl() const { return m_sponsoredReviewUrl; } void SetSponsoredType(SponsoredType type) { m_sponsoredType = type; } SponsoredType GetSponsoredType() const { return m_sponsoredType; } - bool IsPreviewExtended() const { return m_sponsoredType == SponsoredType::Viator; } + bool IsPreviewExtended() const { return false; } /// Partners int GetPartnerIndex() const { return m_partnerIndex; } diff --git a/partners_api/CMakeLists.txt b/partners_api/CMakeLists.txt index 35bbc0e901..97f8cccb03 100644 --- a/partners_api/CMakeLists.txt +++ b/partners_api/CMakeLists.txt @@ -50,8 +50,6 @@ set( uber_api.hpp utils.cpp utils.hpp - viator_api.cpp - viator_api.hpp yandex_api.cpp yandex_api.hpp ) diff --git a/partners_api/partners_api_tests/CMakeLists.txt b/partners_api/partners_api_tests/CMakeLists.txt index ce96642991..163b0f3f2d 100644 --- a/partners_api/partners_api_tests/CMakeLists.txt +++ b/partners_api/partners_api_tests/CMakeLists.txt @@ -16,7 +16,6 @@ set( taxi_engine_tests.cpp taxi_places_tests.cpp uber_tests.cpp - viator_tests.cpp yandex_tests.cpp ) diff --git a/partners_api/partners_api_tests/viator_tests.cpp b/partners_api/partners_api_tests/viator_tests.cpp deleted file mode 100644 index 2a68be8024..0000000000 --- a/partners_api/partners_api_tests/viator_tests.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include "testing/testing.hpp" - -#include "partners_api/viator_api.hpp" - -#include -#include -#include -#include - -#include "3party/jansson/myjansson.hpp" - -namespace -{ -UNIT_TEST(Viator_SortProducts) -{ - std::vector products = - { - {"1", 10.0, 10, "", 10.0, "", "", "", ""}, - {"2", 9.0, 100, "", 200.0, "", "", "", ""}, - {"3", 9.0, 100, "", 100.0, "", "", "", ""}, - {"4", 9.0, 10, "", 200.0, "", "", "", ""}, - {"5", 9.0, 9, "", 300.0, "", "", "", ""}, - {"6", 8.0, 200, "", 400.0, "", "", "", ""}, - {"7", 7.0, 20, "", 200.0, "", "", "", ""}, - {"8", 7.0, 20, "", 1.0, "", "", "", ""}, - {"9", 7.0, 0, "", 300.0, "", "", "", ""}, - {"10", 7.0, 0, "", 1.0, "", "", "", ""} - }; - - for (size_t i = 0; i < 1000; ++i) - { - std::shuffle(products.begin(), products.end(), std::minstd_rand(std::minstd_rand::default_seed)); - viator::SortProducts(products); - - TEST_EQUAL(products[0].m_title, "1", ()); - TEST_EQUAL(products[1].m_title, "2", ()); - TEST_EQUAL(products[2].m_title, "3", ()); - TEST_EQUAL(products[3].m_title, "4", ()); - TEST_EQUAL(products[4].m_title, "5", ()); - TEST_EQUAL(products[5].m_title, "6", ()); - TEST_EQUAL(products[6].m_title, "7", ()); - TEST_EQUAL(products[7].m_title, "8", ()); - TEST_EQUAL(products[8].m_title, "9", ()); - TEST_EQUAL(products[9].m_title, "10", ()); - } -} -} // namespace diff --git a/partners_api/viator_api.cpp b/partners_api/viator_api.cpp deleted file mode 100644 index 0169c4344a..0000000000 --- a/partners_api/viator_api.cpp +++ /dev/null @@ -1,247 +0,0 @@ -#include "partners_api/viator_api.hpp" - -#include "platform/http_client.hpp" -#include "platform/platform.hpp" -#include "platform/preferred_languages.hpp" - -#include "coding/string_utf8_multilang.hpp" -#include "coding/url_encode.hpp" - -#include "base/logging.hpp" -#include "base/thread.hpp" - -#include -#include -#include -#include -#include - -#include "3party/jansson/myjansson.hpp" - -#include "private.h" - -namespace -{ -using namespace platform; -using namespace viator; - -std::string const kApiUrl = "https://viatorapi.viator.com"; -std::string const kWebUrl = "https://www.partner.viator.com"; - -int8_t GetLang(std::string const & lang) -{ - return StringUtf8Multilang::GetLangIndex(lang); -} - -using IdsMap = std::unordered_map; - -IdsMap const kApiKeys = -{ - {GetLang("en"), VIATOR_API_KEY_EN}, - {GetLang("de"), VIATOR_API_KEY_DE}, - {GetLang("fr"), VIATOR_API_KEY_FR}, - {GetLang("es"), VIATOR_API_KEY_ES}, - {GetLang("pt"), VIATOR_API_KEY_PT}, - {GetLang("it"), VIATOR_API_KEY_IT}, - {GetLang("nl"), VIATOR_API_KEY_NL}, - {GetLang("sv"), VIATOR_API_KEY_SV}, - {GetLang("ja"), VIATOR_API_KEY_JA} -}; - -IdsMap const kAccountIds = -{ - {GetLang("en"), VIATOR_ACCOUNT_ID_EN}, - {GetLang("de"), VIATOR_ACCOUNT_ID_DE}, - {GetLang("fr"), VIATOR_ACCOUNT_ID_FR}, - {GetLang("es"), VIATOR_ACCOUNT_ID_ES}, - {GetLang("pt"), VIATOR_ACCOUNT_ID_PT}, - {GetLang("it"), VIATOR_ACCOUNT_ID_IT}, - {GetLang("nl"), VIATOR_ACCOUNT_ID_NL}, - {GetLang("sv"), VIATOR_ACCOUNT_ID_SV}, - {GetLang("ja"), VIATOR_ACCOUNT_ID_JA} -}; - -std::unordered_set const kSupportedCurrencies = -{ - "USD", "GBP", "EUR", "AUD", "CAD", "NZD", "SGD", "HKD" -}; - -std::string GetId(IdsMap const & from) -{ - int8_t const lang = GetLang(languages::GetCurrentNorm()); - - auto const it = from.find(lang); - - if (it != from.cend()) - return it->second; - - LOG(LINFO, ("Viator key for language", lang, "is not found, English key will be used.")); - return from.at(StringUtf8Multilang::kEnglishCode); -} - -std::string GetApiKey() -{ - return GetId(kApiKeys); -} - -std::string GetAccountId() -{ - return GetId(kAccountIds); -} - -bool RunSimpleHttpRequest(std::string const & url, std::string const & bodyData, - std::string & result) -{ - HttpClient request(url); - request.SetHttpMethod("POST"); - - request.SetBodyData(bodyData, "application/json"); - if (request.RunHttpRequest() && !request.WasRedirected() && request.ErrorCode() == 200) - { - result = request.ServerResponse(); - return true; - } - - return false; -} - -std::string MakeSearchProductsRequest(int destId, std::string const & currency, int count) -{ - std::ostringstream os; - // REVIEW_AVG_RATING_D - average traveler rating (high->low). - os << R"({"topX":"1-)" << count << R"(","destId":)" << destId << R"(,"currencyCode":")" - << currency << R"(","sortOrder":"REVIEW_AVG_RATING_D"})"; - - return os.str(); -} - -std::string MakeUrl(std::string const & apiMethod) -{ - std::ostringstream os; - os << kApiUrl << apiMethod << "?apiKey=" << GetApiKey(); - - return os.str(); -} - -bool CheckAnswer(base::Json const & root) -{ - bool success; - FromJSONObjectOptionalField(root.get(), "success", success); - - if (!success) - { - std::string errorMessage = "Unknown error."; - auto const errorMessageArray = json_object_get(root.get(), "errorMessageText"); - - if (json_array_size(errorMessageArray)) - FromJSON(json_array_get(errorMessageArray, 0), errorMessage); - - LOG(LWARNING, ("Viator retrieved unsuccessfull status, error message:", errorMessage)); - } - - return success; -} - -void MakeProducts(std::string const & src, std::vector & products) -{ - products.clear(); - - base::Json root(src.c_str()); - auto const data = json_object_get(root.get(), "data"); - if (!CheckAnswer(root) || !json_array_size(data)) - return; - - auto const dataSize = json_array_size(data); - for (size_t i = 0; i < dataSize; ++i) - { - Product product; - auto const item = json_array_get(data, i); - FromJSONObject(item, "shortTitle", product.m_title); - FromJSONObject(item, "rating", product.m_rating); - FromJSONObject(item, "reviewCount", product.m_reviewCount); - FromJSONObject(item, "duration", product.m_duration); - FromJSONObject(item, "price", product.m_price); - FromJSONObject(item, "priceFormatted", product.m_priceFormatted); - FromJSONObject(item, "currencyCode", product.m_currency); - FromJSONObject(item, "thumbnailHiResURL", product.m_photoUrl); - FromJSONObject(item, "webURL", product.m_pageUrl); - - // Rescale rating to [0.0; 10.0] range - product.m_rating *= 2; - products.push_back(move(product)); - } -} -} // namespace - -namespace viator -{ -// static -bool RawApi::GetTopProducts(std::string const & destId, std::string const & currency, int count, - std::string & result) -{ - int dest = 0; - VERIFY(strings::to_int(destId, dest), ()); - - return RunSimpleHttpRequest(MakeUrl("/service/search/products"), - MakeSearchProductsRequest(dest, currency, count), result); -} - -// static -std::string Api::GetCityUrl(std::string const & destId) -{ - std::ostringstream ost; - // The final language and city name will be calculated automatically based on account id and - // destination id. - ost << kWebUrl << "/" << languages::GetCurrentNorm() << "/" << GetAccountId() << "/x/d" << destId - << "-ttd?activities=all"; - return ost.str(); -} - -void Api::GetTop5Products(std::string const & destId, std::string const & currency, - GetTop5ProductsCallback const & fn) const -{ - std::string curr = - kSupportedCurrencies.find(currency) == kSupportedCurrencies.cend() ? "USD" : currency; - - GetPlatform().RunTask(Platform::Thread::Network, [destId, curr, fn]() - { - string result; - if (!RawApi::GetTopProducts(destId, curr, 5, result)) - return fn(destId, {}); - - std::vector products; - try - { - MakeProducts(result, products); - } - catch (base::Json::Exception const & e) - { - LOG(LERROR, (e.Msg())); - products.clear(); - } - - SortProducts(products); - - fn(destId, products); - }); -} - -bool operator<(Product const & lhs, Product const & rhs) -{ - return lhs.m_rating < rhs.m_rating || - (lhs.m_rating == rhs.m_rating && lhs.m_reviewCount < rhs.m_reviewCount) || - (lhs.m_reviewCount == rhs.m_reviewCount && lhs.m_price < rhs.m_price); -} - -// Sort by rating (from the best to the worst), -// then by reviews (from the largest to the smallest), -// then by price (from the biggest to the lowest) -void SortProducts(std::vector & products) -{ - std::multiset productsSet; - for (auto const & p : products) - productsSet.insert(p); - - std::copy(productsSet.crbegin(), productsSet.crend(), products.begin()); -} -} // namespace viator diff --git a/partners_api/viator_api.hpp b/partners_api/viator_api.hpp deleted file mode 100644 index 437234f56f..0000000000 --- a/partners_api/viator_api.hpp +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#include "platform/safe_callback.hpp" - -#include -#include -#include - -namespace viator -{ -class RawApi -{ -public: - /// Returns top products for specified city id. - static bool GetTopProducts(std::string const & destId, std::string const & currency, int count, - std::string & result); -}; - -struct Product -{ - std::string m_title; - double m_rating; - int m_reviewCount; - std::string m_duration; - double m_price; - std::string m_priceFormatted; - std::string m_currency; - std::string m_photoUrl; - std::string m_pageUrl; -}; - -using GetTop5ProductsCallback = - platform::SafeCallback const & products)>; - -class Api -{ -public: - /// Returns web page address for specified city id. - static std::string GetCityUrl(std::string const & destId); - - /// Returns top-5 products for specified city id. - /// @currency - currency of the price, if empty then USD will be used. - void GetTop5Products(std::string const & destId, std::string const & currency, - GetTop5ProductsCallback const & fn) const; -}; - -bool operator<(Product const & lhs, Product const & rhs); -void SortProducts(std::vector & products); -} // namespace viator diff --git a/tools/python/viator_cities.py b/tools/python/viator_cities.py deleted file mode 100644 index 10dc489420..0000000000 --- a/tools/python/viator_cities.py +++ /dev/null @@ -1,70 +0,0 @@ -from __future__ import print_function - -import argparse -import json -import logging -import os -import urllib2 - -logging.basicConfig(level=logging.DEBUG, format='[%(asctime)s] %(levelname)s: %(message)s') - - -class ViatorApi(object): - def __init__(self, apikey): - self.apikey = apikey - - def get_locations(self): - url = 'https://viatorapi.viator.com/service/taxonomy/locations?apiKey=' + self.apikey - stream = urllib2.urlopen(url) - return json.load(stream) - - -def check_errors(locations): - if not locations['success']: - raise Exception('Viator error, error codes:{} error text:{}' - .format(locations['errorCodes'], locations['errorMessageText'])) - - -def save_cities(locations, output_file_name): - with open(output_file_name, 'w') as output_file: - for l in locations['data']: - is_object_supported = (l['destinationType'] == 'CITY' and l['destinationId'] and - l['destinationName'] and l['latitude'] and l['longitude']) - if is_object_supported: - city = '\t'.join([ - str(l['destinationId']), - l['destinationName'], - str(l['latitude']), - str(l['longitude']) - ]) - print(city.encode('utf-8'), file=output_file) - - -def run(options): - try: - api = ViatorApi(options.apikey) - locations = api.get_locations() - check_errors(locations) - save_cities(locations, options.output) - except Exception as e: - logging.exception(e) - - -def process_options(): - parser = argparse.ArgumentParser(description='Download and process viator cities.') - - parser.add_argument('--apikey', dest='apikey', help='Viator apikey', required=True) - parser.add_argument('--output', dest='output', help='Destination file', required=True) - - options = parser.parse_args() - - return options - - -def main(): - options = process_options() - run(options) - - -if __name__ == '__main__': - main() diff --git a/tools/unix/generate_planet.sh b/tools/unix/generate_planet.sh index b828ba45c8..b1b6598443 100755 --- a/tools/unix/generate_planet.sh +++ b/tools/unix/generate_planet.sh @@ -189,8 +189,6 @@ BOOKING_SCRIPT="$PYTHON_SCRIPTS_PATH/booking_hotels.py" BOOKING_FILE="${BOOKING_FILE:-$INTDIR/hotels.csv}" OPENTABLE_SCRIPT="$PYTHON_SCRIPTS_PATH/opentable_restaurants.py" OPENTABLE_FILE="${OPENTABLE_FILE:-$INTDIR/restaurants.csv}" -VIATOR_SCRIPT="$PYTHON_SCRIPTS_PATH/viator_cities.py" -VIATOR_FILE="${VIATOR_FILE:-$INTDIR/viator.csv}" CITIES_BOUNDARIES_DATA="${CITIES_BOUNDARIES_DATA:-$INTDIR/cities_boundaries.bin}" TESTING_SCRIPT="$SCRIPTS_PATH/test_planet.sh" PYTHON="$(which python2.7)" @@ -307,25 +305,6 @@ if [ ! -f "$OPENTABLE_FILE" -a -n "${OPENTABLE_USER-}" -a -n "${OPENTABLE_PASS-} ) & fi -# Download viator.com cities. This takes around 3 seconds. -if [ ! -f "$VIATOR_FILE" -a -n "${VIATOR_KEY-}" ]; then - log "STATUS" "Step S3: Starting background viator cities downloading" - ( - $PYTHON $VIATOR_SCRIPT --apikey $VIATOR_KEY --output "$VIATOR_FILE" 2>"$LOG_PATH"/viator.log || true - if [ -f "$VIATOR_FILE" -a "$(wc -l < "$VIATOR_FILE" || echo 0)" -gt 100 ]; then - echo "Viator cities have been downloaded. Please ensure this line is before Step 4." >> "$PLANET_LOG" - else - if [ -n "${OLD_INTDIR-}" -a -f "${OLD_INTDIR-}/$(basename "$VIATOR_FILE")" ]; then - cp "$OLD_INTDIR/$(basename "$VIATOR_FILE")" "$INTDIR" - warn "Failed to download viator cities! Using older viator cities list." - else - warn "Failed to download viator cities!" - fi - [ -n "${MAIL-}" ] && tail "$LOG_PATH/viator.log" | mailx -s "Failed to download viator cities at $(hostname), please hurry to fix" "$MAIL" - fi - ) & -fi - # Download UGC (user generated content) database. if [ ! -f "$UGC_FILE" -a -n "${UGC_DATABASE_URL-}" ]; then putmode "Step UGC: Dowloading UGC database" @@ -473,7 +452,6 @@ if [ "$MODE" == "features" ]; then [ -n "$OPT_WORLD" -a "$NODE_STORAGE" == "map" ] && warn "generating world files with NODE_STORAGE=map may lead to an out of memory error. Try NODE_STORAGE=mem if it fails." [ -f "$BOOKING_FILE" ] && PARAMS_SPLIT="$PARAMS_SPLIT --booking_data=$BOOKING_FILE" [ -f "$OPENTABLE_FILE" ] && PARAMS_SPLIT="$PARAMS_SPLIT --opentable_data=$OPENTABLE_FILE" - [ -f "$VIATOR_FILE" ] && PARAMS_SPLIT="$PARAMS_SPLIT --viator_data=$VIATOR_FILE" [ -f "$POPULAR_PLACES_FILE" ] && PARAMS_SPLIT="$PARAMS_SPLIT --popular_places_data=$POPULAR_PLACES_FILE" "$GENERATOR_TOOL" --intermediate_data_path="$INTDIR/" \ --node_storage=$NODE_STORAGE \ diff --git a/xcode/partners_api/partners_api.xcodeproj/project.pbxproj b/xcode/partners_api/partners_api.xcodeproj/project.pbxproj index 613b3ea6a5..898de38651 100644 --- a/xcode/partners_api/partners_api.xcodeproj/project.pbxproj +++ b/xcode/partners_api/partners_api.xcodeproj/project.pbxproj @@ -49,9 +49,7 @@ 3DF01C2D20652463005DDF8C /* taxi_places.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DF01C2A20652462005DDF8C /* taxi_places.cpp */; }; 3DF01C2E20652463005DDF8C /* taxi_places.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3DF01C2B20652463005DDF8C /* taxi_places.hpp */; }; 3DF9C219207CAC3000DA0793 /* taxi_places_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DF9C218207CAC3000DA0793 /* taxi_places_tests.cpp */; }; - 3DFEBF851EF82BEA00317D5C /* viator_api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DFEBF831EF82BEA00317D5C /* viator_api.cpp */; }; 3DFEBF861EF82BEA00317D5C /* viator_api.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3DFEBF841EF82BEA00317D5C /* viator_api.hpp */; }; - 3DFEBF891EF82C1300317D5C /* viator_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DFEBF871EF82C1300317D5C /* viator_tests.cpp */; }; 3DFEBF9A1EFBFC1500317D5C /* taxi_base.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3DFEBF941EFBFC1500317D5C /* taxi_base.hpp */; }; 3DFEBF9B1EFBFC1500317D5C /* taxi_engine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DFEBF951EFBFC1500317D5C /* taxi_engine.cpp */; }; 3DFEBF9C1EFBFC1500317D5C /* taxi_engine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3DFEBF961EFBFC1500317D5C /* taxi_engine.hpp */; }; @@ -478,8 +476,6 @@ 3430643C1E9FBCF500DC7665 /* mopub_ads.cpp in Sources */, 45C380772094C5B400C18D81 /* partners.cpp in Sources */, 346E88961E9D087400D4CE9B /* ads_base.cpp in Sources */, - 3DFEBF891EF82C1300317D5C /* viator_tests.cpp in Sources */, - 3DFEBF851EF82BEA00317D5C /* viator_api.cpp in Sources */, 3D4E997D1FB439260025B48C /* booking_availability_params.cpp in Sources */, 3DCD415320DAB33700143533 /* booking_block_params.cpp in Sources */, F6B536421DA520E40067EEA5 /* uber_api.cpp in Sources */,