From c8f9edad87afaa3740698a61d78bfd5cab74feb8 Mon Sep 17 00:00:00 2001 From: Maurice Date: Thu, 17 Sep 2026 16:40:05 +0200 Subject: [PATCH] fix(i18n): the corridor's truncation note takes a singular, and three plurals were wrong anyway `mobileTrip.rtTruncated` interpolated a count into a sentence naming the stretch once, so at one truncated area it read "1 stretches". Two keys now, picked by the count, the shape this codebase already uses where a number changes its noun. Writing the singular turned up three plurals that were wrong at counts the old one-form key could never reach. Polish and Czech both had the genitive plural with a singular verb, which is right at five and wrong at two; Arabic had the 3 to 10 form, wrong at two and again from eleven. All three now put the count after a colon, where no form has to agree with it. Russian and Ukrainian were already correct at both, since their phrase leads with a locative, and were left alone. The eight languages that keep the singular noun after a numeral differ only in the numeral, which is what they should do. --- .../mobile/screens/trip/roadtrip/MRtCorridorSheet.tsx | 10 +++++++++- .../tests/unit/mobile/trip/MRtCorridorSheet.test.tsx | 11 +++++++++-- shared/src/i18n/ar/mobileTrip.ts | 3 ++- shared/src/i18n/br/mobileTrip.ts | 4 +++- shared/src/i18n/ca/mobileTrip.ts | 3 ++- shared/src/i18n/cs/mobileTrip.ts | 6 ++++-- shared/src/i18n/de/mobileTrip.ts | 4 +++- shared/src/i18n/en/mobileTrip.ts | 3 ++- shared/src/i18n/es/mobileTrip.ts | 4 +++- shared/src/i18n/fr/mobileTrip.ts | 4 +++- shared/src/i18n/gr/mobileTrip.ts | 4 +++- shared/src/i18n/hu/mobileTrip.ts | 4 +++- shared/src/i18n/id/mobileTrip.ts | 4 +++- shared/src/i18n/it/mobileTrip.ts | 4 +++- shared/src/i18n/ja/mobileTrip.ts | 3 ++- shared/src/i18n/ko/mobileTrip.ts | 4 +++- shared/src/i18n/nl/mobileTrip.ts | 3 ++- shared/src/i18n/pl/mobileTrip.ts | 6 ++++-- shared/src/i18n/ru/mobileTrip.ts | 4 +++- shared/src/i18n/sv/mobileTrip.ts | 4 +++- shared/src/i18n/tr/mobileTrip.ts | 4 +++- shared/src/i18n/uk/mobileTrip.ts | 4 +++- shared/src/i18n/vi/mobileTrip.ts | 4 +++- shared/src/i18n/zh-TW/mobileTrip.ts | 3 ++- shared/src/i18n/zh/mobileTrip.ts | 3 ++- 25 files changed, 82 insertions(+), 28 deletions(-) diff --git a/client/src/mobile/screens/trip/roadtrip/MRtCorridorSheet.tsx b/client/src/mobile/screens/trip/roadtrip/MRtCorridorSheet.tsx index 154b21e54..393dac72d 100644 --- a/client/src/mobile/screens/trip/roadtrip/MRtCorridorSheet.tsx +++ b/client/src/mobile/screens/trip/roadtrip/MRtCorridorSheet.tsx @@ -187,7 +187,15 @@ function StatusBand({ corridor, t }: { corridor: MRtCorridorController; t: Trans // The phone's own wording, because the desk's ends in "narrow the corridor" and the // corridor width is a control this screen deliberately does not have. What it does // have is the category chips, and fewer of them really is what makes a box fit. - if (corridor.truncatedAreas > 0) notes.push(t('mobileTrip.rtTruncated', { count: corridor.truncatedAreas })) + // Two keys picked by the count: the i18n layer has no plural engine, so a single key + // with {count} in a sentence that names the noun once reads as "1 stretches". + if (corridor.truncatedAreas > 0) { + notes.push( + t(corridor.truncatedAreas === 1 ? 'mobileTrip.rtTruncated.one' : 'mobileTrip.rtTruncated.other', { + count: corridor.truncatedAreas, + }), + ) + } if (corridor.offline) return }>{t('mobileTrip.rtSearchOffline')} if (corridor.error) return }>{t('roadtrip.poi.failed')} diff --git a/client/tests/unit/mobile/trip/MRtCorridorSheet.test.tsx b/client/tests/unit/mobile/trip/MRtCorridorSheet.test.tsx index a48bc9eaa..04bed06ae 100644 --- a/client/tests/unit/mobile/trip/MRtCorridorSheet.test.tsx +++ b/client/tests/unit/mobile/trip/MRtCorridorSheet.test.tsx @@ -141,11 +141,18 @@ describe('MRtCorridorSheet', () => { expect(screen.getByText('roadtrip.poi.capped')).toBeInTheDocument() expect(screen.getByText('roadtrip.poi.partial:2')).toBeInTheDocument() // The phone's own wording: the desk's ends in "narrow the corridor", and the - // corridor width is a control this screen does not have. - expect(screen.getByText('mobileTrip.rtTruncated:1')).toBeInTheDocument() + // corridor width is a control this screen does not have. One stretch takes the + // singular key, because one key with {count} in it would read as "1 stretches". + expect(screen.getByText('mobileTrip.rtTruncated.one:1')).toBeInTheDocument() expect(screen.queryByText('roadtrip.poi.truncated:1')).toBeNull() }) + it('FE-MOB-RTSRCH-011b: more than one truncated stretch takes the plural key', () => { + renderSheet({ answered: true, hits: [hit()], truncatedAreas: 3 }) + + expect(screen.getByText('mobileTrip.rtTruncated.other:3')).toBeInTheDocument() + }) + it('FE-MOB-RTSRCH-012: a hit says what it is and where on the drive it sits', () => { renderSheet({ answered: true, hits: [hit()] }) diff --git a/shared/src/i18n/ar/mobileTrip.ts b/shared/src/i18n/ar/mobileTrip.ts index a7a0f93cf..858aa3b7b 100644 --- a/shared/src/i18n/ar/mobileTrip.ts +++ b/shared/src/i18n/ar/mobileTrip.ts @@ -64,6 +64,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'من بداية المرحلة', 'mobileTrip.rtNoneAhead': 'لا شيء على الطريق أمامك. جرّب المرحلة كاملة.', 'mobileTrip.rtNoneOnStage': 'لا شيء من هذا النوع على طول هذه المرحلة.', - 'mobileTrip.rtTruncated': '{count} مقاطع فيها أكثر مما يتسع في إجابة واحدة. اختر أنواعًا أقل لرؤية الباقي.', + 'mobileTrip.rtTruncated.one': 'مقطع واحد فيه أكثر مما يتسع في إجابة واحدة. اختر أنواعًا أقل لرؤية الباقي.', + 'mobileTrip.rtTruncated.other': 'مقاطع فيها أكثر مما يتسع في إجابة واحدة: {count}. اختر أنواعًا أقل لرؤية الباقي.', }; export default mobileTrip; diff --git a/shared/src/i18n/br/mobileTrip.ts b/shared/src/i18n/br/mobileTrip.ts index c309aade9..5de92ae9f 100644 --- a/shared/src/i18n/br/mobileTrip.ts +++ b/shared/src/i18n/br/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'A partir do início da etapa', 'mobileTrip.rtNoneAhead': 'Nada na estrada à frente. Tente a etapa inteira.', 'mobileTrip.rtNoneOnStage': 'Nada desse tipo ao longo desta etapa.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 trecho tinha mais do que cabe em uma resposta. Escolha menos tipos para ver o resto.', + 'mobileTrip.rtTruncated.other': '{count} trechos tinham mais do que cabe em uma resposta. Escolha menos tipos para ver o resto.', }; export default mobileTrip; diff --git a/shared/src/i18n/ca/mobileTrip.ts b/shared/src/i18n/ca/mobileTrip.ts index 8a315755e..c156ddf71 100644 --- a/shared/src/i18n/ca/mobileTrip.ts +++ b/shared/src/i18n/ca/mobileTrip.ts @@ -67,7 +67,8 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Des de l’inici de l’etapa', 'mobileTrip.rtNoneAhead': 'No hi ha res a la carretera que tens al davant. Prova tota l’etapa.', 'mobileTrip.rtNoneOnStage': 'No hi ha res d’aquest tipus al llarg d’aquesta etapa.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': '1 tram tenia més del que cap en una resposta. Tria menys tipus per veure la resta.', + 'mobileTrip.rtTruncated.other': '{count} trams tenien més del que cap en una resposta. Tria menys tipus per veure la resta.', }; diff --git a/shared/src/i18n/cs/mobileTrip.ts b/shared/src/i18n/cs/mobileTrip.ts index 656ca2b00..da78552fe 100644 --- a/shared/src/i18n/cs/mobileTrip.ts +++ b/shared/src/i18n/cs/mobileTrip.ts @@ -66,7 +66,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Od začátku etapy', 'mobileTrip.rtNoneAhead': 'Na cestě před vámi nic není. Zkuste celou etapu.', 'mobileTrip.rtNoneOnStage': 'Nic takového podél této etapy není.', - 'mobileTrip.rtTruncated': - '{count} úseků mělo víc, než se vejde do jedné odpovědi. Vyberte méně druhů, ať uvidíte zbytek.', + 'mobileTrip.rtTruncated.one': + '1 úsek měl víc, než se vejde do jedné odpovědi. Vyberte méně druhů, ať uvidíte zbytek.', + 'mobileTrip.rtTruncated.other': + 'Úseky, kde bylo víc, než se vejde do jedné odpovědi: {count}. Vyberte méně druhů, ať uvidíte zbytek.', }; export default mobileTrip; diff --git a/shared/src/i18n/de/mobileTrip.ts b/shared/src/i18n/de/mobileTrip.ts index 1a4c282fb..8a6e6ce28 100644 --- a/shared/src/i18n/de/mobileTrip.ts +++ b/shared/src/i18n/de/mobileTrip.ts @@ -66,7 +66,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Ab dem Anfang der Etappe', 'mobileTrip.rtNoneAhead': 'Auf der Strecke voraus ist nichts. Versuch die ganze Etappe.', 'mobileTrip.rtNoneOnStage': 'Auf dieser Etappe gibt es davon nichts.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 Abschnitt hatte mehr, als in eine Antwort passt. Wähl weniger Arten, um den Rest zu sehen.', + 'mobileTrip.rtTruncated.other': '{count} Abschnitte hatten mehr, als in eine Antwort passt. Wähl weniger Arten, um den Rest zu sehen.', }; export default mobileTrip; diff --git a/shared/src/i18n/en/mobileTrip.ts b/shared/src/i18n/en/mobileTrip.ts index 5841040bb..d5f91ae10 100644 --- a/shared/src/i18n/en/mobileTrip.ts +++ b/shared/src/i18n/en/mobileTrip.ts @@ -65,7 +65,8 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'From the start of the stage', 'mobileTrip.rtNoneAhead': 'Nothing on the road ahead. Try the whole stage.', 'mobileTrip.rtNoneOnStage': 'Nothing of that kind along this stage.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': '1 stretch had more than fits in one answer. Pick fewer kinds to see the rest.', + 'mobileTrip.rtTruncated.other': '{count} stretches had more than fits in one answer. Pick fewer kinds to see the rest.', }; export default mobileTrip; diff --git a/shared/src/i18n/es/mobileTrip.ts b/shared/src/i18n/es/mobileTrip.ts index 8bfabb6d7..f5513f10b 100644 --- a/shared/src/i18n/es/mobileTrip.ts +++ b/shared/src/i18n/es/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Desde el inicio de la etapa', 'mobileTrip.rtNoneAhead': 'No hay nada en la carretera que tienes por delante. Prueba con toda la etapa.', 'mobileTrip.rtNoneOnStage': 'No hay nada de eso a lo largo de esta etapa.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 tramo tenía más de lo que cabe en una respuesta. Elige menos tipos para ver el resto.', + 'mobileTrip.rtTruncated.other': '{count} tramos tenían más de lo que cabe en una respuesta. Elige menos tipos para ver el resto.', }; export default mobileTrip; diff --git a/shared/src/i18n/fr/mobileTrip.ts b/shared/src/i18n/fr/mobileTrip.ts index 01089aa6c..3672402a6 100644 --- a/shared/src/i18n/fr/mobileTrip.ts +++ b/shared/src/i18n/fr/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Depuis le début de l’étape', 'mobileTrip.rtNoneAhead': 'Rien sur la route devant vous. Essayez toute l’étape.', 'mobileTrip.rtNoneOnStage': 'Rien de ce genre le long de cette étape.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 tronçon avait plus que ce qui tient dans une réponse. Choisissez moins de types pour voir le reste.', + 'mobileTrip.rtTruncated.other': '{count} tronçons avaient plus que ce qui tient dans une réponse. Choisissez moins de types pour voir le reste.', }; export default mobileTrip; diff --git a/shared/src/i18n/gr/mobileTrip.ts b/shared/src/i18n/gr/mobileTrip.ts index ada7c3a7b..c0bf509a0 100644 --- a/shared/src/i18n/gr/mobileTrip.ts +++ b/shared/src/i18n/gr/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Από την αρχή του σκέλους', 'mobileTrip.rtNoneAhead': 'Τίποτα στον δρόμο μπροστά σας. Δοκιμάστε όλο το σκέλος.', 'mobileTrip.rtNoneOnStage': 'Τίποτα τέτοιο κατά μήκος αυτού του σκέλους.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 τμήμα είχε περισσότερα από όσα χωρούν σε μία απάντηση. Διαλέξτε λιγότερα είδη για να δείτε τα υπόλοιπα.', + 'mobileTrip.rtTruncated.other': '{count} τμήματα είχαν περισσότερα από όσα χωρούν σε μία απάντηση. Διαλέξτε λιγότερα είδη για να δείτε τα υπόλοιπα.', }; export default mobileTrip; diff --git a/shared/src/i18n/hu/mobileTrip.ts b/shared/src/i18n/hu/mobileTrip.ts index dd226aa7b..daa2f7652 100644 --- a/shared/src/i18n/hu/mobileTrip.ts +++ b/shared/src/i18n/hu/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'A szakasz elejétől', 'mobileTrip.rtNoneAhead': 'Az előtted lévő úton nincs semmi. Próbáld az egész szakaszt.', 'mobileTrip.rtNoneOnStage': 'Ezen a szakaszon nincs ilyesmi.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 szakaszon több volt, mint ami egy válaszba fér. Válassz kevesebb fajtát, hogy lásd a többit.', + 'mobileTrip.rtTruncated.other': '{count} szakaszon több volt, mint ami egy válaszba fér. Válassz kevesebb fajtát, hogy lásd a többit.', }; export default mobileTrip; diff --git a/shared/src/i18n/id/mobileTrip.ts b/shared/src/i18n/id/mobileTrip.ts index cc4fbd692..28424694e 100644 --- a/shared/src/i18n/id/mobileTrip.ts +++ b/shared/src/i18n/id/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Dari awal etape', 'mobileTrip.rtNoneAhead': 'Tidak ada apa-apa di jalan di depan. Coba seluruh etape.', 'mobileTrip.rtNoneOnStage': 'Tidak ada yang seperti itu di sepanjang etape ini.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 ruas punya lebih banyak daripada yang muat dalam satu jawaban. Pilih lebih sedikit jenis untuk melihat sisanya.', + 'mobileTrip.rtTruncated.other': '{count} ruas punya lebih banyak daripada yang muat dalam satu jawaban. Pilih lebih sedikit jenis untuk melihat sisanya.', }; export default mobileTrip; diff --git a/shared/src/i18n/it/mobileTrip.ts b/shared/src/i18n/it/mobileTrip.ts index 58dbbb46d..54236308b 100644 --- a/shared/src/i18n/it/mobileTrip.ts +++ b/shared/src/i18n/it/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Dall’inizio della tappa', 'mobileTrip.rtNoneAhead': 'Niente sulla strada davanti a te. Prova con tutta la tappa.', 'mobileTrip.rtNoneOnStage': 'Niente del genere lungo questa tappa.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 tratto aveva più di quanto stia in una risposta. Scegli meno tipi per vedere il resto.', + 'mobileTrip.rtTruncated.other': '{count} tratti avevano più di quanto stia in una risposta. Scegli meno tipi per vedere il resto.', }; export default mobileTrip; diff --git a/shared/src/i18n/ja/mobileTrip.ts b/shared/src/i18n/ja/mobileTrip.ts index efae26766..452299269 100644 --- a/shared/src/i18n/ja/mobileTrip.ts +++ b/shared/src/i18n/ja/mobileTrip.ts @@ -64,6 +64,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': '区間の始まりから', 'mobileTrip.rtNoneAhead': 'この先の道沿いには何もありません。区間全体で試してください。', 'mobileTrip.rtNoneOnStage': 'この区間沿いにはそうした場所はありません。', - 'mobileTrip.rtTruncated': '{count} 区間は1回の答えに収まりきりませんでした。種類を減らすと残りも見られます。', + 'mobileTrip.rtTruncated.one': '1 区間は1回の答えに収まりきりませんでした。種類を減らすと残りも見られます。', + 'mobileTrip.rtTruncated.other': '{count} 区間は1回の答えに収まりきりませんでした。種類を減らすと残りも見られます。', }; export default mobileTrip; diff --git a/shared/src/i18n/ko/mobileTrip.ts b/shared/src/i18n/ko/mobileTrip.ts index 3b1a0796a..5ab402a2f 100644 --- a/shared/src/i18n/ko/mobileTrip.ts +++ b/shared/src/i18n/ko/mobileTrip.ts @@ -64,6 +64,8 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': '구간 시작부터', 'mobileTrip.rtNoneAhead': '앞쪽 도로에는 아무것도 없습니다. 구간 전체로 찾아보세요.', 'mobileTrip.rtNoneOnStage': '이 구간에는 그런 곳이 없습니다.', - 'mobileTrip.rtTruncated': '{count}개 구간은 한 번의 답에 담기지 않았습니다. 종류를 줄이면 나머지도 볼 수 있습니다.', + 'mobileTrip.rtTruncated.one': '1개 구간은 한 번의 답에 담기지 않았습니다. 종류를 줄이면 나머지도 볼 수 있습니다.', + 'mobileTrip.rtTruncated.other': + '{count}개 구간은 한 번의 답에 담기지 않았습니다. 종류를 줄이면 나머지도 볼 수 있습니다.', }; export default mobileTrip; diff --git a/shared/src/i18n/nl/mobileTrip.ts b/shared/src/i18n/nl/mobileTrip.ts index 8ef950223..f68d85c68 100644 --- a/shared/src/i18n/nl/mobileTrip.ts +++ b/shared/src/i18n/nl/mobileTrip.ts @@ -65,7 +65,8 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Vanaf het begin van de etappe', 'mobileTrip.rtNoneAhead': 'Niets op de weg die voor je ligt. Probeer de hele etappe.', 'mobileTrip.rtNoneOnStage': 'Niets van dat soort langs deze etappe.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': '1 stuk had meer dan in één antwoord past. Kies minder soorten om de rest te zien.', + 'mobileTrip.rtTruncated.other': '{count} stukken hadden meer dan in één antwoord past. Kies minder soorten om de rest te zien.', }; export default mobileTrip; diff --git a/shared/src/i18n/pl/mobileTrip.ts b/shared/src/i18n/pl/mobileTrip.ts index f6783280d..102d9beff 100644 --- a/shared/src/i18n/pl/mobileTrip.ts +++ b/shared/src/i18n/pl/mobileTrip.ts @@ -66,7 +66,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Od początku etapu', 'mobileTrip.rtNoneAhead': 'Na drodze przed tobą nic nie ma. Spróbuj całego etapu.', 'mobileTrip.rtNoneOnStage': 'Na tym etapie nie ma nic takiego.', - 'mobileTrip.rtTruncated': - '{count} odcinków miało więcej, niż mieści się w jednej odpowiedzi. Wybierz mniej rodzajów, by zobaczyć resztę.', + 'mobileTrip.rtTruncated.one': + '1 odcinek miał więcej, niż mieści się w jednej odpowiedzi. Wybierz mniej rodzajów, by zobaczyć resztę.', + 'mobileTrip.rtTruncated.other': + 'Odcinki, na których było więcej, niż mieści się w jednej odpowiedzi: {count}. Wybierz mniej rodzajów, by zobaczyć resztę.', }; export default mobileTrip; diff --git a/shared/src/i18n/ru/mobileTrip.ts b/shared/src/i18n/ru/mobileTrip.ts index 1366be4cb..daaf34c45 100644 --- a/shared/src/i18n/ru/mobileTrip.ts +++ b/shared/src/i18n/ru/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'От начала этапа', 'mobileTrip.rtNoneAhead': 'На дороге впереди ничего нет. Попробуйте весь этап.', 'mobileTrip.rtNoneOnStage': 'На этом этапе ничего такого нет.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + 'На 1 участке нашлось больше, чем помещается в один ответ. Выберите меньше видов, чтобы увидеть остальное.', + 'mobileTrip.rtTruncated.other': 'На {count} участках нашлось больше, чем помещается в один ответ. Выберите меньше видов, чтобы увидеть остальное.', }; export default mobileTrip; diff --git a/shared/src/i18n/sv/mobileTrip.ts b/shared/src/i18n/sv/mobileTrip.ts index 8fa10fa1a..d63bbf6aa 100644 --- a/shared/src/i18n/sv/mobileTrip.ts +++ b/shared/src/i18n/sv/mobileTrip.ts @@ -65,7 +65,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Från etappens början', 'mobileTrip.rtNoneAhead': 'Inget på vägen framför dig. Prova hela etappen.', 'mobileTrip.rtNoneOnStage': 'Inget sådant längs den här etappen.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 sträcka hade mer än vad som får plats i ett svar. Välj färre sorter för att se resten.', + 'mobileTrip.rtTruncated.other': '{count} sträckor hade mer än vad som får plats i ett svar. Välj färre sorter för att se resten.', }; export default mobileTrip; diff --git a/shared/src/i18n/tr/mobileTrip.ts b/shared/src/i18n/tr/mobileTrip.ts index 43bae9e76..bb665e565 100644 --- a/shared/src/i18n/tr/mobileTrip.ts +++ b/shared/src/i18n/tr/mobileTrip.ts @@ -65,7 +65,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Etabın başından itibaren', 'mobileTrip.rtNoneAhead': 'İleride yol üzerinde bir şey yok. Tüm etabı deneyin.', 'mobileTrip.rtNoneOnStage': 'Bu etap boyunca bu türden bir şey yok.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 kesimde tek bir yanıta sığandan fazlası vardı. Geri kalanı görmek için daha az tür seçin.', + 'mobileTrip.rtTruncated.other': '{count} kesimde tek bir yanıta sığandan fazlası vardı. Geri kalanı görmek için daha az tür seçin.', }; export default mobileTrip; diff --git a/shared/src/i18n/uk/mobileTrip.ts b/shared/src/i18n/uk/mobileTrip.ts index 4dfff785a..85f95d6d8 100644 --- a/shared/src/i18n/uk/mobileTrip.ts +++ b/shared/src/i18n/uk/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Від початку етапу', 'mobileTrip.rtNoneAhead': 'На дорозі попереду нічого немає. Спробуйте весь етап.', 'mobileTrip.rtNoneOnStage': 'На цьому етапі нічого такого немає.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + 'На 1 ділянці знайшлося більше, ніж уміщується в одну відповідь. Виберіть менше видів, щоб побачити решту.', + 'mobileTrip.rtTruncated.other': 'На {count} ділянках знайшлося більше, ніж уміщується в одну відповідь. Виберіть менше видів, щоб побачити решту.', }; export default mobileTrip; diff --git a/shared/src/i18n/vi/mobileTrip.ts b/shared/src/i18n/vi/mobileTrip.ts index f1ceccd01..16631f15a 100644 --- a/shared/src/i18n/vi/mobileTrip.ts +++ b/shared/src/i18n/vi/mobileTrip.ts @@ -67,7 +67,9 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': 'Từ đầu chặng', 'mobileTrip.rtNoneAhead': 'Không có gì trên đường phía trước. Thử cả chặng xem sao.', 'mobileTrip.rtNoneOnStage': 'Không có gì thuộc loại đó dọc chặng này.', - 'mobileTrip.rtTruncated': + 'mobileTrip.rtTruncated.one': + '1 đoạn có nhiều hơn mức vừa trong một câu trả lời. Chọn ít loại hơn để xem phần còn lại.', + 'mobileTrip.rtTruncated.other': '{count} đoạn có nhiều hơn mức vừa trong một câu trả lời. Chọn ít loại hơn để xem phần còn lại.', }; export default mobileTrip; diff --git a/shared/src/i18n/zh-TW/mobileTrip.ts b/shared/src/i18n/zh-TW/mobileTrip.ts index 30fb42516..07b1c193e 100644 --- a/shared/src/i18n/zh-TW/mobileTrip.ts +++ b/shared/src/i18n/zh-TW/mobileTrip.ts @@ -63,6 +63,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': '從本段起點起', 'mobileTrip.rtNoneAhead': '前方路上沒有找到。試試整段。', 'mobileTrip.rtNoneOnStage': '本段沿途沒有這類地點。', - 'mobileTrip.rtTruncated': '{count} 段路的結果超出一次回答能容納的量。少選幾類就能看到其餘的。', + 'mobileTrip.rtTruncated.one': '1 段路的結果超出一次回答能容納的量。少選幾類就能看到其餘的。', + 'mobileTrip.rtTruncated.other': '{count} 段路的結果超出一次回答能容納的量。少選幾類就能看到其餘的。', }; export default mobileTrip; diff --git a/shared/src/i18n/zh/mobileTrip.ts b/shared/src/i18n/zh/mobileTrip.ts index 38425cb3c..6a2f3b0ad 100644 --- a/shared/src/i18n/zh/mobileTrip.ts +++ b/shared/src/i18n/zh/mobileTrip.ts @@ -63,6 +63,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.rtFromStart': '从本段起点起', 'mobileTrip.rtNoneAhead': '前方路上没有找到。试试整段。', 'mobileTrip.rtNoneOnStage': '本段沿途没有这类地点。', - 'mobileTrip.rtTruncated': '{count} 段路的结果超出一次回答能装下的量。少选几类就能看到其余的。', + 'mobileTrip.rtTruncated.one': '1 段路的结果超出一次回答能装下的量。少选几类就能看到其余的。', + 'mobileTrip.rtTruncated.other': '{count} 段路的结果超出一次回答能装下的量。少选几类就能看到其余的。', }; export default mobileTrip;