diff --git a/client/src/components/Tours/hike/HikeWaysCard.test.tsx b/client/src/components/Tours/hike/HikeWaysCard.test.tsx index 606706dca..c1351ec7d 100644 --- a/client/src/components/Tours/hike/HikeWaysCard.test.tsx +++ b/client/src/components/Tours/hike/HikeWaysCard.test.tsx @@ -12,7 +12,7 @@ vi.mock('./useHikeWays', () => ({ }, })); -// FE-HIKE-WAYSCARD-001 to FE-HIKE-WAYSCARD-011 +// FE-HIKE-WAYSCARD-001 to FE-HIKE-WAYSCARD-012 const LINE: [number, number][] = [ [47.0, 11.0], @@ -153,8 +153,8 @@ describe('HikeWaysCard (MAP-03, MAP-04)', () => { await tooltipOf('sac-row-unclear', /T3, hiking;mountain_hiking/); await tooltipOf('sac-row-untagged', /Unknown does not mean easy/); await tooltipOf('sac-row-unmatched', /no way lies clearly under the line/i); - // A way that could not be asked about says so in its row; there is nothing more to name. expect(screen.getByTestId('sac-row-unasked')).toHaveTextContent('Could not be asked this time'); + await tooltipOf('sac-row-unasked', /could not be asked about these ways this time/); }); it('FE-HIKE-WAYSCARD-009: the surfaces list their groups, the most common one, and no grade or routing limit', () => { @@ -190,4 +190,16 @@ describe('HikeWaysCard (MAP-03, MAP-04)', () => { fireEvent.click(screen.getByTestId('way-row-track')); expect(state.focusOn).toHaveBeenCalledWith('track'); }); + + it('FE-HIKE-WAYSCARD-012: ways that could not be asked this time may be asked again from the list, and only then', () => { + const state = ways(); + const partial = show(state); + const unknown = screen.getByText('Unknown').parentElement as HTMLElement; + fireEvent.click(within(unknown).getByRole('button', { name: /try again/i })); + expect(state.retry).toHaveBeenCalledTimes(1); + partial.unmount(); + show(ways({ rows: SAC_ROWS.filter((row) => row.key !== 'unasked') })); + expect(screen.getByTestId('sac-row-unmatched')).toBeInTheDocument(); + expect(screen.queryByRole('button', { name: /try again/i })).toBeNull(); + }); }); diff --git a/client/src/components/Tours/hike/HikeWaysList.tsx b/client/src/components/Tours/hike/HikeWaysList.tsx index 440be9f97..b2ad500a6 100644 --- a/client/src/components/Tours/hike/HikeWaysList.tsx +++ b/client/src/components/Tours/hike/HikeWaysList.tsx @@ -1,4 +1,4 @@ -import { Info, SlidersHorizontal } from 'lucide-react'; +import { Info, RefreshCw, SlidersHorizontal } from 'lucide-react'; import { useTranslation } from '../../../i18n'; import { useSettingsStore } from '../../../store/settingsStore'; import { formatDistance } from '../../../utils/units'; @@ -7,6 +7,7 @@ import { fs } from '../../shared/DialogShell'; import { Tooltip } from '../../shared/Tooltip'; import { bikePaintCss } from '../bike/bikePaint'; import { FigureBadge } from '../paddle/FigureBadge'; +import { CardAction } from '../tourParts'; import { HIKE_FACETS, type HikeFacet } from './hikeFacetSpecs'; import { facetPaint, isUnknownClass, type FacetRow } from './hikeFacets'; import { hikePaintCss } from './hikePaint'; @@ -74,7 +75,7 @@ function useRowSource(facet: HikeFacet, row: FacetRow): string { if (step !== null) return t('tours.hike.sac.stepTip', { step: stepName(step), tag: row.tags[0] ?? '' }); if (row.key === 'untagged') return t(FACET_KEY[facet]('untaggedTip')); if (row.key === 'unmatched') return t('tours.hike.ways.unmatchedTip'); - if (row.key === 'unasked') return ''; + if (row.key === 'unasked') return t('tours.hike.ways.unaskedTip'); if (row.key === 'unclear' && facet === 'sac') return t('tours.hike.sac.unclearTip', { tags: row.tags.join(', ') }); if (row.key === 'unclear') return t('tours.hike.ways.unclearTip', { tags: writtenTags(facet, row) }); return t('tours.hike.ways.recordedTip', { tags: writtenTags(facet, row) }); @@ -211,6 +212,14 @@ export function HikeWaysList({ ways, limit }: { ways: HikeWays; limit: number | ))} + {/* Some ways could not be asked this time: they may be asked again without leaving the card. */} + {unknown.some((row) => row.key === 'unasked') && ( + + } onClick={ways.retry}> + {t('common.errorRetry')} + + + )} )} diff --git a/shared/src/i18n/ar/tours.ts b/shared/src/i18n/ar/tours.ts index ef0b6c2a9..54c4f86a7 100644 --- a/shared/src/i18n/ar/tours.ts +++ b/shared/src/i18n/ar/tours.ts @@ -537,6 +537,7 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'لا يعطي OpenStreetMap هذه الطرق قيمة sac_scale. غير معروف لا يعني سهلًا.', 'tours.hike.sac.unclearTip': 'يكتب OpenStreetMap هنا {tags}، وهذا لا يحدد درجة واحدة.', 'tours.hike.ways.unmatchedTip': 'لا يقع هنا أي طريق بوضوح تحت خط الجولة، لذلك لا يُعرض له شيء.', + 'tours.hike.ways.unaskedTip': 'تعذّر الاستعلام من OpenStreetMap عن هذه الطرق هذه المرة. غير معروف لا يعني سهلًا.', 'tours.hike.ways.known': 'معروف', 'tours.hike.sac.knownTip': 'جزء المسار الذي يعطي OpenStreetMap درجته في SAC. الباقي غير معروف.', 'tours.hike.sac.highest': 'الأعلى المعروف', diff --git a/shared/src/i18n/az/tours.ts b/shared/src/i18n/az/tours.ts index 053d08c03..aed0af2ec 100644 --- a/shared/src/i18n/az/tours.ts +++ b/shared/src/i18n/az/tours.ts @@ -529,6 +529,7 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap burada {tags} yazır, bu isə tək bir dərəcə bildirmir.', 'tours.hike.ways.unmatchedTip': 'Burada turun xətti altında aydın bir yol yoxdur, ona görə onun üçün heç nə göstərilmir.', + 'tours.hike.ways.unaskedTip': 'Bu dəfə OpenStreetMap-dən bu yollar barədə sorğu alınmadı. Naməlum asan demək deyil.', 'tours.hike.ways.known': 'Məlum', 'tours.hike.sac.knownTip': 'Marşrutun OpenStreetMap-in SAC dərəcəsi verdiyi hissəsi. Qalanı naməlumdur.', 'tours.hike.sac.highest': 'Ən yüksək məlum', diff --git a/shared/src/i18n/br/tours.ts b/shared/src/i18n/br/tours.ts index bc7ac0f6b..6417d5e8a 100644 --- a/shared/src/i18n/br/tours.ts +++ b/shared/src/i18n/br/tours.ts @@ -535,6 +535,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'O OpenStreetMap indica aqui {tags}, que não nomeia um único grau.', 'tours.hike.ways.unmatchedTip': 'Aqui nenhuma trilha fica claramente sob a linha do passeio, então nada é mostrado para ela.', + 'tours.hike.ways.unaskedTip': + 'Desta vez não foi possível consultar o OpenStreetMap sobre estas trilhas. Desconhecido não quer dizer fácil.', 'tours.hike.ways.known': 'Conhecido', 'tours.hike.sac.knownTip': 'A parte da rota cujo grau SAC o OpenStreetMap informa. O resto é desconhecido.', 'tours.hike.sac.highest': 'Maior conhecido', diff --git a/shared/src/i18n/ca/tours.ts b/shared/src/i18n/ca/tours.ts index f449a0d5d..9732c3c66 100644 --- a/shared/src/i18n/ca/tours.ts +++ b/shared/src/i18n/ca/tours.ts @@ -536,6 +536,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap hi indica {tags}, que no anomena cap grau concret.', 'tours.hike.ways.unmatchedTip': 'Aquí cap camí queda clarament sota la línia de la ruta, així que no se’n mostra res.', + 'tours.hike.ways.unaskedTip': + 'Aquesta vegada no s’ha pogut consultar OpenStreetMap sobre aquests camins. Desconegut no vol dir fàcil.', 'tours.hike.ways.known': 'Conegut', 'tours.hike.sac.knownTip': 'La part de la ruta de la qual OpenStreetMap dona el grau SAC. La resta és desconeguda.', 'tours.hike.sac.highest': 'Màxim conegut', diff --git a/shared/src/i18n/cs/tours.ts b/shared/src/i18n/cs/tours.ts index 0cf7e63ea..6059dc49d 100644 --- a/shared/src/i18n/cs/tours.ts +++ b/shared/src/i18n/cs/tours.ts @@ -526,6 +526,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMap těmto cestám nedává sac_scale. Neznámé neznamená snadné.', 'tours.hike.sac.unclearTip': 'OpenStreetMap zde uvádí {tags}, což neoznačuje jediný stupeň.', 'tours.hike.ways.unmatchedTip': 'Zde pod linií túry jednoznačně neleží žádná cesta, proto se pro ni nic nezobrazuje.', + 'tours.hike.ways.unaskedTip': + 'OpenStreetMap se tentokrát na tyto cesty nepodařilo dotázat. Neznámé neznamená snadné.', 'tours.hike.ways.known': 'Známé', 'tours.hike.sac.knownTip': 'Podíl trasy, pro který OpenStreetMap uvádí stupeň SAC. Zbytek je neznámý.', 'tours.hike.sac.highest': 'Nejvyšší známý', diff --git a/shared/src/i18n/de/tours.ts b/shared/src/i18n/de/tours.ts index cfcfc3b14..a0e04d962 100644 --- a/shared/src/i18n/de/tours.ts +++ b/shared/src/i18n/de/tours.ts @@ -539,6 +539,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap schreibt hier {tags}, das benennt keine einzelne Stufe.', 'tours.hike.ways.unmatchedTip': 'Hier liegt kein Weg eindeutig unter der Linie der Tour, daher wird dafür nichts gezeigt.', + 'tours.hike.ways.unaskedTip': + 'OpenStreetMap war für diese Wege diesmal nicht erreichbar. Unbekannt heißt nicht leicht.', 'tours.hike.ways.known': 'Bekannt', 'tours.hike.sac.knownTip': 'Der Anteil der Route, für den OpenStreetMap eine SAC-Stufe angibt. Der Rest ist unbekannt.', diff --git a/shared/src/i18n/en/tours.ts b/shared/src/i18n/en/tours.ts index a94ce3bbb..e56c59dca 100644 --- a/shared/src/i18n/en/tours.ts +++ b/shared/src/i18n/en/tours.ts @@ -526,6 +526,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMap gives these ways no sac_scale. Unknown does not mean easy.', 'tours.hike.sac.unclearTip': 'OpenStreetMap writes {tags} here, which names no single step.', 'tours.hike.ways.unmatchedTip': 'No way lies clearly under the line of the tour here, so nothing is shown for it.', + 'tours.hike.ways.unaskedTip': + 'OpenStreetMap could not be asked about these ways this time. Unknown does not mean easy.', 'tours.hike.ways.known': 'Known', 'tours.hike.sac.knownTip': 'The share of the route whose SAC grade OpenStreetMap gives. The rest is unknown.', 'tours.hike.sac.highest': 'Highest known', diff --git a/shared/src/i18n/es/tours.ts b/shared/src/i18n/es/tours.ts index 3211e1571..b830d4ee9 100644 --- a/shared/src/i18n/es/tours.ts +++ b/shared/src/i18n/es/tours.ts @@ -535,6 +535,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap indica aquí {tags}, que no nombra un único grado.', 'tours.hike.ways.unmatchedTip': 'Aquí ningún camino queda claramente bajo la línea de la ruta, así que no se muestra nada.', + 'tours.hike.ways.unaskedTip': + 'Esta vez no se pudo consultar a OpenStreetMap sobre estos caminos. Desconocido no significa fácil.', 'tours.hike.ways.known': 'Conocido', 'tours.hike.sac.knownTip': 'La parte de la ruta cuyo grado SAC da OpenStreetMap. El resto es desconocido.', 'tours.hike.sac.highest': 'Máximo conocido', diff --git a/shared/src/i18n/et/tours.ts b/shared/src/i18n/et/tours.ts index 1e908570d..4d2bccdfd 100644 --- a/shared/src/i18n/et/tours.ts +++ b/shared/src/i18n/et/tours.ts @@ -530,6 +530,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap märgib siin {tags}, mis ei nimeta ühte astet.', 'tours.hike.ways.unmatchedTip': 'Siin ei asu ükski rada selgelt matka joone all, seega selle kohta midagi ei näidata.', + 'tours.hike.ways.unaskedTip': + 'Seekord ei õnnestunud OpenStreetMapilt nende radade kohta pärida. Teadmata ei tähenda kerget.', 'tours.hike.ways.known': 'Teada', 'tours.hike.sac.knownTip': 'Marsruudi osa, mille SAC raskusastme OpenStreetMap annab. Ülejäänu on teadmata.', 'tours.hike.sac.highest': 'Kõrgeim teadaolev', diff --git a/shared/src/i18n/fr/tours.ts b/shared/src/i18n/fr/tours.ts index 765d621d7..fe8bfa02c 100644 --- a/shared/src/i18n/fr/tours.ts +++ b/shared/src/i18n/fr/tours.ts @@ -543,6 +543,8 @@ const tours: TranslationStrings = { 'OpenStreetMap ne donne aucun sac_scale à ces chemins. Inconnu ne veut pas dire facile.', 'tours.hike.sac.unclearTip': 'OpenStreetMap indique ici {tags}, ce qui ne désigne aucun degré précis.', 'tours.hike.ways.unmatchedTip': 'Aucun chemin ne se trouve clairement sous le tracé ici, donc rien n’y est affiché.', + 'tours.hike.ways.unaskedTip': + 'OpenStreetMap n’a pas pu être interrogé sur ces chemins cette fois. Inconnu ne veut pas dire facile.', 'tours.hike.ways.known': 'Connu', 'tours.hike.sac.knownTip': 'La part de l’itinéraire dont OpenStreetMap donne la cotation SAC. Le reste est inconnu.', 'tours.hike.sac.highest': 'Plus haute connue', diff --git a/shared/src/i18n/gr/tours.ts b/shared/src/i18n/gr/tours.ts index bbb68f5e8..5df8b5727 100644 --- a/shared/src/i18n/gr/tours.ts +++ b/shared/src/i18n/gr/tours.ts @@ -546,6 +546,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'Το OpenStreetMap γράφει εδώ {tags}, που δεν ορίζει έναν μόνο βαθμό.', 'tours.hike.ways.unmatchedTip': 'Εδώ κανένα μονοπάτι δεν βρίσκεται σαφώς κάτω από τη γραμμή της διαδρομής, οπότε δεν εμφανίζεται τίποτα.', + 'tours.hike.ways.unaskedTip': + 'Δεν ήταν δυνατή η αναζήτηση αυτών των μονοπατιών στο OpenStreetMap αυτή τη φορά. Άγνωστο δεν σημαίνει εύκολο.', 'tours.hike.ways.known': 'Γνωστό', 'tours.hike.sac.knownTip': 'Το μέρος της διαδρομής για το οποίο το OpenStreetMap δίνει βαθμό SAC. Το υπόλοιπο είναι άγνωστο.', diff --git a/shared/src/i18n/hu/tours.ts b/shared/src/i18n/hu/tours.ts index a61c647e6..3b5b65732 100644 --- a/shared/src/i18n/hu/tours.ts +++ b/shared/src/i18n/hu/tours.ts @@ -538,6 +538,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'Az OpenStreetMap itt ezt írja: {tags}, ami nem egyetlen fokozatot jelöl.', 'tours.hike.ways.unmatchedTip': 'Itt egyetlen út sem fut egyértelműen a túra vonala alatt, ezért ehhez nem jelenik meg semmi.', + 'tours.hike.ways.unaskedTip': + 'Az OpenStreetMapet ezúttal nem sikerült lekérdezni ezekről az utakról. Az ismeretlen nem jelent könnyűt.', 'tours.hike.ways.known': 'Ismert', 'tours.hike.sac.knownTip': 'Az útvonal azon része, amelyhez az OpenStreetMap SAC-fokozatot ad. A többi ismeretlen.', 'tours.hike.sac.highest': 'Legmagasabb ismert', diff --git a/shared/src/i18n/id/tours.ts b/shared/src/i18n/id/tours.ts index 723be8bb1..5ac57262a 100644 --- a/shared/src/i18n/id/tours.ts +++ b/shared/src/i18n/id/tours.ts @@ -531,6 +531,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap menulis {tags} di sini, yang tidak menyebut satu tingkat.', 'tours.hike.ways.unmatchedTip': 'Di sini tidak ada jalur yang jelas berada di bawah garis tur, jadi tidak ada yang ditampilkan.', + 'tours.hike.ways.unaskedTip': + 'OpenStreetMap tidak dapat ditanyakan tentang jalur ini kali ini. Tidak diketahui bukan berarti mudah.', 'tours.hike.ways.known': 'Diketahui', 'tours.hike.sac.knownTip': 'Bagian rute yang tingkat SAC-nya diberikan OpenStreetMap. Sisanya tidak diketahui.', 'tours.hike.sac.highest': 'Tertinggi diketahui', diff --git a/shared/src/i18n/it/tours.ts b/shared/src/i18n/it/tours.ts index bc244afc3..c5f7e5362 100644 --- a/shared/src/i18n/it/tours.ts +++ b/shared/src/i18n/it/tours.ts @@ -539,6 +539,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'Qui OpenStreetMap riporta {tags}, che non indica un singolo grado.', 'tours.hike.ways.unmatchedTip': 'Qui nessun sentiero sta chiaramente sotto la linea del percorso, quindi non viene mostrato nulla.', + 'tours.hike.ways.unaskedTip': + 'Questa volta non è stato possibile interrogare OpenStreetMap su questi sentieri. Sconosciuto non significa facile.', 'tours.hike.ways.known': 'Noto', 'tours.hike.sac.knownTip': 'La parte del percorso di cui OpenStreetMap indica il grado SAC. Il resto è sconosciuto.', 'tours.hike.sac.highest': 'Massimo noto', diff --git a/shared/src/i18n/ja/tours.ts b/shared/src/i18n/ja/tours.ts index 2d2f8265e..98261b22e 100644 --- a/shared/src/i18n/ja/tours.ts +++ b/shared/src/i18n/ja/tours.ts @@ -515,6 +515,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMapはこれらの道にsac_scaleを付けていません。不明は易しいという意味ではありません。', 'tours.hike.sac.unclearTip': 'OpenStreetMapはここに{tags}と記載しており、単一の段階を示していません。', 'tours.hike.ways.unmatchedTip': 'ここではツアーの線の下に明確に道がないため、何も表示されません。', + 'tours.hike.ways.unaskedTip': + '今回はこれらの道についてOpenStreetMapに問い合わせできませんでした。不明は易しいという意味ではありません。', 'tours.hike.ways.known': '判明', 'tours.hike.sac.knownTip': 'OpenStreetMapがSAC難易度を示しているルートの割合です。残りは不明です。', 'tours.hike.sac.highest': '判明している最高', diff --git a/shared/src/i18n/ko/tours.ts b/shared/src/i18n/ko/tours.ts index 486e016f9..1000dc1fa 100644 --- a/shared/src/i18n/ko/tours.ts +++ b/shared/src/i18n/ko/tours.ts @@ -513,6 +513,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMap은 이 길들에 sac_scale을 주지 않습니다. 알 수 없음은 쉬움이 아닙니다.', 'tours.hike.sac.unclearTip': 'OpenStreetMap은 여기에 {tags}라고 적어 하나의 등급을 가리키지 않습니다.', 'tours.hike.ways.unmatchedTip': '여기서는 투어 선 아래에 명확히 놓인 길이 없어 아무것도 표시하지 않습니다.', + 'tours.hike.ways.unaskedTip': + '이번에는 이 길들에 대해 OpenStreetMap을 조회할 수 없었습니다. 알 수 없음은 쉬움이 아닙니다.', 'tours.hike.ways.known': '알려짐', 'tours.hike.sac.knownTip': 'OpenStreetMap이 SAC 등급을 제공하는 경로의 비율입니다. 나머지는 알 수 없습니다.', 'tours.hike.sac.highest': '알려진 최고', diff --git a/shared/src/i18n/nl/tours.ts b/shared/src/i18n/nl/tours.ts index 87f094148..c7c6229f3 100644 --- a/shared/src/i18n/nl/tours.ts +++ b/shared/src/i18n/nl/tours.ts @@ -537,6 +537,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap vermeldt hier {tags}, wat geen enkele graad aanduidt.', 'tours.hike.ways.unmatchedTip': 'Hier ligt geen pad duidelijk onder de lijn van de tocht, dus er wordt niets getoond.', + 'tours.hike.ways.unaskedTip': + 'OpenStreetMap kon deze keer niet over deze paden worden opgevraagd. Onbekend betekent niet makkelijk.', 'tours.hike.ways.known': 'Bekend', 'tours.hike.sac.knownTip': 'Het deel van de route waarvoor OpenStreetMap een SAC-graad geeft. De rest is onbekend.', 'tours.hike.sac.highest': 'Hoogste bekende', diff --git a/shared/src/i18n/pl/tours.ts b/shared/src/i18n/pl/tours.ts index 2be2242d0..f9a766e66 100644 --- a/shared/src/i18n/pl/tours.ts +++ b/shared/src/i18n/pl/tours.ts @@ -544,6 +544,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap podaje tu {tags}, co nie wskazuje jednego stopnia.', 'tours.hike.ways.unmatchedTip': 'Tutaj żadna droga nie leży wyraźnie pod linią wycieczki, więc nic nie jest pokazywane.', + 'tours.hike.ways.unaskedTip': + 'Tym razem nie udało się sprawdzić tych dróg w OpenStreetMap. Nieznane nie znaczy łatwe.', 'tours.hike.ways.known': 'Znane', 'tours.hike.sac.knownTip': 'Część trasy, dla której OpenStreetMap podaje stopień SAC. Reszta jest nieznana.', 'tours.hike.sac.highest': 'Najwyższy znany', diff --git a/shared/src/i18n/ru/tours.ts b/shared/src/i18n/ru/tours.ts index ac0812db1..a4586015b 100644 --- a/shared/src/i18n/ru/tours.ts +++ b/shared/src/i18n/ru/tours.ts @@ -548,6 +548,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap указывает здесь {tags}, что не означает одну категорию.', 'tours.hike.ways.unmatchedTip': 'Здесь ни один путь однозначно не лежит под линией маршрута, поэтому для него ничего не показано.', + 'tours.hike.ways.unaskedTip': + 'В этот раз не удалось запросить OpenStreetMap об этих путях. Неизвестно не значит легко.', 'tours.hike.ways.known': 'Известно', 'tours.hike.sac.knownTip': 'Доля маршрута, для которой OpenStreetMap указывает категорию SAC. Остальное неизвестно.', 'tours.hike.sac.highest': 'Высшая известная', diff --git a/shared/src/i18n/sk/tours.ts b/shared/src/i18n/sk/tours.ts index db9f6fb83..3aaf54e29 100644 --- a/shared/src/i18n/sk/tours.ts +++ b/shared/src/i18n/sk/tours.ts @@ -529,6 +529,7 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap tu uvádza {tags}, čo neoznačuje jediný stupeň.', 'tours.hike.ways.unmatchedTip': 'Tu pod líniou túry jednoznačne neleží žiadna cesta, preto sa pre ňu nič nezobrazuje.', + 'tours.hike.ways.unaskedTip': 'OpenStreetMap sa tentoraz na tieto cesty nepodarilo opýtať. Neznáme neznamená ľahké.', 'tours.hike.ways.known': 'Známe', 'tours.hike.sac.knownTip': 'Podiel trasy, pre ktorý OpenStreetMap uvádza stupeň SAC. Zvyšok je neznámy.', 'tours.hike.sac.highest': 'Najvyšší známy', diff --git a/shared/src/i18n/sv/tours.ts b/shared/src/i18n/sv/tours.ts index e17281988..a0b03e2c4 100644 --- a/shared/src/i18n/sv/tours.ts +++ b/shared/src/i18n/sv/tours.ts @@ -525,6 +525,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMap ger dessa vägar ingen sac_scale. Okänt betyder inte lätt.', 'tours.hike.sac.unclearTip': 'OpenStreetMap anger här {tags}, vilket inte pekar ut en enda grad.', 'tours.hike.ways.unmatchedTip': 'Här ligger ingen väg tydligt under turens linje, så inget visas för den.', + 'tours.hike.ways.unaskedTip': + 'OpenStreetMap kunde inte frågas om dessa vägar den här gången. Okänt betyder inte lätt.', 'tours.hike.ways.known': 'Känt', 'tours.hike.sac.knownTip': 'Den del av rutten där OpenStreetMap anger en SAC-grad. Resten är okänd.', 'tours.hike.sac.highest': 'Högsta kända', diff --git a/shared/src/i18n/th/tours.ts b/shared/src/i18n/th/tours.ts index 8f1f328b3..44b77259e 100644 --- a/shared/src/i18n/th/tours.ts +++ b/shared/src/i18n/th/tours.ts @@ -506,6 +506,7 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMap ไม่ได้ระบุ sac_scale ให้ทางเหล่านี้ ไม่ทราบไม่ได้แปลว่าง่าย', 'tours.hike.sac.unclearTip': 'OpenStreetMap เขียนไว้ที่นี่ว่า {tags} ซึ่งไม่ได้ระบุระดับเดียว', 'tours.hike.ways.unmatchedTip': 'ที่นี่ไม่มีทางใดอยู่ใต้เส้นของทัวร์อย่างชัดเจน จึงไม่แสดงสิ่งใด', + 'tours.hike.ways.unaskedTip': 'ครั้งนี้สอบถาม OpenStreetMap เกี่ยวกับทางเหล่านี้ไม่ได้ ไม่ทราบไม่ได้แปลว่าง่าย', 'tours.hike.ways.known': 'ทราบแล้ว', 'tours.hike.sac.knownTip': 'สัดส่วนของเส้นทางที่ OpenStreetMap ระบุระดับ SAC ส่วนที่เหลือไม่ทราบ', 'tours.hike.sac.highest': 'สูงสุดที่ทราบ', diff --git a/shared/src/i18n/tours-locales.spec.ts b/shared/src/i18n/tours-locales.spec.ts index 386e08bfc..c68e24358 100644 --- a/shared/src/i18n/tours-locales.spec.ts +++ b/shared/src/i18n/tours-locales.spec.ts @@ -20,7 +20,7 @@ const tokens = (value: string) => [...value.matchAll(/\{[^{}]+\}/g)].map((match) // placeholder spec; here only the general keys are. const groups = pluralGroups(Object.keys(english)); const generalKeys = (keys: string[]) => keys.filter((key) => !pluralFormOf(key, groups)); -const GENERAL_KEY_COUNT = 1063; +const GENERAL_KEY_COUNT = 1064; function literalKeys(source: string): string[] { const tree = ts.createSourceFile('locale.ts', source, ts.ScriptTarget.Latest, true); diff --git a/shared/src/i18n/tr/tours.ts b/shared/src/i18n/tr/tours.ts index d879226b8..c9296b0de 100644 --- a/shared/src/i18n/tr/tours.ts +++ b/shared/src/i18n/tr/tours.ts @@ -529,6 +529,7 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMap bu yollara sac_scale vermiyor. Bilinmiyor kolay demek değildir.', 'tours.hike.sac.unclearTip': 'OpenStreetMap burada {tags} yazıyor; bu tek bir derece belirtmiyor.', 'tours.hike.ways.unmatchedTip': 'Burada turun çizgisinin altında net bir yol yok, bu yüzden bir şey gösterilmiyor.', + 'tours.hike.ways.unaskedTip': 'Bu sefer OpenStreetMap bu yollar için sorgulanamadı. Bilinmiyor kolay demek değildir.', 'tours.hike.ways.known': 'Bilinen', 'tours.hike.sac.knownTip': 'Rotanın, OpenStreetMap’in SAC derecesi verdiği payı. Gerisi bilinmiyor.', 'tours.hike.sac.highest': 'En yüksek bilinen', diff --git a/shared/src/i18n/uk/tours.ts b/shared/src/i18n/uk/tours.ts index 6826b9c09..e106f38f2 100644 --- a/shared/src/i18n/uk/tours.ts +++ b/shared/src/i18n/uk/tours.ts @@ -543,6 +543,7 @@ const tours: TranslationStrings = { 'tours.hike.sac.unclearTip': 'OpenStreetMap вказує тут {tags}, що не означає одну категорію.', 'tours.hike.ways.unmatchedTip': 'Тут жоден шлях однозначно не лежить під лінією маршруту, тому для нього нічого не показано.', + 'tours.hike.ways.unaskedTip': 'Цього разу не вдалося запитати OpenStreetMap про ці шляхи. Невідомо не означає легко.', 'tours.hike.ways.known': 'Відомо', 'tours.hike.sac.knownTip': 'Частка маршруту, для якої OpenStreetMap вказує категорію SAC. Решта невідома.', 'tours.hike.sac.highest': 'Найвища відома', diff --git a/shared/src/i18n/vi/tours.ts b/shared/src/i18n/vi/tours.ts index 17b61ea28..937516ee5 100644 --- a/shared/src/i18n/vi/tours.ts +++ b/shared/src/i18n/vi/tours.ts @@ -526,6 +526,8 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMap không gán sac_scale cho các đường này. Không rõ không có nghĩa là dễ.', 'tours.hike.sac.unclearTip': 'OpenStreetMap ghi {tags} ở đây, không chỉ một cấp độ duy nhất.', 'tours.hike.ways.unmatchedTip': 'Ở đây không có đường nào nằm rõ dưới tuyến của chuyến đi, nên không hiển thị gì.', + 'tours.hike.ways.unaskedTip': + 'Lần này không truy vấn được OpenStreetMap về các đường này. Không rõ không có nghĩa là dễ.', 'tours.hike.ways.known': 'Đã biết', 'tours.hike.sac.knownTip': 'Phần tuyến đường mà OpenStreetMap cho biết cấp độ SAC. Phần còn lại không rõ.', 'tours.hike.sac.highest': 'Cao nhất đã biết', diff --git a/shared/src/i18n/zh-TW/tours.ts b/shared/src/i18n/zh-TW/tours.ts index 8c73d882e..e6445afc9 100644 --- a/shared/src/i18n/zh-TW/tours.ts +++ b/shared/src/i18n/zh-TW/tours.ts @@ -482,6 +482,7 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMap 未替這些道路標註 sac_scale。未知並不代表容易。', 'tours.hike.sac.unclearTip': 'OpenStreetMap 在此處寫的是 {tags},並未指出單一等級。', 'tours.hike.ways.unmatchedTip': '此處沒有道路明確位於路線下方,因此不顯示任何內容。', + 'tours.hike.ways.unaskedTip': '本次無法向 OpenStreetMap 查詢這些道路。未知並不代表容易。', 'tours.hike.ways.known': '已知', 'tours.hike.sac.knownTip': 'OpenStreetMap 提供 SAC 難度的路線比例。其餘為未知。', 'tours.hike.sac.highest': '已知最高', diff --git a/shared/src/i18n/zh/tours.ts b/shared/src/i18n/zh/tours.ts index 6c0878a4b..c220d73ab 100644 --- a/shared/src/i18n/zh/tours.ts +++ b/shared/src/i18n/zh/tours.ts @@ -483,6 +483,7 @@ const tours: TranslationStrings = { 'tours.hike.sac.untaggedTip': 'OpenStreetMap 未给这些道路标注 sac_scale。未知并不代表容易。', 'tours.hike.sac.unclearTip': 'OpenStreetMap 在此处写的是 {tags},并未指明单一等级。', 'tours.hike.ways.unmatchedTip': '此处没有道路明确位于路线下方,因此不显示任何内容。', + 'tours.hike.ways.unaskedTip': '本次无法向 OpenStreetMap 查询这些道路。未知并不代表容易。', 'tours.hike.ways.known': '已知', 'tours.hike.sac.knownTip': 'OpenStreetMap 给出 SAC 难度的路线比例。其余为未知。', 'tours.hike.sac.highest': '已知最高',