Merge branch 'master' into gpx_context_menu

This commit is contained in:
Vitaliy 2020-12-29 17:15:25 +02:00
commit 57a68d223f
27 changed files with 222 additions and 104 deletions

View file

@ -2510,7 +2510,7 @@
<string name="poi_site_type_petroglyph">بتروجليف</string>
<string name="poi_site_type_necropolis">مقبرة كبيرة قديمة</string>
<string name="poi_site_type_hut_circle">دائرة الكوخ</string>
<string name="poi_site_type_settlement">مستعمرة</string>
<string name="poi_site_type_settlement">مستوطنة/هجرة</string>
<string name="poi_site_type_fortification">حصن</string>
<string name="poi_site_type_tumulus">تومولوس</string>
<string name="poi_site_type_megalith">المغليث حجر ضخم</string>

View file

@ -4008,4 +4008,10 @@
<string name="reverse_all_points">عكس جميع النقاط</string>
<string name="profile_by_default_description">حدد ملف التعريف، الذي سيتم استخدامه في بدء التطبيق.</string>
<string name="shared_string_last_used">آخر استخدام</string>
<string name="routing_attr_prefer_hiking_routes_description">تفضيل طرق التنزه</string>
<string name="routing_attr_prefer_hiking_routes_name">تفضيل طرق التنزه</string>
<string name="routing_attr_allow_streams_description">السماح بالتيارات والمصارف</string>
<string name="routing_attr_allow_streams_name">السماح بالتيارات والمصارف</string>
<string name="routing_attr_allow_intermittent_description">السماح بالممرات المائية المتقطعة</string>
<string name="routing_attr_allow_intermittent_name">السماح بالممرات المائية المتقطعة</string>
</resources>

View file

@ -3832,7 +3832,7 @@
<string name="poi_traffic_signals_vibration_no">kein Vibrieren</string>
<string name="poi_traffic_signals_arrow">Pfeil</string>
<string name="poi_traffic_signals_vibration">Vibrieren</string>
<string name="poi_give_box">Give box</string>
<string name="poi_give_box">Tauschbox</string>
<string name="poi_city_block">Stadtteil</string>
<string name="poi_borough">Bezirk</string>
<string name="poi_elevator">Aufzug</string>
@ -3848,7 +3848,7 @@
<string name="poi_recycling_small_electrical_appliances">Kleine Elektrogeräte</string>
<string name="poi_nuts">Nussladen</string>
<string name="poi_fuel_lng">Flüssigerdgas</string>
<string name="poi_parking_layby">Rastplatz</string>
<string name="poi_parking_layby">Parkbucht</string>
<string name="poi_parking_sheds">Überdachter Parkplatz</string>
<string name="poi_parking_rooftop">Dachparkplätze</string>
<string name="poi_gpx_point">GPX-Wegpunkt</string>

View file

@ -2418,7 +2418,7 @@
<string name="mapillary_widget_descr">Ermöglicht schnelle Beiträge zu Mapillary.</string>
<string name="mapillary_descr">Fotos von der Straße aus dem Netz für jeden. Orte entdecken, mitwirken und die Welt in Bildern festhalten.</string>
<string name="mapillary">Mapillary</string>
<string name="mapillary_action_descr">Mit Mapillary Bilder dieses Orts beitragen.</string>
<string name="mapillary_action_descr">Mit Mapillary Bilder von diesem Ort beisteuern.</string>
<string name="shared_string_install">Installieren</string>
<string name="online_photos">Online-Fotos</string>
<string name="no_photos_descr">Keine Fotos hier.</string>
@ -3181,7 +3181,7 @@
<string name="shared_string_file_is_saved">%s ist gespeichert</string>
<string name="shared_string_open_track">Track öffnen</string>
<string name="shared_string_track_is_saved">Track %s ist gespeichert</string>
<string name="sett_no_ext_input">Keine</string>
<string name="sett_no_ext_input">Keines</string>
<string name="sett_wunderlinq_ext_input">WunderLINQ</string>
<string name="sett_parrot_ext_input">Parrot</string>
<string name="external_input_device_descr">Ein externes Steuergerät, wie beispielsweise eine Tastatur oder ein WunderLINQ, wählen.</string>
@ -3839,7 +3839,7 @@
<string name="next_segment">Nächstes Segment</string>
<string name="navigation_profile">Navigationsprofil</string>
<string name="route_between_points_add_track_desc">Wählen Sie eine Trackdatei, für die ein neues Segment hinzugefügt werden soll.</string>
<string name="follow_track_descr">Track auswählen, der verfolgt werden soll</string>
<string name="follow_track_descr">Track auswählen, dem gefolgt werden soll</string>
<string name="delete_address">Adresse löschen</string>
<string name="add_address">Adresse hinzufügen</string>
<string name="access_hint_enter_address">Adresse eingeben</string>

View file

@ -3935,7 +3935,7 @@
<string name="file_already_imported">El archivo ya fue importado en OsmAnd</string>
<string name="use_two_phase_routing">Usar el algoritmo de navegación A* bifásica</string>
<string name="shared_string_graph">Gráfico</string>
<string name="message_need_calculate_route_before_show_graph">Hay %1$s datos disponibles sólo en los caminos, calcular una ruta usando «Ruta entre puntos» para ver los gráficos.</string>
<string name="message_need_calculate_route_before_show_graph">Los datos de «%1$s» sólo están disponibles con los caminos, calcula una ruta usando «Ruta entre puntos» para ver los gráficos.</string>
<string name="message_graph_will_be_available_after_recalculation">Ten paciencia.
\nEl gráfico estará disponible al recalcular la ruta.</string>
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
@ -4024,4 +4024,12 @@
<string name="profile_type_osmand_string">Perfil de OsmAnd</string>
<string name="profile_type_user_string">Perfil de usuario</string>
<string name="reverse_all_points">Invertir todos los puntos</string>
<string name="profile_by_default_description">Elige el perfil que será usado al iniciar la aplicación.</string>
<string name="shared_string_last_used">Usado por última vez</string>
<string name="routing_attr_prefer_hiking_routes_description">Prefiere rutas de senderismo</string>
<string name="routing_attr_prefer_hiking_routes_name">Preferir rutas de senderismo</string>
<string name="routing_attr_allow_streams_description">Permite arroyos y desagües</string>
<string name="routing_attr_allow_streams_name">Permitir arroyos y desagües</string>
<string name="routing_attr_allow_intermittent_description">Permite cursos de agua intermitentes</string>
<string name="routing_attr_allow_intermittent_name">Permitir cursos de agua intermitentes</string>
</resources>

View file

@ -3893,4 +3893,16 @@
<string name="poi_mobile_money_agent">Agente de dinero móvil</string>
<string name="poi_vaccination_covid19">Vacunación: COVID19</string>
<string name="poi_health_specialty_vaccination_yes">Vacunación</string>
<string name="poi_lavoir">Lavadero público de ropa</string>
<string name="poi_waste_transfer_station">Estación de transferencia de residuos</string>
<string name="poi_weightbridge">Báscula puente</string>
<string name="poi_ranger_station">Estación de guardabosque</string>
<string name="poi_water_source_lake">Lago</string>
<string name="poi_water_source_river">Río</string>
<string name="poi_water_source_well">Pozo</string>
<string name="poi_water_source_powered_pump">Bomba accionada</string>
<string name="poi_water_source_water_tank">Tanque de agua</string>
<string name="poi_water_source_tap">Grifo</string>
<string name="poi_water_source_water_works">Planta potabilizadora</string>
<string name="poi_water_source_tube_well">Pozo entubado</string>
</resources>

View file

@ -1952,7 +1952,7 @@
<string name="access_autoannounce_period_descr">Lapso de tiempo mínimo entre avisos.</string>
<string name="map_widget_bearing">Rumbo relativo</string>
<string name="map_widget_magnetic_bearing">Rumbo magnético</string>
<string name="access_no_destination">Destino indefinido</string>
<string name="access_no_destination">Complemento de accesibilidad: Destino indefinido</string>
<string name="use_osm_live_routing_description">Activa la navegación para cambios en vivo de OsmAnd.</string>
<string name="use_osm_live_routing">Navegación con OsmAnd Live</string>
<string name="follow_us">Síguenos</string>
@ -2396,7 +2396,7 @@
<string name="srtm_menu_download_descr">Descarga el mapa de «Curvas de nivel» para usarlas en esta región.</string>
<string name="shared_string_plugin">Complemento</string>
<string name="srtm_purchase_header">Compra e instala el complemento «Curvas de nivel» para mostrar áreas verticales graduadas.</string>
<string name="hillshade_menu_download_descr">Descarga el mapa «Superposición de sombreado» para mostrar el sombreado vertical.</string>
<string name="hillshade_menu_download_descr">Descarga la capa superpuesta del mapa «Sombreado» para mostrar el sombreado vertical.</string>
<string name="hillshade_purchase_header">Instala el complemento «Curvas de nivel» para mostrar las áreas verticales graduadas.</string>
<string name="hide_from_zoom_level">Ocultar desde el nivel de zoom</string>
<string name="quick_action_showhide_osmbugs_title">Mostrar u ocultar notas de OSM</string>
@ -3432,7 +3432,7 @@
<string name="login_and_pass">Nombre de usuario y contraseña</string>
<string name="plugin_global_prefs_info">Los ajustes de este complemento son globales y se aplican a todos los perfiles</string>
<string name="osm_editing">Edición de OSM</string>
<string name="osm_edits_view_descr">Puedes ver todas tus ediciones aún no subidas o errores de OSM en «%1$s». Los puntos subidos no se muestran en OsmAnd.</string>
<string name="osm_edits_view_descr">Vea todas las ediciones aún no subidas o errores de OSM en «%1$s». Los cambios ya cargados no se mostrarán más.</string>
<string name="app_mode_osm">OSM</string>
<string name="select_nav_icon_descr">El icono se muestra mientras se navega o se mueve.</string>
<string name="select_map_icon_descr">El icono se muestra en reposo.</string>
@ -3794,9 +3794,9 @@
<string name="use_volume_buttons_as_zoom_descr">Controla el nivel de zoom del mapa usando los botones de volumen del dispositivo.</string>
<string name="use_volume_buttons_as_zoom">Botones de volumen como zoom</string>
<string name="search_download_wikipedia_maps">Descargar datos de Wikipedia</string>
<string name="quick_action_remove_next_destination_descr">El punto de destino actual de la ruta será borrado. Si será el destino, la navegación se detendrá.</string>
<string name="quick_action_remove_next_destination_descr">Quita el siguiente destino de la ruta. Si es el destino final, la navegación se detendrá.</string>
<string name="quick_action_remove_next_destination">Borrar el punto de destino más cercano</string>
<string name="plugin_wikipedia_description">Obtén información sobre los puntos de interés de Wikipedia. Es tu guía de bolsillo sin conexión - sólo activa el complemento de Wikipedia y disfruta los artículos sobre los objetos de alrededor.</string>
<string name="plugin_wikipedia_description">Obtén información sobre los puntos de interés de Wikipedia, una guía de bolsillo sin conexión que incluye artículos sobre objetos y destinos.</string>
<string name="please_provide_point_name_error">Proporciona un nombre para el punto</string>
<string name="lenght_limit_description">Proporciona la longitud del vehículo, se pueden aplicar algunas restricciones de rutas para vehículos largos.</string>
<string name="app_mode_motor_scooter">Motoneta (motor)</string>
@ -3851,7 +3851,7 @@
<string name="plan_route_open_existing_track">Abrir traza existente</string>
<string name="plan_route_last_edited">Última edición</string>
<string name="plan_route_import_track">Importar traza</string>
<string name="plan_route_exit_dialog_descr">¿Cerrar el plan de ruta sin guardar\?, se descartarán todos los cambios.</string>
<string name="plan_route_exit_dialog_descr">¿Descartar todos los cambios en la ruta planificada\?</string>
<string name="plan_route_create_new_route">Crear nueva ruta</string>
<string name="plan_route_change_route_type_before">Cambiar el tipo de ruta anterior</string>
<string name="plan_route_change_route_type_after">Cambiar el tipo de ruta posterior</string>
@ -3908,12 +3908,12 @@
<string name="sort_last_modified">Último modificado</string>
<string name="start_finish_icons">Iconos de inicio y fin</string>
<string name="contour_lines_thanks">Gracias por comprar las «Curvas de nivel»</string>
<string name="osm_live_payment_desc_hw">La suscripción se cobra por el período elegido. Puedes cancelarlo en cualquier momento en AppGallery.</string>
<string name="osm_live_payment_desc_hw">La suscripción se cobra por el período elegido. Puedes cancelarlo en AppGallery en cualquier momento.</string>
<string name="osm_live_payment_subscription_management_hw">El pago será cargado a la cuenta de AppGallery al confirmar la compra.
\n
\nLa suscripción se renueva automáticamente a menos que se cancele antes de la fecha de renovación. La cuenta será cargada por el período de renovación (mes/trimestre/año) sólo en la fecha de renovación.
\n
\nPuedes administrar y cancelar las suscripciones accediendo a los ajustes de AppGallery.</string>
\nPuedes administrar y cancelar las suscripciones en los ajustes de AppGallery.</string>
<string name="routing_attr_avoid_footways_description">Evita pasar por aceras o veredas</string>
<string name="routing_attr_avoid_footways_name">Evitar aceras</string>
<string name="what_is_new">Novedades</string>
@ -3935,8 +3935,8 @@
<string name="navigate_point_mgrs">MGRS</string>
<string name="navigate_point_format_mgrs">MGRS</string>
<string name="mgrs_format_descr">OsmAnd usa MGRS, similar al formato UTM de la OTAN.</string>
<string name="message_need_calculate_route_before_show_graph">Hay %1$s datos disponibles sólo en los caminos, calcular una ruta usando «Ruta entre puntos» para ver los gráficos.</string>
<string name="message_graph_will_be_available_after_recalculation">Ten paciencia
<string name="message_need_calculate_route_before_show_graph">Los datos de «%1$s» sólo están disponibles con los caminos, calcula una ruta usando «Ruta entre puntos» para ver los gráficos.</string>
<string name="message_graph_will_be_available_after_recalculation">Ten paciencia.
\nEl gráfico estará disponible al recalcular la ruta.</string>
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
<string name="icon_group_travel">Viaje</string>
@ -4018,4 +4018,15 @@
<string name="lang_de_casual">Alemán (casual)</string>
<string name="elevation_data">Puedes usar los datos de elevación para tener en cuenta el ascenso y descenso del viaje</string>
<string name="app_mode_light_aircraft">Avión ligero</string>
<string name="shared_string_last_used">Usado por última vez</string>
<string name="routing_attr_prefer_hiking_routes_name">Preferir rutas de senderismo</string>
<string name="routing_attr_prefer_hiking_routes_description">Prefiere rutas de senderismo</string>
<string name="routing_attr_allow_streams_name">Permitir arroyos y desagües</string>
<string name="routing_attr_allow_streams_description">Permite arroyos y desagües</string>
<string name="routing_attr_allow_intermittent_name">Permitir cursos de agua intermitentes</string>
<string name="routing_attr_allow_intermittent_description">Permite cursos de agua intermitentes</string>
<string name="reverse_all_points">Invertir todos los puntos</string>
<string name="profile_type_user_string">Perfil de usuario</string>
<string name="profile_type_osmand_string">Perfil de OsmAnd</string>
<string name="profile_by_default_description">Elige el perfil que será usado al iniciar la aplicación.</string>
</resources>

View file

@ -1128,7 +1128,7 @@
<string name="poi_aerialway_bicycle_summer">Autorisés en été seulement</string>
<string name="poi_aerialway_access_entry">Entrée uniquement</string>
<string name="poi_aerialway_access_exit">Sortie uniquement</string>
<string name="poi_aerialway_access_both">Entrée et Sortie</string>
<string name="poi_aerialway_access_both">Entrée et sortie</string>
<string name="poi_aerialway_summer_access_entry">Accès d\'été : entrée uniquement</string>
<string name="poi_aerialway_summer_access_exit">Accès d\'été : sortie uniquement</string>
<string name="poi_aerialway_summer_access_both">Accès d\'été : entrée et sortie</string>
@ -3559,7 +3559,7 @@
<string name="poi_motorcycle_type_dualsport">Trail (moto)</string>
<string name="poi_government_transportation">Institution pour les transports</string>
<string name="poi_water_supply_water_trucking">Point d\'eau pour poids lourds</string>
<string name="poi_water_place_access_multifamilies">Multi-famille</string>
<string name="poi_water_place_access_multifamilies">Multi-familles</string>
<string name="poi_flooring">Magasin de parquet</string>
<string name="poi_outpost">Point de livraison</string>
<string name="poi_water_utility">Service des eaux</string>
@ -3625,7 +3625,7 @@
<string name="poi_vehicle_military">Accès véhicules : militaires</string>
<string name="poi_vehicle_delivery">Accès véhicules : livraisons</string>
<string name="poi_vehicle_forestry">Accès véhicules : foresterie</string>
<string name="poi_motor_vehicle_no">Accès véhicules à moteur : non</string>
<string name="poi_motor_vehicle_no">Accès véhicule motorisé : non</string>
<string name="poi_snowmobile_no">Accès motoneige : non</string>
<string name="poi_bus_yes">Oui</string>
<string name="poi_hgv_delivery">Livraison</string>
@ -3633,22 +3633,22 @@
<string name="poi_goods_designated">Indiqué</string>
<string name="poi_disabled_yes">Oui</string>
<string name="poi_glacier_type_hanging">suspendu</string>
<string name="poi_motorcar_yes">Accès véhicules : oui</string>
<string name="poi_motorcar_private">accès-voiture : privé</string>
<string name="poi_motorcar_no">accès-voiture : impossible</string>
<string name="poi_motorcar_permissive">accès-voiture : possible</string>
<string name="poi_motorcar_customers">Accès aux automobiles:forestiers</string>
<string name="poi_motor_vehicle_yes">accès-voiture : autorisé</string>
<string name="poi_motor_vehicle_private">Accès-voiture : privé</string>
<string name="poi_motor_vehicle_delivery">Accès aux véhicules à moteur : livraison</string>
<string name="poi_motor_vehicle_agricultural">Accès-véhicules : agricoles</string>
<string name="poi_motorcar_destination">Accès aux automobiles:riverains</string>
<string name="poi_motorcar_forestry">Accès aux automobiles:forestiers</string>
<string name="poi_motor_vehicle_destination">Accès aux véhicules à moteurs:riverains</string>
<string name="poi_motor_vehicle_permissive">Accès véhicule à moteur:toléré</string>
<string name="poi_motor_vehicle_customers">Accès au véhicule à moteur:clients</string>
<string name="poi_motor_vehicle_military">Accès aux véhicules à moteur:militaires</string>
<string name="poi_motor_vehicle_forestry">Accès aux véhicules à moteurs:forestiers</string>
<string name="poi_motorcar_yes">Accès voiture : oui</string>
<string name="poi_motorcar_private">Accès voiture : privé</string>
<string name="poi_motorcar_no">Accès voiture : non</string>
<string name="poi_motorcar_permissive">Accès voiture : permis</string>
<string name="poi_motorcar_customers">Accès voiture : clientèle</string>
<string name="poi_motor_vehicle_yes">Accès véhicule motorisé : oui</string>
<string name="poi_motor_vehicle_private">Accès véhicule motorisé : privé</string>
<string name="poi_motor_vehicle_delivery">Accès véhicule motorisé : livraison</string>
<string name="poi_motor_vehicle_agricultural">Accès véhicule motorisé : agricole</string>
<string name="poi_motorcar_destination">Accès voiture : riverains</string>
<string name="poi_motorcar_forestry">Accès voiture : forestier</string>
<string name="poi_motor_vehicle_destination">Accès véhicule motorisé : riverains</string>
<string name="poi_motor_vehicle_permissive">Accès véhicule motorisé : toléré</string>
<string name="poi_motor_vehicle_customers">Accès véhicule motorisé : clientèle</string>
<string name="poi_motor_vehicle_military">Accès véhicule motorisé : militaire</string>
<string name="poi_motor_vehicle_forestry">Accès véhicule motorisé : forestier</string>
<string name="poi_cellar_entrance">Entrée de cave</string>
<string name="poi_health_food">Magasin de diététique</string>
<string name="poi_craft_builder">Constructeur</string>
@ -3688,7 +3688,7 @@
<string name="poi_bath_type">Type</string>
<string name="poi_bath_open_air">Plein-air</string>
<string name="poi_bath_type_lake">Lac</string>
<string name="poi_horse_forestry">Accès à cheval : forestiers seuls</string>
<string name="poi_horse_forestry">Accès à cheval : forestier</string>
<string name="poi_foot_destination">Accès piétonnier : riverains</string>
<string name="poi_trailer_no">Accès aux remorques : non</string>
<string name="poi_psv_yes">Accès aux transports publics ou taxis : oui</string>

View file

@ -4002,4 +4002,6 @@
<string name="shared_string_last_used">Dernier utilisé</string>
<string name="routing_attr_prefer_hiking_routes_name">Pirivilégier les itinéraires de randonnée</string>
<string name="routing_attr_prefer_hiking_routes_description">Pirivilégier les itinéraires de randonnée</string>
<string name="routing_attr_allow_intermittent_description">Autoriser les voies navigables intermittentes</string>
<string name="routing_attr_allow_intermittent_name">Autoriser les voies navigables intermittentes</string>
</resources>

View file

@ -1621,7 +1621,7 @@
<string name="shared_string_skip">Kihagyás</string>
<string name="app_name_osmand">OsmAnd</string>
<string name="offline_maps_and_navigation">Offline térképek\nés navigáció</string>
<string name="next_proceed">Tovább</string>
<string name="next_proceed">Következő</string>
<string name="dahboard_options_dialog_title">Műszerfal beállításai</string>
<string name="traffic_warning_hazard">Veszély</string>
<string name="poi_action_delete">törlés</string>
@ -4015,8 +4015,8 @@
<string name="shared_string_last_used">Utoljára használt</string>
<string name="routing_attr_prefer_hiking_routes_description">Túraútvonalak előnyben részesítése</string>
<string name="routing_attr_prefer_hiking_routes_name">Túraútvonalak előnyben részesítése</string>
<string name="routing_attr_allow_streams_description">Patakok és csatornák engedélyezése</string>
<string name="routing_attr_allow_streams_name">Patakok és csatornák engedélyezése</string>
<string name="routing_attr_allow_streams_description">Patakok és vízelvezető árkok engedélyezése</string>
<string name="routing_attr_allow_streams_name">Patakok és vízelvezető árkok engedélyezése</string>
<string name="routing_attr_allow_intermittent_description">Időszakos vízfolyások engedélyezése</string>
<string name="routing_attr_allow_intermittent_name">Időszakos vízfolyások engedélyezése</string>
</resources>

View file

@ -3913,7 +3913,7 @@
<string name="contour_lines_thanks">תודה לך על רכישת ‚קווי מתאר’</string>
<string name="routing_attr_avoid_footways_description">הימנעות משבילי הולכי רגל</string>
<string name="routing_attr_avoid_footways_name">הימנעות משבילי הולכי רגל</string>
<string name="osm_live_payment_desc_hw">המינוי חויב לתקופה הנבחרת. ניתן לבטל דרך ה־AppGallery בכל עת.</string>
<string name="osm_live_payment_desc_hw">המינוי מחויב לפי התקופה הנבחרת. ניתן לבטל אותו דרך ה־AppGallery בכל עת.</string>
<string name="osm_live_payment_subscription_management_hw">חשבון ה־AppGallery שלך יחויב עם אישור הרכישה.
\n
\nתוקף המינוי מתארך אוטומטי אלא אם כן בוטל בטרם תאריך החידוש. החשבון שלך יחויב על תקופת החידוש (חודש/שלושה חודשים/שנה) רק בתאריך החידוש.
@ -4023,4 +4023,10 @@
<string name="reverse_all_points">להפוך את כל הנקודות</string>
<string name="profile_by_default_description">נא לבחור את הפרופיל בו יעשה שימוש עם הפעלת היישומון.</string>
<string name="shared_string_last_used">שימוש אחרון</string>
<string name="routing_attr_prefer_hiking_routes_description">להעדיף מסלולי הליכה</string>
<string name="routing_attr_prefer_hiking_routes_name">להעדיף מסלולי הליכה</string>
<string name="routing_attr_allow_streams_description">לאפשר נחלים וניקוזים</string>
<string name="routing_attr_allow_streams_name">לאפשר נחלים וניקוזים</string>
<string name="routing_attr_allow_intermittent_description">לאפשר מקטעים עם דרכי מים עונתיים</string>
<string name="routing_attr_allow_intermittent_name">לאפשר מקטעים עם דרכי מים עונתיים</string>
</resources>

View file

@ -3878,4 +3878,5 @@
<string name="poi_water_source_water_tank">Tanque de água</string>
<string name="poi_water_source_tap">Torneira</string>
<string name="poi_water_source_water_works">Estação de tratamento de água</string>
<string name="poi_ranger_station">Posto de guarda florestal</string>
</resources>

View file

@ -4021,4 +4021,10 @@
<string name="reverse_all_points">Otočiť všetky body</string>
<string name="profile_by_default_description">Zvoľte profil, ktorý bude použitý pri štarte aplikácie.</string>
<string name="shared_string_last_used">Naposledy použité</string>
<string name="routing_attr_prefer_hiking_routes_description">Uprednostniť turistické trasy</string>
<string name="routing_attr_prefer_hiking_routes_name">Uprednostniť turistické trasy</string>
<string name="routing_attr_allow_streams_description">Povoliť potoky a odtokové kanály</string>
<string name="routing_attr_allow_streams_name">Povoliť potoky a odtokové kanály</string>
<string name="routing_attr_allow_intermittent_description">Povoliť dočasné vodné toky</string>
<string name="routing_attr_allow_intermittent_name">Povoliť dočasné vodné toky</string>
</resources>

View file

@ -4019,4 +4019,8 @@
<string name="shared_string_last_used">Востаннє використовувалось</string>
<string name="routing_attr_allow_intermittent_description">Дозволити переривчасті водні шляхи</string>
<string name="routing_attr_allow_intermittent_name">Дозволити переривчасті водні шляхи</string>
<string name="routing_attr_prefer_hiking_routes_description">Надавати перевагу пішохідним маршрутам</string>
<string name="routing_attr_prefer_hiking_routes_name">Надавати перевагу пішохідним маршрутам</string>
<string name="routing_attr_allow_streams_description">Дозволити потоки та стічні канали</string>
<string name="routing_attr_allow_streams_name">Дозволити потоки та стічні канали</string>
</resources>

View file

@ -4016,4 +4016,10 @@
<string name="reverse_all_points">反轉所有點</string>
<string name="profile_by_default_description">選取要在應用程式啟動時使用的設定檔。</string>
<string name="shared_string_last_used">最後使用</string>
<string name="routing_attr_prefer_hiking_routes_description">偏好遠足路線</string>
<string name="routing_attr_prefer_hiking_routes_name">偏好遠足路線</string>
<string name="routing_attr_allow_streams_description">允許溪流與水溝</string>
<string name="routing_attr_allow_streams_name">允許溪流與水溝</string>
<string name="routing_attr_allow_intermittent_description">允許間歇水路</string>
<string name="routing_attr_allow_intermittent_name">允許間歇水路</string>
</resources>

View file

@ -8,9 +8,9 @@ import net.osmand.PlatformUtil;
import net.osmand.data.LatLon;
import net.osmand.map.OsmandRegions;
import net.osmand.map.WorldRegion;
import net.osmand.plus.CustomRegion;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.CustomRegion;
import net.osmand.plus.download.DownloadOsmandIndexesHelper.AssetIndexItem;
import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.util.Algorithms;
@ -21,6 +21,7 @@ import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@ -80,7 +81,7 @@ public class DownloadResources extends DownloadResourceGroup {
List<IndexItem> items = getWikivoyageItems();
if (items != null) {
for (IndexItem ii : items) {
if (ii.getFileName().equals(fileName)) {
if (ii.getTargetFile(app).getName().equals(fileName)) {
return ii;
}
}
@ -177,6 +178,8 @@ public class DownloadResources extends DownloadResourceGroup {
}
}
if (date != null && !date.equals(indexActivatedDate) && !date.equals(indexFilesDate)) {
long oldItemSize = 0;
long itemSize = item.getContentSize();
if ((item.getType() == DownloadActivityType.NORMAL_FILE && !item.extra)
|| item.getType() == DownloadActivityType.ROADS_FILE
|| item.getType() == DownloadActivityType.WIKIPEDIA_FILE
@ -185,15 +188,12 @@ public class DownloadResources extends DownloadResourceGroup {
outdated = true;
} else if (item.getType() == DownloadActivityType.WIKIVOYAGE_FILE
|| item.getType() == DownloadActivityType.TRAVEL_FILE) {
long itemSize = item.getContentSize();
long oldItemSize = app.getAppPath(IndexConstants.WIKIVOYAGE_INDEX_DIR +
oldItemSize = app.getAppPath(IndexConstants.WIKIVOYAGE_INDEX_DIR +
item.getTargetFileName()).length();
if (itemSize != oldItemSize) {
outdated = true;
}
} else {
long itemSize = item.getContentSize();
long oldItemSize = 0;
if (parsed && item.getTimestamp() > item.getLocalTimestamp()) {
outdated = true;
} else if (item.getType() == DownloadActivityType.VOICE_FILE) {
@ -223,12 +223,23 @@ public class DownloadResources extends DownloadResourceGroup {
outdated = true;
}
}
if (outdated) {
logItemUpdateInfo(item, format, itemSize, oldItemSize);
}
}
item.setOutdated(outdated);
return outdated;
}
private void logItemUpdateInfo(IndexItem item, DateFormat format, long itemSize, long oldItemSize) {
String date = item.getDate(format);
String sfName = item.getTargetFileName();
String indexActivatedDate = indexActivatedFileNames.get(sfName);
String indexFilesDate = indexFileNames.get(sfName);
LOG.info("name " + item.getFileName() + " timestamp " + item.timestamp + " localTimestamp " + item.localTimestamp + " date " + date
+ " indexActivatedDate " + indexActivatedDate + " indexFilesDate " + indexFilesDate
+ " itemSize " + itemSize + " oldItemSize " + oldItemSize);
}
protected void updateFilesToUpdate() {
initAlreadyLoadedFiles();

View file

@ -502,27 +502,26 @@ public class WaypointDialogHelper {
.create();
items.add(reorderStartAndFinishItem);
BaseBottomSheetItem reorderAllItems = new SimpleBottomSheetItem.Builder()
.setIcon(getContentIcon(R.drawable.ic_action_sort_reverse_order))
.setTitle(getString(R.string.reverse_all_points))
.setLayoutId(R.layout.bottom_sheet_item_simple)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
WaypointDialogHelper.reverseAllPoints(
app,
mapActivity,
mapActivity.getDashboard().getWaypointDialogHelper()
);
if (!Algorithms.isEmpty(targetsHelper.getIntermediatePoints())) {
BaseBottomSheetItem reorderAllItems = new SimpleBottomSheetItem.Builder()
.setIcon(getContentIcon(R.drawable.ic_action_sort_reverse_order))
.setTitle(getString(R.string.reverse_all_points))
.setLayoutId(R.layout.bottom_sheet_item_simple)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
WaypointDialogHelper.reverseAllPoints(
app,
mapActivity,
mapActivity.getDashboard().getWaypointDialogHelper()
);
}
dismiss();
}
dismiss();
}
})
.create();
int intermediateSize = targetsHelper.getIntermediatePoints().size();
if (intermediateSize > 1) {
})
.create();
items.add(reorderAllItems);
}

View file

@ -72,20 +72,13 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment {
String userNameOpenID = settings.USER_NAME.get();
String userName = isLoginOAuth(settings) ? userNameOAuth : userNameOpenID;
accountName.setText(userName);
closeChangeSet.setBackgroundResource(isNightMode ? R.drawable.layout_bg_dark : R.drawable.layout_bg);
final int paddingSmall = app.getResources().getDimensionPixelSize(R.dimen.content_padding_small);
closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0);
closeChangeSet.setChecked(true);
setCloseChangeSet(isNightMode, paddingSmall);
closeChangeSet.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isNightMode) {
closeChangeSet.setBackgroundResource(
isChecked ? R.drawable.layout_bg_dark_solid : R.drawable.layout_bg_dark);
} else {
closeChangeSet.setBackgroundResource(
isChecked ? R.drawable.layout_bg_solid : R.drawable.layout_bg);
}
closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0);
setCloseChangeSet(isNightMode, paddingSmall);
}
});
LinearLayout account = sendOsmPoiView.findViewById(R.id.account_container);
@ -254,5 +247,16 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment {
}
return comment;
}
private void setCloseChangeSet(boolean isNightMode, int paddingSmall) {
if (isNightMode) {
closeChangeSet.setBackgroundResource(
closeChangeSet.isChecked() ? R.drawable.layout_bg_dark_solid : R.drawable.layout_bg_dark);
} else {
closeChangeSet.setBackgroundResource(
closeChangeSet.isChecked() ? R.drawable.layout_bg_solid : R.drawable.layout_bg);
}
closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0);
}
}

View file

@ -301,7 +301,7 @@ public class WikiArticleHelper {
return null;
}
String firstParagraphHtml = content.substring(firstParagraphStart, firstParagraphEnd + P_CLOSED.length());
while (firstParagraphHtml.length() == (P_OPENED.length() + P_CLOSED.length())
while (firstParagraphHtml.substring(P_OPENED.length(), firstParagraphHtml.length() - P_CLOSED.length()).trim().isEmpty()
&& (firstParagraphEnd + P_CLOSED.length()) < content.length()) {
firstParagraphStart = content.indexOf(P_OPENED, firstParagraphEnd);
firstParagraphEnd = firstParagraphStart == -1 ? -1 : content.indexOf(P_CLOSED, firstParagraphStart);

View file

@ -33,6 +33,7 @@ public class TravelArticle {
String lang;
String contentsJson;
String aggregatedPartOf;
String fullContent;
public String getTitle() {

View file

@ -46,6 +46,7 @@ public class TravelDbHelper implements TravelHelper {
private static final Log LOG = PlatformUtil.getLog(TravelDbHelper.class);
private static final String WORLD_WIKIVOYAGE_FILE_NAME = "World_wikivoyage.sqlite";
private static final String ARTICLES_TABLE_NAME = "travel_articles";
private static final String POPULAR_TABLE_NAME = "popular_articles";
private static final String ARTICLES_POP_INDEX = "popularity_index";
@ -185,6 +186,11 @@ public class TravelDbHelper implements TravelHelper {
return null;
}
@Override
public String getWikivoyageFileName() {
return WORLD_WIKIVOYAGE_FILE_NAME;
}
public List<File> getExistingTravelBooks() {
return existingTravelBooks;
}

View file

@ -49,4 +49,6 @@ public interface TravelHelper {
// For TravelOBFHelper it could always return "" and should be no problem
// Bookmarks should be refactored properly to support multiple files
String getSelectedTravelBookName();
String getWikivoyageFileName();
}

View file

@ -9,7 +9,6 @@ import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
import net.osmand.plus.wikipedia.WikiArticleHelper;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@ -119,6 +118,8 @@ public class TravelLocalDataHelper {
saved.lat = article.lat;
saved.lon = article.lon;
saved.routeId = article.routeId;
saved.fullContent = article.getContent();
saved.contentsJson = article.contentsJson;
savedArticles.add(saved);
dbHelper.addSavedArticle(saved);
notifySavedUpdated();
@ -162,6 +163,18 @@ public class TravelLocalDataHelper {
return null;
}
@Nullable
public TravelArticle getSavedArticle(String routeId, String lang) {
for (TravelArticle article : savedArticles) {
if (article.routeId != null && article.routeId.equals(routeId)
&& article.lang != null && article.lang.equals(lang)) {
article.content = article.fullContent;
return article;
}
}
return null;
}
public interface Listener {
void savedArticlesUpdated();
@ -169,7 +182,7 @@ public class TravelLocalDataHelper {
private static class WikivoyageLocalDataDbHelper {
private static final int DB_VERSION = 5;
private static final int DB_VERSION = 6;
private static final String DB_NAME = "wikivoyage_local_data";
private static final String HISTORY_TABLE_NAME = "wikivoyage_search_history";
@ -204,6 +217,8 @@ public class TravelLocalDataHelper {
private static final String BOOKMARKS_COL_LAT = "lat";
private static final String BOOKMARKS_COL_LON = "lon";
private static final String BOOKMARKS_COL_ROUTE_ID = "route_id";
private static final String BOOKMARKS_COL_CONTENT_JSON = "content_json";
private static final String BOOKMARKS_COL_CONTENT = "content";
private static final String BOOKMARKS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " +
BOOKMARKS_TABLE_NAME + " (" +
@ -215,7 +230,9 @@ public class TravelLocalDataHelper {
BOOKMARKS_COL_TRAVEL_BOOK + " TEXT, " +
BOOKMARKS_COL_LAT + " double, " +
BOOKMARKS_COL_LON + " double, " +
BOOKMARKS_COL_ROUTE_ID + " TEXT" + ");";
BOOKMARKS_COL_ROUTE_ID + " TEXT, " +
BOOKMARKS_COL_CONTENT_JSON + " TEXT, " +
BOOKMARKS_COL_CONTENT + " TEXT" + ");";
private static final String BOOKMARKS_TABLE_SELECT = "SELECT " +
BOOKMARKS_COL_ARTICLE_TITLE + ", " +
@ -225,7 +242,9 @@ public class TravelLocalDataHelper {
BOOKMARKS_COL_PARTIAL_CONTENT + ", " +
BOOKMARKS_COL_LAT + ", " +
BOOKMARKS_COL_LON + ", " +
BOOKMARKS_COL_ROUTE_ID +
BOOKMARKS_COL_ROUTE_ID + ", " +
BOOKMARKS_COL_CONTENT_JSON + ", " +
BOOKMARKS_COL_CONTENT +
" FROM " + BOOKMARKS_TABLE_NAME;
private final OsmandApplication context;
@ -278,6 +297,10 @@ public class TravelLocalDataHelper {
if (oldVersion < 5) {
conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_ROUTE_ID + " TEXT");
}
if (oldVersion < 6) {
conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_CONTENT_JSON + " TEXT");
conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_CONTENT + " TEXT");
}
}
@NonNull
@ -428,11 +451,14 @@ public class TravelLocalDataHelper {
BOOKMARKS_COL_TRAVEL_BOOK + ", " +
BOOKMARKS_COL_LAT + ", " +
BOOKMARKS_COL_LON + ", " +
BOOKMARKS_COL_ROUTE_ID +
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
BOOKMARKS_COL_ROUTE_ID + ", " +
BOOKMARKS_COL_CONTENT_JSON + ", " +
BOOKMARKS_COL_CONTENT +
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
conn.execSQL(query, new Object[]{article.title, article.lang,
article.aggregatedPartOf, article.imageTitle, article.content,
travelBook, article.lat, article.lon, article.routeId});
travelBook, article.lat, article.lon, article.routeId, article.contentsJson,
article.fullContent});
} finally {
conn.close();
}
@ -484,6 +510,8 @@ public class TravelLocalDataHelper {
res.lat = cursor.getDouble(cursor.getColumnIndex(BOOKMARKS_COL_LAT));
res.lon = cursor.getDouble(cursor.getColumnIndex(BOOKMARKS_COL_LON));
res.routeId = cursor.getString(cursor.getColumnIndex(BOOKMARKS_COL_ROUTE_ID));
res.contentsJson = cursor.getString(cursor.getColumnIndex(BOOKMARKS_COL_CONTENT_JSON));
res.fullContent = cursor.getString(cursor.getColumnIndex(BOOKMARKS_COL_CONTENT));
return res;
}

View file

@ -37,8 +37,10 @@ import static net.osmand.CollatorStringMatcher.StringMatcherMode.CHECK_EQUALS_FR
public class TravelObfHelper implements TravelHelper {
private static final Log LOG = PlatformUtil.getLog(TravelObfHelper.class);
public static final String ROUTE_ARTICLE = "route_article";
public static final int SEARCH_RADIUS = 100000;
private static final String WORLD_WIKIVOYAGE_FILE_NAME = "World_wikivoyage.travel.obf";
private static final String ROUTE_ARTICLE = "route_article";
private static final int SEARCH_RADIUS = 100000;
private final OsmandApplication app;
private final Collator collator;
@ -249,9 +251,12 @@ public class TravelObfHelper implements TravelHelper {
TravelArticle article = cachedArticles.get(routeId);
if (article != null) {
return article;
} else {
}
article = getArticleByIdFromTravelBooks(routeId, lang);
if (article != null) {
return getArticleByIdFromTravelBooks(routeId, lang);
}
return localDataHelper.getSavedArticle(routeId, lang);
}
private TravelArticle getArticleByIdFromTravelBooks(final String routeId, final String lang) {
@ -392,4 +397,9 @@ public class TravelObfHelper implements TravelHelper {
public String getSelectedTravelBookName() {
return "";
}
@Override
public String getWikivoyageFileName() {
return WORLD_WIKIVOYAGE_FILE_NAME;
}
}

View file

@ -142,7 +142,9 @@ public class ExploreRvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
public void addNeededMapsCard(TravelNeededMapsCard card) {
this.neededMapsCard = card;
if (addItem(getNeededMapsCardPosition(), card)) {
if (neededMapsCardExists(getNeededMapsCardPosition())) {
updateNeededMapsCard(false);
} else if (addItem(getNeededMapsCardPosition(), card)) {
notifyDataSetChanged();
}
}
@ -183,7 +185,9 @@ public class ExploreRvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
public void addDownloadUpdateCard(TravelDownloadUpdateCard card) {
this.downloadCard = card;
if (addItem(getDownloadUpdateCardPosition(), card)) {
if (downloadUpdateCardExists(getDownloadUpdateCardPosition())) {
updateDownloadUpdateCard(false);
} else if (addItem(getDownloadUpdateCardPosition(), card)) {
notifyDataSetChanged();
}
}

View file

@ -45,8 +45,6 @@ import java.util.List;
public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadEvents, TravelLocalDataHelper.Listener {
private static final String WORLD_WIKIVOYAGE_FILE_NAME = "World_wikivoyage.sqlite";
private static boolean SHOW_TRAVEL_UPDATE_CARD = true;
private static boolean SHOW_TRAVEL_NEEDED_MAPS_CARD = true;
@ -342,14 +340,6 @@ public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadEv
return res.toArray(new IndexItem[0]);
}
@NonNull
private String getWikivoyageFileName() {
// OsmandApplication app = getMyApplication();
// File selectedTravelBook = app != null ? app.getTravelDbHelper().getSelectedTravelBook() : null;
// return selectedTravelBook == null ? WORLD_WIKIVOYAGE_FILE_NAME : selectedTravelBook.getName();
return WORLD_WIKIVOYAGE_FILE_NAME;
}
private void removeDownloadUpdateCard() {
if (adapter != null) {
adapter.removeDownloadUpdateCard();
@ -379,7 +369,7 @@ public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadEv
ProcessIndexItemsTask(ExploreTabFragment fragment) {
app = fragment.getMyApplication();
weakFragment = new WeakReference<>(fragment);
fileName = fragment.getWikivoyageFileName();
fileName = app.getTravelHelper().getWikivoyageFileName();
}
@Override

View file

@ -50,7 +50,7 @@ public class SavedArticlesTabFragment extends BaseOsmAndFragment implements Trav
public void openArticle(TravelArticle article) {
FragmentManager fm = getFragmentManager();
if (fm != null) {
WikivoyageArticleDialogFragment.showInstanceByTitle(app, fm, article.getTitle(), article.getLang());
WikivoyageArticleDialogFragment.showInstance(app, fm, article.getRouteId(), article.getLang());
}
}
});
@ -161,7 +161,8 @@ public class SavedArticlesTabFragment extends BaseOsmAndFragment implements Trav
}
TravelArticle oldArticle = (TravelArticle) oldItem;
TravelArticle newArticle = (TravelArticle) newItem;
return oldArticle.getRouteId().equals(newArticle.getRouteId())
return oldArticle.getRouteId() != null && oldArticle.getLang() != null &&
oldArticle.getRouteId().equals(newArticle.getRouteId())
&& oldArticle.getLang().equals(newArticle.getLang());
}
return false;