Merge remote-tracking branch 'origin/master'

This commit is contained in:
Weblate 2016-08-18 21:55:13 +02:00
commit e53e693be6
8 changed files with 422 additions and 360 deletions

View file

@ -11,6 +11,8 @@
-->
<!-- Not translatable -->
<string name="full_version_price">€5</string>
<string name="osm_live_price">€1.5</string>
<string name="osm_live">OSM Live (Beta)</string>
<string name="ga_api_key">UA-28342846-2</string>
<string name="ga_dispatchPeriod">10</string>

View file

@ -9,91 +9,248 @@
android:layout_height="wrap_content"
android:background="@color/osmo_header_dark"
android:orientation="vertical"
android:paddingBottom="@dimen/list_header_padding"
android:paddingLeft="@dimen/list_content_padding"
android:paddingRight="@dimen/list_content_padding"
android:paddingTop="@dimen/list_header_padding"
android:theme="@style/FreeVersionBanner"
tools:showIn="@layout/local_index_fragment_header">
android:theme="@style/FreeVersionBanner">
<LinearLayout
android:id="@+id/freeVersionBannerTitle"
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/free_version_title"/>
<TextView
android:id="@+id/downloadsLeftTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@string/downloads_left_template"/>
</LinearLayout>
<TextView
android:id="@+id/freeVersionDescriptionTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
tools:text="@string/free_version_message"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="8dp"
android:layout_margin="4dp">
<ProgressBar
android:id="@+id/downloadsLeftProgressBar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:max="10"
android:progressDrawable="@drawable/number_of_downloads_progress_bar_drawable"
android:saveEnabled="false"
tools:progress="6"/>
android:paddingBottom="@dimen/list_header_padding"
android:paddingTop="@dimen/list_header_padding">
<LinearLayout
android:id="@+id/marksLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"/>
</FrameLayout>
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/buttonsLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/list_content_padding">
<LinearLayout
android:id="@+id/bannerTopLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="@dimen/list_content_padding"
android:paddingRight="@dimen/list_content_padding">
<net.osmand.plus.widgets.ButtonEx
android:id="@+id/getFullVersionButton"
android:layout_width="0dp"
android:layout_height="@dimen/list_header_height"
android:layout_weight="1"
android:background="@drawable/blue_button_drawable"
android:text="@string/get_full_version"
android:textSize="@dimen/default_desc_text_size"
android:textStyle="bold"
osmand:textAllCapsCompat="true"/>
<LinearLayout
android:id="@+id/freeVersionBannerTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dp">
<net.osmand.plus.widgets.ButtonEx
android:id="@+id/laterButton"
android:layout_width="0dp"
android:layout_height="@dimen/list_header_height"
android:layout_marginLeft="@dimen/list_content_padding"
android:layout_weight="1"
android:background="@drawable/later_button_drawable"
android:text="@string/later"
android:textSize="@dimen/default_desc_text_size"
android:textStyle="bold"
osmand:textAllCapsCompat="true"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/free_version_title"/>
<TextView
android:id="@+id/downloadsLeftTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@string/downloads_left_template"/>
</LinearLayout>
<TextView
android:id="@+id/freeVersionDescriptionTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
tools:text="@string/free_version_message"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="8dp"
android:layout_margin="4dp">
<ProgressBar
android:id="@+id/downloadsLeftProgressBar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:max="10"
android:progressDrawable="@drawable/number_of_downloads_progress_bar_drawable"
android:saveEnabled="false"
tools:progress="6"/>
<LinearLayout
android:id="@+id/marksLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"/>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/priceInfoLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/list_content_padding"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/dashboard_divider_dark"/>
<LinearLayout
android:id="@+id/fullVersionLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/list_content_padding"
android:orientation="horizontal">
<android.support.v7.widget.AppCompatImageView
android:layout_width="54dp"
android:layout_height="32dp"
android:scaleType="center"
android:src="@drawable/ic_action_osmand_logo"
android:tint="@color/osmand_orange"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/list_content_padding"
android:orientation="vertical">
<TextView
android:id="@+id/fullVersionTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="OsmAnd+"
android:textSize="@dimen/default_list_text_size_large"
android:textStyle="bold"/>
<TextView
android:id="@+id/fullVersionDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/osmand_plus_banner_desc"/>
<ProgressBar
android:id="@+id/fullVersionProgress"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginTop="16dp"
android:indeterminate="true"
android:visibility="gone"/>
<android.support.v7.widget.AppCompatButton
android:id="@+id/fullVersionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:background="@drawable/blue_button_drawable"
android:paddingBottom="10dp"
android:paddingLeft="14dp"
android:paddingRight="14dp"
android:paddingTop="10dp"
android:textColor="@color/color_white"
android:visibility="visible"
tools:text="GET FOR E5"/>
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="54dp"
android:layout_marginTop="@dimen/list_content_padding"
android:background="@color/dashboard_divider_dark"/>
<LinearLayout
android:id="@+id/osmLiveLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/list_content_padding"
android:orientation="horizontal">
<android.support.v7.widget.AppCompatImageView
android:layout_width="54dp"
android:layout_height="32dp"
android:scaleType="center"
android:src="@drawable/ic_action_osm_live"
android:tint="@color/osmand_orange"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/list_content_padding"
android:orientation="vertical">
<TextView
android:id="@+id/osmLiveTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/osm_live_subscription"
android:textSize="@dimen/default_list_text_size_large"
android:textStyle="bold"/>
<TextView
android:id="@+id/osmLiveDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/osm_live_banner_desc"/>
<ProgressBar
android:id="@+id/osmLiveProgress"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginTop="16dp"
android:indeterminate="true"
android:visibility="gone"/>
<android.support.v7.widget.AppCompatButton
android:id="@+id/osmLiveButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:background="@drawable/blue_button_drawable"
android:paddingBottom="10dp"
android:paddingLeft="14dp"
android:paddingRight="14dp"
android:paddingTop="10dp"
android:textColor="@color/color_white"
tools:text="GET FOR 1,5E PER MONTH"/>
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="54dp"
android:layout_marginTop="@dimen/list_content_padding"
android:background="@color/dashboard_divider_dark"/>
</LinearLayout>
<LinearLayout
android:id="@+id/buttonsLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp">
<android.support.v7.widget.AppCompatButton
android:id="@+id/laterButton"
style="@style/Widget.AppCompat.Button.ButtonBar.AlertDialog"
android:layout_width="wrap_content"
android:layout_height="@dimen/list_header_height"
android:layout_marginLeft="40dp"
android:text="@string/later"
android:textColor="@color/color_white"
android:textSize="@dimen/default_desc_text_size"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
</LinearLayout>

View file

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="poi_bakery">Булочная</string>
<string name="poi_alcohol">Винно-водочный магазин</string>
@ -2910,7 +2910,7 @@
<string name="poi_ventilation_shaft">Вентиляционная шахта</string>
<string name="poi_pump_type_beam_pump">Тип насоса: станок-качалка</string>
<string name="poi_pump_type_india_mk_2_3">Тип насоса: India Mk II или III&gt;</string>
<string name="poi_pump_type_india_mk_2_3">Тип насоса: India Mk II или III</string>
<string name="poi_pump_type_gravity">Тип насоса: гравитационный</string>
<string name="poi_pump_style_modern">Стиль насоса: современный</string>
<string name="poi_pump_style_historic">Стиль насоса: исторический</string>
@ -3016,16 +3016,13 @@
<string name="poi_length">Длина</string>
<string name="poi_recycling_waste_oil">Отработанное масло</string>
<string name="poi_recycling_waste_oil">Отработанное масло</string>
<string name="poi_association">Офис ассоциации</string>
<string name="poi_hockey">Хоккей</string>
<string name="poi_denomination_uniting">Обьеденить</string>
<string name="poi_denomination_reform">Реформа</string>
<string name="poi_fuel_svo">СВО</string>
<string name="poi_fuel_e10">Е10</string>
<string name="poi_fuel_e20">Е20</string>
<string name="poi_fuel_e85">E85</string>
<string name="poi_seamark_dyke">Знак дамбы</string>
<string name="poi_seamark_light_float">Бакен с маяком</string>
<string name="poi_seamark_light_vessel">Плавучий маяк</string>
</resources>
</resources>

View file

@ -1,5 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<string name="number_of_gpx_files_selected_pattern">%s GPX трека(ов) выбрано</string>
<string name="change_markers_position">Переместить курсор</string>
<string name="current_track">Текущий путь</string>
@ -67,11 +66,7 @@
<string name="rendering_attr_hideProposed_name">Планируемые объекты</string>
<string name="srtm_plugin_description">"Этот плагин обеспечивает как наложение контурных линий, так и отображения затеняющего слоя рельефа поверх стандартных карт OsmAnd. Эта функция высоко оценится спортсменами, туристами, путешественниками и всеми, кто заинтересован в рельефной структуре ландшафта.
Глобальные данные (между 70 градусами на севере и 70 градусами на юге) основываются на измерениях SRTM (Shuttle Radar Topography Mission) и ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer) — инструментом визуализации Terra, флагманского спутника Системы Наблюдения Земли NASA. ASTER является результатом совместных усилий NASA, министерства экономики Японии, торговли и промышленности (METI), а также Космических Систем Японии (J-spacesystems).
"</string>
<string name="srtm_plugin_description">"Этот плагин обеспечивает как наложение контурных линий, так и отображения затеняющего слоя рельефа поверх стандартных карт OsmAnd. Эта функция высоко оценится спортсменами, туристами, путешественниками и всеми, кто заинтересован в рельефной структуре ландшафта.\n\nГлобальные данные (между 70 градусами на севере и 70 градусами на юге) основываются на измерениях SRTM (Shuttle Radar Topography Mission) и ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer) — инструментом визуализации Terra, флагманского спутника Системы Наблюдения Земли NASA. ASTER является результатом совместных усилий NASA, министерства экономики Японии, торговли и промышленности (METI), а также Космических Систем Японии (J-spacesystems). "</string>
<string name="srtm_paid_version_msg">Рассмотрите, пожалуйста, покупку плагина \"Линии высот\" в Google Play, чтобы поддержать последующую разработку.</string>
<string name="srtm_paid_version_title">Линии высот</string>
<string name="av_def_action_video">Запись видео</string>
@ -141,14 +136,7 @@
<string name="map_online_data_descr">Использовать онлайн карты (загрузка и кэширование на SD-карте)</string>
<string name="shared_string_online_maps">Онлайн карты</string>
<string name="online_map_settings_descr">Настройки источников онлайн карт и слоёв</string>
<string name="osmand_rastermaps_plugin_description">"С помощью этого плагина можно получить доступ ко множеству видов онлайн-карт (тайловых или растровых), от предопределенных тайловых OpenStreetMap (Mapnik) до спутниковых снимков и слоев специального назначения, таких как карты погоды, климатические карты, геологических карты, слои затемнения высот и т. д.
Любая из этих карт может быть использована в качестве основной (базовой) карты для отображения на экране OsmAnd или в виде наложения или подложки к другой базовой карте (например стандартной офлайн-карте OsmAnd). Чтобы сделать какую-либо подложку лучше видимой, некоторые элементы векторной карты OsmAnd могут быть по желанию легко скрыты через меню «Настройка карты».
Тайловые карты можно получить непосредственно с помощью онлайн-источников или подготовить для использования в автономном режиме (и вручную скопировать в папку данных OsmAnd) в виде базы данных sqlite, которая может быть создана с помощью различных инструментов подготовки карт сторонних производителей.
"</string>
<string name="osmand_rastermaps_plugin_description">"С помощью этого плагина можно получить доступ ко множеству видов онлайн-карт (тайловых или растровых), от предопределенных тайловых OpenStreetMap (Mapnik) до спутниковых снимков и слоев специального назначения, таких как карты погоды, климатические карты, геологических карты, слои затемнения высот и т. д.\n\nЛюбая из этих карт может быть использована в качестве основной (базовой) карты для отображения на экране OsmAnd или в виде наложения или подложки к другой базовой карте (например стандартной офлайн-карте OsmAnd). Чтобы сделать какую-либо подложку лучше видимой, некоторые элементы векторной карты OsmAnd могут быть по желанию легко скрыты через меню «Настройка карты».\n\nТайловые карты можно получить непосредственно с помощью онлайн-источников или подготовить для использования в автономном режиме (и вручную скопировать в папку данных OsmAnd) в виде базы данных sqlite, которая может быть создана с помощью различных инструментов подготовки карт сторонних производителей. "</string>
<string name="osmand_background_plugin_description">Этот плагин предоставляет навигацию и запись маршрутов в энергосберегающем режиме. Плагин работает в фоновом режиме и периодически активизирует GPS для записи маршрута или воспроизведения голосовых команд.</string>
<string name="osmand_accessibility_description">"Плагин добавляет поддержку специальных возможностей устройства непосредственно в OsmAnd. Это облегчает, например, регулировку скорости речи для голоса TTS, настройку направленности экрана навигации, управление масштабом при помощи трекбола или использование голосовых команд обратной связи для авто аннотации вашего местоположения."</string>
<string name="osmand_development_plugin_description">Плагин отображает параметры для разработки и отладки функций, таких как, проверка или моделирование маршрута, отображение производительности отрисовки, проверка голосовых подсказок. Эти настройки предназначены для разработчиков и не требуются для обычного пользователя.</string>
@ -217,9 +205,7 @@
<string name="global_settings">Общие настройки</string>
<string name="global_app_settings">Общие настройки приложения</string>
<string name="download_files_not_enough_space">Недостаточно места на диске для загрузки %1$s MB (свободно: %2$s).</string>
<string name="download_files_question_space">Загрузить {0} файл(ов)?
Необходимо {1} Мб на постоянной основе.
В настоящее время доступно {2} Мб свободного места.</string>
<string name="download_files_question_space">Загрузить {0} файл(ов)? Необходимо {1} Мб на постоянной основе. В настоящее время доступно {2} Мб свободного места.</string>
<string name="use_transparent_map_theme">Прозрачная тема</string>
<string name="native_library_not_supported">Нативная библиотека не поддерживается на этом устройстве.</string>
<string name="init_native_library">Инициализация нативной библиотеки…</string>
@ -300,7 +286,7 @@
<string name="switch_to_vector_map_to_see">Для этой позиции доступны локальные векторные карты.\n\t\n\tДля их использования выберите в \"Меню\" → \"Настройка карты\" → \"Источник карты…\" → \"Векторные карты\".</string>
<string name="choose_audio_stream">Голосовые инструкции</string>
<string name="choose_audio_stream_descr">Выберите канал для голосовых инструкций</string>
<string name="voice_stream_voice_call">Аудио телефонный звонок (также пытается прервать BT стереосистему автомобиля)</string>
<string name="voice_stream_voice_call">Поток голосовых звонков</string>
<string name="voice_stream_notification">Поток уведомлений</string>
<string name="voice_stream_music">Поток музыки</string>
<string name="warning_tile_layer_not_downloadable">Слой карты %1$s не может быть загружен приложением, попробуйте установить его заново.</string>
@ -328,8 +314,8 @@
<string name="preferred_locale">Локализация</string>
<string name="shared_string_next">След.</string>
<string name="shared_string_previous">Предыдущий</string>
<string name="unit_of_length_descr">Единицы измерения длины</string>
<string name="unit_of_length">Единицы длины</string>
<string name="unit_of_length_descr">Единицы измерения длины и скорости</string>
<string name="unit_of_length">Единицы измерения</string>
<string name="si_mi_foots">Мили/футы</string>
<string name="si_mi_yard">Мили/ярды</string>
<string name="si_km_m">Километры/метры</string>
@ -415,7 +401,7 @@
<string name="osmand_service">Фоновый режим</string>
<string name="osmand_service_descr">Запустить OsmAnd в фоновом режиме для записи трека и навигации</string>
<string name="fast_route_mode">Скоростной маршрут</string>
<string name="fast_route_mode_descr">"Включить, чтобы рассчитать самый быстрый маршрут или отключить для экономного маршрута "</string>
<string name="fast_route_mode_descr">Расчёт скоростного маршрута вместо кратчайшего </string>
<string name="tiles_to_download_estimated_size">На масштабе {0} загрузить {1} тайлов ({2} Mb )</string>
<string name="shared_string_download_map">Загрузить карту</string>
<string name="select_max_zoom_preload_area">Выберите максимальный масштаб для загрузки видимой области</string>
@ -833,7 +819,7 @@
<string name="osmand_parking_event">Забрать автомобиль со стоянки</string>
<string name="osmand_parking_warning">Предупреждение</string>
<string name="osmand_parking_warning_text">Напоминание об ограниченном времени стоянки автомобиля уже добавлено в календарь. Вам будет необходимо удалить его вручную.</string>
<string name="osmand_parking_time_limit_title">Задайте время стоянки</string>
<string name="osmand_parking_time_limit_title">Задайте максимальное время стоянки</string>
<string name="osmand_parking_delete_confirm">Хотите удалить отметку места парковки?</string>
<string name="osmand_parking_delete">Удалить точку парковки</string>
<string name="osmand_parking_choose_type">Выберите тип стоянки</string>
@ -847,9 +833,7 @@
<string name="osmand_parking_pm">PM</string>
<string name="osmand_parking_am">AM</string>
<string name="osmand_parking_position_name">Точка парковки</string>
<string name="osmand_parking_plugin_description">Плагин положения парковки позволяет Вам запомнить, где Ваш автомобиль припаркован и сколько времени стоянки оставляют (если есть ограничение по времени).
И местоположение и время видимо на приборной панели OsmAnd, а также в виджете на экране карты. Тревога может быть добавлена к календарю Android как напоминание.</string>
<string name="osmand_parking_plugin_description">Плагин парковочное место позволит вам легко запомнить, когда автомобиль был припаркован и сколько времени осталось, если парковка ограничена по времени. Вы можете найти место и время парковки на карточке домашней страницы и на карте с помощью виджета.\nТак же он добавляет уведомление в календарь, в случае, если вы хотите получить напоминание о нём.</string>
<string name="osmand_parking_plugin_name">Парковочное место</string>
<string name="context_menu_item_add_parking_point">Пометить место парковки</string>
<string name="context_menu_item_delete_parking_point">Удалить метку места парковки</string>
@ -858,18 +842,17 @@
<string name="select_animate_speedup">Укажите скорость анимации маршрута</string>
<string name="global_app_allocated_memory_descr">Выделено памяти %1$s MB (Ограничение Android %2$s MB, Dalvik %3$s MB).</string>
<string name="global_app_allocated_memory">Выделено памяти</string>
<string name="native_app_allocated_memory_descr">Всего физической памяти выделено приложению %1$s MB (Dalvik %2$s MB, другое %3$s MB).
Пропорциональная память %4$s MB (Ограничение Android %5$s MB, Dalvik %6$s MB).</string>
<string name="native_app_allocated_memory_descr">Всего физической памяти выделено приложению %1$s MB (Dalvik %2$s MB, другое %3$s MB). Proportional memory %4$s MB (Ограничение Android %5$s MB, Dalvik %6$s MB).</string>
<string name="native_app_allocated_memory">Всего физической памяти</string>
<string name="osmand_parking_hours">Часов</string>
<string name="osmand_parking_minutes">Минут</string>
<string name="osmand_parking_position_description_add_time">Машина припаркована на</string>
<string name="osmand_parking_position_description_add_time">Машина припаркована в</string>
<string name="use_compass_navigation_descr">Использовать навигацию по компасу, если направление не определено</string>
<string name="use_compass_navigation">Использовать компас</string>
<string name="route_updated_loc_found">Маршрут будет пересчитан после определения местоположения</string>
<string name="continue_follow_previous_route_auto">Предыдущий маршрут не был закончен. Продолжить следование по нему? (%1$s секунд)</string>
<string name="show_cameras">Камеры контроля скорости</string>
<string name="show_traffic_warnings">Ограничения скорости</string>
<string name="show_cameras">Показать камеры контроля скорости</string>
<string name="show_traffic_warnings">Показать ограничения скорости</string>
<string name="avoid_toll_roads">Платные дороги</string>
<string name="screen_is_locked">Для разблокировки экрана коснитесь значка блокировки</string>
<string name="map_widget_top_text">Название улицы</string>
@ -896,7 +879,7 @@
<string name="bg_service_screen_lock_toast">Экран заблокирован</string>
<string name="bg_service_interval">Установить интервал пробуждения:</string>
<string name="layer_map_appearance">Настройка экрана</string>
<string name="show_lanes">Полосы движения</string>
<string name="show_lanes">Показывать полосы движения</string>
<string name="avoid_unpaved">Избегать просёлочных дорог</string>
<string name="avoid_ferries">Избегать паромов</string>
<string name="avoid_in_routing_title">Избегать при прокладке маршрута…</string>
@ -919,52 +902,9 @@
<string name="email">email</string>
<string name="day_night_info">Восход/закат</string>
<string name="osmand_short_description_80_chars">OsmAnd - это навигационное приложение для путешествий с открытым исходным кодом</string>
<string name="osmand_long_description_1000_chars">"
OsmAnd (Open Street Maps Automated Navigation Directions)
OsmAnd - это навигационное приложение с открытым исходным кодом и доступом к картам и данным на основе (OpenStreetMap). Все данные карт (векторные или растровые) могут быть сохранены на карту памяти устройства для использования без подключения к Интернет. OsmAnd также предоставляет оффлайн и онлайн средства построения маршрута включая голосовые инструкции по маршруту.
Некоторые из основных возможностей приложения:
- работа с векторными и растровыми картами без доступа в Интернет (для этого нужно предварительно сохранить карты на карту памяти устройства);
- доступность компактных векторных карт для всех стран мира;
- загрузка векторных и растровых карт для страны или области из самого приложения;
- отображение дополнительной информации (слоёв) на карте, такой как GPX или навигационные маршруты, объекты (POI), избранные местоположения, линии высот, остановки общественного транспорта; наложение дополнительных карт с настраиваемой прозрачностью; - поиск адресов и объектов (POI) без доступа в Интернет;
- построение маршрутов на небольшие расстояния без доступа в Интернет (экспериментальная функция);
- режимы автомобиля, велосипеда и пешехода с возможностями: - автоматического переключения на дневной/ночной режим отрисовки карты
; - изменения масштабы карты в зависимости от скорости;
- вращения карты по компасу или направлению движения;
- использования голосовых команд (воспроизводимых записанными или генерированными голосами) при движении по маршруту;
- предупреждения о превышении допустимой скорости движения.
Ограничения бесплатной версии OsmAnd:
- ограниченное число загрузок карт;
- нет возможности просматривать описание достопримечательностей из Wikipedia без использования Интернет.
OsmAnd продолжает активно развиваться. Но так как проект финансируется только взносами пользователей, то дальнейшее развитие проекта и появление новых функциональных возможностей зависит от наличия этого финансирования. Поэтому если вам нравится приложение, подумайте о покупке OsmAnd+. Также на сайте osmand.net Вы можете профинансировать конкретную функциональную возможность или внести общий финансовый вклад в развитие проекта.
"</string>
<string name="osmand_long_description_1000_chars">" OsmAnd (Open Street Maps Automated Navigation Directions) OsmAnd - это навигационное приложение с открытым исходным кодом и доступом к картам и данным на основе (OpenStreetMap). Все данные карт (векторные или растровые) могут быть сохранены на карту памяти устройства для использования без подключения к Интернет. OsmAnd также предоставляет оффлайн и онлайн средства построения маршрута включая голосовые инструкции по маршруту. Некоторые из основных возможностей приложения: - работа с векторными и растровыми картами без доступа в Интернет (для этого нужно предварительно сохранить карты на карту памяти устройства); - доступность компактных векторных карт для всех стран мира; - загрузка векторных и растровых карт для страны или области из самого приложения; - отображение дополнительной информации (слоёв) на карте, такой как GPX или навигационные маршруты, объекты (POI), избранные местоположения, линии высот, остановки общественного транспорта; наложение дополнительных карт с настраиваемой прозрачностью; - поиск адресов и объектов (POI) без доступа в Интернет; - построение маршрутов на небольшие расстояния без доступа в Интернет (экспериментальная функция); - режимы автомобиля, велосипеда и пешехода с возможностями: - автоматического переключения на дневной/ночной режим отрисовки карты; - изменения масштабы карты в зависимости от скорости; - вращения карты по компасу или направлению движения; - использования голосовых команд (воспроизводимых записанными или генерированными голосами) при движении по маршруту; - предупреждения о превышении допустимой скорости движения. Ограничения бесплатной версии OsmAnd: - ограниченное число загрузок карт; - нет возможности просматривать описание достопримечательностей из Wikipedia без использования Интернет. OsmAnd продолжает активно развиваться. Но так как проект финансируется только взносами пользователей, то дальнейшее развитие проекта и появление новых функциональных возможностей зависит от наличия этого финансирования. Поэтому если вам нравится приложение, подумайте о покупке OsmAnd+. Также на сайте osmand.net Вы можете профинансировать конкретную функциональную возможность или внести общий финансовый вклад в развитие проекта. "</string>
<string name="osmand_plus_short_description_80_chars">OsmAnd - это навигационное приложение для путешествий с открытым исходным кодом</string>
<string name="osmand_plus_long_description_1000_chars">"
OsmAnd+ (Open Street Maps Automated Navigation Directions)
OsmAnd+ - это навигационное приложение с открытым исходным кодом и доступом к картам и данным на основе (OpenStreetMap). Все данные карт (векторные или растровые) могут быть сохранены на карту памяти устройства для использования без подключения к Интернет. OsmAnd также предоставляет оффлайн и онлайн средства построения маршрута включая голосовые инструкции по маршруту.
OsmAnd+ оплаченная версия программы, означает, что вы поддерживаете проект, финансируя разработку нового функционала и получаете последние обновления.
Некоторые из основных возможностей приложения:
- работа с векторными и растровыми картами без доступа в Интернет (для этого нужно предварительно сохранить карты на карту памяти устройства);
- доступность компактных векторных карт для всех стран мира;
- неограниченная загрузка векторных и растровых карт для страны или области из самого приложения;
- достопримечательности из Wikipedia без доступа в Интернет (необходимо предварительно загрузить Wikipedia POI);
- отображение дополнительной информации (слоёв) на карте, такой как GPX или навигационные маршруты, объекты (POI), избранные местоположения, линии высот, остановки общественного транспорта; наложение дополнительных карт с настраиваемой прозрачностью;
- поиск адресов и объектов (POI) без доступа в Интернет;
- построение маршрутов на небольшие расстояния без доступа в Интернет (экспериментальная функция);
- режимы автомобиля, велосипеда и пешехода с возможностями:
- автоматического переключения на дневной/ночной режим отрисовки карты;
- изменения масштабы карты в зависимости от скорости;
- вращения карты по компасу или направлению движения;
- использования голосовых команд (воспроизводимых записанными или TTS голосами) при движении по маршруту;
- предупреждения о превышении допустимой скорости движения.
"</string>
<string name="osmand_plus_long_description_1000_chars">" OsmAnd+ (Open Street Maps Automated Navigation Directions) OsmAnd+ - это навигационное приложение с открытым исходным кодом и доступом к картам и данным на основе (OpenStreetMap). Все данные карт (векторные или растровые) могут быть сохранены на карту памяти устройства для использования без подключения к Интернет. OsmAnd также предоставляет оффлайн и онлайн средства построения маршрута включая голосовые инструкции по маршруту. OsmAnd+ оплаченная версия программы, означает, что вы поддерживаете проект, финансируя разработку нового функционала и получаете последние обновления. Некоторые из основных возможностей приложения: - работа с векторными и растровыми картами без доступа в Интернет (для этого нужно предварительно сохранить карты на карту памяти устройства); - доступность компактных векторных карт для всех стран мира; - неограниченная загрузка векторных и растровых карт для страны или области из самого приложения; - достопримечательности из Wikipedia без доступа в Интернет (необходимо предварительно загрузить Wikipedia POI); - отображение дополнительной информации (слоёв) на карте, такой как GPX или навигационные маршруты, объекты (POI), избранные местоположения, линии высот, остановки общественного транспорта; наложение дополнительных карт с настраиваемой прозрачностью; - поиск адресов и объектов (POI) без доступа в Интернет; - построение маршрутов на небольшие расстояния без доступа в Интернет (экспериментальная функция); - режимы автомобиля, велосипеда и пешехода с возможностями: - автоматического переключения на дневной/ночной режим отрисовки карты; - изменения масштабы карты в зависимости от скорости; - вращения карты по компасу или направлению движения; - использования голосовых команд (воспроизводимых записанными или TTS голосами) при движении по маршруту; - предупреждения о превышении допустимой скорости движения. "</string>
<string name="avoid_motorway">Избегать автомагистралей</string>
<string name="snap_to_road_descr">Привязывать текущую позицию к дороге</string>
<string name="snap_to_road">Привязка к дороге</string>
@ -987,7 +927,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="add_as_last_destination_point">Добавить как последний промежуточный пункт</string>
<string name="add_as_first_destination_point">Добавить как первый промежуточный пункт</string>
<string name="replace_destination_point">Заменить пункт назначения</string>
<string name="new_destination_point_dialog">Вы уже установили пункт назначения:</string>
<string name="new_destination_point_dialog">Вы уже установили пункт назначения.</string>
<string name="target_point">Пункт %1$s</string>
<string name="target_points">Пункты назначения</string>
<string name="intermediate_point">Промежуточный пункт %1$s</string>
@ -1013,11 +953,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="recording_context_menu_precord">Сделать фото</string>
<string name="dropbox_plugin_description">Плагин Dropbox позволяет синхронизировать треки и видео/аудио заметки с вашим аккаунтом Dropbox.</string>
<string name="dropbox_plugin_name">Плагин Dropbox</string>
<string name="osmand_srtm_long_description_1000_chars">"Плагин обеспечивает наложение контурных линии и (рельефа) затемняющего слоя, которые будут отображаться поверх стандартных карт OsmAnd. Эта функция высоко оценится спортсменами, туристами, путешественниками и всеми, кто заинтересован в рельефной структуре ландшафта.
Глобальные данные (между 70 градусов на севере и 70 градусов на юге) основываются на измерениях SRTM (Shuttle Radar Topography Mission) и ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer), инструментом визуализации Terra, флагманского спутника Земли системы наблюдения NASA. ASTER является результатом совместных усилий NASA, министерства экономики Японии, торговли и промышленности (METI), космических систем Японии (J-spacesystems).
"</string>
<string name="osmand_srtm_long_description_1000_chars">"Плагин обеспечивает наложение контурных линии и (рельефа) затемняющего слоя, которые будут отображаться поверх стандартных карт OsmAnd. Эта функция высоко оценится спортсменами, туристами, путешественниками и всеми, кто заинтересован в рельефной структуре ландшафта.\n\nГлобальные данные (между 70 градусов на севере и 70 градусов на юге) основываются на измерениях SRTM (Shuttle Radar Topography Mission) и ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer), инструментом визуализации Terra, флагманского спутника Земли системы наблюдения NASA. ASTER является результатом совместных усилий NASA, министерства экономики Японии, торговли и промышленности (METI), космических систем Японии (J-spacesystems). "</string>
<string name="recording_photo_description">Фото %1$s %2$s</string>
<string name="local_indexes_cat_av">Аудио/Видео данные</string>
<string name="stop_routing_confirm">Вы уверены, что хотите остановить навигацию?</string>
@ -1265,12 +1201,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="share_route_as_gpx">Поделиться маршрутом используя файл GPX</string>
<string name="osmo_settings_uuid">Ключ доступа</string>
<string name="osmo_settings_descr">Настройка параметров мониторинга и установка персонального канала мониторинга</string>
<string name="osmo_plugin_description">"Плагин обеспечивает функциональность для расширенного живого мониторинга OsMo, см. http://osmo.mobi.
Вы можете отслеживать все устройства из вашей группы в режиме реального времени. Вы также можете увидеть точки и треки в группе, к которой вы принадлежите.
Группа не была удалена после нескольких месяцев, приведите её в соответствие с правилами, которые вы найдёта на сайте OsMo.mobi
"</string>
<string name="osmo_plugin_description">"Плагин обеспечивает функциональность для расширенного живого мониторинга OsMo, см. http://osmo.mobi.\n\nОн позволяет отслеживать другие устройства и отслеживаться самому. Вы можете создавать анонимные группы, делиться друг с другом местоположением и общаться. Возможны различные варианты опций для отслеживания сессии или постоянного слежения.\n\nАнонимные группы создаются для указанного количества дней и ограниченным функционалом, то есть нет дистанционного управления и нет администратора группы. Полностью функциональные группы, с другой стороны, могут быть созданы на веб-сайте и только зарегистрированные пользователи имеют к ним доступ. "</string>
<string name="osmo_plugin_name">OpenStreetMap Мониторинг</string>
<string name="osmo_settings">OsMo</string>
<string name="navigation_intent_invalid">Неправильный формат: %s</string>
@ -1419,17 +1350,13 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="enable_sleep_mode">Включить фоновый режим GPS</string>
<string name="gps_wake_up_timer">Интервал пробуждения GPS</string>
<string name="sleep_mode_stop_dialog">Выключить фоновый режим GPS?</string>
<string name="stop_navigation_service">Стоп</string>
<string name="stop_navigation_service">Выключить</string>
<string name="keep_navigation_service">Оставить</string>
<string name="live_monitoring_m_descr">Отправлять данные отслеживания на указанный веб-сервис, если включена запись GPX.</string>
<string name="live_monitoring_m">Онлайн слежение (требуется GPX)</string>
<string name="live_monitoring_start">Начать онлайн слежение</string>
<string name="live_monitoring_stop">Остановить онлайн слежение</string>
<string name="osmo_auth_error">Ошибка авторизации OsMo : %1$s.↵
Это может быть временно недоступный сервис или срок вашей регистрации истек.
Желаете продолжить с новой регистрацией?</string>
<string name="osmo_auth_error">Ошибка авторизации OsMo : %1$s.↵\n Это может быть временно недоступный сервис или срок вашей регистрации истек.↵\n Желаете продолжить с новой регистрацией?</string>
<string name="osmo_not_signed_in">Не удалось войти в OsMo</string>
<string name="osmo_gpx_track_downloaded">OsMo трек %1$s загружен.</string>
<string name="no_index_file_to_download">Загрузок не найдено, проверьте подключение к Интернет.</string>
@ -1456,21 +1383,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="arrival_distance_factor_normally">Как обычно</string>
<string name="arrival_distance_factor_late">Попозже</string>
<string name="arrival_distance_factor_at_last">На последних метрах</string>
<string name="osmo_group_information_desc">"
- Создание группы, пожалуйста, дайте ей имя и заполните описание
- Из группы приложений создаются только с простым типом, читать больше на сайте https://osmo.mobi/g/new
- Через веб-сайт можно управлять группой, чтобы поместить треки и все доступные точки
- Мы не поддерживаем использование группы только из одного пользователя, если это не группа POI
- Частные группы ограничены 8 человек
- Подробные условия всегда имеют на сайте OsMo.mobi
- Если вам нужны специальные условия - пожалуйста, свяжитесь со службой поддержки: osmo.mobi@gmail.com
"</string>
<string name="osmo_group_information_desc">" - Все созданные группы являются открытыми! Если вы хотите сохранить анонимность, подключите устройства непосредственно через ID трекера.\n - Приватные группы ограничены 8 человеками.\n - Если в группе не будет активным хотя бы 1 человек в течении 2-х недель группа будет удалена.\n - Вы можете ограничить вход в группу, только по приглашениям, но для управления группой вы должны войти в консоль администратора.\n - Если вам нужно создать группу, но с другими условиями, пожалуйста, свяжитесь со службой поддержки http://osmo.mobi</string>
<string name="rendering_attr_alpineHiking_name">Пеший горный туризм по шкале (SAC)</string>
<string name="rendering_attr_hikingRoutesOSMC_name">Визуализация пути согласно трассам OSMC</string>
<string name="rendering_attr_coloredBuildings_name">Цветовая маркировка зданий по типу</string>
@ -1521,10 +1434,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="osmo_device_not_found">Устройство не обнаружено</string>
<string name="anonymous_user">Анонимный пользователь</string>
<string name="osmo_no_connection_msg">Сервис OsMo не доступен:\n- проверьте интернет соединение;\n- проверьте настройки;\n- проверьте наш Twitter: https://twitter.com/OsMomobi</string>
<string name="anonymous_user_hint">Анонимному пользователю недоступно:
- создание групп;
- синхронизация групп и устройств с сервером;
- управление группами и устройствами в личном кабинете.</string>
<string name="anonymous_user_hint">Анонимному пользователю недоступно:\n- создание групп;\n- синхронизация групп и устройств с сервером;\n- управление группами и устройствами в личном кабинете.</string>
<string name="logged_as">Вы вошли как %1$s</string>
<string name="rendering_category_routes">Маршруты</string>
<string name="rendering_category_details">Подробности</string>
@ -1534,7 +1444,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="map_widget_appearance_rem">Остальное</string>
<string name="map_widget_right">Правая панель</string>
<string name="map_widget_left">Левая панель</string>
<string name="search_radius_proximity">В пределах</string>
<string name="search_radius_proximity">Поблизости от</string>
<string name="map_widget_top">Верхняя панель</string>
<string name="rendering_attr_trainLightrailRoutes_name">Маршруты поездов</string>
<string name="rendering_attr_tramRoutes_name">Маршруты трамваев</string>
@ -1577,8 +1487,8 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="rendering_value_americanRoadAtlas_name">Атлас дорог Америки</string>
<string name="routing_attr_no_new_routing_name">Не использовать маршрутизацию версии 1.9</string>
<string name="routing_attr_no_new_routing_description">Не использовать для построение маршрута алгоритм представленный в версии 1.9</string>
<string name="show_railway_warnings">Ж/д переезды</string>
<string name="show_pedestrian_warnings">Пешеходные переходы</string>
<string name="show_railway_warnings">Показывать ж/д переезды</string>
<string name="show_pedestrian_warnings">Показывать пешеходные переходы</string>
<string name="traffic_warning_railways">Железнодорожный переезд</string>
<string name="traffic_warning_pedestrian">Пешеходный переход</string>
<string name="speak_pedestrian">Пешеходные переходы</string>
@ -1708,11 +1618,7 @@ OsmAnd+ оплаченная версия программы, означает,
\n\nСпециальная дополнительная карта для OsmAnd добавляет морские навигационные и условные знаки как для внутренней, так и для прибрежной навигации. Описание навигационных отметок содержит информацию, необходимую для их идентификации, а также их характеристики (категория, форма, цвет, последовательность мерцания огней и т.д.).\n\nЧтобы вернуться к одному из традиционных стилей карт в OsmAnd, просто деактивируйте этот плагин или измените на желаемый \"Стиль карты\" в разделе \"Настройка карты\". "</string>
<string name="local_osm_changes_upload_all_confirm">Вы собираетесь загрузить %1$d изменений OSM. Вы уверены?</string>
<string name="confirmation_to_clear_history">Вы хотите очистить историю?</string>
<string name="plugin_ski_descr">"Плагин обеспечивает вам доступ к данным о горнолыжных трассах, маршрутах для беговых лыж, альпийских спусках, фуникулерах и горнолыжных подъемниках. Маршруты и спуски отмечены разными цветами в зависимости от их сложности и изображены с использованием специального \"зимнего\" стиля карты, который заключается в том, что используются \"снежные\" цвета зимнего пейзажа.
В случае активации этого вида, стиль карты меняется на \"Winter and ski\", показывая все детали пейзажа так, как они выглядят зимой. Такой (зимний) вид может быть отменен либо деактивирован здесь, либо если вы поменяете \"Стиль карты\" в меню \"Настройка карты\" на желаемый вид.
"</string>
<string name="plugin_ski_descr">"Плагин обеспечивает вам доступ к данным о горнолыжных трассах, маршрутах для беговых лыж, альпийских спусках, фуникулерах и горнолыжных подъемниках. Маршруты и спуски отмечены разными цветами в зависимости от их сложности и изображены с использованием специального \"зимнего\" стиля карты, который заключается в том, что используются \"снежные\" цвета зимнего пейзажа.\n\nВ случае активации этого вида, стиль карты меняется на \"Winter and ski\", показывая все детали пейзажа так, как они выглядят зимой. Такой (зимний) вид может быть отменен либо путем деактивации здесь, либо если вы поменяете \"Стиль карты\" в меню \"Настройка карты\" на желаемый вид. "</string>
<string name="osmo_grop_name_length_alert">Имя группы должно быть минимум 3 символа!</string>
<string name="current_route">Текущий маршрут</string>
<string name="welmode_download_maps">Скачать карты</string>
@ -1774,7 +1680,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="disable_recording_once_app_killed_descrp">При завершении приложения (через последние приложения) запись GPX будет поставлена на паузу. (Из панели уведомлений Android исчезнет значок фонового режима.)</string>
<string name="download_wikipedia_files">Хотите загрузить дополнительные данные Википедии (%1$s Мб) ?</string>
<string name="lang_es_ar">Испанский (аргентинский)</string>
<string name="lang_nb">Норвежский (Bokmål)</string>
<string name="lang_nb">Норвежский букмол</string>
<string name="lang_vo">Волапюк</string>
<string name="lang_th">Тайский</string>
<string name="lang_te">Телугу</string>
@ -1922,7 +1828,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="share_geo">гео:</string>
<string name="share_menu_location">Поделиться местоположением</string>
<string name="shared_string_send">Отправить</string>
<string name="application_dir_description">Выберите, где вы хотите сохранить файлы карт.</string>
<string name="application_dir_description">Выберите где вы хотите хранить файлы карт и другие данные</string>
<string name="show_on_start_description">\"Отключено\" непосредственно запускает экран карты</string>
<string name="map_downloaded">Карта загружена</string>
<string name="shared_string_qr_code">QR-код</string>
@ -2014,8 +1920,8 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="clear_updates_proposition_message">Загруженные обновления можно удалить и вернуться к первоначальной редакции карты</string>
<string name="add_time_span">Добавить временной интервал</string>
<string name="road_blocked">Дорога перекрыта</string>
<string name="nm">км</string>
<string name="nm_h">км/ч</string>
<string name="nm">нм</string>
<string name="nm_h">нм/ч</string>
<string name="downloads_left_template">Осталось %1$s загрузок</string>
<string name="donations">Пожертвования</string>
<string name="osm_live_subscribe_btn">Подписаться</string>
@ -2027,9 +1933,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="osm_live_subscription_settings">Параметры подписки</string>
<string name="osm_live_ask_for_purchase">Пожалуйста сначала приобретите подписку OSM Live</string>
<string name="osm_live_header">Эта подписка позволяет получать ежечасное обновление для всех карт мира.
Основная часть доходов переводится в OSM сообщество и выплачивается за каждого взноса OSM.
В случае, если вы любите OsmAnd и OSM и хотите поддержать его, это идеальный способ сделать это.</string>
<string name="osm_live_header">Эта подписка позволяет получать ежечасное обновление для всех карт мира. Основная часть доходов переводится в OSM сообщество и выплачивается за каждого взноса OSM. В случае, если вы любите OsmAnd и OSM и хотите поддержать его, это идеальный способ сделать это.</string>
<string name="select_map_marker">Выберите маркер</string>
<string name="map_markers_other">Другие маркеры</string>
@ -2061,36 +1965,17 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="osm_live_active">Активные</string>
<string name="osm_live_not_active">Неактивные</string>
<string name="osm_live_region_desc">Часть вашего пожертвования будет направляться пользователям OpenStreetMap внесшим изменения в карту этого региона</string>
<string name="download_files_error_not_enough_space">Недостаточно места!
Необходимо {3} Мб временно и {1} Мб на постоянной основе.
В настоящее время доступно только {2} Мб свободного места.</string>
<string name="upload_osm_note_description">Вы можете загрузить вашу OSM заметку анонимно, или используя свой профиль OpenStreetMap.org.</string>
<string name="download_files_error_not_enough_space">Недостаточно места! Необходимо {3} Мб временно и {1} Мб на постоянной основе. В настоящее время доступно только {2} Мб свободного места.</string>
<string name="upload_osm_note_description">Вы можете загрузить вашу OSM заметку анонимно, или используя свой профиль OpenStreetMap.org</string>
<string name="upload_osm_note">Загрузить OSM заметку</string>
<string name="use_drawer_btn">Использовать меню</string>
<string name="use_dashboard_btn">Использовать приборную панель</string>
<string name="dashboard_or_drawer_title">Приборная панель и меню управления</string>
<string name="live_update">Постоянное обновление</string>
<string name="use_dashboard_btn">Использовать домашнюю страницу</string>
<string name="dashboard_or_drawer_title">Домашняя страница или меню</string>
<string name="live_update">Автообновление</string>
<string name="updates_size">Размер обновления</string>
<string name="reports_for">Отчет для</string>
<string name="storage_permission_restart_is_required">Приложение получило разрешение на запись во внешнее хранилище. Требуется перезагрузка приложения.</string>
<string name="release_2_3">"
• OSM Live. Поддержка авторов и разработчиков карт и получение почасовых обновлений карты.
• Маркеры. Новый способ для быстрого выбора мест на карте.
• Более подробные OSM карты со специфическими дорожными знаками стран и с большим количеством новых функций.
• Улучшен внешний вид и подготовка маршрута.
• Множество улучшений в контекстном меню карты таких как поиск адреса.
И многое другое...
"</string>
<string name="release_2_3">" • OSM Live. Поддержка авторов и разработчиков карт и получение почасовых обновлений карты.\n\n• Маркеры. Новый способ для быстрого выбора мест на карте.\n\n• Более подробные OSM карты со специфическими дорожными знаками стран и с большим количеством новых функций.\n\n• Улучшен внешний вид и подготовка маршрута.\n\n• Множество улучшений в контекстном меню карты таких как поиск адреса.\n\nИ многое другое... "</string>
<string name="report">Отчёт</string>
<string name="shared_string_move_up">Переместить вверх</string>
<string name="shared_string_move_down">Переместить вниз</string>
@ -2172,7 +2057,7 @@ OsmAnd+ оплаченная версия программы, означает,
</string>
<string name="rendering_attr_hideOverground_name">Надземные объекты</string>
<string name="no_update_info_desc">Не проверять информацию о новых версиях и скидках от OsmAnd</string>
<string name="no_update_info_desc">Не проверять информацию о новых версиях и скидках от OsmAnd</string>
<string name="no_update_info">Не показывать обновления</string>
<string name="update_all_maps_now">Вы хотите обновить все карты сейчас?</string>
<string name="clear_tile_data">Очистить всю плитку</string>
@ -2184,105 +2069,7 @@ OsmAnd+ оплаченная версия программы, означает,
<string name="shared_string_from">из</string>
<string name="follow_us">Подписывайтесь на нас</string>
<string name="osm_live_email_desc">Она нужна нам, чтобы предоставить вам информацию о взносах</string>
<string name="download_files_question_space_with_temp">Действительно загрузить {0} файл (ов)?
Для этого необходимо {3} MB временно и {1} МБ на постоянной основе.
В настоящее время существует {2} МБ свободного места.</string>
<string name="select_voice_provider">Выбор голосовых подсказок</string>
<string name="release_2_2">"
• Новая контекстно-зависимая пользовательский интерфейс для отведения места на карте и на других экранах
• Экран карты теперь запускается непосредственно, если выбрано \"Показать приборной панели на старте приложения \'
•Настройка, которая и как карты отображаются на приборной панели
• Обход приборной панели, если Вам нравится меню управления на основе приложений
• Для загрузки карты региона можно выбрать непосредственно, нажав на карту мира
• POI поиск теперь поддерживает более конкретные запросы
• Улучшение POI и OSM функции редактирования
• Карта загрузки структуры данных и интерфейс переработан
 и многое другое…
"</string>
<string name="av_locations_descr">Файл GPX с примечанием местоположения</string>
<string name="lang_ast">Астурийский</string>
<string name="lang_hsb">Лужицкий (Верхний)</string>
<string name="plugin_touringview_descr">"Активация этой точки зрения изменения стиля карты OsmAnd до уровня «зрения Touring», это особый вид высокой детали для путешественников и профессиональных водителей.
 
Эта точка зрения обеспечивает, в любой момент масштабирования карты, максимальное количество деталей, имеющихся в туристических картографических данных (в частности, дороги, дорожки и ориентация знаков).
 
Он также четко изображает все типы дорог однозначно цветовым кодированием, что полезно, когда, например, вождение транспортных средств большой вместимости.
 
И это предоставляет специальные варианты, как туристические, показывающий велосипедные маршруты или альпийские горные маршруты.
 
Специальная карта загрузки не требуется, вид создается из наших стандартных карт.
 
Эта точка зрения может быть отменена либо деактивирована его снова здесь, или путем изменения \"стиль карты\" в разделе \"Настройка карты\" по желанию.
"</string>
<string name="lang_be_BY">Беларуский (Лат)</string>
<string name="osmand_plus_extended_description_4000_chars_v2">"
OsmAnd Карты и навигация - найти местонахождение на карте и вычислять маршруты без подключения к Интернету. Скачать карту страны, прежде чем отправиться в путешествие, чтобы найти места и маршруты в незнакомой местности.
Основные возможности:
• Подробные карты 200 стран
• Оффлайн навигатор с голосовыми подсказками
• Поиск адреса в автономном режиме
• Информация о местах на карте: достопримечательности, кафе, парковок, магазинов
• Добавление местоположения в избранное
• Вождение, езда на велосипеде и пешеходной навигации
Дополнительные опции:
• Возможность просмотра и записи треков GPX
• Википедия описание POI
• Добавление фото, аудио и видео заметки на карте
• День и Ночь карты режимов для более удобного вождения
• Информация о транспортных маршрутах общественного пользования и остановок
• Велосипедные дорожки и пешеходные дорожки
• Прогулочные тропы для туризма по всему миру
• Интернет карты из многочисленных источников
• Информация о качестве дорожного покрытия и уличного освещения
• Добавление, редактирование и удаление POI (для пользователей OpenStreetMap.org)
• OsMo - мониторинг в реальном времени других устройств
Получить надежную навигатор в вашей стране - будь то Франция, Германия, Мексика, Великобритания, Испания, Нидерланды, США, Россия, Бразилия или любое другое государство.
Плагины:
• Контурные карты и рельеф местности затенение https://goo.gl/7mojP8
 Контурные линии данных и визуализации рельефа добавлены к основной карте Османд.
• Лыжные карты https://goo.gl/pX6DxJ
 Информация о лыжных трасс, лыжных трасс для беговых, фуникулеров и подъемников.
• Навигационный карта https://goo.gl/0hEdxm
 Специальный стиль карта для просмотра морских навигационных знаков для артериальной и прибрежную морскую навигацию.
• Стояночное положение https://goo.gl/6JxQXF
 Помогает вам отметить местоположение вашего автомобиля, припаркованного и посмотреть, сколько времени осталось, если парковка ограничено во времени.
Будьте на связи!
Twitter: https://twitter.com/osmandapp
Facebook: https://www.facebook.com/osmandapp
Сайт: http://osmand.net
Если вам нужна помощь с применением OsmAnd, пожалуйста, свяжитесь с нашей службой поддержки: support@osmand.net.
"</string>
<string name="download_files_question_space_with_temp">Действительно загрузить {0} файл (ов)? Для этого необходимо {3} Мб временно и {1} Мб на постоянной основе. В настоящее время существует {2} Мб свободного места.</string>
<string name="search_my_location">Определить моё местоположение</string>
<string name="first_usage_greeting">Прокладывайте маршруты и открывайте новые для себя места без подключения к интернету</string>
<string name="allow_access_location">Разрешить доступ к местоположению</string>
@ -2300,4 +2087,4 @@ Facebook: https://www.facebook.com/osmandapp
<string name="skip_map_downloading_desc">У вас нет загруженных карт. Вы можете выбрать карту из списка или загрузить её позже с помощью меню - %1$s.</string>
<string name="si_mi_meters">Мили/метры</string>
</resources>
</resources>

View file

@ -9,7 +9,10 @@
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
-->
<string name="get_for">Get for %1$s</string>
<string name="get_for_month">Get for %1$s month</string>
<string name="osm_live_banner_desc">Get unlimited map downloads and updates more than once a month: hourly, daily or weekly.</string>
<string name="osmand_plus_banner_desc">Full version of OsmAnd with unlimited map downloads and monthly map updates.</string>
<string name="si_mi_meters">Miles/meters</string>
<string name="skip_map_downloading">Skip downloading maps</string>
<string name="skip_map_downloading_desc">You have no offline map installed. You may choose a map from the list or download maps later via Menu - %1$s.</string>

View file

@ -13,16 +13,19 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.Space;
import android.support.v7.widget.AppCompatButton;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
@ -38,12 +41,9 @@ import net.osmand.access.AccessibilityAssistant;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.map.WorldRegion;
import net.osmand.map.WorldRegion.RegionParams;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.DrivingRegion;
import net.osmand.plus.OsmandSettings.MetricsConstants;
import net.osmand.plus.R;
import net.osmand.plus.Version;
import net.osmand.plus.activities.LocalIndexInfo;
@ -57,6 +57,9 @@ import net.osmand.plus.download.ui.DataStoragePlaceDialogFragment;
import net.osmand.plus.download.ui.DownloadResourceGroupFragment;
import net.osmand.plus.download.ui.LocalIndexesFragment;
import net.osmand.plus.download.ui.UpdatesIndexFragment;
import net.osmand.plus.inapp.InAppHelper;
import net.osmand.plus.inapp.InAppHelper.InAppListener;
import net.osmand.plus.liveupdates.OsmLiveActivity;
import net.osmand.plus.openseamapsplugin.NauticalMapsPlugin;
import net.osmand.plus.srtmplugin.SRTMPlugin;
import net.osmand.plus.views.controls.PagerSlidingTabStrip;
@ -76,7 +79,7 @@ import java.util.Timer;
import java.util.TimerTask;
public class DownloadActivity extends AbstractDownloadActivity implements DownloadEvents,
ActivityCompat.OnRequestPermissionsResultCallback {
OnRequestPermissionsResultCallback, InAppListener {
private static final Log LOG = PlatformUtil.getLog(DownloadActivity.class);
public static final int UPDATES_TAB_NUMBER = 2;
@ -110,6 +113,7 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
private DownloadIndexesThread downloadThread;
protected WorldRegion downloadItem;
protected String downloadTargetFileName;
private InAppHelper inAppHelper;
private boolean srtmDisabled;
private boolean srtmNeedsInstallation;
@ -163,6 +167,14 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
viewPager.setCurrentItem(currentTab);
visibleBanner = new BannerAndDownloadFreeVersion(findViewById(R.id.mainLayout), this, true);
if (Version.isFreeVersion(getMyApplication()) &&
(!getMyApplication().getSettings().LIVE_UPDATES_PURCHASED.get() || Version.isDeveloperVersion(getMyApplication()))) {
inAppHelper = new InAppHelper(getMyApplication(), true);
inAppHelper.addListener(this);
visibleBanner.setUpdatingPrices(true);
inAppHelper.start(true);
}
final Intent intent = getIntent();
if (intent != null && intent.getExtras() != null) {
filter = intent.getExtras().getString(FILTER_KEY);
@ -172,6 +184,14 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
showFirstTimeExternalStorage();
}
@Override
public void onDestroy() {
super.onDestroy();
if (inAppHelper != null) {
inAppHelper.removeListener(this);
}
}
public DownloadIndexesThread getDownloadThread() {
return downloadThread;
}
@ -247,6 +267,29 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
}
}
@Override
public void onError(String error) {
visibleBanner.setUpdatingPrices(false);
visibleBanner.updateFreeVersionBanner();
}
@Override
public void onGetItems() {
visibleBanner.setUpdatingPrices(false);
visibleBanner.updateFreeVersionBanner();
}
@Override
public void onItemPurchased(String sku) {
}
@Override
public void showProgress() {
}
@Override
public void dismissProgress() {
}
@Override
@UiThread
@ -287,18 +330,20 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
fragment.show(activity.getSupportFragmentManager(), "dialog");
}
private static class ToggleCollapseFreeVersionBanner implements View.OnClickListener {
private static class ToggleCollapseFreeVersionBanner implements OnClickListener {
private final View freeVersionDescriptionTextView;
private final View buttonsLinearLayout;
private final View freeVersionTitle;
private final View priceInfoLayout;
private final OsmandSettings settings;
private ToggleCollapseFreeVersionBanner(View freeVersionDescriptionTextView,
View buttonsLinearLayout, View freeVersionTitle,
OsmandSettings settings) {
View priceInfoLayout, OsmandSettings settings) {
this.freeVersionDescriptionTextView = freeVersionDescriptionTextView;
this.buttonsLinearLayout = buttonsLinearLayout;
this.freeVersionTitle = freeVersionTitle;
this.priceInfoLayout = priceInfoLayout;
this.settings = settings;
}
@ -309,10 +354,12 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
&& isDownlodingPermitted(settings)) {
freeVersionDescriptionTextView.setVisibility(View.GONE);
buttonsLinearLayout.setVisibility(View.GONE);
priceInfoLayout.setVisibility(View.GONE);
} else {
freeVersionDescriptionTextView.setVisibility(View.VISIBLE);
buttonsLinearLayout.setVisibility(View.VISIBLE);
freeVersionTitle.setVisibility(View.VISIBLE);
priceInfoLayout.setVisibility(View.VISIBLE);
}
}
}
@ -331,15 +378,21 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
private final TextView rightTextView;
private final ProgressBar downloadsLeftProgressBar;
private final View buttonsLinearLayout;
private final View priceInfoLayout;
private final TextView freeVersionDescriptionTextView;
private final TextView downloadsLeftTextView;
private final View laterButton;
private final View fullVersionProgress;
private final AppCompatButton fullVersionButton;
private final View osmLiveProgress;
private final AppCompatButton osmLiveButton;
private final DownloadActivity ctx;
private final OsmandApplication application;
private final boolean shouldShowFreeVersionBanner;
private final View freeVersionBannerTitle;
private boolean showSpace;
private boolean updatingPrices;
public BannerAndDownloadFreeVersion(View view, final DownloadActivity ctx, boolean showSpace) {
this.ctx = ctx;
@ -353,11 +406,17 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
downloadsLeftTextView = (TextView) freeVersionBanner.findViewById(R.id.downloadsLeftTextView);
downloadsLeftProgressBar = (ProgressBar) freeVersionBanner.findViewById(R.id.downloadsLeftProgressBar);
buttonsLinearLayout = freeVersionBanner.findViewById(R.id.buttonsLinearLayout);
priceInfoLayout = freeVersionBanner.findViewById(R.id.priceInfoLayout);
freeVersionDescriptionTextView = (TextView) freeVersionBanner
.findViewById(R.id.freeVersionDescriptionTextView);
laterButton = freeVersionBanner.findViewById(R.id.laterButton);
freeVersionBannerTitle = freeVersionBanner.findViewById(R.id.freeVersionBannerTitle);
fullVersionProgress = freeVersionBanner.findViewById(R.id.fullVersionProgress);
fullVersionButton = (AppCompatButton) freeVersionBanner.findViewById(R.id.fullVersionButton);
osmLiveProgress = freeVersionBanner.findViewById(R.id.osmLiveProgress);
osmLiveButton = (AppCompatButton) freeVersionBanner.findViewById(R.id.osmLiveButton);
shouldShowFreeVersionBanner =
(Version.isFreeVersion(application) && !application.getSettings().LIVE_UPDATES_PURCHASED.get())
|| application.getSettings().SHOULD_SHOW_FREE_VERSION_BANNER.get();
@ -366,6 +425,14 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
updateBannerInProgress();
}
public boolean isUpdatingPrices() {
return updatingPrices;
}
public void setUpdatingPrices(boolean updatingPrices) {
this.updatingPrices = updatingPrices;
}
public void updateBannerInProgress() {
BasicProgressAsyncTask<?, ?, ?, ?> basicProgressAsyncTask = ctx.getDownloadThread().getCurrentRunningTask();
final boolean isFinished = basicProgressAsyncTask == null
@ -387,7 +454,7 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
updateAvailableDownloads();
downloadProgressLayout.setVisibility(View.VISIBLE);
downloadProgressLayout.setOnClickListener(new View.OnClickListener() {
downloadProgressLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new ActiveDownloadsDialogFragment().show(ctx.getSupportFragmentManager(), "dialog");
@ -423,7 +490,7 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
downloadsLeftProgressBar.setMax(DownloadValidationManager.MAXIMUM_AVAILABLE_FREE_DOWNLOADS);
freeVersionDescriptionTextView.setText(ctx.getString(R.string.free_version_message,
DownloadValidationManager.MAXIMUM_AVAILABLE_FREE_DOWNLOADS));
freeVersionBanner.findViewById(R.id.getFullVersionButton).setOnClickListener(new View.OnClickListener() {
fullVersionButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(Version.marketPrefix(
@ -435,9 +502,17 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
}
}
});
osmLiveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ctx, OsmLiveActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
ctx.startActivity(intent);
}
});
ToggleCollapseFreeVersionBanner clickListener =
new ToggleCollapseFreeVersionBanner(freeVersionDescriptionTextView,
buttonsLinearLayout, freeVersionBannerTitle, application.getSettings());
buttonsLinearLayout, freeVersionBannerTitle, priceInfoLayout, application.getSettings());
laterButton.setOnClickListener(clickListener);
LinearLayout marksLinearLayout = (LinearLayout) freeVersionBanner.findViewById(R.id.marksLinearLayout);
@ -479,8 +554,27 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
laterButton.setVisibility(View.GONE);
}
downloadsLeftTextView.setText(ctx.getString(R.string.downloads_left_template, downloadsLeft));
freeVersionBanner.setOnClickListener(new ToggleCollapseFreeVersionBanner(freeVersionDescriptionTextView,
buttonsLinearLayout, freeVersionBannerTitle, settings));
freeVersionBanner.findViewById(R.id.bannerTopLayout).setOnClickListener(new ToggleCollapseFreeVersionBanner(freeVersionDescriptionTextView,
buttonsLinearLayout, freeVersionBannerTitle, priceInfoLayout, settings));
if (InAppHelper.hasPrices() || !updatingPrices) {
if (!InAppHelper.hasPrices()) {
fullVersionButton.setText(ctx.getString(R.string.get_for, ctx.getString(R.string.full_version_price)));
osmLiveButton.setText(ctx.getString(R.string.get_for_month, ctx.getString(R.string.osm_live_price)));
} else {
fullVersionButton.setText(ctx.getString(R.string.get_for, InAppHelper.getFullVersionPrice()));
osmLiveButton.setText(ctx.getString(R.string.get_for_month, InAppHelper.getLiveUpdatesPrice()));
}
fullVersionProgress.setVisibility(View.GONE);
fullVersionButton.setVisibility(View.VISIBLE);
osmLiveProgress.setVisibility(View.GONE);
osmLiveButton.setVisibility(View.VISIBLE);
} else {
fullVersionProgress.setVisibility(View.VISIBLE);
fullVersionButton.setVisibility(View.GONE);
osmLiveProgress.setVisibility(View.VISIBLE);
osmLiveButton.setVisibility(View.GONE);
}
}
private void updateAvailableDownloads() {
@ -495,10 +589,12 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
freeVersionDescriptionTextView.setVisibility(View.GONE);
buttonsLinearLayout.setVisibility(View.GONE);
freeVersionBannerTitle.setVisibility(View.GONE);
priceInfoLayout.setVisibility(View.GONE);
} else {
freeVersionDescriptionTextView.setVisibility(View.VISIBLE);
buttonsLinearLayout.setVisibility(View.VISIBLE);
freeVersionBannerTitle.setVisibility(View.VISIBLE);
priceInfoLayout.setVisibility(View.VISIBLE);
}
}
}
@ -727,14 +823,14 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
final ImageButton closeImageButton = (ImageButton) view.findViewById(R.id.closeImageButton);
closeImageButton.setImageDrawable(getContentIcon(R.drawable.ic_action_remove_dark));
closeImageButton.setOnClickListener(new View.OnClickListener() {
closeImageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
actionButtonOk.setOnClickListener(new View.OnClickListener() {
actionButtonOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (indexItem != null) {
@ -745,7 +841,7 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
});
view.findViewById(R.id.actionButtonCancel)
.setOnClickListener(new View.OnClickListener() {
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
@ -794,7 +890,7 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
final ImageButton closeImageButton = (ImageButton) view.findViewById(R.id.closeImageButton);
closeImageButton.setImageDrawable(getContentIcon(R.drawable.ic_action_remove_dark));
closeImageButton.setOnClickListener(new View.OnClickListener() {
closeImageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (getActivity() instanceof DownloadActivity) {
@ -805,7 +901,7 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
});
view.findViewById(R.id.actionButton)
.setOnClickListener(new View.OnClickListener() {
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
OsmandApplication app = (OsmandApplication) getActivity().getApplication();

View file

@ -38,7 +38,9 @@ public class InAppHelper {
private static boolean mSubscribedToLiveUpdates = false;
private static String mLiveUpdatesPrice;
private static long lastValidationCheckTime;
private static String mFullVersionPrice;
private static final String SKU_FULL_VERSION_PRICE = "osmand_full_version_price";
private static final String SKU_LIVE_UPDATES_FULL = "osm_live_subscription_2";
private static final String SKU_LIVE_UPDATES_FREE = "osm_free_live_subscription_2";
private static String SKU_LIVE_UPDATES;
@ -51,6 +53,7 @@ public class InAppHelper {
private IabHelper mHelper;
private boolean stopAfterResult = false;
private boolean isDeveloperVersion = false;
private boolean forceRequestInventory = false;
private String token = "";
private OsmandApplication ctx;
@ -80,12 +83,21 @@ public class InAppHelper {
return mLiveUpdatesPrice;
}
public static String getFullVersionPrice() {
return mFullVersionPrice;
}
public static String getSkuLiveUpdates() {
return SKU_LIVE_UPDATES;
}
public InAppHelper(OsmandApplication ctx) {
public static boolean hasPrices() {
return !Algorithms.isEmpty(mLiveUpdatesPrice) && !Algorithms.isEmpty(mFullVersionPrice);
}
public InAppHelper(OsmandApplication ctx, boolean forceRequestInventory) {
this.ctx = ctx;
this.forceRequestInventory = forceRequestInventory;
if (SKU_LIVE_UPDATES == null) {
if (Version.isFreeVersion(ctx)) {
SKU_LIVE_UPDATES = SKU_LIVE_UPDATES_FREE;
@ -148,14 +160,17 @@ public class InAppHelper {
if (mHelper == null) return;
// IAB is fully set up. Now, let's get an inventory of stuff we own if needed.
if (!isDeveloperVersion &&
if (forceRequestInventory || (!isDeveloperVersion &&
(!mSubscribedToLiveUpdates
|| !ctx.getSettings().BILLING_PURCHASE_TOKEN_SENT.get()
|| System.currentTimeMillis() - lastValidationCheckTime > PURCHASE_VALIDATION_PERIOD_MSEC)) {
|| System.currentTimeMillis() - lastValidationCheckTime > PURCHASE_VALIDATION_PERIOD_MSEC))) {
logDebug("Setup successful. Querying inventory.");
List<String> skus = new ArrayList<>();
skus.add(SKU_LIVE_UPDATES);
if (forceRequestInventory) {
skus.add(SKU_FULL_VERSION_PRICE);
}
mHelper.queryInventoryAsync(true, skus, mGotInventoryListener);
} else {
notifyDismissProgress();
@ -195,7 +210,7 @@ public class InAppHelper {
// Do we have the live updates?
Purchase liveUpdatesPurchase = inventory.getPurchase(SKU_LIVE_UPDATES);
mSubscribedToLiveUpdates = (liveUpdatesPurchase != null && liveUpdatesPurchase.getPurchaseState() == 0);
mSubscribedToLiveUpdates = isDeveloperVersion || (liveUpdatesPurchase != null && liveUpdatesPurchase.getPurchaseState() == 0);
if (mSubscribedToLiveUpdates) {
ctx.getSettings().LIVE_UPDATES_PURCHASED.set(true);
}
@ -208,8 +223,13 @@ public class InAppHelper {
mLiveUpdatesPrice = liveUpdatesDetails.getPrice();
}
if (inventory.hasDetails(SKU_FULL_VERSION_PRICE)) {
SkuDetails fullPriceDetails = inventory.getSkuDetails(SKU_FULL_VERSION_PRICE);
mFullVersionPrice = fullPriceDetails.getPrice();
}
boolean needSendToken = false;
if (liveUpdatesPurchase != null) {
if (!isDeveloperVersion && liveUpdatesPurchase != null) {
OsmandSettings settings = ctx.getSettings();
if (Algorithms.isEmpty(settings.BILLING_USER_ID.get())
&& !Algorithms.isEmpty(liveUpdatesPurchase.getDeveloperPayload())) {

View file

@ -35,7 +35,7 @@ public class OsmLiveActivity extends AbstractDownloadActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_livie_updates);
inAppHelper = new InAppHelper(getMyApplication());
inAppHelper = new InAppHelper(getMyApplication(), false);
if (Version.isDeveloperVersion(getMyApplication())) {
inAppHelper = null;
}