Three UX fixes: 1. The placeholder map was always rendered with userLocation=null and places=emptyList() — MapScreen never passed the actually-resolved location/nearby list to DgisMapView, so it only ever showed the "waiting for location" placeholder text. MapViewModel now exposes resolvedLocation and nearbyPlaces, wired through to the map. (Note: this is still the Canvas-based placeholder, not the real 2GIS SDK — that integration is still pending, as flagged since the skeleton was first built.) 2. GuideScreen's Tinder-style pager only showed one card at a time, which read as "it only found one place" even with 5 nearby. Swapped it for a plain scrollable list (auto-scrolls to the active/narrating item); tapping an item opens PlaceDetailScreen, which now owns the swipe-between-places interaction instead. PlaceDetailViewModel fetches the same nearby-ordered list GuideViewModel uses (falling back to a single non-swipeable place when opened from Favorites/search for something outside that list). 3. Narration now leads with the place's name and distance from the user before the body text (util/Narration.kt), in both the guide list and the detail swipe view. Verified: testDebugUnitTest passes, assembleDebug produces a working APK, sent to Telegram. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
38 lines
2.9 KiB
XML
38 lines
2.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<resources>
|
||
<string name="app_name">guideCity</string>
|
||
|
||
<string name="onboarding_title">Добро пожаловать в guideCity</string>
|
||
<string name="onboarding_body">guideCity — это голосовой гид для прогулок по городу. Разрешите доступ к геолокации, и мы найдём интересные места поблизости и расскажем их историю прямо во время прогулки по Москве.</string>
|
||
<string name="onboarding_ok">ОК</string>
|
||
|
||
<string name="content_length_title">Насколько подробный рассказ вы хотите слышать?</string>
|
||
<string name="content_length_short">Кратко</string>
|
||
<string name="content_length_medium">Средне</string>
|
||
<string name="content_length_long">Подробно</string>
|
||
<string name="content_length_continue">Продолжить</string>
|
||
|
||
<string name="map_location_permission_rationale">guideCity нужен доступ к геолокации, чтобы найти места поблизости. Вы также можете ввести место вручную.</string>
|
||
<string name="map_grant_permission">Разрешить доступ к геолокации</string>
|
||
<string name="map_search_placeholder">Введите место для поиска…</string>
|
||
<string name="map_checking_nearby">Ищем места поблизости…</string>
|
||
<string name="map_places_found">Найдено мест поблизости: %1$d (в радиусе %2$d м)</string>
|
||
<string name="map_start">Начать</string>
|
||
<string name="map_no_places_nearby">В радиусе 10 км ничего не нашлось.</string>
|
||
|
||
<string name="guide_no_places_nearby">Поблизости пока не найдено интересных мест.</string>
|
||
<string name="guide_places_count">Мест поблизости: %1$d</string>
|
||
<string name="guide_retry">Повторить</string>
|
||
<string name="guide_favorite_add">Добавить в избранное</string>
|
||
<string name="guide_favorite_remove">Убрать из избранного</string>
|
||
<string name="guide_mute">Выключить озвучку</string>
|
||
<string name="guide_unmute">Включить озвучку</string>
|
||
|
||
<string name="favorites_title">Избранное</string>
|
||
<string name="favorites_empty">Пока нет избранных мест. Нажмите на значок сердца рядом с местом, чтобы сохранить его здесь.</string>
|
||
|
||
<string name="settings_title">Настройки</string>
|
||
<string name="settings_content_length_label">Подробность рассказа</string>
|
||
|
||
<string name="place_not_found">Место не найдено.</string>
|
||
</resources>
|