From 65fe8cd6e58e8c0aa9399c45a2e367d62f0a6f09 Mon Sep 17 00:00:00 2001 From: Maurice Date: Tue, 20 Oct 2026 13:22:44 +0200 Subject: [PATCH] fix(tours): explain a kept tour without a line, and say the take-over once Taking a tour kept in a collection into a trip left the user guessing in two places when the tour had no line. The map box stayed an empty grey square that read as a broken map; it now says that there is no line yet, only the waypoints. Why "Line only" is dimmed was only in the tooltip of a disabled button, which never shows on hover, focus or touch; the reason now stands under the two choices, and a disabled tile sits in a span so its tooltip can show as well. A successful take-over said the same sentence twice, as a toast and as the dialog's last word with "Open trip". The toast is gone. The collection strings move out of tours.ts into a tourCollection.ts per locale, keeping their keys, so no locale's tours file grows past the 1000-line limit. The tours locale spec now holds both files to their own counts. --- .../CollectionTourTakeOverDialog.tsx | 97 ++++++----- .../Tours/collection/collectionTours.test.tsx | 31 +++- .../collection/useCollectionTourTakeOver.ts | 2 +- .../Tours/library/tourPreviewParts.tsx | 20 ++- shared/src/i18n/ar/index.ts | 2 + shared/src/i18n/ar/tourCollection.ts | 56 +++++++ shared/src/i18n/ar/tours.ts | 50 ------ shared/src/i18n/az/index.ts | 2 + shared/src/i18n/az/tourCollection.ts | 48 ++++++ shared/src/i18n/az/tours.ts | 42 ----- shared/src/i18n/br/index.ts | 2 + shared/src/i18n/br/tourCollection.ts | 48 ++++++ shared/src/i18n/br/tours.ts | 42 ----- shared/src/i18n/ca/index.ts | 2 + shared/src/i18n/ca/tourCollection.ts | 48 ++++++ shared/src/i18n/ca/tours.ts | 42 ----- shared/src/i18n/cs/index.ts | 2 + shared/src/i18n/cs/tourCollection.ts | 50 ++++++ shared/src/i18n/cs/tours.ts | 44 ----- shared/src/i18n/de/index.ts | 2 + shared/src/i18n/de/tourCollection.ts | 49 ++++++ shared/src/i18n/de/tours.ts | 43 ----- shared/src/i18n/en/index.ts | 2 + shared/src/i18n/en/tourCollection.ts | 49 ++++++ shared/src/i18n/en/tours.ts | 43 ----- shared/src/i18n/es/index.ts | 2 + shared/src/i18n/es/tourCollection.ts | 49 ++++++ shared/src/i18n/es/tours.ts | 43 ----- shared/src/i18n/et/index.ts | 2 + shared/src/i18n/et/tourCollection.ts | 48 ++++++ shared/src/i18n/et/tours.ts | 42 ----- shared/src/i18n/fr/index.ts | 2 + shared/src/i18n/fr/tourCollection.ts | 50 ++++++ shared/src/i18n/fr/tours.ts | 44 ----- shared/src/i18n/gr/index.ts | 2 + shared/src/i18n/gr/tourCollection.ts | 49 ++++++ shared/src/i18n/gr/tours.ts | 43 ----- shared/src/i18n/hu/index.ts | 2 + shared/src/i18n/hu/tourCollection.ts | 48 ++++++ shared/src/i18n/hu/tours.ts | 42 ----- shared/src/i18n/id/index.ts | 2 + shared/src/i18n/id/tourCollection.ts | 47 ++++++ shared/src/i18n/id/tours.ts | 41 ----- shared/src/i18n/it/index.ts | 2 + shared/src/i18n/it/tourCollection.ts | 49 ++++++ shared/src/i18n/it/tours.ts | 43 ----- shared/src/i18n/ja/index.ts | 2 + shared/src/i18n/ja/tourCollection.ts | 46 ++++++ shared/src/i18n/ja/tours.ts | 40 ----- shared/src/i18n/ko/index.ts | 2 + shared/src/i18n/ko/tourCollection.ts | 46 ++++++ shared/src/i18n/ko/tours.ts | 40 ----- shared/src/i18n/nl/index.ts | 2 + shared/src/i18n/nl/tourCollection.ts | 49 ++++++ shared/src/i18n/nl/tours.ts | 43 ----- shared/src/i18n/pl/index.ts | 2 + shared/src/i18n/pl/tourCollection.ts | 52 ++++++ shared/src/i18n/pl/tours.ts | 46 ------ shared/src/i18n/ru/index.ts | 2 + shared/src/i18n/ru/tourCollection.ts | 52 ++++++ shared/src/i18n/ru/tours.ts | 46 ------ shared/src/i18n/sk/index.ts | 2 + shared/src/i18n/sk/tourCollection.ts | 50 ++++++ shared/src/i18n/sk/tours.ts | 44 ----- shared/src/i18n/sv/index.ts | 2 + shared/src/i18n/sv/tourCollection.ts | 48 ++++++ shared/src/i18n/sv/tours.ts | 42 ----- shared/src/i18n/th/index.ts | 2 + shared/src/i18n/th/tourCollection.ts | 46 ++++++ shared/src/i18n/th/tours.ts | 40 ----- shared/src/i18n/tours-locales.spec.ts | 150 +++++++++++------- shared/src/i18n/tr/index.ts | 2 + shared/src/i18n/tr/tourCollection.ts | 49 ++++++ shared/src/i18n/tr/tours.ts | 43 ----- shared/src/i18n/uk/index.ts | 2 + shared/src/i18n/uk/tourCollection.ts | 52 ++++++ shared/src/i18n/uk/tours.ts | 46 ------ shared/src/i18n/vi/index.ts | 2 + shared/src/i18n/vi/tourCollection.ts | 47 ++++++ shared/src/i18n/vi/tours.ts | 41 ----- shared/src/i18n/zh-TW/index.ts | 2 + shared/src/i18n/zh-TW/tourCollection.ts | 46 ++++++ shared/src/i18n/zh-TW/tours.ts | 40 ----- shared/src/i18n/zh/index.ts | 2 + shared/src/i18n/zh/tourCollection.ts | 46 ++++++ shared/src/i18n/zh/tours.ts | 40 ----- 86 files changed, 1565 insertions(+), 1261 deletions(-) create mode 100644 shared/src/i18n/ar/tourCollection.ts create mode 100644 shared/src/i18n/az/tourCollection.ts create mode 100644 shared/src/i18n/br/tourCollection.ts create mode 100644 shared/src/i18n/ca/tourCollection.ts create mode 100644 shared/src/i18n/cs/tourCollection.ts create mode 100644 shared/src/i18n/de/tourCollection.ts create mode 100644 shared/src/i18n/en/tourCollection.ts create mode 100644 shared/src/i18n/es/tourCollection.ts create mode 100644 shared/src/i18n/et/tourCollection.ts create mode 100644 shared/src/i18n/fr/tourCollection.ts create mode 100644 shared/src/i18n/gr/tourCollection.ts create mode 100644 shared/src/i18n/hu/tourCollection.ts create mode 100644 shared/src/i18n/id/tourCollection.ts create mode 100644 shared/src/i18n/it/tourCollection.ts create mode 100644 shared/src/i18n/ja/tourCollection.ts create mode 100644 shared/src/i18n/ko/tourCollection.ts create mode 100644 shared/src/i18n/nl/tourCollection.ts create mode 100644 shared/src/i18n/pl/tourCollection.ts create mode 100644 shared/src/i18n/ru/tourCollection.ts create mode 100644 shared/src/i18n/sk/tourCollection.ts create mode 100644 shared/src/i18n/sv/tourCollection.ts create mode 100644 shared/src/i18n/th/tourCollection.ts create mode 100644 shared/src/i18n/tr/tourCollection.ts create mode 100644 shared/src/i18n/uk/tourCollection.ts create mode 100644 shared/src/i18n/vi/tourCollection.ts create mode 100644 shared/src/i18n/zh-TW/tourCollection.ts create mode 100644 shared/src/i18n/zh/tourCollection.ts diff --git a/client/src/components/Tours/collection/CollectionTourTakeOverDialog.tsx b/client/src/components/Tours/collection/CollectionTourTakeOverDialog.tsx index d71677a31..06ed336d4 100644 --- a/client/src/components/Tours/collection/CollectionTourTakeOverDialog.tsx +++ b/client/src/components/Tours/collection/CollectionTourTakeOverDialog.tsx @@ -6,6 +6,7 @@ import { CircleCheck, CopyPlus, Flag, + Info, Loader2, Play, Spline, @@ -153,7 +154,11 @@ function TripChoices({ takeOver }: { takeOver: CollectionTourTakeOver }) { ); } -/** One answer to whether the waypoints come along: an icon, a title, a short tooltip, raised once chosen. */ +/** + * One answer to whether the waypoints come along: an icon, a title, a short + * tooltip, raised once chosen. A disabled button fires no hover or focus, so + * one that cannot be chosen sits in a span that carries its tooltip. + */ function PointsTile({ value, selected, @@ -171,56 +176,63 @@ function PointsTile({ hint: string; onChoose: (value: PointsChoice) => void; }) { - return ( - - - + {icon} + + + {title} + + ); + return {disabled ? {tile} : tile}; } -/** The explicit choice about the waypoints; leaving them out is only there for a tour with a line. */ +/** + * The explicit choice about the waypoints; leaving them out is only there for + * a tour with a line, and a tour without one says so under the choice rather + * than only in a tooltip. + */ function PointsChoices({ takeOver }: { takeOver: CollectionTourTakeOver }) { const { t } = useTranslation(); const { tour } = takeOver; if (!tour) return null; - const lineOnlyHint = tour.has_line ? t('tours.collection.lineOnlyHint') : t('tours.collection.needsPoints'); return ( -
- } - title={t('tours.collection.withPoints', { count: tour.waypoint_count })} - hint={t('tours.collection.withPointsHint')} - onChoose={takeOver.choosePoints} - /> - } - title={t('tours.collection.lineOnly')} - hint={lineOnlyHint} - onChoose={takeOver.choosePoints} - /> +
+
+ } + title={t('tours.collection.withPoints', { count: tour.waypoint_count })} + hint={t('tours.collection.withPointsHint')} + onChoose={takeOver.choosePoints} + /> + } + title={t('tours.collection.lineOnly')} + hint={t('tours.collection.lineOnlyHint')} + onChoose={takeOver.choosePoints} + /> +
+ {!tour.has_line && ( + }>{t('tours.collection.needsPoints')} + )}
); } @@ -238,6 +250,7 @@ function KeptTourPreview({ takeOver }: { takeOver: CollectionTourTakeOver }) { focusKey={String(tour.id)} status={takeOver.detailStatus} failedText={t('tours.library.previewFailed')} + emptyText={t('tours.collection.noLine')} /> ({ MapViewAuto: ({ route }: { route: Array> }) => ( @@ -241,7 +241,8 @@ describe('useCollectionTourTakeOver', () => { name: 'Ridge', }); expect(result.current.flow.done).toEqual({ tripId: 6, tripTitle: 'Coast', tourName: 'Ridge' }); - expect(toast.success).toHaveBeenCalledWith('“Ridge” is now a tour of “Coast”.'); + // The dialog's last word says it; a toast would only repeat it. + expect(toast.success).not.toHaveBeenCalled(); act(() => result.current.flow.openTrip()); expect(result.current.location.pathname).toBe('/trips/6'); expect(result.current.flow.open).toBe(false); @@ -279,11 +280,11 @@ describe('useCollectionTourTakeOver', () => { }); describe('CollectionTourTakeOverDialog', () => { - function Harness() { + function Harness({ tour = kept() }: { tour?: CollectionTourItem }) { const flow = useCollectionTourTakeOver(3); return ( <> - @@ -322,6 +323,28 @@ describe('CollectionTourTakeOverDialog', () => { rerender(); expect(screen.getByTestId('kept-points')).toHaveClass('opacity-40'); }); + + it('FE-COLLECTION-TOURS-014: a tour kept without a line says so in the map box and under the choice', async () => { + vi.mocked(collectionToursRepo.detail).mockResolvedValue({ + ...DETAIL, + tour: kept({ has_line: false }), + line: [], + }); + render(); + fireEvent.click(screen.getByText('open')); + const preview = screen.getByTestId('kept-tour-preview'); + expect(await within(preview).findByTestId('tour-preview-no-line')).toHaveTextContent( + 'No line yet, only its waypoints' + ); + expect(within(preview).queryByTestId('kept-map')).toBeNull(); + expect(screen.getByText('This tour has no line yet, so its waypoints have to come along.')).toBeInTheDocument(); + const lineOnly = screen.getByTestId('kept-tour-points-without'); + expect(lineOnly).toBeDisabled(); + // A disabled tile sits in a span, so its tooltip still has something to hover. + expect(lineOnly.parentElement?.tagName).toBe('SPAN'); + expect(screen.getByTestId('kept-tour-points-with')).toHaveAttribute('aria-checked', 'true'); + expect(screen.getByTestId('kept-tour-points-with').parentElement?.tagName).not.toBe('SPAN'); + }); }); describe('CollectionToursSection', () => { diff --git a/client/src/components/Tours/collection/useCollectionTourTakeOver.ts b/client/src/components/Tours/collection/useCollectionTourTakeOver.ts index 34a575eec..30497fc5e 100644 --- a/client/src/components/Tours/collection/useCollectionTourTakeOver.ts +++ b/client/src/components/Tours/collection/useCollectionTourTakeOver.ts @@ -100,8 +100,8 @@ export function useCollectionTourTakeOver(collectionId: number) { include_waypoints: points === 'with', name: chosenName, }); + // The dialog's last word says where the tour is now, so no toast repeats it. setDone({ tripId: trip.id, tripTitle: trip.title, tourName: result.tour.name }); - toast.success(t('tours.collection.taken', { name: result.tour.name, trip: trip.title })); } catch (err: unknown) { toast.error(t(failure(err) === 'offline' ? 'tours.collection.offline' : 'tours.collection.takeFailed')); } finally { diff --git a/client/src/components/Tours/library/tourPreviewParts.tsx b/client/src/components/Tours/library/tourPreviewParts.tsx index 313a7b368..fae960918 100644 --- a/client/src/components/Tours/library/tourPreviewParts.tsx +++ b/client/src/components/Tours/library/tourPreviewParts.tsx @@ -1,5 +1,5 @@ import type { TourLibraryItem } from '@trek/shared'; -import { ArrowUp, Clock, Loader2, Ruler } from 'lucide-react'; +import { ArrowUp, Clock, Loader2, Ruler, Spline } from 'lucide-react'; import { useMemo } from 'react'; import { OFM_POSITRON } from '../../../constants/mapDefaults'; import { useTileUrl } from '../../../hooks/useTileUrl'; @@ -113,19 +113,23 @@ type PreviewStatus = 'loading' | 'ready' | 'error' | 'offline' | null; /** * A tour's line on a small map, the way a preview shows it before anything is * taken over: drawn once its points are in, a spinner while they load, a short - * line of text when they cannot be read. + * line of text when they cannot be read, and, where the caller names it, what + * a tour without a line has instead, so an empty box never reads as a broken map. */ export function TourLinePreview({ line, focusKey, status, failedText, + emptyText, }: { line: ReadonlyArray | undefined; focusKey: string; status: PreviewStatus; /** What a preview that could not be read says; offline says that it is offline. */ failedText: string; + /** What a tour read in full but without a line says in the box; without it the box stays empty. */ + emptyText?: string; }) { const { t } = useTranslation(); const tileUrl = useTileUrl(OFM_POSITRON); @@ -160,6 +164,18 @@ export function TourLinePreview({ {status === 'offline' ? t('tours.library.offline') : failedText} )} + {status === 'ready' && route.length === 0 && emptyText && ( + + + + + {emptyText} + + )}
); } diff --git a/shared/src/i18n/ar/index.ts b/shared/src/i18n/ar/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/ar/index.ts +++ b/shared/src/i18n/ar/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/ar/tourCollection.ts b/shared/src/i18n/ar/tourCollection.ts new file mode 100644 index 000000000..7ee042c3a --- /dev/null +++ b/shared/src/i18n/ar/tourCollection.ts @@ -0,0 +1,56 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'الاحتفاظ في مجموعة', + 'tours.collection.saveHint': 'يحتفظ بنسخة مستقلة من هذه الجولة في إحدى مجموعاتك', + 'tours.collection.saveFirst': 'احفظ الجولة أولًا لتحتفظ بها في مجموعة', + 'tours.collection.saveSub': 'نسخة مستقلة. التغييرات اللاحقة على هذه الجولة لا تصل إليها.', + 'tours.collection.list': 'المجموعة', + 'tours.collection.readOnly': 'يمكنك قراءة هذه القائمة فقط', + 'tours.collection.noLists': 'ليست لديك أي مجموعة بعد.', + 'tours.collection.openCollections': 'فتح المجموعات', + 'tours.collection.nameThere': 'الاسم في المجموعة', + 'tours.collection.keep': 'احتفظ', + 'tours.collection.kept': 'أصبحت «{name}» محفوظة في «{list}».', + 'tours.collection.keepFailed': 'تعذّر الاحتفاظ بالجولة.', + 'tours.collection.offline': 'تحتاج المجموعات إلى اتصال.', + 'tours.collection.listsFailed': 'تعذّر تحميل المجموعات.', + 'tours.collection.toursFailed': 'تعذّر تحميل جولات هذه القائمة.', + 'tours.collection.points': 'نقاط الطريق: {count}', + 'tours.collection.points.zero': 'نقاط الطريق: {count}', + 'tours.collection.points.one': 'نقطة طريق واحدة', + 'tours.collection.points.two': 'نقطتا طريق', + 'tours.collection.points.few': '{count} نقاط طريق', + 'tours.collection.points.many': '{count} نقطة طريق', + 'tours.collection.savedFrom': 'محفوظة من', + 'tours.collection.source': 'محفوظة من «{tour}» في «{trip}»', + 'tours.collection.keptBy': 'احتفظ بها {name}', + 'tours.collection.add': 'إضافة إلى رحلة', + 'tours.collection.addHint': 'ينشئ جولة جديدة مستقلة في الرحلة التي تختارها', + 'tours.collection.remove': 'إزالة من المجموعة', + 'tours.collection.removeTitle': 'هل تريد إزالة هذه الجولة من المجموعة؟', + 'tours.collection.removeBody': 'الجولات التي أُنشئت منها في رحلاتك تبقى كما هي.', + 'tours.collection.removed': 'أُزيلت الجولة من المجموعة.', + 'tours.collection.removeFailed': 'تعذّرت إزالة الجولة.', + 'tours.collection.takeEyebrow': 'من المجموعة', + 'tours.collection.takeSub': 'تصبح جولة مستقلة في الرحلة التي تختارها، بلا أيام. وتبقى المجموعة كما هي.', + 'tours.collection.intoTrip': 'إلى الرحلة', + 'tours.collection.noPermission': 'لا يمكنك إضافة جولات إلى هذه الرحلة', + 'tours.collection.noTrips': 'ليست لديك رحلة تضيفها إليها بعد.', + 'tours.collection.withPoints': 'مع نقاط الطريق: {count}', + 'tours.collection.withPoints.zero': 'مع نقاط الطريق: {count}', + 'tours.collection.withPoints.one': 'مع نقطة طريق واحدة', + 'tours.collection.withPoints.two': 'مع نقطتي طريق', + 'tours.collection.withPoints.few': 'مع {count} نقاط طريق', + 'tours.collection.withPoints.many': 'مع {count} نقطة طريق', + 'tours.collection.withPointsHint': 'البداية والتوقفات والنهاية تأتي بترتيبها.', + 'tours.collection.lineOnly': 'الخط فقط', + 'tours.collection.lineOnlyHint': 'يبقى الخط كما حُفظ. لا تُضاف نقاط طريق.', + 'tours.collection.needsPoints': 'ليس لهذه الجولة خط بعد، لذا يجب أن تأتي نقاط طريقها معها.', + 'tours.collection.noLine': 'لا يوجد خط بعد، فقط نقاط الطريق', + 'tours.collection.nameInTrip': 'الاسم في الرحلة', + 'tours.collection.taken': 'أصبحت «{name}» جولة في «{trip}».', + 'tours.collection.takeFailed': 'تعذّرت إضافة الجولة إلى الرحلة.', + 'tours.collection.openTrip': 'فتح الرحلة', +}; +export default tourCollection; diff --git a/shared/src/i18n/ar/tours.ts b/shared/src/i18n/ar/tours.ts index 76c2ae968..7539b962c 100644 --- a/shared/src/i18n/ar/tours.ts +++ b/shared/src/i18n/ar/tours.ts @@ -1368,55 +1368,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'الجولة كاملة', 'tours.stages.totalPartial': 'معروف لـ {known} من {of} مراحل', 'tours.stages.openInPlanner': 'فتح هذه المرحلة في المخطط', - 'tours.collection.save': 'الاحتفاظ في مجموعة', - 'tours.collection.saveHint': 'يحتفظ بنسخة مستقلة من هذه الجولة في إحدى مجموعاتك', - 'tours.collection.saveFirst': 'احفظ الجولة أولًا لتحتفظ بها في مجموعة', - 'tours.collection.saveSub': 'نسخة مستقلة. التغييرات اللاحقة على هذه الجولة لا تصل إليها.', - 'tours.collection.list': 'المجموعة', - 'tours.collection.readOnly': 'يمكنك قراءة هذه القائمة فقط', - 'tours.collection.noLists': 'ليست لديك أي مجموعة بعد.', - 'tours.collection.openCollections': 'فتح المجموعات', - 'tours.collection.nameThere': 'الاسم في المجموعة', - 'tours.collection.keep': 'احتفظ', - 'tours.collection.kept': 'أصبحت «{name}» محفوظة في «{list}».', - 'tours.collection.keepFailed': 'تعذّر الاحتفاظ بالجولة.', - 'tours.collection.offline': 'تحتاج المجموعات إلى اتصال.', - 'tours.collection.listsFailed': 'تعذّر تحميل المجموعات.', - 'tours.collection.toursFailed': 'تعذّر تحميل جولات هذه القائمة.', - 'tours.collection.points': 'نقاط الطريق: {count}', - 'tours.collection.points.zero': 'نقاط الطريق: {count}', - 'tours.collection.points.one': 'نقطة طريق واحدة', - 'tours.collection.points.two': 'نقطتا طريق', - 'tours.collection.points.few': '{count} نقاط طريق', - 'tours.collection.points.many': '{count} نقطة طريق', - 'tours.collection.savedFrom': 'محفوظة من', - 'tours.collection.source': 'محفوظة من «{tour}» في «{trip}»', - 'tours.collection.keptBy': 'احتفظ بها {name}', - 'tours.collection.add': 'إضافة إلى رحلة', - 'tours.collection.addHint': 'ينشئ جولة جديدة مستقلة في الرحلة التي تختارها', - 'tours.collection.remove': 'إزالة من المجموعة', - 'tours.collection.removeTitle': 'هل تريد إزالة هذه الجولة من المجموعة؟', - 'tours.collection.removeBody': 'الجولات التي أُنشئت منها في رحلاتك تبقى كما هي.', - 'tours.collection.removed': 'أُزيلت الجولة من المجموعة.', - 'tours.collection.removeFailed': 'تعذّرت إزالة الجولة.', - 'tours.collection.takeEyebrow': 'من المجموعة', - 'tours.collection.takeSub': 'تصبح جولة مستقلة في الرحلة التي تختارها، بلا أيام. وتبقى المجموعة كما هي.', - 'tours.collection.intoTrip': 'إلى الرحلة', - 'tours.collection.noPermission': 'لا يمكنك إضافة جولات إلى هذه الرحلة', - 'tours.collection.noTrips': 'ليست لديك رحلة تضيفها إليها بعد.', - 'tours.collection.withPoints': 'مع نقاط الطريق: {count}', - 'tours.collection.withPoints.zero': 'مع نقاط الطريق: {count}', - 'tours.collection.withPoints.one': 'مع نقطة طريق واحدة', - 'tours.collection.withPoints.two': 'مع نقطتي طريق', - 'tours.collection.withPoints.few': 'مع {count} نقاط طريق', - 'tours.collection.withPoints.many': 'مع {count} نقطة طريق', - 'tours.collection.withPointsHint': 'البداية والتوقفات والنهاية تأتي بترتيبها.', - 'tours.collection.lineOnly': 'الخط فقط', - 'tours.collection.lineOnlyHint': 'يبقى الخط كما حُفظ. لا تُضاف نقاط طريق.', - 'tours.collection.needsPoints': 'ليس لهذه الجولة خط بعد، لذا يجب أن تأتي نقاط طريقها معها.', - 'tours.collection.nameInTrip': 'الاسم في الرحلة', - 'tours.collection.taken': 'أصبحت «{name}» جولة في «{trip}».', - 'tours.collection.takeFailed': 'تعذّرت إضافة الجولة إلى الرحلة.', - 'tours.collection.openTrip': 'فتح الرحلة', }; export default tours; diff --git a/shared/src/i18n/az/index.ts b/shared/src/i18n/az/index.ts index ec191b6db..5e1aef73b 100644 --- a/shared/src/i18n/az/index.ts +++ b/shared/src/i18n/az/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -71,6 +72,7 @@ const locale = { ...atlas, ...trip, ...tours, + ...tourCollection, ...wanderer, ...places, ...inspector, diff --git a/shared/src/i18n/az/tourCollection.ts b/shared/src/i18n/az/tourCollection.ts new file mode 100644 index 000000000..55a01fc01 --- /dev/null +++ b/shared/src/i18n/az/tourCollection.ts @@ -0,0 +1,48 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Kolleksiyada saxla', + 'tours.collection.saveHint': 'Bu turun müstəqil surətini kolleksiyalarınızdan birində saxlayır', + 'tours.collection.saveFirst': 'Kolleksiyada saxlamaq üçün əvvəlcə turu yadda saxlayın', + 'tours.collection.saveSub': 'Müstəqil surət. Bu turda sonrakı dəyişikliklər ona çatmır.', + 'tours.collection.list': 'Kolleksiya', + 'tours.collection.readOnly': 'Bu siyahını yalnız oxuya bilərsiniz', + 'tours.collection.noLists': 'Hələ heç bir kolleksiyanız yoxdur.', + 'tours.collection.openCollections': 'Kolleksiyaları aç', + 'tours.collection.nameThere': 'Kolleksiyadakı ad', + 'tours.collection.keep': 'Saxla', + 'tours.collection.kept': '“{name}” indi “{list}” kolleksiyasındadır.', + 'tours.collection.keepFailed': 'Tur saxlanıla bilmədi.', + 'tours.collection.offline': 'Kolleksiyalar üçün bağlantı lazımdır.', + 'tours.collection.listsFailed': 'Kolleksiyalar yüklənə bilmədi.', + 'tours.collection.toursFailed': 'Bu siyahının turları yüklənə bilmədi.', + 'tours.collection.points': '{count} yol nöqtəsi', + 'tours.collection.points.one': '{count} yol nöqtəsi', + 'tours.collection.savedFrom': 'Haradan saxlanılıb', + 'tours.collection.source': '“{trip}” səfərindəki “{tour}” turundan saxlanılıb', + 'tours.collection.keptBy': 'Saxlayan: {name}', + 'tours.collection.add': 'Səfərə əlavə et', + 'tours.collection.addHint': 'Seçdiyiniz səfərdə öz yeni turunu yaradır', + 'tours.collection.remove': 'Kolleksiyadan çıxar', + 'tours.collection.removeTitle': 'Bu tur kolleksiyadan çıxarılsın?', + 'tours.collection.removeBody': 'Səfərlərinizdə ondan artıq yaradılmış turlar olduğu kimi qalır.', + 'tours.collection.removed': 'Tur kolleksiyadan çıxarıldı.', + 'tours.collection.removeFailed': 'Tur çıxarıla bilmədi.', + 'tours.collection.takeEyebrow': 'Kolleksiyadan', + 'tours.collection.takeSub': 'Seçdiyiniz səfərdə günlərsiz öz turu olur. Kolleksiya olduğu kimi qalır.', + 'tours.collection.intoTrip': 'Səfərə', + 'tours.collection.noPermission': 'Bu səfərə tur əlavə edə bilməzsiniz', + 'tours.collection.noTrips': 'Hələ onu əlavə etmək üçün səfəriniz yoxdur.', + 'tours.collection.withPoints': '{count} yol nöqtəsi ilə', + 'tours.collection.withPoints.one': '{count} yol nöqtəsi ilə', + 'tours.collection.withPointsHint': 'Başlanğıc, dayanacaqlar və son öz sırası ilə gəlir.', + 'tours.collection.lineOnly': 'Yalnız xətt', + 'tours.collection.lineOnlyHint': 'Xətt saxlanıldığı kimi qalır. Yol nöqtəsi əlavə olunmur.', + 'tours.collection.needsPoints': 'Bu turun hələ xətti yoxdur, ona görə yol nöqtələri də gəlməlidir.', + 'tours.collection.noLine': 'Hələ xətt yoxdur, yalnız yol nöqtələri', + 'tours.collection.nameInTrip': 'Səfərdəki ad', + 'tours.collection.taken': '“{name}” indi “{trip}” səfərinin turudur.', + 'tours.collection.takeFailed': 'Tur səfərə əlavə edilə bilmədi.', + 'tours.collection.openTrip': 'Səfəri aç', +}; +export default tourCollection; diff --git a/shared/src/i18n/az/tours.ts b/shared/src/i18n/az/tours.ts index 395080011..b6b170cf3 100644 --- a/shared/src/i18n/az/tours.ts +++ b/shared/src/i18n/az/tours.ts @@ -1308,47 +1308,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Bütün tur', 'tours.stages.totalPartial': '{of} mərhələdən {known} üçün məlumdur', 'tours.stages.openInPlanner': 'Bu mərhələni planlayıcıda aç', - 'tours.collection.save': 'Kolleksiyada saxla', - 'tours.collection.saveHint': 'Bu turun müstəqil surətini kolleksiyalarınızdan birində saxlayır', - 'tours.collection.saveFirst': 'Kolleksiyada saxlamaq üçün əvvəlcə turu yadda saxlayın', - 'tours.collection.saveSub': 'Müstəqil surət. Bu turda sonrakı dəyişikliklər ona çatmır.', - 'tours.collection.list': 'Kolleksiya', - 'tours.collection.readOnly': 'Bu siyahını yalnız oxuya bilərsiniz', - 'tours.collection.noLists': 'Hələ heç bir kolleksiyanız yoxdur.', - 'tours.collection.openCollections': 'Kolleksiyaları aç', - 'tours.collection.nameThere': 'Kolleksiyadakı ad', - 'tours.collection.keep': 'Saxla', - 'tours.collection.kept': '“{name}” indi “{list}” kolleksiyasındadır.', - 'tours.collection.keepFailed': 'Tur saxlanıla bilmədi.', - 'tours.collection.offline': 'Kolleksiyalar üçün bağlantı lazımdır.', - 'tours.collection.listsFailed': 'Kolleksiyalar yüklənə bilmədi.', - 'tours.collection.toursFailed': 'Bu siyahının turları yüklənə bilmədi.', - 'tours.collection.points': '{count} yol nöqtəsi', - 'tours.collection.points.one': '{count} yol nöqtəsi', - 'tours.collection.savedFrom': 'Haradan saxlanılıb', - 'tours.collection.source': '“{trip}” səfərindəki “{tour}” turundan saxlanılıb', - 'tours.collection.keptBy': 'Saxlayan: {name}', - 'tours.collection.add': 'Səfərə əlavə et', - 'tours.collection.addHint': 'Seçdiyiniz səfərdə öz yeni turunu yaradır', - 'tours.collection.remove': 'Kolleksiyadan çıxar', - 'tours.collection.removeTitle': 'Bu tur kolleksiyadan çıxarılsın?', - 'tours.collection.removeBody': 'Səfərlərinizdə ondan artıq yaradılmış turlar olduğu kimi qalır.', - 'tours.collection.removed': 'Tur kolleksiyadan çıxarıldı.', - 'tours.collection.removeFailed': 'Tur çıxarıla bilmədi.', - 'tours.collection.takeEyebrow': 'Kolleksiyadan', - 'tours.collection.takeSub': 'Seçdiyiniz səfərdə günlərsiz öz turu olur. Kolleksiya olduğu kimi qalır.', - 'tours.collection.intoTrip': 'Səfərə', - 'tours.collection.noPermission': 'Bu səfərə tur əlavə edə bilməzsiniz', - 'tours.collection.noTrips': 'Hələ onu əlavə etmək üçün səfəriniz yoxdur.', - 'tours.collection.withPoints': '{count} yol nöqtəsi ilə', - 'tours.collection.withPoints.one': '{count} yol nöqtəsi ilə', - 'tours.collection.withPointsHint': 'Başlanğıc, dayanacaqlar və son öz sırası ilə gəlir.', - 'tours.collection.lineOnly': 'Yalnız xətt', - 'tours.collection.lineOnlyHint': 'Xətt saxlanıldığı kimi qalır. Yol nöqtəsi əlavə olunmur.', - 'tours.collection.needsPoints': 'Bu turun hələ xətti yoxdur, ona görə yol nöqtələri də gəlməlidir.', - 'tours.collection.nameInTrip': 'Səfərdəki ad', - 'tours.collection.taken': '“{name}” indi “{trip}” səfərinin turudur.', - 'tours.collection.takeFailed': 'Tur səfərə əlavə edilə bilmədi.', - 'tours.collection.openTrip': 'Səfəri aç', }; export default tours; diff --git a/shared/src/i18n/br/index.ts b/shared/src/i18n/br/index.ts index abeef31ea..2fe4f2b74 100644 --- a/shared/src/i18n/br/index.ts +++ b/shared/src/i18n/br/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/br/tourCollection.ts b/shared/src/i18n/br/tourCollection.ts new file mode 100644 index 000000000..912149f11 --- /dev/null +++ b/shared/src/i18n/br/tourCollection.ts @@ -0,0 +1,48 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Guardar em uma coleção', + 'tours.collection.saveHint': 'Guarda uma cópia independente deste passeio em uma das suas coleções', + 'tours.collection.saveFirst': 'Salve o passeio primeiro para guardá-lo em uma coleção', + 'tours.collection.saveSub': 'Uma cópia independente. Mudanças posteriores neste passeio não chegam a ela.', + 'tours.collection.list': 'Coleção', + 'tours.collection.readOnly': 'Você só pode ler esta lista', + 'tours.collection.noLists': 'Você ainda não tem nenhuma coleção.', + 'tours.collection.openCollections': 'Abrir coleções', + 'tours.collection.nameThere': 'Nome na coleção', + 'tours.collection.keep': 'Guardar', + 'tours.collection.kept': '“{name}” agora está guardado em “{list}”.', + 'tours.collection.keepFailed': 'Não foi possível guardar o passeio.', + 'tours.collection.offline': 'As coleções precisam de conexão.', + 'tours.collection.listsFailed': 'Não foi possível carregar as coleções.', + 'tours.collection.toursFailed': 'Não foi possível carregar os passeios desta lista.', + 'tours.collection.points': '{count} pontos de rota', + 'tours.collection.points.one': '{count} ponto de rota', + 'tours.collection.savedFrom': 'Guardado de', + 'tours.collection.source': 'Guardado de “{tour}” em “{trip}”', + 'tours.collection.keptBy': 'Guardado por {name}', + 'tours.collection.add': 'Adicionar a uma viagem', + 'tours.collection.addHint': 'Cria um passeio novo e próprio na viagem que você escolher', + 'tours.collection.remove': 'Tirar da coleção', + 'tours.collection.removeTitle': 'Tirar este passeio da coleção?', + 'tours.collection.removeBody': 'Os passeios já criados a partir dele nas suas viagens ficam como estão.', + 'tours.collection.removed': 'O passeio foi tirado da coleção.', + 'tours.collection.removeFailed': 'Não foi possível tirar o passeio.', + 'tours.collection.takeEyebrow': 'Da coleção', + 'tours.collection.takeSub': 'Vira um passeio próprio na viagem escolhida, sem dias. A coleção fica como está.', + 'tours.collection.intoTrip': 'Na viagem', + 'tours.collection.noPermission': 'Você não pode adicionar passeios a esta viagem', + 'tours.collection.noTrips': 'Você ainda não tem nenhuma viagem para adicioná-lo.', + 'tours.collection.withPoints': 'Com {count} pontos de rota', + 'tours.collection.withPoints.one': 'Com {count} ponto de rota', + 'tours.collection.withPointsHint': 'Início, paradas e fim vêm na sua ordem.', + 'tours.collection.lineOnly': 'Só a linha', + 'tours.collection.lineOnlyHint': 'A linha fica como foi salva. Nenhum ponto de rota é adicionado.', + 'tours.collection.needsPoints': 'Este passeio ainda não tem linha, então os pontos de rota precisam vir junto.', + 'tours.collection.noLine': 'Ainda sem linha, só os pontos do caminho', + 'tours.collection.nameInTrip': 'Nome na viagem', + 'tours.collection.taken': '“{name}” agora é um passeio de “{trip}”.', + 'tours.collection.takeFailed': 'Não foi possível adicionar o passeio à viagem.', + 'tours.collection.openTrip': 'Abrir viagem', +}; +export default tourCollection; diff --git a/shared/src/i18n/br/tours.ts b/shared/src/i18n/br/tours.ts index 20f516066..0647cea4a 100644 --- a/shared/src/i18n/br/tours.ts +++ b/shared/src/i18n/br/tours.ts @@ -1321,47 +1321,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Roteiro completo', 'tours.stages.totalPartial': 'conhecido para {known} de {of} etapas', 'tours.stages.openInPlanner': 'Abrir esta etapa no planejador', - 'tours.collection.save': 'Guardar em uma coleção', - 'tours.collection.saveHint': 'Guarda uma cópia independente deste passeio em uma das suas coleções', - 'tours.collection.saveFirst': 'Salve o passeio primeiro para guardá-lo em uma coleção', - 'tours.collection.saveSub': 'Uma cópia independente. Mudanças posteriores neste passeio não chegam a ela.', - 'tours.collection.list': 'Coleção', - 'tours.collection.readOnly': 'Você só pode ler esta lista', - 'tours.collection.noLists': 'Você ainda não tem nenhuma coleção.', - 'tours.collection.openCollections': 'Abrir coleções', - 'tours.collection.nameThere': 'Nome na coleção', - 'tours.collection.keep': 'Guardar', - 'tours.collection.kept': '“{name}” agora está guardado em “{list}”.', - 'tours.collection.keepFailed': 'Não foi possível guardar o passeio.', - 'tours.collection.offline': 'As coleções precisam de conexão.', - 'tours.collection.listsFailed': 'Não foi possível carregar as coleções.', - 'tours.collection.toursFailed': 'Não foi possível carregar os passeios desta lista.', - 'tours.collection.points': '{count} pontos de rota', - 'tours.collection.points.one': '{count} ponto de rota', - 'tours.collection.savedFrom': 'Guardado de', - 'tours.collection.source': 'Guardado de “{tour}” em “{trip}”', - 'tours.collection.keptBy': 'Guardado por {name}', - 'tours.collection.add': 'Adicionar a uma viagem', - 'tours.collection.addHint': 'Cria um passeio novo e próprio na viagem que você escolher', - 'tours.collection.remove': 'Tirar da coleção', - 'tours.collection.removeTitle': 'Tirar este passeio da coleção?', - 'tours.collection.removeBody': 'Os passeios já criados a partir dele nas suas viagens ficam como estão.', - 'tours.collection.removed': 'O passeio foi tirado da coleção.', - 'tours.collection.removeFailed': 'Não foi possível tirar o passeio.', - 'tours.collection.takeEyebrow': 'Da coleção', - 'tours.collection.takeSub': 'Vira um passeio próprio na viagem escolhida, sem dias. A coleção fica como está.', - 'tours.collection.intoTrip': 'Na viagem', - 'tours.collection.noPermission': 'Você não pode adicionar passeios a esta viagem', - 'tours.collection.noTrips': 'Você ainda não tem nenhuma viagem para adicioná-lo.', - 'tours.collection.withPoints': 'Com {count} pontos de rota', - 'tours.collection.withPoints.one': 'Com {count} ponto de rota', - 'tours.collection.withPointsHint': 'Início, paradas e fim vêm na sua ordem.', - 'tours.collection.lineOnly': 'Só a linha', - 'tours.collection.lineOnlyHint': 'A linha fica como foi salva. Nenhum ponto de rota é adicionado.', - 'tours.collection.needsPoints': 'Este passeio ainda não tem linha, então os pontos de rota precisam vir junto.', - 'tours.collection.nameInTrip': 'Nome na viagem', - 'tours.collection.taken': '“{name}” agora é um passeio de “{trip}”.', - 'tours.collection.takeFailed': 'Não foi possível adicionar o passeio à viagem.', - 'tours.collection.openTrip': 'Abrir viagem', }; export default tours; diff --git a/shared/src/i18n/ca/index.ts b/shared/src/i18n/ca/index.ts index 7c9d6b114..69e41ca68 100644 --- a/shared/src/i18n/ca/index.ts +++ b/shared/src/i18n/ca/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/ca/tourCollection.ts b/shared/src/i18n/ca/tourCollection.ts new file mode 100644 index 000000000..7f5db7f01 --- /dev/null +++ b/shared/src/i18n/ca/tourCollection.ts @@ -0,0 +1,48 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Desar en una col·lecció', + 'tours.collection.saveHint': "Desa una còpia independent d'aquesta ruta en una de les teves col·leccions", + 'tours.collection.saveFirst': 'Desa primer la ruta per guardar-la en una col·lecció', + 'tours.collection.saveSub': "Una còpia independent. Els canvis posteriors d'aquesta ruta no hi arriben.", + 'tours.collection.list': 'Col·lecció', + 'tours.collection.readOnly': 'Només pots llegir aquesta llista', + 'tours.collection.noLists': 'Encara no tens cap col·lecció.', + 'tours.collection.openCollections': 'Obre les col·leccions', + 'tours.collection.nameThere': 'Nom a la col·lecció', + 'tours.collection.keep': 'Desa', + 'tours.collection.kept': '«{name}» ara és a «{list}».', + 'tours.collection.keepFailed': "No s'ha pogut desar la ruta.", + 'tours.collection.offline': 'Les col·leccions necessiten connexió.', + 'tours.collection.listsFailed': "No s'han pogut carregar les col·leccions.", + 'tours.collection.toursFailed': "No s'han pogut carregar les rutes d'aquesta llista.", + 'tours.collection.points': '{count} punts de ruta', + 'tours.collection.points.one': '{count} punt de ruta', + 'tours.collection.savedFrom': 'Desada des de', + 'tours.collection.source': 'Desada des de «{tour}» a «{trip}»', + 'tours.collection.keptBy': 'Desada per {name}', + 'tours.collection.add': 'Afegeix a un viatge', + 'tours.collection.addHint': 'Crea una ruta nova i pròpia al viatge que triïs', + 'tours.collection.remove': 'Treu de la col·lecció', + 'tours.collection.removeTitle': 'Vols treure aquesta ruta de la col·lecció?', + 'tours.collection.removeBody': "Les rutes ja creades a partir d'aquesta als teus viatges es queden com són.", + 'tours.collection.removed': "La ruta s'ha tret de la col·lecció.", + 'tours.collection.removeFailed': "No s'ha pogut treure la ruta.", + 'tours.collection.takeEyebrow': 'Des de la col·lecció', + 'tours.collection.takeSub': 'Esdevé una ruta pròpia del viatge que triïs, sense dies. La col·lecció es queda com és.', + 'tours.collection.intoTrip': 'Al viatge', + 'tours.collection.noPermission': 'No pots afegir rutes a aquest viatge', + 'tours.collection.noTrips': 'Encara no tens cap viatge on afegir-la.', + 'tours.collection.withPoints': 'Amb {count} punts de ruta', + 'tours.collection.withPoints.one': 'Amb {count} punt de ruta', + 'tours.collection.withPointsHint': "L'inici, les parades i el final venen en el seu ordre.", + 'tours.collection.lineOnly': 'Només la línia', + 'tours.collection.lineOnlyHint': "La línia es queda com es va desar. No s'hi afegeix cap punt de ruta.", + 'tours.collection.needsPoints': 'Aquesta ruta encara no té línia, per això els seus punts de ruta han de venir.', + 'tours.collection.noLine': 'Encara sense línia, només els punts de pas', + 'tours.collection.nameInTrip': 'Nom al viatge', + 'tours.collection.taken': '«{name}» ara és una ruta de «{trip}».', + 'tours.collection.takeFailed': "No s'ha pogut afegir la ruta al viatge.", + 'tours.collection.openTrip': 'Obre el viatge', +}; +export default tourCollection; diff --git a/shared/src/i18n/ca/tours.ts b/shared/src/i18n/ca/tours.ts index 809388250..ae53da810 100644 --- a/shared/src/i18n/ca/tours.ts +++ b/shared/src/i18n/ca/tours.ts @@ -1328,47 +1328,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Ruta sencera', 'tours.stages.totalPartial': 'conegut per a {known} de {of} etapes', 'tours.stages.openInPlanner': 'Obre aquesta etapa al planificador', - 'tours.collection.save': 'Desar en una col·lecció', - 'tours.collection.saveHint': "Desa una còpia independent d'aquesta ruta en una de les teves col·leccions", - 'tours.collection.saveFirst': 'Desa primer la ruta per guardar-la en una col·lecció', - 'tours.collection.saveSub': "Una còpia independent. Els canvis posteriors d'aquesta ruta no hi arriben.", - 'tours.collection.list': 'Col·lecció', - 'tours.collection.readOnly': 'Només pots llegir aquesta llista', - 'tours.collection.noLists': 'Encara no tens cap col·lecció.', - 'tours.collection.openCollections': 'Obre les col·leccions', - 'tours.collection.nameThere': 'Nom a la col·lecció', - 'tours.collection.keep': 'Desa', - 'tours.collection.kept': '«{name}» ara és a «{list}».', - 'tours.collection.keepFailed': "No s'ha pogut desar la ruta.", - 'tours.collection.offline': 'Les col·leccions necessiten connexió.', - 'tours.collection.listsFailed': "No s'han pogut carregar les col·leccions.", - 'tours.collection.toursFailed': "No s'han pogut carregar les rutes d'aquesta llista.", - 'tours.collection.points': '{count} punts de ruta', - 'tours.collection.points.one': '{count} punt de ruta', - 'tours.collection.savedFrom': 'Desada des de', - 'tours.collection.source': 'Desada des de «{tour}» a «{trip}»', - 'tours.collection.keptBy': 'Desada per {name}', - 'tours.collection.add': 'Afegeix a un viatge', - 'tours.collection.addHint': 'Crea una ruta nova i pròpia al viatge que triïs', - 'tours.collection.remove': 'Treu de la col·lecció', - 'tours.collection.removeTitle': 'Vols treure aquesta ruta de la col·lecció?', - 'tours.collection.removeBody': "Les rutes ja creades a partir d'aquesta als teus viatges es queden com són.", - 'tours.collection.removed': "La ruta s'ha tret de la col·lecció.", - 'tours.collection.removeFailed': "No s'ha pogut treure la ruta.", - 'tours.collection.takeEyebrow': 'Des de la col·lecció', - 'tours.collection.takeSub': 'Esdevé una ruta pròpia del viatge que triïs, sense dies. La col·lecció es queda com és.', - 'tours.collection.intoTrip': 'Al viatge', - 'tours.collection.noPermission': 'No pots afegir rutes a aquest viatge', - 'tours.collection.noTrips': 'Encara no tens cap viatge on afegir-la.', - 'tours.collection.withPoints': 'Amb {count} punts de ruta', - 'tours.collection.withPoints.one': 'Amb {count} punt de ruta', - 'tours.collection.withPointsHint': "L'inici, les parades i el final venen en el seu ordre.", - 'tours.collection.lineOnly': 'Només la línia', - 'tours.collection.lineOnlyHint': "La línia es queda com es va desar. No s'hi afegeix cap punt de ruta.", - 'tours.collection.needsPoints': 'Aquesta ruta encara no té línia, per això els seus punts de ruta han de venir.', - 'tours.collection.nameInTrip': 'Nom al viatge', - 'tours.collection.taken': '«{name}» ara és una ruta de «{trip}».', - 'tours.collection.takeFailed': "No s'ha pogut afegir la ruta al viatge.", - 'tours.collection.openTrip': 'Obre el viatge', }; export default tours; diff --git a/shared/src/i18n/cs/index.ts b/shared/src/i18n/cs/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/cs/index.ts +++ b/shared/src/i18n/cs/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/cs/tourCollection.ts b/shared/src/i18n/cs/tourCollection.ts new file mode 100644 index 000000000..4946e216e --- /dev/null +++ b/shared/src/i18n/cs/tourCollection.ts @@ -0,0 +1,50 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Uložit do sbírky', + 'tours.collection.saveHint': 'Uloží nezávislou kopii této túry do jedné z tvých sbírek', + 'tours.collection.saveFirst': 'Nejprve túru ulož, abys ji mohl dát do sbírky', + 'tours.collection.saveSub': 'Nezávislá kopie. Pozdější změny této túry se jí nedotknou.', + 'tours.collection.list': 'Sbírka', + 'tours.collection.readOnly': 'Tento seznam můžeš jen číst', + 'tours.collection.noLists': 'Zatím nemáš žádnou sbírku.', + 'tours.collection.openCollections': 'Otevřít sbírky', + 'tours.collection.nameThere': 'Název ve sbírce', + 'tours.collection.keep': 'Uložit', + 'tours.collection.kept': '„{name}“ je teď ve sbírce „{list}“.', + 'tours.collection.keepFailed': 'Túru se nepodařilo uložit.', + 'tours.collection.offline': 'Sbírky potřebují připojení.', + 'tours.collection.listsFailed': 'Sbírky se nepodařilo načíst.', + 'tours.collection.toursFailed': 'Túry tohoto seznamu se nepodařilo načíst.', + 'tours.collection.points': '{count} bodů trasy', + 'tours.collection.points.one': '{count} bod trasy', + 'tours.collection.points.few': '{count} body trasy', + 'tours.collection.savedFrom': 'Uloženo z', + 'tours.collection.source': 'Uloženo z „{tour}“ v „{trip}“', + 'tours.collection.keptBy': 'Uložil(a) {name}', + 'tours.collection.add': 'Přidat do cesty', + 'tours.collection.addHint': 'Vytvoří vlastní novou túru v cestě, kterou zvolíš', + 'tours.collection.remove': 'Odebrat ze sbírky', + 'tours.collection.removeTitle': 'Odebrat tuto túru ze sbírky?', + 'tours.collection.removeBody': 'Túry, které už z ní ve tvých cestách vznikly, zůstanou, jak jsou.', + 'tours.collection.removed': 'Túra byla odebrána ze sbírky.', + 'tours.collection.removeFailed': 'Túru se nepodařilo odebrat.', + 'tours.collection.takeEyebrow': 'Ze sbírky', + 'tours.collection.takeSub': 'Stane se vlastní túrou zvolené cesty, bez dnů. Sbírka zůstane, jak je.', + 'tours.collection.intoTrip': 'Do cesty', + 'tours.collection.noPermission': 'Do této cesty nemůžeš přidávat túry', + 'tours.collection.noTrips': 'Zatím nemáš žádnou cestu, kam ji přidat.', + 'tours.collection.withPoints': 'S {count} body trasy', + 'tours.collection.withPoints.one': 'S {count} bodem trasy', + 'tours.collection.withPoints.few': 'Se {count} body trasy', + 'tours.collection.withPointsHint': 'Start, zastávky a cíl přejdou ve svém pořadí.', + 'tours.collection.lineOnly': 'Jen linie', + 'tours.collection.lineOnlyHint': 'Linie zůstane, jak byla uložena. Žádné body trasy se nepřidají.', + 'tours.collection.needsPoints': 'Tato túra zatím nemá linii, proto musí její body trasy přejít s ní.', + 'tours.collection.noLine': 'Zatím bez trasy, jen průjezdní body', + 'tours.collection.nameInTrip': 'Název v cestě', + 'tours.collection.taken': '„{name}“ je teď túrou cesty „{trip}“.', + 'tours.collection.takeFailed': 'Túru se nepodařilo přidat do cesty.', + 'tours.collection.openTrip': 'Otevřít cestu', +}; +export default tourCollection; diff --git a/shared/src/i18n/cs/tours.ts b/shared/src/i18n/cs/tours.ts index 0e15ebfa0..359d146f6 100644 --- a/shared/src/i18n/cs/tours.ts +++ b/shared/src/i18n/cs/tours.ts @@ -1313,49 +1313,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Celá trasa', 'tours.stages.totalPartial': 'známo pro {known} z {of} etap', 'tours.stages.openInPlanner': 'Otevřít tuto etapu v plánovači', - 'tours.collection.save': 'Uložit do sbírky', - 'tours.collection.saveHint': 'Uloží nezávislou kopii této túry do jedné z tvých sbírek', - 'tours.collection.saveFirst': 'Nejprve túru ulož, abys ji mohl dát do sbírky', - 'tours.collection.saveSub': 'Nezávislá kopie. Pozdější změny této túry se jí nedotknou.', - 'tours.collection.list': 'Sbírka', - 'tours.collection.readOnly': 'Tento seznam můžeš jen číst', - 'tours.collection.noLists': 'Zatím nemáš žádnou sbírku.', - 'tours.collection.openCollections': 'Otevřít sbírky', - 'tours.collection.nameThere': 'Název ve sbírce', - 'tours.collection.keep': 'Uložit', - 'tours.collection.kept': '„{name}“ je teď ve sbírce „{list}“.', - 'tours.collection.keepFailed': 'Túru se nepodařilo uložit.', - 'tours.collection.offline': 'Sbírky potřebují připojení.', - 'tours.collection.listsFailed': 'Sbírky se nepodařilo načíst.', - 'tours.collection.toursFailed': 'Túry tohoto seznamu se nepodařilo načíst.', - 'tours.collection.points': '{count} bodů trasy', - 'tours.collection.points.one': '{count} bod trasy', - 'tours.collection.points.few': '{count} body trasy', - 'tours.collection.savedFrom': 'Uloženo z', - 'tours.collection.source': 'Uloženo z „{tour}“ v „{trip}“', - 'tours.collection.keptBy': 'Uložil(a) {name}', - 'tours.collection.add': 'Přidat do cesty', - 'tours.collection.addHint': 'Vytvoří vlastní novou túru v cestě, kterou zvolíš', - 'tours.collection.remove': 'Odebrat ze sbírky', - 'tours.collection.removeTitle': 'Odebrat tuto túru ze sbírky?', - 'tours.collection.removeBody': 'Túry, které už z ní ve tvých cestách vznikly, zůstanou, jak jsou.', - 'tours.collection.removed': 'Túra byla odebrána ze sbírky.', - 'tours.collection.removeFailed': 'Túru se nepodařilo odebrat.', - 'tours.collection.takeEyebrow': 'Ze sbírky', - 'tours.collection.takeSub': 'Stane se vlastní túrou zvolené cesty, bez dnů. Sbírka zůstane, jak je.', - 'tours.collection.intoTrip': 'Do cesty', - 'tours.collection.noPermission': 'Do této cesty nemůžeš přidávat túry', - 'tours.collection.noTrips': 'Zatím nemáš žádnou cestu, kam ji přidat.', - 'tours.collection.withPoints': 'S {count} body trasy', - 'tours.collection.withPoints.one': 'S {count} bodem trasy', - 'tours.collection.withPoints.few': 'Se {count} body trasy', - 'tours.collection.withPointsHint': 'Start, zastávky a cíl přejdou ve svém pořadí.', - 'tours.collection.lineOnly': 'Jen linie', - 'tours.collection.lineOnlyHint': 'Linie zůstane, jak byla uložena. Žádné body trasy se nepřidají.', - 'tours.collection.needsPoints': 'Tato túra zatím nemá linii, proto musí její body trasy přejít s ní.', - 'tours.collection.nameInTrip': 'Název v cestě', - 'tours.collection.taken': '„{name}“ je teď túrou cesty „{trip}“.', - 'tours.collection.takeFailed': 'Túru se nepodařilo přidat do cesty.', - 'tours.collection.openTrip': 'Otevřít cestu', }; export default tours; diff --git a/shared/src/i18n/de/index.ts b/shared/src/i18n/de/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/de/index.ts +++ b/shared/src/i18n/de/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/de/tourCollection.ts b/shared/src/i18n/de/tourCollection.ts new file mode 100644 index 000000000..9530c3409 --- /dev/null +++ b/shared/src/i18n/de/tourCollection.ts @@ -0,0 +1,49 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'In einer Sammlung behalten', + 'tours.collection.saveHint': 'Legt eine unabhängige Kopie dieser Tour in einer deiner Sammlungen ab', + 'tours.collection.saveFirst': 'Speichere die Tour zuerst, um sie in einer Sammlung zu behalten', + 'tours.collection.saveSub': 'Eine unabhängige Kopie. Spätere Änderungen an dieser Tour erreichen sie nicht.', + 'tours.collection.list': 'Sammlung', + 'tours.collection.readOnly': 'Diese Liste kannst du nur lesen', + 'tours.collection.noLists': 'Du hast noch keine Sammlung.', + 'tours.collection.openCollections': 'Sammlungen öffnen', + 'tours.collection.nameThere': 'Name in der Sammlung', + 'tours.collection.keep': 'Behalten', + 'tours.collection.kept': '„{name}“ liegt jetzt in „{list}“.', + 'tours.collection.keepFailed': 'Die Tour konnte nicht abgelegt werden.', + 'tours.collection.offline': 'Sammlungen brauchen eine Verbindung.', + 'tours.collection.listsFailed': 'Die Sammlungen konnten nicht geladen werden.', + 'tours.collection.toursFailed': 'Die Touren dieser Liste konnten nicht geladen werden.', + 'tours.collection.points': '{count} Wegpunkte', + 'tours.collection.points.one': '{count} Wegpunkt', + 'tours.collection.savedFrom': 'Abgelegt aus', + 'tours.collection.source': 'Abgelegt aus „{tour}“ in „{trip}“', + 'tours.collection.keptBy': 'Abgelegt von {name}', + 'tours.collection.add': 'In eine Reise übernehmen', + 'tours.collection.addHint': 'Legt in einer Reise deiner Wahl eine eigene neue Tour an', + 'tours.collection.remove': 'Aus der Sammlung entfernen', + 'tours.collection.removeTitle': 'Diese Tour aus der Sammlung entfernen?', + 'tours.collection.removeBody': 'Touren, die schon daraus in deinen Reisen entstanden sind, bleiben, wie sie sind.', + 'tours.collection.removed': 'Die Tour wurde aus der Sammlung entfernt.', + 'tours.collection.removeFailed': 'Die Tour konnte nicht entfernt werden.', + 'tours.collection.takeEyebrow': 'Aus der Sammlung', + 'tours.collection.takeSub': + 'Wird in der gewählten Reise eine eigene Tour, ohne Tage. Die Sammlung bleibt, wie sie ist.', + 'tours.collection.intoTrip': 'In die Reise', + 'tours.collection.noPermission': 'Du darfst dieser Reise keine Touren hinzufügen', + 'tours.collection.noTrips': 'Du hast noch keine Reise, in die sie passt.', + 'tours.collection.withPoints': 'Mit {count} Wegpunkten', + 'tours.collection.withPoints.one': 'Mit {count} Wegpunkt', + 'tours.collection.withPointsHint': 'Start, Zwischenpunkte und Ziel kommen in ihrer Reihenfolge mit.', + 'tours.collection.lineOnly': 'Nur die Linie', + 'tours.collection.lineOnlyHint': 'Die Linie bleibt, wie sie gespeichert wurde. Es kommen keine Wegpunkte hinzu.', + 'tours.collection.needsPoints': 'Diese Tour hat noch keine Linie, darum müssen ihre Wegpunkte mitkommen.', + 'tours.collection.noLine': 'Noch keine Linie, nur die Wegpunkte', + 'tours.collection.nameInTrip': 'Name in der Reise', + 'tours.collection.taken': '„{name}“ ist jetzt eine Tour von „{trip}“.', + 'tours.collection.takeFailed': 'Die Tour konnte nicht in die Reise übernommen werden.', + 'tours.collection.openTrip': 'Reise öffnen', +}; +export default tourCollection; diff --git a/shared/src/i18n/de/tours.ts b/shared/src/i18n/de/tours.ts index 059e4b922..ba11aee0c 100644 --- a/shared/src/i18n/de/tours.ts +++ b/shared/src/i18n/de/tours.ts @@ -1339,49 +1339,6 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Ganze Tour', 'tours.stages.totalPartial': 'bekannt für {known} von {of} Etappen', 'tours.stages.openInPlanner': 'Diese Etappe im Planer öffnen', - 'tours.collection.save': 'In einer Sammlung behalten', - 'tours.collection.saveHint': 'Legt eine unabhängige Kopie dieser Tour in einer deiner Sammlungen ab', - 'tours.collection.saveFirst': 'Speichere die Tour zuerst, um sie in einer Sammlung zu behalten', - 'tours.collection.saveSub': 'Eine unabhängige Kopie. Spätere Änderungen an dieser Tour erreichen sie nicht.', - 'tours.collection.list': 'Sammlung', - 'tours.collection.readOnly': 'Diese Liste kannst du nur lesen', - 'tours.collection.noLists': 'Du hast noch keine Sammlung.', - 'tours.collection.openCollections': 'Sammlungen öffnen', - 'tours.collection.nameThere': 'Name in der Sammlung', - 'tours.collection.keep': 'Behalten', - 'tours.collection.kept': '„{name}“ liegt jetzt in „{list}“.', - 'tours.collection.keepFailed': 'Die Tour konnte nicht abgelegt werden.', - 'tours.collection.offline': 'Sammlungen brauchen eine Verbindung.', - 'tours.collection.listsFailed': 'Die Sammlungen konnten nicht geladen werden.', - 'tours.collection.toursFailed': 'Die Touren dieser Liste konnten nicht geladen werden.', - 'tours.collection.points': '{count} Wegpunkte', - 'tours.collection.points.one': '{count} Wegpunkt', - 'tours.collection.savedFrom': 'Abgelegt aus', - 'tours.collection.source': 'Abgelegt aus „{tour}“ in „{trip}“', - 'tours.collection.keptBy': 'Abgelegt von {name}', - 'tours.collection.add': 'In eine Reise übernehmen', - 'tours.collection.addHint': 'Legt in einer Reise deiner Wahl eine eigene neue Tour an', - 'tours.collection.remove': 'Aus der Sammlung entfernen', - 'tours.collection.removeTitle': 'Diese Tour aus der Sammlung entfernen?', - 'tours.collection.removeBody': 'Touren, die schon daraus in deinen Reisen entstanden sind, bleiben, wie sie sind.', - 'tours.collection.removed': 'Die Tour wurde aus der Sammlung entfernt.', - 'tours.collection.removeFailed': 'Die Tour konnte nicht entfernt werden.', - 'tours.collection.takeEyebrow': 'Aus der Sammlung', - 'tours.collection.takeSub': - 'Wird in der gewählten Reise eine eigene Tour, ohne Tage. Die Sammlung bleibt, wie sie ist.', - 'tours.collection.intoTrip': 'In die Reise', - 'tours.collection.noPermission': 'Du darfst dieser Reise keine Touren hinzufügen', - 'tours.collection.noTrips': 'Du hast noch keine Reise, in die sie passt.', - 'tours.collection.withPoints': 'Mit {count} Wegpunkten', - 'tours.collection.withPoints.one': 'Mit {count} Wegpunkt', - 'tours.collection.withPointsHint': 'Start, Zwischenpunkte und Ziel kommen in ihrer Reihenfolge mit.', - 'tours.collection.lineOnly': 'Nur die Linie', - 'tours.collection.lineOnlyHint': 'Die Linie bleibt, wie sie gespeichert wurde. Es kommen keine Wegpunkte hinzu.', - 'tours.collection.needsPoints': 'Diese Tour hat noch keine Linie, darum müssen ihre Wegpunkte mitkommen.', - 'tours.collection.nameInTrip': 'Name in der Reise', - 'tours.collection.taken': '„{name}“ ist jetzt eine Tour von „{trip}“.', - 'tours.collection.takeFailed': 'Die Tour konnte nicht in die Reise übernommen werden.', - 'tours.collection.openTrip': 'Reise öffnen', }; export default tours; diff --git a/shared/src/i18n/en/index.ts b/shared/src/i18n/en/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/en/index.ts +++ b/shared/src/i18n/en/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/en/tourCollection.ts b/shared/src/i18n/en/tourCollection.ts new file mode 100644 index 000000000..b1479a83b --- /dev/null +++ b/shared/src/i18n/en/tourCollection.ts @@ -0,0 +1,49 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Keep in a collection', + 'tours.collection.saveHint': 'Keeps an independent copy of this tour in one of your collections', + 'tours.collection.saveFirst': 'Save the tour first to keep it in a collection', + 'tours.collection.saveSub': 'An independent copy. Later changes to this tour do not reach it.', + 'tours.collection.list': 'Collection', + 'tours.collection.readOnly': 'You can only read this list', + 'tours.collection.noLists': 'You have no collection yet.', + 'tours.collection.openCollections': 'Open collections', + 'tours.collection.nameThere': 'Name in the collection', + 'tours.collection.keep': 'Keep', + 'tours.collection.kept': '“{name}” is now kept in “{list}”.', + 'tours.collection.keepFailed': 'The tour could not be kept.', + 'tours.collection.offline': 'Collections need a connection.', + 'tours.collection.listsFailed': 'The collections could not be loaded.', + 'tours.collection.toursFailed': 'The tours of this list could not be loaded.', + 'tours.collection.points': '{count} waypoints', + 'tours.collection.points.one': '{count} waypoint', + 'tours.collection.savedFrom': 'Saved from', + 'tours.collection.source': 'Saved from “{tour}” in “{trip}”', + 'tours.collection.keptBy': 'Kept by {name}', + 'tours.collection.add': 'Add to a trip', + 'tours.collection.addHint': 'Makes a new tour of its own in a trip you choose', + 'tours.collection.remove': 'Remove from the collection', + 'tours.collection.removeTitle': 'Remove this tour from the collection?', + 'tours.collection.removeBody': 'Tours already made from it in your trips stay as they are.', + 'tours.collection.removed': 'The tour was removed from the collection.', + 'tours.collection.removeFailed': 'The tour could not be removed.', + 'tours.collection.takeEyebrow': 'From the collection', + 'tours.collection.takeSub': + 'Becomes a tour of its own in the trip you choose, without days. The collection stays as it is.', + 'tours.collection.intoTrip': 'Into the trip', + 'tours.collection.noPermission': 'You may not add tours to this trip', + 'tours.collection.noTrips': 'You have no trip to add it to yet.', + 'tours.collection.withPoints': 'With {count} waypoints', + 'tours.collection.withPoints.one': 'With {count} waypoint', + 'tours.collection.withPointsHint': 'Start, stops and end come along in their order.', + 'tours.collection.lineOnly': 'Line only', + 'tours.collection.lineOnlyHint': 'The line stays as saved. No waypoints are added.', + 'tours.collection.needsPoints': 'This tour has no line yet, so its waypoints have to come along.', + 'tours.collection.noLine': 'No line yet, only its waypoints', + 'tours.collection.nameInTrip': 'Name in the trip', + 'tours.collection.taken': '“{name}” is now a tour of “{trip}”.', + 'tours.collection.takeFailed': 'The tour could not be added to the trip.', + 'tours.collection.openTrip': 'Open trip', +}; +export default tourCollection; diff --git a/shared/src/i18n/en/tours.ts b/shared/src/i18n/en/tours.ts index e3faeb3ec..907bbc869 100644 --- a/shared/src/i18n/en/tours.ts +++ b/shared/src/i18n/en/tours.ts @@ -1295,48 +1295,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Whole tour', 'tours.stages.totalPartial': 'known for {known} of {of} stages', 'tours.stages.openInPlanner': 'Open this stage in the planner', - 'tours.collection.save': 'Keep in a collection', - 'tours.collection.saveHint': 'Keeps an independent copy of this tour in one of your collections', - 'tours.collection.saveFirst': 'Save the tour first to keep it in a collection', - 'tours.collection.saveSub': 'An independent copy. Later changes to this tour do not reach it.', - 'tours.collection.list': 'Collection', - 'tours.collection.readOnly': 'You can only read this list', - 'tours.collection.noLists': 'You have no collection yet.', - 'tours.collection.openCollections': 'Open collections', - 'tours.collection.nameThere': 'Name in the collection', - 'tours.collection.keep': 'Keep', - 'tours.collection.kept': '“{name}” is now kept in “{list}”.', - 'tours.collection.keepFailed': 'The tour could not be kept.', - 'tours.collection.offline': 'Collections need a connection.', - 'tours.collection.listsFailed': 'The collections could not be loaded.', - 'tours.collection.toursFailed': 'The tours of this list could not be loaded.', - 'tours.collection.points': '{count} waypoints', - 'tours.collection.points.one': '{count} waypoint', - 'tours.collection.savedFrom': 'Saved from', - 'tours.collection.source': 'Saved from “{tour}” in “{trip}”', - 'tours.collection.keptBy': 'Kept by {name}', - 'tours.collection.add': 'Add to a trip', - 'tours.collection.addHint': 'Makes a new tour of its own in a trip you choose', - 'tours.collection.remove': 'Remove from the collection', - 'tours.collection.removeTitle': 'Remove this tour from the collection?', - 'tours.collection.removeBody': 'Tours already made from it in your trips stay as they are.', - 'tours.collection.removed': 'The tour was removed from the collection.', - 'tours.collection.removeFailed': 'The tour could not be removed.', - 'tours.collection.takeEyebrow': 'From the collection', - 'tours.collection.takeSub': - 'Becomes a tour of its own in the trip you choose, without days. The collection stays as it is.', - 'tours.collection.intoTrip': 'Into the trip', - 'tours.collection.noPermission': 'You may not add tours to this trip', - 'tours.collection.noTrips': 'You have no trip to add it to yet.', - 'tours.collection.withPoints': 'With {count} waypoints', - 'tours.collection.withPoints.one': 'With {count} waypoint', - 'tours.collection.withPointsHint': 'Start, stops and end come along in their order.', - 'tours.collection.lineOnly': 'Line only', - 'tours.collection.lineOnlyHint': 'The line stays as saved. No waypoints are added.', - 'tours.collection.needsPoints': 'This tour has no line yet, so its waypoints have to come along.', - 'tours.collection.nameInTrip': 'Name in the trip', - 'tours.collection.taken': '“{name}” is now a tour of “{trip}”.', - 'tours.collection.takeFailed': 'The tour could not be added to the trip.', - 'tours.collection.openTrip': 'Open trip', }; export default tours; diff --git a/shared/src/i18n/es/index.ts b/shared/src/i18n/es/index.ts index f4cd23fd1..9af879987 100644 --- a/shared/src/i18n/es/index.ts +++ b/shared/src/i18n/es/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/es/tourCollection.ts b/shared/src/i18n/es/tourCollection.ts new file mode 100644 index 000000000..e1f86559f --- /dev/null +++ b/shared/src/i18n/es/tourCollection.ts @@ -0,0 +1,49 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Guardar en una colección', + 'tours.collection.saveHint': 'Guarda una copia independiente de esta ruta en una de tus colecciones', + 'tours.collection.saveFirst': 'Guarda primero la ruta para conservarla en una colección', + 'tours.collection.saveSub': 'Una copia independiente. Los cambios posteriores en esta ruta no le llegan.', + 'tours.collection.list': 'Colección', + 'tours.collection.readOnly': 'Solo puedes leer esta lista', + 'tours.collection.noLists': 'Todavía no tienes ninguna colección.', + 'tours.collection.openCollections': 'Abrir colecciones', + 'tours.collection.nameThere': 'Nombre en la colección', + 'tours.collection.keep': 'Guardar', + 'tours.collection.kept': '«{name}» ahora está guardada en «{list}».', + 'tours.collection.keepFailed': 'No se pudo guardar la ruta.', + 'tours.collection.offline': 'Las colecciones necesitan conexión.', + 'tours.collection.listsFailed': 'No se pudieron cargar las colecciones.', + 'tours.collection.toursFailed': 'No se pudieron cargar las rutas de esta lista.', + 'tours.collection.points': '{count} puntos de ruta', + 'tours.collection.points.one': '{count} punto de ruta', + 'tours.collection.savedFrom': 'Guardada desde', + 'tours.collection.source': 'Guardada desde «{tour}» en «{trip}»', + 'tours.collection.keptBy': 'Guardada por {name}', + 'tours.collection.add': 'Añadir a un viaje', + 'tours.collection.addHint': 'Crea una ruta nueva y propia en el viaje que elijas', + 'tours.collection.remove': 'Quitar de la colección', + 'tours.collection.removeTitle': '¿Quitar esta ruta de la colección?', + 'tours.collection.removeBody': 'Las rutas ya creadas a partir de ella en tus viajes se quedan como están.', + 'tours.collection.removed': 'La ruta se quitó de la colección.', + 'tours.collection.removeFailed': 'No se pudo quitar la ruta.', + 'tours.collection.takeEyebrow': 'Desde la colección', + 'tours.collection.takeSub': + 'Pasa a ser una ruta propia del viaje que elijas, sin días. La colección se queda como está.', + 'tours.collection.intoTrip': 'Al viaje', + 'tours.collection.noPermission': 'No puedes añadir rutas a este viaje', + 'tours.collection.noTrips': 'Todavía no tienes ningún viaje al que añadirla.', + 'tours.collection.withPoints': 'Con {count} puntos de ruta', + 'tours.collection.withPoints.one': 'Con {count} punto de ruta', + 'tours.collection.withPointsHint': 'Inicio, paradas y final vienen en su orden.', + 'tours.collection.lineOnly': 'Solo la línea', + 'tours.collection.lineOnlyHint': 'La línea queda como se guardó. No se añaden puntos de ruta.', + 'tours.collection.needsPoints': 'Esta ruta aún no tiene línea, así que sus puntos de ruta tienen que venir.', + 'tours.collection.noLine': 'Aún sin línea, solo sus puntos de paso', + 'tours.collection.nameInTrip': 'Nombre en el viaje', + 'tours.collection.taken': '«{name}» ahora es una ruta de «{trip}».', + 'tours.collection.takeFailed': 'No se pudo añadir la ruta al viaje.', + 'tours.collection.openTrip': 'Abrir viaje', +}; +export default tourCollection; diff --git a/shared/src/i18n/es/tours.ts b/shared/src/i18n/es/tours.ts index 909777ffd..65d8169a6 100644 --- a/shared/src/i18n/es/tours.ts +++ b/shared/src/i18n/es/tours.ts @@ -1320,48 +1320,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Ruta completa', 'tours.stages.totalPartial': 'conocido para {known} de {of} etapas', 'tours.stages.openInPlanner': 'Abrir esta etapa en el planificador', - 'tours.collection.save': 'Guardar en una colección', - 'tours.collection.saveHint': 'Guarda una copia independiente de esta ruta en una de tus colecciones', - 'tours.collection.saveFirst': 'Guarda primero la ruta para conservarla en una colección', - 'tours.collection.saveSub': 'Una copia independiente. Los cambios posteriores en esta ruta no le llegan.', - 'tours.collection.list': 'Colección', - 'tours.collection.readOnly': 'Solo puedes leer esta lista', - 'tours.collection.noLists': 'Todavía no tienes ninguna colección.', - 'tours.collection.openCollections': 'Abrir colecciones', - 'tours.collection.nameThere': 'Nombre en la colección', - 'tours.collection.keep': 'Guardar', - 'tours.collection.kept': '«{name}» ahora está guardada en «{list}».', - 'tours.collection.keepFailed': 'No se pudo guardar la ruta.', - 'tours.collection.offline': 'Las colecciones necesitan conexión.', - 'tours.collection.listsFailed': 'No se pudieron cargar las colecciones.', - 'tours.collection.toursFailed': 'No se pudieron cargar las rutas de esta lista.', - 'tours.collection.points': '{count} puntos de ruta', - 'tours.collection.points.one': '{count} punto de ruta', - 'tours.collection.savedFrom': 'Guardada desde', - 'tours.collection.source': 'Guardada desde «{tour}» en «{trip}»', - 'tours.collection.keptBy': 'Guardada por {name}', - 'tours.collection.add': 'Añadir a un viaje', - 'tours.collection.addHint': 'Crea una ruta nueva y propia en el viaje que elijas', - 'tours.collection.remove': 'Quitar de la colección', - 'tours.collection.removeTitle': '¿Quitar esta ruta de la colección?', - 'tours.collection.removeBody': 'Las rutas ya creadas a partir de ella en tus viajes se quedan como están.', - 'tours.collection.removed': 'La ruta se quitó de la colección.', - 'tours.collection.removeFailed': 'No se pudo quitar la ruta.', - 'tours.collection.takeEyebrow': 'Desde la colección', - 'tours.collection.takeSub': - 'Pasa a ser una ruta propia del viaje que elijas, sin días. La colección se queda como está.', - 'tours.collection.intoTrip': 'Al viaje', - 'tours.collection.noPermission': 'No puedes añadir rutas a este viaje', - 'tours.collection.noTrips': 'Todavía no tienes ningún viaje al que añadirla.', - 'tours.collection.withPoints': 'Con {count} puntos de ruta', - 'tours.collection.withPoints.one': 'Con {count} punto de ruta', - 'tours.collection.withPointsHint': 'Inicio, paradas y final vienen en su orden.', - 'tours.collection.lineOnly': 'Solo la línea', - 'tours.collection.lineOnlyHint': 'La línea queda como se guardó. No se añaden puntos de ruta.', - 'tours.collection.needsPoints': 'Esta ruta aún no tiene línea, así que sus puntos de ruta tienen que venir.', - 'tours.collection.nameInTrip': 'Nombre en el viaje', - 'tours.collection.taken': '«{name}» ahora es una ruta de «{trip}».', - 'tours.collection.takeFailed': 'No se pudo añadir la ruta al viaje.', - 'tours.collection.openTrip': 'Abrir viaje', }; export default tours; diff --git a/shared/src/i18n/et/index.ts b/shared/src/i18n/et/index.ts index ec191b6db..5e1aef73b 100644 --- a/shared/src/i18n/et/index.ts +++ b/shared/src/i18n/et/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -71,6 +72,7 @@ const locale = { ...atlas, ...trip, ...tours, + ...tourCollection, ...wanderer, ...places, ...inspector, diff --git a/shared/src/i18n/et/tourCollection.ts b/shared/src/i18n/et/tourCollection.ts new file mode 100644 index 000000000..4a96ed028 --- /dev/null +++ b/shared/src/i18n/et/tourCollection.ts @@ -0,0 +1,48 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Hoia kogumikus', + 'tours.collection.saveHint': 'Hoiab selle matka iseseisvat koopiat ühes sinu kogumikus', + 'tours.collection.saveFirst': 'Salvesta matk esmalt, et seda kogumikus hoida', + 'tours.collection.saveSub': 'Iseseisev koopia. Hilisemad muudatused matkas seda ei mõjuta.', + 'tours.collection.list': 'Kogumik', + 'tours.collection.readOnly': 'Seda loendit saad ainult lugeda', + 'tours.collection.noLists': 'Sul pole veel ühtegi kogumikku.', + 'tours.collection.openCollections': 'Ava kogumikud', + 'tours.collection.nameThere': 'Nimi kogumikus', + 'tours.collection.keep': 'Hoia', + 'tours.collection.kept': '„{name}“ on nüüd kogumikus „{list}“.', + 'tours.collection.keepFailed': 'Matka ei õnnestunud hoida.', + 'tours.collection.offline': 'Kogumikud vajavad ühendust.', + 'tours.collection.listsFailed': 'Kogumikke ei õnnestunud laadida.', + 'tours.collection.toursFailed': 'Selle loendi matku ei õnnestunud laadida.', + 'tours.collection.points': '{count} teekonnapunkti', + 'tours.collection.points.one': '{count} teekonnapunkt', + 'tours.collection.savedFrom': 'Hoitud kohast', + 'tours.collection.source': 'Hoitud matkast „{tour}“ reisil „{trip}“', + 'tours.collection.keptBy': 'Hoidis {name}', + 'tours.collection.add': 'Lisa reisile', + 'tours.collection.addHint': 'Loob valitud reisile oma uue matka', + 'tours.collection.remove': 'Eemalda kogumikust', + 'tours.collection.removeTitle': 'Kas eemaldada see matk kogumikust?', + 'tours.collection.removeBody': 'Matkad, mis sinu reisidel juba sellest tehti, jäävad samaks.', + 'tours.collection.removed': 'Matk eemaldati kogumikust.', + 'tours.collection.removeFailed': 'Matka ei õnnestunud eemaldada.', + 'tours.collection.takeEyebrow': 'Kogumikust', + 'tours.collection.takeSub': 'Saab valitud reisil omaette matkaks, ilma päevadeta. Kogumik jääb samaks.', + 'tours.collection.intoTrip': 'Reisile', + 'tours.collection.noPermission': 'Sa ei tohi sellele reisile matku lisada', + 'tours.collection.noTrips': 'Sul pole veel reisi, kuhu seda lisada.', + 'tours.collection.withPoints': '{count} teekonnapunktiga', + 'tours.collection.withPoints.one': '{count} teekonnapunktiga', + 'tours.collection.withPointsHint': 'Algus, peatused ja lõpp tulevad kaasa oma järjekorras.', + 'tours.collection.lineOnly': 'Ainult joon', + 'tours.collection.lineOnlyHint': 'Joon jääb nii, nagu see salvestati. Teekonnapunkte ei lisata.', + 'tours.collection.needsPoints': 'Sellel matkal pole veel joont, seega peavad selle teekonnapunktid kaasa tulema.', + 'tours.collection.noLine': 'Joont veel pole, ainult teekonnapunktid', + 'tours.collection.nameInTrip': 'Nimi reisil', + 'tours.collection.taken': '„{name}“ on nüüd reisi „{trip}“ matk.', + 'tours.collection.takeFailed': 'Matka ei õnnestunud reisile lisada.', + 'tours.collection.openTrip': 'Ava reis', +}; +export default tourCollection; diff --git a/shared/src/i18n/et/tours.ts b/shared/src/i18n/et/tours.ts index 023716c5f..717c84689 100644 --- a/shared/src/i18n/et/tours.ts +++ b/shared/src/i18n/et/tours.ts @@ -1304,47 +1304,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Kogu matk', 'tours.stages.totalPartial': 'teada {known} etapi kohta {of}-st', 'tours.stages.openInPlanner': 'Ava see etapp planeerijas', - 'tours.collection.save': 'Hoia kogumikus', - 'tours.collection.saveHint': 'Hoiab selle matka iseseisvat koopiat ühes sinu kogumikus', - 'tours.collection.saveFirst': 'Salvesta matk esmalt, et seda kogumikus hoida', - 'tours.collection.saveSub': 'Iseseisev koopia. Hilisemad muudatused matkas seda ei mõjuta.', - 'tours.collection.list': 'Kogumik', - 'tours.collection.readOnly': 'Seda loendit saad ainult lugeda', - 'tours.collection.noLists': 'Sul pole veel ühtegi kogumikku.', - 'tours.collection.openCollections': 'Ava kogumikud', - 'tours.collection.nameThere': 'Nimi kogumikus', - 'tours.collection.keep': 'Hoia', - 'tours.collection.kept': '„{name}“ on nüüd kogumikus „{list}“.', - 'tours.collection.keepFailed': 'Matka ei õnnestunud hoida.', - 'tours.collection.offline': 'Kogumikud vajavad ühendust.', - 'tours.collection.listsFailed': 'Kogumikke ei õnnestunud laadida.', - 'tours.collection.toursFailed': 'Selle loendi matku ei õnnestunud laadida.', - 'tours.collection.points': '{count} teekonnapunkti', - 'tours.collection.points.one': '{count} teekonnapunkt', - 'tours.collection.savedFrom': 'Hoitud kohast', - 'tours.collection.source': 'Hoitud matkast „{tour}“ reisil „{trip}“', - 'tours.collection.keptBy': 'Hoidis {name}', - 'tours.collection.add': 'Lisa reisile', - 'tours.collection.addHint': 'Loob valitud reisile oma uue matka', - 'tours.collection.remove': 'Eemalda kogumikust', - 'tours.collection.removeTitle': 'Kas eemaldada see matk kogumikust?', - 'tours.collection.removeBody': 'Matkad, mis sinu reisidel juba sellest tehti, jäävad samaks.', - 'tours.collection.removed': 'Matk eemaldati kogumikust.', - 'tours.collection.removeFailed': 'Matka ei õnnestunud eemaldada.', - 'tours.collection.takeEyebrow': 'Kogumikust', - 'tours.collection.takeSub': 'Saab valitud reisil omaette matkaks, ilma päevadeta. Kogumik jääb samaks.', - 'tours.collection.intoTrip': 'Reisile', - 'tours.collection.noPermission': 'Sa ei tohi sellele reisile matku lisada', - 'tours.collection.noTrips': 'Sul pole veel reisi, kuhu seda lisada.', - 'tours.collection.withPoints': '{count} teekonnapunktiga', - 'tours.collection.withPoints.one': '{count} teekonnapunktiga', - 'tours.collection.withPointsHint': 'Algus, peatused ja lõpp tulevad kaasa oma järjekorras.', - 'tours.collection.lineOnly': 'Ainult joon', - 'tours.collection.lineOnlyHint': 'Joon jääb nii, nagu see salvestati. Teekonnapunkte ei lisata.', - 'tours.collection.needsPoints': 'Sellel matkal pole veel joont, seega peavad selle teekonnapunktid kaasa tulema.', - 'tours.collection.nameInTrip': 'Nimi reisil', - 'tours.collection.taken': '„{name}“ on nüüd reisi „{trip}“ matk.', - 'tours.collection.takeFailed': 'Matka ei õnnestunud reisile lisada.', - 'tours.collection.openTrip': 'Ava reis', }; export default tours; diff --git a/shared/src/i18n/fr/index.ts b/shared/src/i18n/fr/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/fr/index.ts +++ b/shared/src/i18n/fr/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/fr/tourCollection.ts b/shared/src/i18n/fr/tourCollection.ts new file mode 100644 index 000000000..15f26be5e --- /dev/null +++ b/shared/src/i18n/fr/tourCollection.ts @@ -0,0 +1,50 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Garder dans une collection', + 'tours.collection.saveHint': 'Garde une copie indépendante de cet itinéraire dans une de vos collections', + 'tours.collection.saveFirst': "Enregistrez d'abord l'itinéraire pour le garder dans une collection", + 'tours.collection.saveSub': + "Une copie indépendante. Les modifications ultérieures de cet itinéraire ne l'atteignent pas.", + 'tours.collection.list': 'Collection', // same-as-en + 'tours.collection.readOnly': 'Vous pouvez seulement lire cette liste', + 'tours.collection.noLists': "Vous n'avez encore aucune collection.", + 'tours.collection.openCollections': 'Ouvrir les collections', + 'tours.collection.nameThere': 'Nom dans la collection', + 'tours.collection.keep': 'Garder', + 'tours.collection.kept': '« {name} » est maintenant gardé dans « {list} ».', + 'tours.collection.keepFailed': "L'itinéraire n'a pas pu être gardé.", + 'tours.collection.offline': "Les collections ont besoin d'une connexion.", + 'tours.collection.listsFailed': "Les collections n'ont pas pu être chargées.", + 'tours.collection.toursFailed': "Les itinéraires de cette liste n'ont pas pu être chargés.", + 'tours.collection.points': '{count} points de passage', + 'tours.collection.points.one': '{count} point de passage', + 'tours.collection.savedFrom': 'Gardé depuis', + 'tours.collection.source': 'Gardé depuis « {tour} » dans « {trip} »', + 'tours.collection.keptBy': 'Gardé par {name}', + 'tours.collection.add': 'Ajouter à un voyage', + 'tours.collection.addHint': 'Crée un nouvel itinéraire à part entière dans le voyage de votre choix', + 'tours.collection.remove': 'Retirer de la collection', + 'tours.collection.removeTitle': 'Retirer cet itinéraire de la collection ?', + 'tours.collection.removeBody': 'Les itinéraires déjà créés à partir de celui-ci dans vos voyages restent tels quels.', + 'tours.collection.removed': "L'itinéraire a été retiré de la collection.", + 'tours.collection.removeFailed': "L'itinéraire n'a pas pu être retiré.", + 'tours.collection.takeEyebrow': 'Depuis la collection', + 'tours.collection.takeSub': + 'Devient un itinéraire à part entière dans le voyage choisi, sans jours. La collection reste telle quelle.', + 'tours.collection.intoTrip': 'Dans le voyage', + 'tours.collection.noPermission': "Vous ne pouvez pas ajouter d'itinéraires à ce voyage", + 'tours.collection.noTrips': "Vous n'avez encore aucun voyage où l'ajouter.", + 'tours.collection.withPoints': 'Avec {count} points de passage', + 'tours.collection.withPoints.one': 'Avec {count} point de passage', + 'tours.collection.withPointsHint': 'Départ, étapes et arrivée suivent dans leur ordre.', + 'tours.collection.lineOnly': 'Tracé seul', + 'tours.collection.lineOnlyHint': "Le tracé reste tel qu'il a été enregistré. Aucun point de passage n'est ajouté.", + 'tours.collection.needsPoints': "Cet itinéraire n'a pas encore de tracé, ses points de passage doivent donc suivre.", + 'tours.collection.noLine': 'Pas encore de tracé, seulement ses points de passage', + 'tours.collection.nameInTrip': 'Nom dans le voyage', + 'tours.collection.taken': '« {name} » est maintenant un itinéraire de « {trip} ».', + 'tours.collection.takeFailed': "L'itinéraire n'a pas pu être ajouté au voyage.", + 'tours.collection.openTrip': 'Ouvrir le voyage', +}; +export default tourCollection; diff --git a/shared/src/i18n/fr/tours.ts b/shared/src/i18n/fr/tours.ts index 32e5d720c..11a061487 100644 --- a/shared/src/i18n/fr/tours.ts +++ b/shared/src/i18n/fr/tours.ts @@ -1347,49 +1347,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Itinéraire complet', 'tours.stages.totalPartial': 'connu pour {known} étapes sur {of}', 'tours.stages.openInPlanner': 'Ouvrir cette étape dans le planificateur', - 'tours.collection.save': 'Garder dans une collection', - 'tours.collection.saveHint': 'Garde une copie indépendante de cet itinéraire dans une de vos collections', - 'tours.collection.saveFirst': "Enregistrez d'abord l'itinéraire pour le garder dans une collection", - 'tours.collection.saveSub': - "Une copie indépendante. Les modifications ultérieures de cet itinéraire ne l'atteignent pas.", - 'tours.collection.list': 'Collection', // same-as-en - 'tours.collection.readOnly': 'Vous pouvez seulement lire cette liste', - 'tours.collection.noLists': "Vous n'avez encore aucune collection.", - 'tours.collection.openCollections': 'Ouvrir les collections', - 'tours.collection.nameThere': 'Nom dans la collection', - 'tours.collection.keep': 'Garder', - 'tours.collection.kept': '« {name} » est maintenant gardé dans « {list} ».', - 'tours.collection.keepFailed': "L'itinéraire n'a pas pu être gardé.", - 'tours.collection.offline': "Les collections ont besoin d'une connexion.", - 'tours.collection.listsFailed': "Les collections n'ont pas pu être chargées.", - 'tours.collection.toursFailed': "Les itinéraires de cette liste n'ont pas pu être chargés.", - 'tours.collection.points': '{count} points de passage', - 'tours.collection.points.one': '{count} point de passage', - 'tours.collection.savedFrom': 'Gardé depuis', - 'tours.collection.source': 'Gardé depuis « {tour} » dans « {trip} »', - 'tours.collection.keptBy': 'Gardé par {name}', - 'tours.collection.add': 'Ajouter à un voyage', - 'tours.collection.addHint': 'Crée un nouvel itinéraire à part entière dans le voyage de votre choix', - 'tours.collection.remove': 'Retirer de la collection', - 'tours.collection.removeTitle': 'Retirer cet itinéraire de la collection ?', - 'tours.collection.removeBody': 'Les itinéraires déjà créés à partir de celui-ci dans vos voyages restent tels quels.', - 'tours.collection.removed': "L'itinéraire a été retiré de la collection.", - 'tours.collection.removeFailed': "L'itinéraire n'a pas pu être retiré.", - 'tours.collection.takeEyebrow': 'Depuis la collection', - 'tours.collection.takeSub': - 'Devient un itinéraire à part entière dans le voyage choisi, sans jours. La collection reste telle quelle.', - 'tours.collection.intoTrip': 'Dans le voyage', - 'tours.collection.noPermission': "Vous ne pouvez pas ajouter d'itinéraires à ce voyage", - 'tours.collection.noTrips': "Vous n'avez encore aucun voyage où l'ajouter.", - 'tours.collection.withPoints': 'Avec {count} points de passage', - 'tours.collection.withPoints.one': 'Avec {count} point de passage', - 'tours.collection.withPointsHint': 'Départ, étapes et arrivée suivent dans leur ordre.', - 'tours.collection.lineOnly': 'Tracé seul', - 'tours.collection.lineOnlyHint': "Le tracé reste tel qu'il a été enregistré. Aucun point de passage n'est ajouté.", - 'tours.collection.needsPoints': "Cet itinéraire n'a pas encore de tracé, ses points de passage doivent donc suivre.", - 'tours.collection.nameInTrip': 'Nom dans le voyage', - 'tours.collection.taken': '« {name} » est maintenant un itinéraire de « {trip} ».', - 'tours.collection.takeFailed': "L'itinéraire n'a pas pu être ajouté au voyage.", - 'tours.collection.openTrip': 'Ouvrir le voyage', }; export default tours; diff --git a/shared/src/i18n/gr/index.ts b/shared/src/i18n/gr/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/gr/index.ts +++ b/shared/src/i18n/gr/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/gr/tourCollection.ts b/shared/src/i18n/gr/tourCollection.ts new file mode 100644 index 000000000..d1a1dea38 --- /dev/null +++ b/shared/src/i18n/gr/tourCollection.ts @@ -0,0 +1,49 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Φύλαξη σε συλλογή', + 'tours.collection.saveHint': 'Φυλάει ένα ανεξάρτητο αντίγραφο αυτής της διαδρομής σε μία από τις συλλογές σου', + 'tours.collection.saveFirst': 'Αποθήκευσε πρώτα τη διαδρομή για να τη φυλάξεις σε συλλογή', + 'tours.collection.saveSub': 'Ένα ανεξάρτητο αντίγραφο. Μεταγενέστερες αλλαγές στη διαδρομή δεν το επηρεάζουν.', + 'tours.collection.list': 'Συλλογή', + 'tours.collection.readOnly': 'Μπορείς μόνο να διαβάσεις αυτή τη λίστα', + 'tours.collection.noLists': 'Δεν έχεις ακόμη καμία συλλογή.', + 'tours.collection.openCollections': 'Άνοιγμα συλλογών', + 'tours.collection.nameThere': 'Όνομα στη συλλογή', + 'tours.collection.keep': 'Φύλαξη', + 'tours.collection.kept': 'Το «{name}» φυλάσσεται τώρα στο «{list}».', + 'tours.collection.keepFailed': 'Δεν ήταν δυνατή η φύλαξη της διαδρομής.', + 'tours.collection.offline': 'Οι συλλογές χρειάζονται σύνδεση.', + 'tours.collection.listsFailed': 'Δεν ήταν δυνατή η φόρτωση των συλλογών.', + 'tours.collection.toursFailed': 'Δεν ήταν δυνατή η φόρτωση των διαδρομών αυτής της λίστας.', + 'tours.collection.points': '{count} σημεία διαδρομής', + 'tours.collection.points.one': '{count} σημείο διαδρομής', + 'tours.collection.savedFrom': 'Φυλάχτηκε από', + 'tours.collection.source': 'Φυλάχτηκε από «{tour}» στο «{trip}»', + 'tours.collection.keptBy': 'Φυλάχτηκε από {name}', + 'tours.collection.add': 'Προσθήκη σε ταξίδι', + 'tours.collection.addHint': 'Δημιουργεί μια νέα, δική της διαδρομή σε ταξίδι της επιλογής σου', + 'tours.collection.remove': 'Αφαίρεση από τη συλλογή', + 'tours.collection.removeTitle': 'Αφαίρεση αυτής της διαδρομής από τη συλλογή;', + 'tours.collection.removeBody': 'Οι διαδρομές που έχουν ήδη φτιαχτεί από αυτή στα ταξίδια σου μένουν ως έχουν.', + 'tours.collection.removed': 'Η διαδρομή αφαιρέθηκε από τη συλλογή.', + 'tours.collection.removeFailed': 'Δεν ήταν δυνατή η αφαίρεση της διαδρομής.', + 'tours.collection.takeEyebrow': 'Από τη συλλογή', + 'tours.collection.takeSub': + 'Γίνεται δική της διαδρομή στο ταξίδι που επιλέγεις, χωρίς ημέρες. Η συλλογή μένει ως έχει.', + 'tours.collection.intoTrip': 'Στο ταξίδι', + 'tours.collection.noPermission': 'Δεν μπορείς να προσθέσεις διαδρομές σε αυτό το ταξίδι', + 'tours.collection.noTrips': 'Δεν έχεις ακόμη ταξίδι για να την προσθέσεις.', + 'tours.collection.withPoints': 'Με {count} σημεία διαδρομής', + 'tours.collection.withPoints.one': 'Με {count} σημείο διαδρομής', + 'tours.collection.withPointsHint': 'Αφετηρία, στάσεις και τέλος έρχονται με τη σειρά τους.', + 'tours.collection.lineOnly': 'Μόνο η γραμμή', + 'tours.collection.lineOnlyHint': 'Η γραμμή μένει όπως αποθηκεύτηκε. Δεν προστίθενται σημεία διαδρομής.', + 'tours.collection.needsPoints': 'Αυτή η διαδρομή δεν έχει ακόμη γραμμή, οπότε τα σημεία της πρέπει να έρθουν μαζί.', + 'tours.collection.noLine': 'Δεν υπάρχει ακόμη γραμμή, μόνο τα σημεία διαδρομής', + 'tours.collection.nameInTrip': 'Όνομα στο ταξίδι', + 'tours.collection.taken': 'Το «{name}» είναι τώρα διαδρομή του «{trip}».', + 'tours.collection.takeFailed': 'Δεν ήταν δυνατή η προσθήκη της διαδρομής στο ταξίδι.', + 'tours.collection.openTrip': 'Άνοιγμα ταξιδιού', +}; +export default tourCollection; diff --git a/shared/src/i18n/gr/tours.ts b/shared/src/i18n/gr/tours.ts index 892475a34..f8ea21693 100644 --- a/shared/src/i18n/gr/tours.ts +++ b/shared/src/i18n/gr/tours.ts @@ -1349,48 +1349,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Όλη η διαδρομή', 'tours.stages.totalPartial': 'γνωστό για {known} από {of} σκέλη', 'tours.stages.openInPlanner': 'Άνοιγμα αυτού του σκέλους στον σχεδιαστή', - 'tours.collection.save': 'Φύλαξη σε συλλογή', - 'tours.collection.saveHint': 'Φυλάει ένα ανεξάρτητο αντίγραφο αυτής της διαδρομής σε μία από τις συλλογές σου', - 'tours.collection.saveFirst': 'Αποθήκευσε πρώτα τη διαδρομή για να τη φυλάξεις σε συλλογή', - 'tours.collection.saveSub': 'Ένα ανεξάρτητο αντίγραφο. Μεταγενέστερες αλλαγές στη διαδρομή δεν το επηρεάζουν.', - 'tours.collection.list': 'Συλλογή', - 'tours.collection.readOnly': 'Μπορείς μόνο να διαβάσεις αυτή τη λίστα', - 'tours.collection.noLists': 'Δεν έχεις ακόμη καμία συλλογή.', - 'tours.collection.openCollections': 'Άνοιγμα συλλογών', - 'tours.collection.nameThere': 'Όνομα στη συλλογή', - 'tours.collection.keep': 'Φύλαξη', - 'tours.collection.kept': 'Το «{name}» φυλάσσεται τώρα στο «{list}».', - 'tours.collection.keepFailed': 'Δεν ήταν δυνατή η φύλαξη της διαδρομής.', - 'tours.collection.offline': 'Οι συλλογές χρειάζονται σύνδεση.', - 'tours.collection.listsFailed': 'Δεν ήταν δυνατή η φόρτωση των συλλογών.', - 'tours.collection.toursFailed': 'Δεν ήταν δυνατή η φόρτωση των διαδρομών αυτής της λίστας.', - 'tours.collection.points': '{count} σημεία διαδρομής', - 'tours.collection.points.one': '{count} σημείο διαδρομής', - 'tours.collection.savedFrom': 'Φυλάχτηκε από', - 'tours.collection.source': 'Φυλάχτηκε από «{tour}» στο «{trip}»', - 'tours.collection.keptBy': 'Φυλάχτηκε από {name}', - 'tours.collection.add': 'Προσθήκη σε ταξίδι', - 'tours.collection.addHint': 'Δημιουργεί μια νέα, δική της διαδρομή σε ταξίδι της επιλογής σου', - 'tours.collection.remove': 'Αφαίρεση από τη συλλογή', - 'tours.collection.removeTitle': 'Αφαίρεση αυτής της διαδρομής από τη συλλογή;', - 'tours.collection.removeBody': 'Οι διαδρομές που έχουν ήδη φτιαχτεί από αυτή στα ταξίδια σου μένουν ως έχουν.', - 'tours.collection.removed': 'Η διαδρομή αφαιρέθηκε από τη συλλογή.', - 'tours.collection.removeFailed': 'Δεν ήταν δυνατή η αφαίρεση της διαδρομής.', - 'tours.collection.takeEyebrow': 'Από τη συλλογή', - 'tours.collection.takeSub': - 'Γίνεται δική της διαδρομή στο ταξίδι που επιλέγεις, χωρίς ημέρες. Η συλλογή μένει ως έχει.', - 'tours.collection.intoTrip': 'Στο ταξίδι', - 'tours.collection.noPermission': 'Δεν μπορείς να προσθέσεις διαδρομές σε αυτό το ταξίδι', - 'tours.collection.noTrips': 'Δεν έχεις ακόμη ταξίδι για να την προσθέσεις.', - 'tours.collection.withPoints': 'Με {count} σημεία διαδρομής', - 'tours.collection.withPoints.one': 'Με {count} σημείο διαδρομής', - 'tours.collection.withPointsHint': 'Αφετηρία, στάσεις και τέλος έρχονται με τη σειρά τους.', - 'tours.collection.lineOnly': 'Μόνο η γραμμή', - 'tours.collection.lineOnlyHint': 'Η γραμμή μένει όπως αποθηκεύτηκε. Δεν προστίθενται σημεία διαδρομής.', - 'tours.collection.needsPoints': 'Αυτή η διαδρομή δεν έχει ακόμη γραμμή, οπότε τα σημεία της πρέπει να έρθουν μαζί.', - 'tours.collection.nameInTrip': 'Όνομα στο ταξίδι', - 'tours.collection.taken': 'Το «{name}» είναι τώρα διαδρομή του «{trip}».', - 'tours.collection.takeFailed': 'Δεν ήταν δυνατή η προσθήκη της διαδρομής στο ταξίδι.', - 'tours.collection.openTrip': 'Άνοιγμα ταξιδιού', }; export default tours; diff --git a/shared/src/i18n/hu/index.ts b/shared/src/i18n/hu/index.ts index abeef31ea..2fe4f2b74 100644 --- a/shared/src/i18n/hu/index.ts +++ b/shared/src/i18n/hu/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/hu/tourCollection.ts b/shared/src/i18n/hu/tourCollection.ts new file mode 100644 index 000000000..db24a7501 --- /dev/null +++ b/shared/src/i18n/hu/tourCollection.ts @@ -0,0 +1,48 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Megőrzés gyűjteményben', + 'tours.collection.saveHint': 'A túra önálló másolatát az egyik gyűjteményedbe teszi', + 'tours.collection.saveFirst': 'Előbb mentsd a túrát, hogy gyűjteménybe tehesd', + 'tours.collection.saveSub': 'Önálló másolat. A túra későbbi módosításai nem érik el.', + 'tours.collection.list': 'Gyűjtemény', + 'tours.collection.readOnly': 'Ezt a listát csak olvasni tudod', + 'tours.collection.noLists': 'Még nincs gyűjteményed.', + 'tours.collection.openCollections': 'Gyűjtemények megnyitása', + 'tours.collection.nameThere': 'Név a gyűjteményben', + 'tours.collection.keep': 'Megőrzés', + 'tours.collection.kept': 'A(z) „{name}” most a(z) „{list}” gyűjteményben van.', + 'tours.collection.keepFailed': 'A túrát nem sikerült megőrizni.', + 'tours.collection.offline': 'A gyűjteményekhez kapcsolat kell.', + 'tours.collection.listsFailed': 'A gyűjteményeket nem sikerült betölteni.', + 'tours.collection.toursFailed': 'A lista túráit nem sikerült betölteni.', + 'tours.collection.points': '{count} útpont', + 'tours.collection.points.one': '{count} útpont', + 'tours.collection.savedFrom': 'Megőrizve innen', + 'tours.collection.source': 'Megőrizve innen: „{tour}”, „{trip}”', + 'tours.collection.keptBy': 'Megőrizte: {name}', + 'tours.collection.add': 'Hozzáadás egy úthoz', + 'tours.collection.addHint': 'Önálló új túrát hoz létre egy általad választott útban', + 'tours.collection.remove': 'Eltávolítás a gyűjteményből', + 'tours.collection.removeTitle': 'Eltávolítod ezt a túrát a gyűjteményből?', + 'tours.collection.removeBody': 'Az útjaidban belőle már készült túrák változatlanok maradnak.', + 'tours.collection.removed': 'A túra kikerült a gyűjteményből.', + 'tours.collection.removeFailed': 'A túrát nem sikerült eltávolítani.', + 'tours.collection.takeEyebrow': 'A gyűjteményből', + 'tours.collection.takeSub': 'Önálló túra lesz a választott útban, napok nélkül. A gyűjtemény változatlan marad.', + 'tours.collection.intoTrip': 'Az útba', + 'tours.collection.noPermission': 'Ehhez az úthoz nem adhatsz túrát', + 'tours.collection.noTrips': 'Még nincs utad, amelyhez hozzáadhatnád.', + 'tours.collection.withPoints': '{count} útponttal', + 'tours.collection.withPoints.one': '{count} útponttal', + 'tours.collection.withPointsHint': 'A kezdőpont, a megállók és a végpont a sorrendjükben jönnek.', + 'tours.collection.lineOnly': 'Csak a vonal', + 'tours.collection.lineOnlyHint': 'A vonal a mentett formájában marad. Útpontok nem kerülnek hozzá.', + 'tours.collection.needsPoints': 'Ennek a túrának még nincs vonala, ezért az útpontjainak is jönniük kell.', + 'tours.collection.noLine': 'Még nincs vonal, csak az útpontok', + 'tours.collection.nameInTrip': 'Név az útban', + 'tours.collection.taken': 'A(z) „{name}” most a(z) „{trip}” túrája.', + 'tours.collection.takeFailed': 'A túrát nem sikerült hozzáadni az úthoz.', + 'tours.collection.openTrip': 'Út megnyitása', +}; +export default tourCollection; diff --git a/shared/src/i18n/hu/tours.ts b/shared/src/i18n/hu/tours.ts index a6ef57798..450e20914 100644 --- a/shared/src/i18n/hu/tours.ts +++ b/shared/src/i18n/hu/tours.ts @@ -1326,47 +1326,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Teljes túra', 'tours.stages.totalPartial': 'ismert {known} szakasznál a {of} közül', 'tours.stages.openInPlanner': 'A szakasz megnyitása a tervezőben', - 'tours.collection.save': 'Megőrzés gyűjteményben', - 'tours.collection.saveHint': 'A túra önálló másolatát az egyik gyűjteményedbe teszi', - 'tours.collection.saveFirst': 'Előbb mentsd a túrát, hogy gyűjteménybe tehesd', - 'tours.collection.saveSub': 'Önálló másolat. A túra későbbi módosításai nem érik el.', - 'tours.collection.list': 'Gyűjtemény', - 'tours.collection.readOnly': 'Ezt a listát csak olvasni tudod', - 'tours.collection.noLists': 'Még nincs gyűjteményed.', - 'tours.collection.openCollections': 'Gyűjtemények megnyitása', - 'tours.collection.nameThere': 'Név a gyűjteményben', - 'tours.collection.keep': 'Megőrzés', - 'tours.collection.kept': 'A(z) „{name}” most a(z) „{list}” gyűjteményben van.', - 'tours.collection.keepFailed': 'A túrát nem sikerült megőrizni.', - 'tours.collection.offline': 'A gyűjteményekhez kapcsolat kell.', - 'tours.collection.listsFailed': 'A gyűjteményeket nem sikerült betölteni.', - 'tours.collection.toursFailed': 'A lista túráit nem sikerült betölteni.', - 'tours.collection.points': '{count} útpont', - 'tours.collection.points.one': '{count} útpont', - 'tours.collection.savedFrom': 'Megőrizve innen', - 'tours.collection.source': 'Megőrizve innen: „{tour}”, „{trip}”', - 'tours.collection.keptBy': 'Megőrizte: {name}', - 'tours.collection.add': 'Hozzáadás egy úthoz', - 'tours.collection.addHint': 'Önálló új túrát hoz létre egy általad választott útban', - 'tours.collection.remove': 'Eltávolítás a gyűjteményből', - 'tours.collection.removeTitle': 'Eltávolítod ezt a túrát a gyűjteményből?', - 'tours.collection.removeBody': 'Az útjaidban belőle már készült túrák változatlanok maradnak.', - 'tours.collection.removed': 'A túra kikerült a gyűjteményből.', - 'tours.collection.removeFailed': 'A túrát nem sikerült eltávolítani.', - 'tours.collection.takeEyebrow': 'A gyűjteményből', - 'tours.collection.takeSub': 'Önálló túra lesz a választott útban, napok nélkül. A gyűjtemény változatlan marad.', - 'tours.collection.intoTrip': 'Az útba', - 'tours.collection.noPermission': 'Ehhez az úthoz nem adhatsz túrát', - 'tours.collection.noTrips': 'Még nincs utad, amelyhez hozzáadhatnád.', - 'tours.collection.withPoints': '{count} útponttal', - 'tours.collection.withPoints.one': '{count} útponttal', - 'tours.collection.withPointsHint': 'A kezdőpont, a megállók és a végpont a sorrendjükben jönnek.', - 'tours.collection.lineOnly': 'Csak a vonal', - 'tours.collection.lineOnlyHint': 'A vonal a mentett formájában marad. Útpontok nem kerülnek hozzá.', - 'tours.collection.needsPoints': 'Ennek a túrának még nincs vonala, ezért az útpontjainak is jönniük kell.', - 'tours.collection.nameInTrip': 'Név az útban', - 'tours.collection.taken': 'A(z) „{name}” most a(z) „{trip}” túrája.', - 'tours.collection.takeFailed': 'A túrát nem sikerült hozzáadni az úthoz.', - 'tours.collection.openTrip': 'Út megnyitása', }; export default tours; diff --git a/shared/src/i18n/id/index.ts b/shared/src/i18n/id/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/id/index.ts +++ b/shared/src/i18n/id/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/id/tourCollection.ts b/shared/src/i18n/id/tourCollection.ts new file mode 100644 index 000000000..98140d0c9 --- /dev/null +++ b/shared/src/i18n/id/tourCollection.ts @@ -0,0 +1,47 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Simpan di koleksi', + 'tours.collection.saveHint': 'Menyimpan salinan mandiri tur ini di salah satu koleksi Anda', + 'tours.collection.saveFirst': 'Simpan tur terlebih dahulu untuk menaruhnya di koleksi', + 'tours.collection.saveSub': 'Salinan mandiri. Perubahan berikutnya pada tur ini tidak memengaruhinya.', + 'tours.collection.list': 'Koleksi', + 'tours.collection.readOnly': 'Anda hanya dapat membaca daftar ini', + 'tours.collection.noLists': 'Anda belum punya koleksi.', + 'tours.collection.openCollections': 'Buka koleksi', + 'tours.collection.nameThere': 'Nama di koleksi', + 'tours.collection.keep': 'Simpan', + 'tours.collection.kept': '“{name}” kini tersimpan di “{list}”.', + 'tours.collection.keepFailed': 'Tur tidak dapat disimpan.', + 'tours.collection.offline': 'Koleksi memerlukan koneksi.', + 'tours.collection.listsFailed': 'Koleksi tidak dapat dimuat.', + 'tours.collection.toursFailed': 'Tur di daftar ini tidak dapat dimuat.', + 'tours.collection.points': '{count} titik rute', + 'tours.collection.savedFrom': 'Disimpan dari', + 'tours.collection.source': 'Disimpan dari “{tour}” di “{trip}”', + 'tours.collection.keptBy': 'Disimpan oleh {name}', + 'tours.collection.add': 'Tambahkan ke perjalanan', + 'tours.collection.addHint': 'Membuat tur baru tersendiri di perjalanan pilihan Anda', + 'tours.collection.remove': 'Hapus dari koleksi', + 'tours.collection.removeTitle': 'Hapus tur ini dari koleksi?', + 'tours.collection.removeBody': 'Tur yang sudah dibuat darinya di perjalanan Anda tetap seperti semula.', + 'tours.collection.removed': 'Tur dihapus dari koleksi.', + 'tours.collection.removeFailed': 'Tur tidak dapat dihapus.', + 'tours.collection.takeEyebrow': 'Dari koleksi', + 'tours.collection.takeSub': + 'Menjadi tur tersendiri di perjalanan pilihan Anda, tanpa hari. Koleksi tetap seperti semula.', + 'tours.collection.intoTrip': 'Ke perjalanan', + 'tours.collection.noPermission': 'Anda tidak boleh menambahkan tur ke perjalanan ini', + 'tours.collection.noTrips': 'Anda belum punya perjalanan untuk menambahkannya.', + 'tours.collection.withPoints': 'Dengan {count} titik rute', + 'tours.collection.withPointsHint': 'Awal, perhentian, dan akhir ikut sesuai urutannya.', + 'tours.collection.lineOnly': 'Hanya garis', + 'tours.collection.lineOnlyHint': 'Garis tetap seperti saat disimpan. Tidak ada titik rute yang ditambahkan.', + 'tours.collection.needsPoints': 'Tur ini belum punya garis, jadi titik rutenya harus ikut.', + 'tours.collection.noLine': 'Belum ada garis, hanya titik jalannya', + 'tours.collection.nameInTrip': 'Nama di perjalanan', + 'tours.collection.taken': '“{name}” kini menjadi tur di “{trip}”.', + 'tours.collection.takeFailed': 'Tur tidak dapat ditambahkan ke perjalanan.', + 'tours.collection.openTrip': 'Buka perjalanan', +}; +export default tourCollection; diff --git a/shared/src/i18n/id/tours.ts b/shared/src/i18n/id/tours.ts index 4542c0993..653ce8c6a 100644 --- a/shared/src/i18n/id/tours.ts +++ b/shared/src/i18n/id/tours.ts @@ -1300,46 +1300,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Seluruh tur', 'tours.stages.totalPartial': 'diketahui untuk {known} dari {of} etape', 'tours.stages.openInPlanner': 'Buka etape ini di perencana', - 'tours.collection.save': 'Simpan di koleksi', - 'tours.collection.saveHint': 'Menyimpan salinan mandiri tur ini di salah satu koleksi Anda', - 'tours.collection.saveFirst': 'Simpan tur terlebih dahulu untuk menaruhnya di koleksi', - 'tours.collection.saveSub': 'Salinan mandiri. Perubahan berikutnya pada tur ini tidak memengaruhinya.', - 'tours.collection.list': 'Koleksi', - 'tours.collection.readOnly': 'Anda hanya dapat membaca daftar ini', - 'tours.collection.noLists': 'Anda belum punya koleksi.', - 'tours.collection.openCollections': 'Buka koleksi', - 'tours.collection.nameThere': 'Nama di koleksi', - 'tours.collection.keep': 'Simpan', - 'tours.collection.kept': '“{name}” kini tersimpan di “{list}”.', - 'tours.collection.keepFailed': 'Tur tidak dapat disimpan.', - 'tours.collection.offline': 'Koleksi memerlukan koneksi.', - 'tours.collection.listsFailed': 'Koleksi tidak dapat dimuat.', - 'tours.collection.toursFailed': 'Tur di daftar ini tidak dapat dimuat.', - 'tours.collection.points': '{count} titik rute', - 'tours.collection.savedFrom': 'Disimpan dari', - 'tours.collection.source': 'Disimpan dari “{tour}” di “{trip}”', - 'tours.collection.keptBy': 'Disimpan oleh {name}', - 'tours.collection.add': 'Tambahkan ke perjalanan', - 'tours.collection.addHint': 'Membuat tur baru tersendiri di perjalanan pilihan Anda', - 'tours.collection.remove': 'Hapus dari koleksi', - 'tours.collection.removeTitle': 'Hapus tur ini dari koleksi?', - 'tours.collection.removeBody': 'Tur yang sudah dibuat darinya di perjalanan Anda tetap seperti semula.', - 'tours.collection.removed': 'Tur dihapus dari koleksi.', - 'tours.collection.removeFailed': 'Tur tidak dapat dihapus.', - 'tours.collection.takeEyebrow': 'Dari koleksi', - 'tours.collection.takeSub': - 'Menjadi tur tersendiri di perjalanan pilihan Anda, tanpa hari. Koleksi tetap seperti semula.', - 'tours.collection.intoTrip': 'Ke perjalanan', - 'tours.collection.noPermission': 'Anda tidak boleh menambahkan tur ke perjalanan ini', - 'tours.collection.noTrips': 'Anda belum punya perjalanan untuk menambahkannya.', - 'tours.collection.withPoints': 'Dengan {count} titik rute', - 'tours.collection.withPointsHint': 'Awal, perhentian, dan akhir ikut sesuai urutannya.', - 'tours.collection.lineOnly': 'Hanya garis', - 'tours.collection.lineOnlyHint': 'Garis tetap seperti saat disimpan. Tidak ada titik rute yang ditambahkan.', - 'tours.collection.needsPoints': 'Tur ini belum punya garis, jadi titik rutenya harus ikut.', - 'tours.collection.nameInTrip': 'Nama di perjalanan', - 'tours.collection.taken': '“{name}” kini menjadi tur di “{trip}”.', - 'tours.collection.takeFailed': 'Tur tidak dapat ditambahkan ke perjalanan.', - 'tours.collection.openTrip': 'Buka perjalanan', }; export default tours; diff --git a/shared/src/i18n/it/index.ts b/shared/src/i18n/it/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/it/index.ts +++ b/shared/src/i18n/it/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/it/tourCollection.ts b/shared/src/i18n/it/tourCollection.ts new file mode 100644 index 000000000..337c084e0 --- /dev/null +++ b/shared/src/i18n/it/tourCollection.ts @@ -0,0 +1,49 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Tieni in una raccolta', + 'tours.collection.saveHint': 'Tiene una copia indipendente di questo percorso in una delle tue raccolte', + 'tours.collection.saveFirst': 'Salva prima il percorso per tenerlo in una raccolta', + 'tours.collection.saveSub': 'Una copia indipendente. Le modifiche successive a questo percorso non la raggiungono.', + 'tours.collection.list': 'Raccolta', + 'tours.collection.readOnly': 'Puoi solo leggere questa lista', + 'tours.collection.noLists': 'Non hai ancora nessuna raccolta.', + 'tours.collection.openCollections': 'Apri le raccolte', + 'tours.collection.nameThere': 'Nome nella raccolta', + 'tours.collection.keep': 'Tieni', + 'tours.collection.kept': '“{name}” ora è tenuto in “{list}”.', + 'tours.collection.keepFailed': 'Non è stato possibile tenere il percorso.', + 'tours.collection.offline': 'Le raccolte hanno bisogno di una connessione.', + 'tours.collection.listsFailed': 'Non è stato possibile caricare le raccolte.', + 'tours.collection.toursFailed': 'Non è stato possibile caricare i percorsi di questa lista.', + 'tours.collection.points': '{count} punti di passaggio', + 'tours.collection.points.one': '{count} punto di passaggio', + 'tours.collection.savedFrom': 'Tenuto da', + 'tours.collection.source': 'Tenuto da “{tour}” in “{trip}”', + 'tours.collection.keptBy': 'Tenuto da {name}', + 'tours.collection.add': 'Aggiungi a un viaggio', + 'tours.collection.addHint': 'Crea un nuovo percorso a sé nel viaggio che scegli', + 'tours.collection.remove': 'Togli dalla raccolta', + 'tours.collection.removeTitle': 'Togliere questo percorso dalla raccolta?', + 'tours.collection.removeBody': 'I percorsi già creati da questo nei tuoi viaggi restano come sono.', + 'tours.collection.removed': 'Il percorso è stato tolto dalla raccolta.', + 'tours.collection.removeFailed': 'Non è stato possibile togliere il percorso.', + 'tours.collection.takeEyebrow': 'Dalla raccolta', + 'tours.collection.takeSub': 'Diventa un percorso a sé nel viaggio scelto, senza giorni. La raccolta resta com’è.', + 'tours.collection.intoTrip': 'Nel viaggio', + 'tours.collection.noPermission': 'Non puoi aggiungere percorsi a questo viaggio', + 'tours.collection.noTrips': 'Non hai ancora nessun viaggio a cui aggiungerlo.', + 'tours.collection.withPoints': 'Con {count} punti di passaggio', + 'tours.collection.withPoints.one': 'Con {count} punto di passaggio', + 'tours.collection.withPointsHint': 'Partenza, tappe e arrivo seguono nel loro ordine.', + 'tours.collection.lineOnly': 'Solo la linea', + 'tours.collection.lineOnlyHint': 'La linea resta come è stata salvata. Nessun punto di passaggio viene aggiunto.', + 'tours.collection.needsPoints': + 'Questo percorso non ha ancora una linea, quindi i suoi punti di passaggio devono seguire.', + 'tours.collection.noLine': 'Ancora nessuna linea, solo i suoi punti di passaggio', + 'tours.collection.nameInTrip': 'Nome nel viaggio', + 'tours.collection.taken': '“{name}” ora è un percorso di “{trip}”.', + 'tours.collection.takeFailed': 'Non è stato possibile aggiungere il percorso al viaggio.', + 'tours.collection.openTrip': 'Apri il viaggio', +}; +export default tourCollection; diff --git a/shared/src/i18n/it/tours.ts b/shared/src/i18n/it/tours.ts index 963fd4f2b..4d83b0f2e 100644 --- a/shared/src/i18n/it/tours.ts +++ b/shared/src/i18n/it/tours.ts @@ -1334,48 +1334,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Tour completo', 'tours.stages.totalPartial': 'noto per {known} tappe su {of}', 'tours.stages.openInPlanner': 'Apri questa tappa nel pianificatore', - 'tours.collection.save': 'Tieni in una raccolta', - 'tours.collection.saveHint': 'Tiene una copia indipendente di questo percorso in una delle tue raccolte', - 'tours.collection.saveFirst': 'Salva prima il percorso per tenerlo in una raccolta', - 'tours.collection.saveSub': 'Una copia indipendente. Le modifiche successive a questo percorso non la raggiungono.', - 'tours.collection.list': 'Raccolta', - 'tours.collection.readOnly': 'Puoi solo leggere questa lista', - 'tours.collection.noLists': 'Non hai ancora nessuna raccolta.', - 'tours.collection.openCollections': 'Apri le raccolte', - 'tours.collection.nameThere': 'Nome nella raccolta', - 'tours.collection.keep': 'Tieni', - 'tours.collection.kept': '“{name}” ora è tenuto in “{list}”.', - 'tours.collection.keepFailed': 'Non è stato possibile tenere il percorso.', - 'tours.collection.offline': 'Le raccolte hanno bisogno di una connessione.', - 'tours.collection.listsFailed': 'Non è stato possibile caricare le raccolte.', - 'tours.collection.toursFailed': 'Non è stato possibile caricare i percorsi di questa lista.', - 'tours.collection.points': '{count} punti di passaggio', - 'tours.collection.points.one': '{count} punto di passaggio', - 'tours.collection.savedFrom': 'Tenuto da', - 'tours.collection.source': 'Tenuto da “{tour}” in “{trip}”', - 'tours.collection.keptBy': 'Tenuto da {name}', - 'tours.collection.add': 'Aggiungi a un viaggio', - 'tours.collection.addHint': 'Crea un nuovo percorso a sé nel viaggio che scegli', - 'tours.collection.remove': 'Togli dalla raccolta', - 'tours.collection.removeTitle': 'Togliere questo percorso dalla raccolta?', - 'tours.collection.removeBody': 'I percorsi già creati da questo nei tuoi viaggi restano come sono.', - 'tours.collection.removed': 'Il percorso è stato tolto dalla raccolta.', - 'tours.collection.removeFailed': 'Non è stato possibile togliere il percorso.', - 'tours.collection.takeEyebrow': 'Dalla raccolta', - 'tours.collection.takeSub': 'Diventa un percorso a sé nel viaggio scelto, senza giorni. La raccolta resta com’è.', - 'tours.collection.intoTrip': 'Nel viaggio', - 'tours.collection.noPermission': 'Non puoi aggiungere percorsi a questo viaggio', - 'tours.collection.noTrips': 'Non hai ancora nessun viaggio a cui aggiungerlo.', - 'tours.collection.withPoints': 'Con {count} punti di passaggio', - 'tours.collection.withPoints.one': 'Con {count} punto di passaggio', - 'tours.collection.withPointsHint': 'Partenza, tappe e arrivo seguono nel loro ordine.', - 'tours.collection.lineOnly': 'Solo la linea', - 'tours.collection.lineOnlyHint': 'La linea resta come è stata salvata. Nessun punto di passaggio viene aggiunto.', - 'tours.collection.needsPoints': - 'Questo percorso non ha ancora una linea, quindi i suoi punti di passaggio devono seguire.', - 'tours.collection.nameInTrip': 'Nome nel viaggio', - 'tours.collection.taken': '“{name}” ora è un percorso di “{trip}”.', - 'tours.collection.takeFailed': 'Non è stato possibile aggiungere il percorso al viaggio.', - 'tours.collection.openTrip': 'Apri il viaggio', }; export default tours; diff --git a/shared/src/i18n/ja/index.ts b/shared/src/i18n/ja/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/ja/index.ts +++ b/shared/src/i18n/ja/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/ja/tourCollection.ts b/shared/src/i18n/ja/tourCollection.ts new file mode 100644 index 000000000..336ce6e94 --- /dev/null +++ b/shared/src/i18n/ja/tourCollection.ts @@ -0,0 +1,46 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'コレクションに保存', + 'tours.collection.saveHint': 'このツアーの独立したコピーをコレクションのひとつに保存します', + 'tours.collection.saveFirst': 'コレクションに保存する前にツアーを保存してください', + 'tours.collection.saveSub': '独立したコピーです。このツアーを後で変更しても反映されません。', + 'tours.collection.list': 'コレクション', + 'tours.collection.readOnly': 'このリストは閲覧のみできます', + 'tours.collection.noLists': 'まだコレクションがありません。', + 'tours.collection.openCollections': 'コレクションを開く', + 'tours.collection.nameThere': 'コレクションでの名前', + 'tours.collection.keep': '保存', + 'tours.collection.kept': '「{name}」を「{list}」に保存しました。', + 'tours.collection.keepFailed': 'ツアーを保存できませんでした。', + 'tours.collection.offline': 'コレクションには接続が必要です。', + 'tours.collection.listsFailed': 'コレクションを読み込めませんでした。', + 'tours.collection.toursFailed': 'このリストのツアーを読み込めませんでした。', + 'tours.collection.points': '経由地 {count} 件', + 'tours.collection.savedFrom': '保存元', + 'tours.collection.source': '「{trip}」の「{tour}」から保存', + 'tours.collection.keptBy': '{name} が保存', + 'tours.collection.add': '旅に追加', + 'tours.collection.addHint': '選んだ旅に独立した新しいツアーを作成します', + 'tours.collection.remove': 'コレクションから削除', + 'tours.collection.removeTitle': 'このツアーをコレクションから削除しますか?', + 'tours.collection.removeBody': 'これから旅に作成済みのツアーはそのまま残ります。', + 'tours.collection.removed': 'ツアーをコレクションから削除しました。', + 'tours.collection.removeFailed': 'ツアーを削除できませんでした。', + 'tours.collection.takeEyebrow': 'コレクションから', + 'tours.collection.takeSub': '選んだ旅の独立したツアーになります(日程なし)。コレクションは変わりません。', + 'tours.collection.intoTrip': '追加先の旅', + 'tours.collection.noPermission': 'この旅にはツアーを追加できません', + 'tours.collection.noTrips': '追加できる旅がまだありません。', + 'tours.collection.withPoints': '経由地 {count} 件と一緒に', + 'tours.collection.withPointsHint': '出発点、途中の地点、終点が順番どおりに移ります。', + 'tours.collection.lineOnly': '線のみ', + 'tours.collection.lineOnlyHint': '線は保存時のままです。経由地は追加されません。', + 'tours.collection.needsPoints': 'このツアーにはまだ線がないため、経由地も一緒に移す必要があります。', + 'tours.collection.noLine': 'まだラインはなく、経由地だけです', + 'tours.collection.nameInTrip': '旅での名前', + 'tours.collection.taken': '「{name}」は「{trip}」のツアーになりました。', + 'tours.collection.takeFailed': 'ツアーを旅に追加できませんでした。', + 'tours.collection.openTrip': '旅を開く', +}; +export default tourCollection; diff --git a/shared/src/i18n/ja/tours.ts b/shared/src/i18n/ja/tours.ts index 690c36457..1e8863812 100644 --- a/shared/src/i18n/ja/tours.ts +++ b/shared/src/i18n/ja/tours.ts @@ -1262,45 +1262,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'ツアー全体', 'tours.stages.totalPartial': '{of} 件中 {known} 件のステージで判明', 'tours.stages.openInPlanner': 'このステージをプランナーで開く', - 'tours.collection.save': 'コレクションに保存', - 'tours.collection.saveHint': 'このツアーの独立したコピーをコレクションのひとつに保存します', - 'tours.collection.saveFirst': 'コレクションに保存する前にツアーを保存してください', - 'tours.collection.saveSub': '独立したコピーです。このツアーを後で変更しても反映されません。', - 'tours.collection.list': 'コレクション', - 'tours.collection.readOnly': 'このリストは閲覧のみできます', - 'tours.collection.noLists': 'まだコレクションがありません。', - 'tours.collection.openCollections': 'コレクションを開く', - 'tours.collection.nameThere': 'コレクションでの名前', - 'tours.collection.keep': '保存', - 'tours.collection.kept': '「{name}」を「{list}」に保存しました。', - 'tours.collection.keepFailed': 'ツアーを保存できませんでした。', - 'tours.collection.offline': 'コレクションには接続が必要です。', - 'tours.collection.listsFailed': 'コレクションを読み込めませんでした。', - 'tours.collection.toursFailed': 'このリストのツアーを読み込めませんでした。', - 'tours.collection.points': '経由地 {count} 件', - 'tours.collection.savedFrom': '保存元', - 'tours.collection.source': '「{trip}」の「{tour}」から保存', - 'tours.collection.keptBy': '{name} が保存', - 'tours.collection.add': '旅に追加', - 'tours.collection.addHint': '選んだ旅に独立した新しいツアーを作成します', - 'tours.collection.remove': 'コレクションから削除', - 'tours.collection.removeTitle': 'このツアーをコレクションから削除しますか?', - 'tours.collection.removeBody': 'これから旅に作成済みのツアーはそのまま残ります。', - 'tours.collection.removed': 'ツアーをコレクションから削除しました。', - 'tours.collection.removeFailed': 'ツアーを削除できませんでした。', - 'tours.collection.takeEyebrow': 'コレクションから', - 'tours.collection.takeSub': '選んだ旅の独立したツアーになります(日程なし)。コレクションは変わりません。', - 'tours.collection.intoTrip': '追加先の旅', - 'tours.collection.noPermission': 'この旅にはツアーを追加できません', - 'tours.collection.noTrips': '追加できる旅がまだありません。', - 'tours.collection.withPoints': '経由地 {count} 件と一緒に', - 'tours.collection.withPointsHint': '出発点、途中の地点、終点が順番どおりに移ります。', - 'tours.collection.lineOnly': '線のみ', - 'tours.collection.lineOnlyHint': '線は保存時のままです。経由地は追加されません。', - 'tours.collection.needsPoints': 'このツアーにはまだ線がないため、経由地も一緒に移す必要があります。', - 'tours.collection.nameInTrip': '旅での名前', - 'tours.collection.taken': '「{name}」は「{trip}」のツアーになりました。', - 'tours.collection.takeFailed': 'ツアーを旅に追加できませんでした。', - 'tours.collection.openTrip': '旅を開く', }; export default tours; diff --git a/shared/src/i18n/ko/index.ts b/shared/src/i18n/ko/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/ko/index.ts +++ b/shared/src/i18n/ko/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/ko/tourCollection.ts b/shared/src/i18n/ko/tourCollection.ts new file mode 100644 index 000000000..5fd70722f --- /dev/null +++ b/shared/src/i18n/ko/tourCollection.ts @@ -0,0 +1,46 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': '컬렉션에 보관', + 'tours.collection.saveHint': '이 투어의 독립된 사본을 내 컬렉션 중 하나에 보관합니다', + 'tours.collection.saveFirst': '컬렉션에 보관하려면 먼저 투어를 저장하세요', + 'tours.collection.saveSub': '독립된 사본입니다. 이후 이 투어를 바꿔도 반영되지 않습니다.', + 'tours.collection.list': '컬렉션', + 'tours.collection.readOnly': '이 목록은 읽기만 할 수 있습니다', + 'tours.collection.noLists': '아직 컬렉션이 없습니다.', + 'tours.collection.openCollections': '컬렉션 열기', + 'tours.collection.nameThere': '컬렉션에서의 이름', + 'tours.collection.keep': '보관', + 'tours.collection.kept': '“{name}”을(를) “{list}”에 보관했습니다.', + 'tours.collection.keepFailed': '투어를 보관하지 못했습니다.', + 'tours.collection.offline': '컬렉션에는 연결이 필요합니다.', + 'tours.collection.listsFailed': '컬렉션을 불러오지 못했습니다.', + 'tours.collection.toursFailed': '이 목록의 투어를 불러오지 못했습니다.', + 'tours.collection.points': '경유지 {count}개', + 'tours.collection.savedFrom': '보관 출처', + 'tours.collection.source': '“{trip}”의 “{tour}”에서 보관', + 'tours.collection.keptBy': '{name} 님이 보관', + 'tours.collection.add': '여행에 추가', + 'tours.collection.addHint': '선택한 여행에 독립된 새 투어를 만듭니다', + 'tours.collection.remove': '컬렉션에서 제거', + 'tours.collection.removeTitle': '이 투어를 컬렉션에서 제거할까요?', + 'tours.collection.removeBody': '이미 여행에서 이것으로 만든 투어는 그대로 남습니다.', + 'tours.collection.removed': '투어를 컬렉션에서 제거했습니다.', + 'tours.collection.removeFailed': '투어를 제거하지 못했습니다.', + 'tours.collection.takeEyebrow': '컬렉션에서', + 'tours.collection.takeSub': '선택한 여행의 독립된 투어가 되며 일정은 없습니다. 컬렉션은 그대로입니다.', + 'tours.collection.intoTrip': '추가할 여행', + 'tours.collection.noPermission': '이 여행에는 투어를 추가할 수 없습니다', + 'tours.collection.noTrips': '아직 추가할 여행이 없습니다.', + 'tours.collection.withPoints': '경유지 {count}개와 함께', + 'tours.collection.withPointsHint': '출발지, 중간 지점, 도착지가 순서대로 함께 옵니다.', + 'tours.collection.lineOnly': '선만', + 'tours.collection.lineOnlyHint': '선은 저장된 그대로입니다. 경유지는 추가되지 않습니다.', + 'tours.collection.needsPoints': '이 투어는 아직 선이 없어 경유지도 함께 가져와야 합니다.', + 'tours.collection.noLine': '아직 경로선이 없고 경유지만 있습니다', + 'tours.collection.nameInTrip': '여행에서의 이름', + 'tours.collection.taken': '“{name}”이(가) 이제 “{trip}”의 투어입니다.', + 'tours.collection.takeFailed': '투어를 여행에 추가하지 못했습니다.', + 'tours.collection.openTrip': '여행 열기', +}; +export default tourCollection; diff --git a/shared/src/i18n/ko/tours.ts b/shared/src/i18n/ko/tours.ts index 3ec095fb1..cb2c443fe 100644 --- a/shared/src/i18n/ko/tours.ts +++ b/shared/src/i18n/ko/tours.ts @@ -1260,45 +1260,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': '전체 투어', 'tours.stages.totalPartial': '{of}개 구간 중 {known}개에서 알려짐', 'tours.stages.openInPlanner': '이 구간을 플래너에서 열기', - 'tours.collection.save': '컬렉션에 보관', - 'tours.collection.saveHint': '이 투어의 독립된 사본을 내 컬렉션 중 하나에 보관합니다', - 'tours.collection.saveFirst': '컬렉션에 보관하려면 먼저 투어를 저장하세요', - 'tours.collection.saveSub': '독립된 사본입니다. 이후 이 투어를 바꿔도 반영되지 않습니다.', - 'tours.collection.list': '컬렉션', - 'tours.collection.readOnly': '이 목록은 읽기만 할 수 있습니다', - 'tours.collection.noLists': '아직 컬렉션이 없습니다.', - 'tours.collection.openCollections': '컬렉션 열기', - 'tours.collection.nameThere': '컬렉션에서의 이름', - 'tours.collection.keep': '보관', - 'tours.collection.kept': '“{name}”을(를) “{list}”에 보관했습니다.', - 'tours.collection.keepFailed': '투어를 보관하지 못했습니다.', - 'tours.collection.offline': '컬렉션에는 연결이 필요합니다.', - 'tours.collection.listsFailed': '컬렉션을 불러오지 못했습니다.', - 'tours.collection.toursFailed': '이 목록의 투어를 불러오지 못했습니다.', - 'tours.collection.points': '경유지 {count}개', - 'tours.collection.savedFrom': '보관 출처', - 'tours.collection.source': '“{trip}”의 “{tour}”에서 보관', - 'tours.collection.keptBy': '{name} 님이 보관', - 'tours.collection.add': '여행에 추가', - 'tours.collection.addHint': '선택한 여행에 독립된 새 투어를 만듭니다', - 'tours.collection.remove': '컬렉션에서 제거', - 'tours.collection.removeTitle': '이 투어를 컬렉션에서 제거할까요?', - 'tours.collection.removeBody': '이미 여행에서 이것으로 만든 투어는 그대로 남습니다.', - 'tours.collection.removed': '투어를 컬렉션에서 제거했습니다.', - 'tours.collection.removeFailed': '투어를 제거하지 못했습니다.', - 'tours.collection.takeEyebrow': '컬렉션에서', - 'tours.collection.takeSub': '선택한 여행의 독립된 투어가 되며 일정은 없습니다. 컬렉션은 그대로입니다.', - 'tours.collection.intoTrip': '추가할 여행', - 'tours.collection.noPermission': '이 여행에는 투어를 추가할 수 없습니다', - 'tours.collection.noTrips': '아직 추가할 여행이 없습니다.', - 'tours.collection.withPoints': '경유지 {count}개와 함께', - 'tours.collection.withPointsHint': '출발지, 중간 지점, 도착지가 순서대로 함께 옵니다.', - 'tours.collection.lineOnly': '선만', - 'tours.collection.lineOnlyHint': '선은 저장된 그대로입니다. 경유지는 추가되지 않습니다.', - 'tours.collection.needsPoints': '이 투어는 아직 선이 없어 경유지도 함께 가져와야 합니다.', - 'tours.collection.nameInTrip': '여행에서의 이름', - 'tours.collection.taken': '“{name}”이(가) 이제 “{trip}”의 투어입니다.', - 'tours.collection.takeFailed': '투어를 여행에 추가하지 못했습니다.', - 'tours.collection.openTrip': '여행 열기', }; export default tours; diff --git a/shared/src/i18n/nl/index.ts b/shared/src/i18n/nl/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/nl/index.ts +++ b/shared/src/i18n/nl/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/nl/tourCollection.ts b/shared/src/i18n/nl/tourCollection.ts new file mode 100644 index 000000000..db9dbfcf8 --- /dev/null +++ b/shared/src/i18n/nl/tourCollection.ts @@ -0,0 +1,49 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'In een collectie bewaren', + 'tours.collection.saveHint': 'Bewaart een zelfstandige kopie van deze tocht in een van je collecties', + 'tours.collection.saveFirst': 'Sla de tocht eerst op om hem in een collectie te bewaren', + 'tours.collection.saveSub': 'Een zelfstandige kopie. Latere wijzigingen aan deze tocht bereiken haar niet.', + 'tours.collection.list': 'Collectie', + 'tours.collection.readOnly': 'Je kunt deze lijst alleen lezen', + 'tours.collection.noLists': 'Je hebt nog geen collectie.', + 'tours.collection.openCollections': 'Collecties openen', + 'tours.collection.nameThere': 'Naam in de collectie', + 'tours.collection.keep': 'Bewaren', + 'tours.collection.kept': '‘{name}’ staat nu in ‘{list}’.', + 'tours.collection.keepFailed': 'De tocht kon niet worden bewaard.', + 'tours.collection.offline': 'Collecties hebben een verbinding nodig.', + 'tours.collection.listsFailed': 'De collecties konden niet worden geladen.', + 'tours.collection.toursFailed': 'De tochten van deze lijst konden niet worden geladen.', + 'tours.collection.points': '{count} routepunten', + 'tours.collection.points.one': '{count} routepunt', + 'tours.collection.savedFrom': 'Bewaard uit', + 'tours.collection.source': 'Bewaard uit ‘{tour}’ in ‘{trip}’', + 'tours.collection.keptBy': 'Bewaard door {name}', + 'tours.collection.add': 'Aan een reis toevoegen', + 'tours.collection.addHint': 'Maakt een eigen nieuwe tocht in een reis naar keuze', + 'tours.collection.remove': 'Uit de collectie halen', + 'tours.collection.removeTitle': 'Deze tocht uit de collectie halen?', + 'tours.collection.removeBody': 'Tochten die er al in je reizen van gemaakt zijn, blijven zoals ze zijn.', + 'tours.collection.removed': 'De tocht is uit de collectie gehaald.', + 'tours.collection.removeFailed': 'De tocht kon niet worden verwijderd.', + 'tours.collection.takeEyebrow': 'Uit de collectie', + 'tours.collection.takeSub': + 'Wordt een eigen tocht in de gekozen reis, zonder dagen. De collectie blijft zoals ze is.', + 'tours.collection.intoTrip': 'In de reis', + 'tours.collection.noPermission': 'Je mag aan deze reis geen tochten toevoegen', + 'tours.collection.noTrips': 'Je hebt nog geen reis om hem aan toe te voegen.', + 'tours.collection.withPoints': 'Met {count} routepunten', + 'tours.collection.withPoints.one': 'Met {count} routepunt', + 'tours.collection.withPointsHint': 'Start, tussenstops en einde komen mee in hun volgorde.', + 'tours.collection.lineOnly': 'Alleen de lijn', + 'tours.collection.lineOnlyHint': 'De lijn blijft zoals ze is opgeslagen. Er komen geen routepunten bij.', + 'tours.collection.needsPoints': 'Deze tocht heeft nog geen lijn, dus zijn routepunten moeten meekomen.', + 'tours.collection.noLine': 'Nog geen lijn, alleen de routepunten', + 'tours.collection.nameInTrip': 'Naam in de reis', + 'tours.collection.taken': '‘{name}’ is nu een tocht van ‘{trip}’.', + 'tours.collection.takeFailed': 'De tocht kon niet aan de reis worden toegevoegd.', + 'tours.collection.openTrip': 'Reis openen', +}; +export default tourCollection; diff --git a/shared/src/i18n/nl/tours.ts b/shared/src/i18n/nl/tours.ts index eeec33a2c..a15de36ad 100644 --- a/shared/src/i18n/nl/tours.ts +++ b/shared/src/i18n/nl/tours.ts @@ -1330,48 +1330,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Hele tocht', 'tours.stages.totalPartial': 'bekend voor {known} van {of} etappes', 'tours.stages.openInPlanner': 'Deze etappe openen in de planner', - 'tours.collection.save': 'In een collectie bewaren', - 'tours.collection.saveHint': 'Bewaart een zelfstandige kopie van deze tocht in een van je collecties', - 'tours.collection.saveFirst': 'Sla de tocht eerst op om hem in een collectie te bewaren', - 'tours.collection.saveSub': 'Een zelfstandige kopie. Latere wijzigingen aan deze tocht bereiken haar niet.', - 'tours.collection.list': 'Collectie', - 'tours.collection.readOnly': 'Je kunt deze lijst alleen lezen', - 'tours.collection.noLists': 'Je hebt nog geen collectie.', - 'tours.collection.openCollections': 'Collecties openen', - 'tours.collection.nameThere': 'Naam in de collectie', - 'tours.collection.keep': 'Bewaren', - 'tours.collection.kept': '‘{name}’ staat nu in ‘{list}’.', - 'tours.collection.keepFailed': 'De tocht kon niet worden bewaard.', - 'tours.collection.offline': 'Collecties hebben een verbinding nodig.', - 'tours.collection.listsFailed': 'De collecties konden niet worden geladen.', - 'tours.collection.toursFailed': 'De tochten van deze lijst konden niet worden geladen.', - 'tours.collection.points': '{count} routepunten', - 'tours.collection.points.one': '{count} routepunt', - 'tours.collection.savedFrom': 'Bewaard uit', - 'tours.collection.source': 'Bewaard uit ‘{tour}’ in ‘{trip}’', - 'tours.collection.keptBy': 'Bewaard door {name}', - 'tours.collection.add': 'Aan een reis toevoegen', - 'tours.collection.addHint': 'Maakt een eigen nieuwe tocht in een reis naar keuze', - 'tours.collection.remove': 'Uit de collectie halen', - 'tours.collection.removeTitle': 'Deze tocht uit de collectie halen?', - 'tours.collection.removeBody': 'Tochten die er al in je reizen van gemaakt zijn, blijven zoals ze zijn.', - 'tours.collection.removed': 'De tocht is uit de collectie gehaald.', - 'tours.collection.removeFailed': 'De tocht kon niet worden verwijderd.', - 'tours.collection.takeEyebrow': 'Uit de collectie', - 'tours.collection.takeSub': - 'Wordt een eigen tocht in de gekozen reis, zonder dagen. De collectie blijft zoals ze is.', - 'tours.collection.intoTrip': 'In de reis', - 'tours.collection.noPermission': 'Je mag aan deze reis geen tochten toevoegen', - 'tours.collection.noTrips': 'Je hebt nog geen reis om hem aan toe te voegen.', - 'tours.collection.withPoints': 'Met {count} routepunten', - 'tours.collection.withPoints.one': 'Met {count} routepunt', - 'tours.collection.withPointsHint': 'Start, tussenstops en einde komen mee in hun volgorde.', - 'tours.collection.lineOnly': 'Alleen de lijn', - 'tours.collection.lineOnlyHint': 'De lijn blijft zoals ze is opgeslagen. Er komen geen routepunten bij.', - 'tours.collection.needsPoints': 'Deze tocht heeft nog geen lijn, dus zijn routepunten moeten meekomen.', - 'tours.collection.nameInTrip': 'Naam in de reis', - 'tours.collection.taken': '‘{name}’ is nu een tocht van ‘{trip}’.', - 'tours.collection.takeFailed': 'De tocht kon niet aan de reis worden toegevoegd.', - 'tours.collection.openTrip': 'Reis openen', }; export default tours; diff --git a/shared/src/i18n/pl/index.ts b/shared/src/i18n/pl/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/pl/index.ts +++ b/shared/src/i18n/pl/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/pl/tourCollection.ts b/shared/src/i18n/pl/tourCollection.ts new file mode 100644 index 000000000..7693fb83d --- /dev/null +++ b/shared/src/i18n/pl/tourCollection.ts @@ -0,0 +1,52 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Zachowaj w kolekcji', + 'tours.collection.saveHint': 'Zachowuje niezależną kopię tej trasy w jednej z twoich kolekcji', + 'tours.collection.saveFirst': 'Najpierw zapisz trasę, aby zachować ją w kolekcji', + 'tours.collection.saveSub': 'Niezależna kopia. Późniejsze zmiany tej trasy do niej nie trafiają.', + 'tours.collection.list': 'Kolekcja', + 'tours.collection.readOnly': 'Tę listę możesz tylko czytać', + 'tours.collection.noLists': 'Nie masz jeszcze żadnej kolekcji.', + 'tours.collection.openCollections': 'Otwórz kolekcje', + 'tours.collection.nameThere': 'Nazwa w kolekcji', + 'tours.collection.keep': 'Zachowaj', + 'tours.collection.kept': '„{name}” jest teraz w „{list}”.', + 'tours.collection.keepFailed': 'Nie udało się zachować trasy.', + 'tours.collection.offline': 'Kolekcje wymagają połączenia.', + 'tours.collection.listsFailed': 'Nie udało się wczytać kolekcji.', + 'tours.collection.toursFailed': 'Nie udało się wczytać tras tej listy.', + 'tours.collection.points': '{count} punktu trasy', + 'tours.collection.points.one': '{count} punkt trasy', + 'tours.collection.points.few': '{count} punkty trasy', + 'tours.collection.points.many': '{count} punktów trasy', + 'tours.collection.savedFrom': 'Zachowano z', + 'tours.collection.source': 'Zachowano z „{tour}” w „{trip}”', + 'tours.collection.keptBy': 'Zachował(a): {name}', + 'tours.collection.add': 'Dodaj do podróży', + 'tours.collection.addHint': 'Tworzy nową, własną trasę w wybranej podróży', + 'tours.collection.remove': 'Usuń z kolekcji', + 'tours.collection.removeTitle': 'Usunąć tę trasę z kolekcji?', + 'tours.collection.removeBody': 'Trasy już z niej utworzone w twoich podróżach pozostają bez zmian.', + 'tours.collection.removed': 'Trasę usunięto z kolekcji.', + 'tours.collection.removeFailed': 'Nie udało się usunąć trasy.', + 'tours.collection.takeEyebrow': 'Z kolekcji', + 'tours.collection.takeSub': 'Staje się własną trasą wybranej podróży, bez dni. Kolekcja pozostaje bez zmian.', + 'tours.collection.intoTrip': 'Do podróży', + 'tours.collection.noPermission': 'Nie możesz dodawać tras do tej podróży', + 'tours.collection.noTrips': 'Nie masz jeszcze podróży, do której można ją dodać.', + 'tours.collection.withPoints': 'Z {count} punktu trasy', + 'tours.collection.withPoints.one': 'Z {count} punktem trasy', + 'tours.collection.withPoints.few': 'Z {count} punktami trasy', + 'tours.collection.withPoints.many': 'Z {count} punktami trasy', + 'tours.collection.withPointsHint': 'Start, przystanki i meta przechodzą w swojej kolejności.', + 'tours.collection.lineOnly': 'Tylko linia', + 'tours.collection.lineOnlyHint': 'Linia zostaje taka, jak ją zapisano. Nie dochodzą żadne punkty trasy.', + 'tours.collection.needsPoints': 'Ta trasa nie ma jeszcze linii, więc jej punkty trasy muszą przejść razem z nią.', + 'tours.collection.noLine': 'Jeszcze bez linii, tylko punkty trasy', + 'tours.collection.nameInTrip': 'Nazwa w podróży', + 'tours.collection.taken': '„{name}” jest teraz trasą podróży „{trip}”.', + 'tours.collection.takeFailed': 'Nie udało się dodać trasy do podróży.', + 'tours.collection.openTrip': 'Otwórz podróż', +}; +export default tourCollection; diff --git a/shared/src/i18n/pl/tours.ts b/shared/src/i18n/pl/tours.ts index 6121abacc..da2ef5b3f 100644 --- a/shared/src/i18n/pl/tours.ts +++ b/shared/src/i18n/pl/tours.ts @@ -1363,51 +1363,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Cała trasa', 'tours.stages.totalPartial': 'znane dla {known} z {of} etapów', 'tours.stages.openInPlanner': 'Otwórz ten etap w planerze', - 'tours.collection.save': 'Zachowaj w kolekcji', - 'tours.collection.saveHint': 'Zachowuje niezależną kopię tej trasy w jednej z twoich kolekcji', - 'tours.collection.saveFirst': 'Najpierw zapisz trasę, aby zachować ją w kolekcji', - 'tours.collection.saveSub': 'Niezależna kopia. Późniejsze zmiany tej trasy do niej nie trafiają.', - 'tours.collection.list': 'Kolekcja', - 'tours.collection.readOnly': 'Tę listę możesz tylko czytać', - 'tours.collection.noLists': 'Nie masz jeszcze żadnej kolekcji.', - 'tours.collection.openCollections': 'Otwórz kolekcje', - 'tours.collection.nameThere': 'Nazwa w kolekcji', - 'tours.collection.keep': 'Zachowaj', - 'tours.collection.kept': '„{name}” jest teraz w „{list}”.', - 'tours.collection.keepFailed': 'Nie udało się zachować trasy.', - 'tours.collection.offline': 'Kolekcje wymagają połączenia.', - 'tours.collection.listsFailed': 'Nie udało się wczytać kolekcji.', - 'tours.collection.toursFailed': 'Nie udało się wczytać tras tej listy.', - 'tours.collection.points': '{count} punktu trasy', - 'tours.collection.points.one': '{count} punkt trasy', - 'tours.collection.points.few': '{count} punkty trasy', - 'tours.collection.points.many': '{count} punktów trasy', - 'tours.collection.savedFrom': 'Zachowano z', - 'tours.collection.source': 'Zachowano z „{tour}” w „{trip}”', - 'tours.collection.keptBy': 'Zachował(a): {name}', - 'tours.collection.add': 'Dodaj do podróży', - 'tours.collection.addHint': 'Tworzy nową, własną trasę w wybranej podróży', - 'tours.collection.remove': 'Usuń z kolekcji', - 'tours.collection.removeTitle': 'Usunąć tę trasę z kolekcji?', - 'tours.collection.removeBody': 'Trasy już z niej utworzone w twoich podróżach pozostają bez zmian.', - 'tours.collection.removed': 'Trasę usunięto z kolekcji.', - 'tours.collection.removeFailed': 'Nie udało się usunąć trasy.', - 'tours.collection.takeEyebrow': 'Z kolekcji', - 'tours.collection.takeSub': 'Staje się własną trasą wybranej podróży, bez dni. Kolekcja pozostaje bez zmian.', - 'tours.collection.intoTrip': 'Do podróży', - 'tours.collection.noPermission': 'Nie możesz dodawać tras do tej podróży', - 'tours.collection.noTrips': 'Nie masz jeszcze podróży, do której można ją dodać.', - 'tours.collection.withPoints': 'Z {count} punktu trasy', - 'tours.collection.withPoints.one': 'Z {count} punktem trasy', - 'tours.collection.withPoints.few': 'Z {count} punktami trasy', - 'tours.collection.withPoints.many': 'Z {count} punktami trasy', - 'tours.collection.withPointsHint': 'Start, przystanki i meta przechodzą w swojej kolejności.', - 'tours.collection.lineOnly': 'Tylko linia', - 'tours.collection.lineOnlyHint': 'Linia zostaje taka, jak ją zapisano. Nie dochodzą żadne punkty trasy.', - 'tours.collection.needsPoints': 'Ta trasa nie ma jeszcze linii, więc jej punkty trasy muszą przejść razem z nią.', - 'tours.collection.nameInTrip': 'Nazwa w podróży', - 'tours.collection.taken': '„{name}” jest teraz trasą podróży „{trip}”.', - 'tours.collection.takeFailed': 'Nie udało się dodać trasy do podróży.', - 'tours.collection.openTrip': 'Otwórz podróż', }; export default tours; diff --git a/shared/src/i18n/ru/index.ts b/shared/src/i18n/ru/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/ru/index.ts +++ b/shared/src/i18n/ru/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/ru/tourCollection.ts b/shared/src/i18n/ru/tourCollection.ts new file mode 100644 index 000000000..d6e1b2ba4 --- /dev/null +++ b/shared/src/i18n/ru/tourCollection.ts @@ -0,0 +1,52 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Сохранить в коллекции', + 'tours.collection.saveHint': 'Сохраняет независимую копию этого маршрута в одной из ваших коллекций', + 'tours.collection.saveFirst': 'Сначала сохраните маршрут, чтобы положить его в коллекцию', + 'tours.collection.saveSub': 'Независимая копия. Последующие изменения маршрута её не затронут.', + 'tours.collection.list': 'Коллекция', + 'tours.collection.readOnly': 'Этот список доступен вам только для чтения', + 'tours.collection.noLists': 'У вас пока нет ни одной коллекции.', + 'tours.collection.openCollections': 'Открыть коллекции', + 'tours.collection.nameThere': 'Название в коллекции', + 'tours.collection.keep': 'Сохранить', + 'tours.collection.kept': '«{name}» теперь хранится в «{list}».', + 'tours.collection.keepFailed': 'Не удалось сохранить маршрут.', + 'tours.collection.offline': 'Для коллекций нужно подключение.', + 'tours.collection.listsFailed': 'Не удалось загрузить коллекции.', + 'tours.collection.toursFailed': 'Не удалось загрузить маршруты этого списка.', + 'tours.collection.points': 'Точек маршрута: {count}', + 'tours.collection.points.one': '{count} точка маршрута', + 'tours.collection.points.few': '{count} точки маршрута', + 'tours.collection.points.many': '{count} точек маршрута', + 'tours.collection.savedFrom': 'Сохранён из', + 'tours.collection.source': 'Сохранён из «{tour}» в «{trip}»', + 'tours.collection.keptBy': 'Сохранил(а): {name}', + 'tours.collection.add': 'Добавить в поездку', + 'tours.collection.addHint': 'Создаёт новый собственный маршрут в выбранной поездке', + 'tours.collection.remove': 'Убрать из коллекции', + 'tours.collection.removeTitle': 'Убрать этот маршрут из коллекции?', + 'tours.collection.removeBody': 'Маршруты, уже созданные из него в ваших поездках, останутся как есть.', + 'tours.collection.removed': 'Маршрут убран из коллекции.', + 'tours.collection.removeFailed': 'Не удалось убрать маршрут.', + 'tours.collection.takeEyebrow': 'Из коллекции', + 'tours.collection.takeSub': 'Станет собственным маршрутом выбранной поездки, без дней. Коллекция останется как есть.', + 'tours.collection.intoTrip': 'В поездку', + 'tours.collection.noPermission': 'Вы не можете добавлять маршруты в эту поездку', + 'tours.collection.noTrips': 'У вас пока нет поездки, куда его добавить.', + 'tours.collection.withPoints': 'Точек маршрута: {count}', + 'tours.collection.withPoints.one': 'С {count} точкой маршрута', + 'tours.collection.withPoints.few': 'С {count} точками маршрута', + 'tours.collection.withPoints.many': 'С {count} точками маршрута', + 'tours.collection.withPointsHint': 'Старт, остановки и финиш переходят в своём порядке.', + 'tours.collection.lineOnly': 'Только линия', + 'tours.collection.lineOnlyHint': 'Линия остаётся такой, как была сохранена. Точки маршрута не добавляются.', + 'tours.collection.needsPoints': 'У этого маршрута ещё нет линии, поэтому его точки должны перейти вместе с ним.', + 'tours.collection.noLine': 'Линии пока нет, только точки маршрута', + 'tours.collection.nameInTrip': 'Название в поездке', + 'tours.collection.taken': '«{name}» теперь маршрут поездки «{trip}».', + 'tours.collection.takeFailed': 'Не удалось добавить маршрут в поездку.', + 'tours.collection.openTrip': 'Открыть поездку', +}; +export default tourCollection; diff --git a/shared/src/i18n/ru/tours.ts b/shared/src/i18n/ru/tours.ts index a3fbe6041..713ea4e12 100644 --- a/shared/src/i18n/ru/tours.ts +++ b/shared/src/i18n/ru/tours.ts @@ -1369,51 +1369,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Весь маршрут', 'tours.stages.totalPartial': 'известно для {known} из {of} этапов', 'tours.stages.openInPlanner': 'Открыть этот этап в планировщике', - 'tours.collection.save': 'Сохранить в коллекции', - 'tours.collection.saveHint': 'Сохраняет независимую копию этого маршрута в одной из ваших коллекций', - 'tours.collection.saveFirst': 'Сначала сохраните маршрут, чтобы положить его в коллекцию', - 'tours.collection.saveSub': 'Независимая копия. Последующие изменения маршрута её не затронут.', - 'tours.collection.list': 'Коллекция', - 'tours.collection.readOnly': 'Этот список доступен вам только для чтения', - 'tours.collection.noLists': 'У вас пока нет ни одной коллекции.', - 'tours.collection.openCollections': 'Открыть коллекции', - 'tours.collection.nameThere': 'Название в коллекции', - 'tours.collection.keep': 'Сохранить', - 'tours.collection.kept': '«{name}» теперь хранится в «{list}».', - 'tours.collection.keepFailed': 'Не удалось сохранить маршрут.', - 'tours.collection.offline': 'Для коллекций нужно подключение.', - 'tours.collection.listsFailed': 'Не удалось загрузить коллекции.', - 'tours.collection.toursFailed': 'Не удалось загрузить маршруты этого списка.', - 'tours.collection.points': 'Точек маршрута: {count}', - 'tours.collection.points.one': '{count} точка маршрута', - 'tours.collection.points.few': '{count} точки маршрута', - 'tours.collection.points.many': '{count} точек маршрута', - 'tours.collection.savedFrom': 'Сохранён из', - 'tours.collection.source': 'Сохранён из «{tour}» в «{trip}»', - 'tours.collection.keptBy': 'Сохранил(а): {name}', - 'tours.collection.add': 'Добавить в поездку', - 'tours.collection.addHint': 'Создаёт новый собственный маршрут в выбранной поездке', - 'tours.collection.remove': 'Убрать из коллекции', - 'tours.collection.removeTitle': 'Убрать этот маршрут из коллекции?', - 'tours.collection.removeBody': 'Маршруты, уже созданные из него в ваших поездках, останутся как есть.', - 'tours.collection.removed': 'Маршрут убран из коллекции.', - 'tours.collection.removeFailed': 'Не удалось убрать маршрут.', - 'tours.collection.takeEyebrow': 'Из коллекции', - 'tours.collection.takeSub': 'Станет собственным маршрутом выбранной поездки, без дней. Коллекция останется как есть.', - 'tours.collection.intoTrip': 'В поездку', - 'tours.collection.noPermission': 'Вы не можете добавлять маршруты в эту поездку', - 'tours.collection.noTrips': 'У вас пока нет поездки, куда его добавить.', - 'tours.collection.withPoints': 'Точек маршрута: {count}', - 'tours.collection.withPoints.one': 'С {count} точкой маршрута', - 'tours.collection.withPoints.few': 'С {count} точками маршрута', - 'tours.collection.withPoints.many': 'С {count} точками маршрута', - 'tours.collection.withPointsHint': 'Старт, остановки и финиш переходят в своём порядке.', - 'tours.collection.lineOnly': 'Только линия', - 'tours.collection.lineOnlyHint': 'Линия остаётся такой, как была сохранена. Точки маршрута не добавляются.', - 'tours.collection.needsPoints': 'У этого маршрута ещё нет линии, поэтому его точки должны перейти вместе с ним.', - 'tours.collection.nameInTrip': 'Название в поездке', - 'tours.collection.taken': '«{name}» теперь маршрут поездки «{trip}».', - 'tours.collection.takeFailed': 'Не удалось добавить маршрут в поездку.', - 'tours.collection.openTrip': 'Открыть поездку', }; export default tours; diff --git a/shared/src/i18n/sk/index.ts b/shared/src/i18n/sk/index.ts index ec191b6db..5e1aef73b 100644 --- a/shared/src/i18n/sk/index.ts +++ b/shared/src/i18n/sk/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -71,6 +72,7 @@ const locale = { ...atlas, ...trip, ...tours, + ...tourCollection, ...wanderer, ...places, ...inspector, diff --git a/shared/src/i18n/sk/tourCollection.ts b/shared/src/i18n/sk/tourCollection.ts new file mode 100644 index 000000000..26343f7a4 --- /dev/null +++ b/shared/src/i18n/sk/tourCollection.ts @@ -0,0 +1,50 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Uložiť do zbierky', + 'tours.collection.saveHint': 'Uloží nezávislú kópiu tejto túry do jednej z tvojich zbierok', + 'tours.collection.saveFirst': 'Najprv túru ulož, aby si ju mohol dať do zbierky', + 'tours.collection.saveSub': 'Nezávislá kópia. Neskoršie zmeny tejto túry sa jej nedotknú.', + 'tours.collection.list': 'Zbierka', + 'tours.collection.readOnly': 'Tento zoznam môžeš len čítať', + 'tours.collection.noLists': 'Zatiaľ nemáš žiadnu zbierku.', + 'tours.collection.openCollections': 'Otvoriť zbierky', + 'tours.collection.nameThere': 'Názov v zbierke', + 'tours.collection.keep': 'Uložiť', + 'tours.collection.kept': '„{name}“ je teraz v zbierke „{list}“.', + 'tours.collection.keepFailed': 'Túru sa nepodarilo uložiť.', + 'tours.collection.offline': 'Zbierky potrebujú pripojenie.', + 'tours.collection.listsFailed': 'Zbierky sa nepodarilo načítať.', + 'tours.collection.toursFailed': 'Túry tohto zoznamu sa nepodarilo načítať.', + 'tours.collection.points': '{count} bodov trasy', + 'tours.collection.points.one': '{count} bod trasy', + 'tours.collection.points.few': '{count} body trasy', + 'tours.collection.savedFrom': 'Uložené z', + 'tours.collection.source': 'Uložené z „{tour}“ v „{trip}“', + 'tours.collection.keptBy': 'Uložil(a) {name}', + 'tours.collection.add': 'Pridať do cesty', + 'tours.collection.addHint': 'Vytvorí vlastnú novú túru v ceste, ktorú zvolíš', + 'tours.collection.remove': 'Odobrať zo zbierky', + 'tours.collection.removeTitle': 'Odobrať túto túru zo zbierky?', + 'tours.collection.removeBody': 'Túry, ktoré už z nej v tvojich cestách vznikli, zostanú, ako sú.', + 'tours.collection.removed': 'Túra bola odobratá zo zbierky.', + 'tours.collection.removeFailed': 'Túru sa nepodarilo odobrať.', + 'tours.collection.takeEyebrow': 'Zo zbierky', + 'tours.collection.takeSub': 'Stane sa vlastnou túrou zvolenej cesty, bez dní. Zbierka zostane, ako je.', + 'tours.collection.intoTrip': 'Do cesty', + 'tours.collection.noPermission': 'Do tejto cesty nemôžeš pridávať túry', + 'tours.collection.noTrips': 'Zatiaľ nemáš žiadnu cestu, kam ju pridať.', + 'tours.collection.withPoints': 'S {count} bodmi trasy', + 'tours.collection.withPoints.one': 'S {count} bodom trasy', + 'tours.collection.withPoints.few': 'S {count} bodmi trasy', + 'tours.collection.withPointsHint': 'Štart, zastávky a cieľ prejdú vo svojom poradí.', + 'tours.collection.lineOnly': 'Len línia', + 'tours.collection.lineOnlyHint': 'Línia zostane, ako bola uložená. Nepridajú sa žiadne body trasy.', + 'tours.collection.needsPoints': 'Táto túra zatiaľ nemá líniu, preto musia jej body trasy prejsť s ňou.', + 'tours.collection.noLine': 'Zatiaľ bez trasy, len prejazdové body', + 'tours.collection.nameInTrip': 'Názov v ceste', + 'tours.collection.taken': '„{name}“ je teraz túrou cesty „{trip}“.', + 'tours.collection.takeFailed': 'Túru sa nepodarilo pridať do cesty.', + 'tours.collection.openTrip': 'Otvoriť cestu', +}; +export default tourCollection; diff --git a/shared/src/i18n/sk/tours.ts b/shared/src/i18n/sk/tours.ts index 80e4faf1e..a5d50ba24 100644 --- a/shared/src/i18n/sk/tours.ts +++ b/shared/src/i18n/sk/tours.ts @@ -1317,49 +1317,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Celá trasa', 'tours.stages.totalPartial': 'známe pre {known} z {of} etáp', 'tours.stages.openInPlanner': 'Otvoriť túto etapu v plánovači', - 'tours.collection.save': 'Uložiť do zbierky', - 'tours.collection.saveHint': 'Uloží nezávislú kópiu tejto túry do jednej z tvojich zbierok', - 'tours.collection.saveFirst': 'Najprv túru ulož, aby si ju mohol dať do zbierky', - 'tours.collection.saveSub': 'Nezávislá kópia. Neskoršie zmeny tejto túry sa jej nedotknú.', - 'tours.collection.list': 'Zbierka', - 'tours.collection.readOnly': 'Tento zoznam môžeš len čítať', - 'tours.collection.noLists': 'Zatiaľ nemáš žiadnu zbierku.', - 'tours.collection.openCollections': 'Otvoriť zbierky', - 'tours.collection.nameThere': 'Názov v zbierke', - 'tours.collection.keep': 'Uložiť', - 'tours.collection.kept': '„{name}“ je teraz v zbierke „{list}“.', - 'tours.collection.keepFailed': 'Túru sa nepodarilo uložiť.', - 'tours.collection.offline': 'Zbierky potrebujú pripojenie.', - 'tours.collection.listsFailed': 'Zbierky sa nepodarilo načítať.', - 'tours.collection.toursFailed': 'Túry tohto zoznamu sa nepodarilo načítať.', - 'tours.collection.points': '{count} bodov trasy', - 'tours.collection.points.one': '{count} bod trasy', - 'tours.collection.points.few': '{count} body trasy', - 'tours.collection.savedFrom': 'Uložené z', - 'tours.collection.source': 'Uložené z „{tour}“ v „{trip}“', - 'tours.collection.keptBy': 'Uložil(a) {name}', - 'tours.collection.add': 'Pridať do cesty', - 'tours.collection.addHint': 'Vytvorí vlastnú novú túru v ceste, ktorú zvolíš', - 'tours.collection.remove': 'Odobrať zo zbierky', - 'tours.collection.removeTitle': 'Odobrať túto túru zo zbierky?', - 'tours.collection.removeBody': 'Túry, ktoré už z nej v tvojich cestách vznikli, zostanú, ako sú.', - 'tours.collection.removed': 'Túra bola odobratá zo zbierky.', - 'tours.collection.removeFailed': 'Túru sa nepodarilo odobrať.', - 'tours.collection.takeEyebrow': 'Zo zbierky', - 'tours.collection.takeSub': 'Stane sa vlastnou túrou zvolenej cesty, bez dní. Zbierka zostane, ako je.', - 'tours.collection.intoTrip': 'Do cesty', - 'tours.collection.noPermission': 'Do tejto cesty nemôžeš pridávať túry', - 'tours.collection.noTrips': 'Zatiaľ nemáš žiadnu cestu, kam ju pridať.', - 'tours.collection.withPoints': 'S {count} bodmi trasy', - 'tours.collection.withPoints.one': 'S {count} bodom trasy', - 'tours.collection.withPoints.few': 'S {count} bodmi trasy', - 'tours.collection.withPointsHint': 'Štart, zastávky a cieľ prejdú vo svojom poradí.', - 'tours.collection.lineOnly': 'Len línia', - 'tours.collection.lineOnlyHint': 'Línia zostane, ako bola uložená. Nepridajú sa žiadne body trasy.', - 'tours.collection.needsPoints': 'Táto túra zatiaľ nemá líniu, preto musia jej body trasy prejsť s ňou.', - 'tours.collection.nameInTrip': 'Názov v ceste', - 'tours.collection.taken': '„{name}“ je teraz túrou cesty „{trip}“.', - 'tours.collection.takeFailed': 'Túru sa nepodarilo pridať do cesty.', - 'tours.collection.openTrip': 'Otvoriť cestu', }; export default tours; diff --git a/shared/src/i18n/sv/index.ts b/shared/src/i18n/sv/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/sv/index.ts +++ b/shared/src/i18n/sv/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/sv/tourCollection.ts b/shared/src/i18n/sv/tourCollection.ts new file mode 100644 index 000000000..2d31a2ea9 --- /dev/null +++ b/shared/src/i18n/sv/tourCollection.ts @@ -0,0 +1,48 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Spara i en samling', + 'tours.collection.saveHint': 'Sparar en fristående kopia av den här turen i en av dina samlingar', + 'tours.collection.saveFirst': 'Spara turen först för att lägga den i en samling', + 'tours.collection.saveSub': 'En fristående kopia. Senare ändringar av turen når den inte.', + 'tours.collection.list': 'Samling', + 'tours.collection.readOnly': 'Du kan bara läsa den här listan', + 'tours.collection.noLists': 'Du har ingen samling än.', + 'tours.collection.openCollections': 'Öppna samlingar', + 'tours.collection.nameThere': 'Namn i samlingen', + 'tours.collection.keep': 'Spara', + 'tours.collection.kept': '”{name}” finns nu i ”{list}”.', + 'tours.collection.keepFailed': 'Turen kunde inte sparas.', + 'tours.collection.offline': 'Samlingar behöver en anslutning.', + 'tours.collection.listsFailed': 'Samlingarna kunde inte läsas in.', + 'tours.collection.toursFailed': 'Turerna i den här listan kunde inte läsas in.', + 'tours.collection.points': '{count} vägpunkter', + 'tours.collection.points.one': '{count} vägpunkt', + 'tours.collection.savedFrom': 'Sparad från', + 'tours.collection.source': 'Sparad från ”{tour}” i ”{trip}”', + 'tours.collection.keptBy': 'Sparad av {name}', + 'tours.collection.add': 'Lägg till i en resa', + 'tours.collection.addHint': 'Skapar en egen ny tur i en resa du väljer', + 'tours.collection.remove': 'Ta bort från samlingen', + 'tours.collection.removeTitle': 'Ta bort den här turen från samlingen?', + 'tours.collection.removeBody': 'Turer som redan gjorts av den i dina resor blir kvar som de är.', + 'tours.collection.removed': 'Turen togs bort från samlingen.', + 'tours.collection.removeFailed': 'Turen kunde inte tas bort.', + 'tours.collection.takeEyebrow': 'Från samlingen', + 'tours.collection.takeSub': 'Blir en egen tur i resan du väljer, utan dagar. Samlingen förblir som den är.', + 'tours.collection.intoTrip': 'Till resan', + 'tours.collection.noPermission': 'Du får inte lägga till turer i den här resan', + 'tours.collection.noTrips': 'Du har ingen resa att lägga den i än.', + 'tours.collection.withPoints': 'Med {count} vägpunkter', + 'tours.collection.withPoints.one': 'Med {count} vägpunkt', + 'tours.collection.withPointsHint': 'Start, stopp och mål följer med i sin ordning.', + 'tours.collection.lineOnly': 'Bara linjen', + 'tours.collection.lineOnlyHint': 'Linjen blir kvar som den sparades. Inga vägpunkter läggs till.', + 'tours.collection.needsPoints': 'Turen har ingen linje än, så dess vägpunkter måste följa med.', + 'tours.collection.noLine': 'Ingen linje ännu, bara vägpunkterna', + 'tours.collection.nameInTrip': 'Namn i resan', + 'tours.collection.taken': '”{name}” är nu en tur i ”{trip}”.', + 'tours.collection.takeFailed': 'Turen kunde inte läggas till i resan.', + 'tours.collection.openTrip': 'Öppna resan', +}; +export default tourCollection; diff --git a/shared/src/i18n/sv/tours.ts b/shared/src/i18n/sv/tours.ts index 87246f8cb..8ed11922f 100644 --- a/shared/src/i18n/sv/tours.ts +++ b/shared/src/i18n/sv/tours.ts @@ -1299,47 +1299,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Hela turen', 'tours.stages.totalPartial': 'känt för {known} av {of} etapper', 'tours.stages.openInPlanner': 'Öppna etappen i planeraren', - 'tours.collection.save': 'Spara i en samling', - 'tours.collection.saveHint': 'Sparar en fristående kopia av den här turen i en av dina samlingar', - 'tours.collection.saveFirst': 'Spara turen först för att lägga den i en samling', - 'tours.collection.saveSub': 'En fristående kopia. Senare ändringar av turen når den inte.', - 'tours.collection.list': 'Samling', - 'tours.collection.readOnly': 'Du kan bara läsa den här listan', - 'tours.collection.noLists': 'Du har ingen samling än.', - 'tours.collection.openCollections': 'Öppna samlingar', - 'tours.collection.nameThere': 'Namn i samlingen', - 'tours.collection.keep': 'Spara', - 'tours.collection.kept': '”{name}” finns nu i ”{list}”.', - 'tours.collection.keepFailed': 'Turen kunde inte sparas.', - 'tours.collection.offline': 'Samlingar behöver en anslutning.', - 'tours.collection.listsFailed': 'Samlingarna kunde inte läsas in.', - 'tours.collection.toursFailed': 'Turerna i den här listan kunde inte läsas in.', - 'tours.collection.points': '{count} vägpunkter', - 'tours.collection.points.one': '{count} vägpunkt', - 'tours.collection.savedFrom': 'Sparad från', - 'tours.collection.source': 'Sparad från ”{tour}” i ”{trip}”', - 'tours.collection.keptBy': 'Sparad av {name}', - 'tours.collection.add': 'Lägg till i en resa', - 'tours.collection.addHint': 'Skapar en egen ny tur i en resa du väljer', - 'tours.collection.remove': 'Ta bort från samlingen', - 'tours.collection.removeTitle': 'Ta bort den här turen från samlingen?', - 'tours.collection.removeBody': 'Turer som redan gjorts av den i dina resor blir kvar som de är.', - 'tours.collection.removed': 'Turen togs bort från samlingen.', - 'tours.collection.removeFailed': 'Turen kunde inte tas bort.', - 'tours.collection.takeEyebrow': 'Från samlingen', - 'tours.collection.takeSub': 'Blir en egen tur i resan du väljer, utan dagar. Samlingen förblir som den är.', - 'tours.collection.intoTrip': 'Till resan', - 'tours.collection.noPermission': 'Du får inte lägga till turer i den här resan', - 'tours.collection.noTrips': 'Du har ingen resa att lägga den i än.', - 'tours.collection.withPoints': 'Med {count} vägpunkter', - 'tours.collection.withPoints.one': 'Med {count} vägpunkt', - 'tours.collection.withPointsHint': 'Start, stopp och mål följer med i sin ordning.', - 'tours.collection.lineOnly': 'Bara linjen', - 'tours.collection.lineOnlyHint': 'Linjen blir kvar som den sparades. Inga vägpunkter läggs till.', - 'tours.collection.needsPoints': 'Turen har ingen linje än, så dess vägpunkter måste följa med.', - 'tours.collection.nameInTrip': 'Namn i resan', - 'tours.collection.taken': '”{name}” är nu en tur i ”{trip}”.', - 'tours.collection.takeFailed': 'Turen kunde inte läggas till i resan.', - 'tours.collection.openTrip': 'Öppna resan', }; export default tours; diff --git a/shared/src/i18n/th/index.ts b/shared/src/i18n/th/index.ts index ec191b6db..5e1aef73b 100644 --- a/shared/src/i18n/th/index.ts +++ b/shared/src/i18n/th/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -71,6 +72,7 @@ const locale = { ...atlas, ...trip, ...tours, + ...tourCollection, ...wanderer, ...places, ...inspector, diff --git a/shared/src/i18n/th/tourCollection.ts b/shared/src/i18n/th/tourCollection.ts new file mode 100644 index 000000000..a5857cb54 --- /dev/null +++ b/shared/src/i18n/th/tourCollection.ts @@ -0,0 +1,46 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'เก็บไว้ในคอลเลกชัน', + 'tours.collection.saveHint': 'เก็บสำเนาที่แยกเป็นอิสระของทัวร์นี้ไว้ในคอลเลกชันหนึ่งของคุณ', + 'tours.collection.saveFirst': 'บันทึกทัวร์ก่อนเพื่อเก็บไว้ในคอลเลกชัน', + 'tours.collection.saveSub': 'สำเนาที่แยกเป็นอิสระ การเปลี่ยนแปลงทัวร์นี้ภายหลังจะไม่ส่งผลถึงสำเนา', + 'tours.collection.list': 'คอลเลกชัน', + 'tours.collection.readOnly': 'คุณอ่านรายการนี้ได้อย่างเดียว', + 'tours.collection.noLists': 'คุณยังไม่มีคอลเลกชัน', + 'tours.collection.openCollections': 'เปิดคอลเลกชัน', + 'tours.collection.nameThere': 'ชื่อในคอลเลกชัน', + 'tours.collection.keep': 'เก็บ', + 'tours.collection.kept': 'เก็บ “{name}” ไว้ใน “{list}” แล้ว', + 'tours.collection.keepFailed': 'เก็บทัวร์ไม่ได้', + 'tours.collection.offline': 'คอลเลกชันต้องใช้การเชื่อมต่อ', + 'tours.collection.listsFailed': 'โหลดคอลเลกชันไม่ได้', + 'tours.collection.toursFailed': 'โหลดทัวร์ของรายการนี้ไม่ได้', + 'tours.collection.points': 'จุดแวะ {count} จุด', + 'tours.collection.savedFrom': 'เก็บมาจาก', + 'tours.collection.source': 'เก็บมาจาก “{tour}” ใน “{trip}”', + 'tours.collection.keptBy': '{name} เป็นผู้เก็บ', + 'tours.collection.add': 'เพิ่มลงในทริป', + 'tours.collection.addHint': 'สร้างทัวร์ใหม่ของตัวเองในทริปที่คุณเลือก', + 'tours.collection.remove': 'นำออกจากคอลเลกชัน', + 'tours.collection.removeTitle': 'นำทัวร์นี้ออกจากคอลเลกชันหรือไม่', + 'tours.collection.removeBody': 'ทัวร์ที่สร้างจากรายการนี้ในทริปของคุณแล้วจะยังคงเหมือนเดิม', + 'tours.collection.removed': 'นำทัวร์ออกจากคอลเลกชันแล้ว', + 'tours.collection.removeFailed': 'นำทัวร์ออกไม่ได้', + 'tours.collection.takeEyebrow': 'จากคอลเลกชัน', + 'tours.collection.takeSub': 'กลายเป็นทัวร์ของตัวเองในทริปที่คุณเลือก โดยไม่มีวัน คอลเลกชันยังคงเหมือนเดิม', + 'tours.collection.intoTrip': 'ลงในทริป', + 'tours.collection.noPermission': 'คุณเพิ่มทัวร์ลงในทริปนี้ไม่ได้', + 'tours.collection.noTrips': 'คุณยังไม่มีทริปที่จะเพิ่มลงไป', + 'tours.collection.withPoints': 'พร้อมจุดแวะ {count} จุด', + 'tours.collection.withPointsHint': 'จุดเริ่ม จุดพัก และจุดสิ้นสุดมาตามลำดับเดิม', + 'tours.collection.lineOnly': 'เฉพาะเส้นทาง', + 'tours.collection.lineOnlyHint': 'เส้นทางคงเดิมตามที่บันทึกไว้ ไม่มีการเพิ่มจุดแวะ', + 'tours.collection.needsPoints': 'ทัวร์นี้ยังไม่มีเส้นทาง จึงต้องนำจุดแวะมาด้วย', + 'tours.collection.noLine': 'ยังไม่มีเส้นทาง มีเพียงจุดแวะ', + 'tours.collection.nameInTrip': 'ชื่อในทริป', + 'tours.collection.taken': '“{name}” เป็นทัวร์ของ “{trip}” แล้ว', + 'tours.collection.takeFailed': 'เพิ่มทัวร์ลงในทริปไม่ได้', + 'tours.collection.openTrip': 'เปิดทริป', +}; +export default tourCollection; diff --git a/shared/src/i18n/th/tours.ts b/shared/src/i18n/th/tours.ts index 3ef483021..71d1b966e 100644 --- a/shared/src/i18n/th/tours.ts +++ b/shared/src/i18n/th/tours.ts @@ -1244,45 +1244,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'ทั้งเส้นทาง', 'tours.stages.totalPartial': 'ทราบสำหรับ {known} จาก {of} ช่วง', 'tours.stages.openInPlanner': 'เปิดช่วงนี้ในตัววางแผน', - 'tours.collection.save': 'เก็บไว้ในคอลเลกชัน', - 'tours.collection.saveHint': 'เก็บสำเนาที่แยกเป็นอิสระของทัวร์นี้ไว้ในคอลเลกชันหนึ่งของคุณ', - 'tours.collection.saveFirst': 'บันทึกทัวร์ก่อนเพื่อเก็บไว้ในคอลเลกชัน', - 'tours.collection.saveSub': 'สำเนาที่แยกเป็นอิสระ การเปลี่ยนแปลงทัวร์นี้ภายหลังจะไม่ส่งผลถึงสำเนา', - 'tours.collection.list': 'คอลเลกชัน', - 'tours.collection.readOnly': 'คุณอ่านรายการนี้ได้อย่างเดียว', - 'tours.collection.noLists': 'คุณยังไม่มีคอลเลกชัน', - 'tours.collection.openCollections': 'เปิดคอลเลกชัน', - 'tours.collection.nameThere': 'ชื่อในคอลเลกชัน', - 'tours.collection.keep': 'เก็บ', - 'tours.collection.kept': 'เก็บ “{name}” ไว้ใน “{list}” แล้ว', - 'tours.collection.keepFailed': 'เก็บทัวร์ไม่ได้', - 'tours.collection.offline': 'คอลเลกชันต้องใช้การเชื่อมต่อ', - 'tours.collection.listsFailed': 'โหลดคอลเลกชันไม่ได้', - 'tours.collection.toursFailed': 'โหลดทัวร์ของรายการนี้ไม่ได้', - 'tours.collection.points': 'จุดแวะ {count} จุด', - 'tours.collection.savedFrom': 'เก็บมาจาก', - 'tours.collection.source': 'เก็บมาจาก “{tour}” ใน “{trip}”', - 'tours.collection.keptBy': '{name} เป็นผู้เก็บ', - 'tours.collection.add': 'เพิ่มลงในทริป', - 'tours.collection.addHint': 'สร้างทัวร์ใหม่ของตัวเองในทริปที่คุณเลือก', - 'tours.collection.remove': 'นำออกจากคอลเลกชัน', - 'tours.collection.removeTitle': 'นำทัวร์นี้ออกจากคอลเลกชันหรือไม่', - 'tours.collection.removeBody': 'ทัวร์ที่สร้างจากรายการนี้ในทริปของคุณแล้วจะยังคงเหมือนเดิม', - 'tours.collection.removed': 'นำทัวร์ออกจากคอลเลกชันแล้ว', - 'tours.collection.removeFailed': 'นำทัวร์ออกไม่ได้', - 'tours.collection.takeEyebrow': 'จากคอลเลกชัน', - 'tours.collection.takeSub': 'กลายเป็นทัวร์ของตัวเองในทริปที่คุณเลือก โดยไม่มีวัน คอลเลกชันยังคงเหมือนเดิม', - 'tours.collection.intoTrip': 'ลงในทริป', - 'tours.collection.noPermission': 'คุณเพิ่มทัวร์ลงในทริปนี้ไม่ได้', - 'tours.collection.noTrips': 'คุณยังไม่มีทริปที่จะเพิ่มลงไป', - 'tours.collection.withPoints': 'พร้อมจุดแวะ {count} จุด', - 'tours.collection.withPointsHint': 'จุดเริ่ม จุดพัก และจุดสิ้นสุดมาตามลำดับเดิม', - 'tours.collection.lineOnly': 'เฉพาะเส้นทาง', - 'tours.collection.lineOnlyHint': 'เส้นทางคงเดิมตามที่บันทึกไว้ ไม่มีการเพิ่มจุดแวะ', - 'tours.collection.needsPoints': 'ทัวร์นี้ยังไม่มีเส้นทาง จึงต้องนำจุดแวะมาด้วย', - 'tours.collection.nameInTrip': 'ชื่อในทริป', - 'tours.collection.taken': '“{name}” เป็นทัวร์ของ “{trip}” แล้ว', - 'tours.collection.takeFailed': 'เพิ่มทัวร์ลงในทริปไม่ได้', - 'tours.collection.openTrip': 'เปิดทริป', }; export default tours; diff --git a/shared/src/i18n/tours-locales.spec.ts b/shared/src/i18n/tours-locales.spec.ts index 83b5e7c37..cec54dc6f 100644 --- a/shared/src/i18n/tours-locales.spec.ts +++ b/shared/src/i18n/tours-locales.spec.ts @@ -9,18 +9,28 @@ import { fileURLToPath } from 'node:url'; import ts from 'typescript'; import { describe, expect, it } from 'vitest'; -const domains = import.meta.glob<{ default: TranslationStrings }>('./*/tours.ts', { eager: true }); +type DomainModules = Record; + +const toursModules = import.meta.glob<{ default: TranslationStrings }>('./*/tours.ts', { eager: true }); + +// The tours strings live in more than one file per locale, so that none of +// them grows past the size limit: `tours.ts` holds the planner, and +// `tourCollection.ts` the tours kept in a collection. Each file is held to +// its own count. +const TOUR_DOMAINS: { file: string; generalKeyCount: number; modules: DomainModules }[] = [ + { + file: 'tours', + generalKeyCount: 1182, + modules: toursModules, + }, + { + file: 'tourCollection', + generalKeyCount: 41, + modules: import.meta.glob<{ default: TranslationStrings }>('./*/tourCollection.ts', { eager: true }), + }, +]; const aggregates = import.meta.glob<{ default: TranslationStrings }>('./*/index.ts', { eager: true }); -const englishModule = domains['./en/tours.ts']; -if (!englishModule) throw new Error('Missing English Tours domain'); -const english = englishModule.default; const tokens = (value: string) => [...value.matchAll(/\{[^{}]+\}/g)].map((match) => match[0]).sort(); -// Plural forms (`tours.import.success.one`) differ by language on purpose: -// Japanese has none, Arabic five. They are compared by the parity CLI and the -// 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 = 1222; function literalKeys(source: string): string[] { const tree = ts.createSourceFile('locale.ts', source, ts.ScriptTarget.Latest, true); @@ -33,54 +43,80 @@ function literalKeys(source: string): string[] { return keys; } -describe('Tours locale contracts', () => { - it('covers all 27 supported locales with 698 general source keys', () => { - expect(Object.keys(domains)).toHaveLength(27); - expect(Object.keys(domains).sort()).toEqual(SUPPORTED_LANGUAGE_CODES.map((code) => `./${code}/tours.ts`).sort()); - expect(generalKeys(Object.keys(english))).toHaveLength(GENERAL_KEY_COUNT); - }); +function registeredKeysOf(indexPath: string): string[] { + const indexSource = readFileSync(fileURLToPath(new URL(indexPath, import.meta.url)), 'utf8'); + const indexTree = ts.createSourceFile(indexPath, indexSource, ts.ScriptTarget.Latest, true); + const registeredKeys: string[] = []; + for (const statement of indexTree.statements) { + if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) continue; + const relativePath = statement.moduleSpecifier.text; + if (!relativePath.startsWith('./')) continue; + const domainUrl = new URL(`${relativePath}.ts`, new URL(indexPath, import.meta.url)); + registeredKeys.push(...literalKeys(readFileSync(fileURLToPath(domainUrl), 'utf8'))); + } + return registeredKeys; +} - for (const [path, { default: strings }] of Object.entries(domains)) { - it(`${path} imports, preserves placeholders and registers every key exactly once`, () => { - const domainSource = readFileSync(fileURLToPath(new URL(path, import.meta.url)), 'utf8'); - const domainKeys = literalKeys(domainSource); - expect(generalKeys(domainKeys)).toHaveLength(GENERAL_KEY_COUNT); - expect(new Set(domainKeys).size).toBe(domainKeys.length); - expect(generalKeys(Object.keys(strings)).sort()).toEqual(generalKeys(Object.keys(english)).sort()); - expect(domainSource).not.toMatch(/export\s*\{\s*default\s*\}\s*from/); - const indexPath = path.replace('/tours.ts', '/index.ts'); - const indexSource = readFileSync(fileURLToPath(new URL(indexPath, import.meta.url)), 'utf8'); - const indexTree = ts.createSourceFile(indexPath, indexSource, ts.ScriptTarget.Latest, true); - expect(indexSource.match(/import tours from ['"]\.\/tours['"]/g)).toHaveLength(1); - expect(indexSource.match(/\.\.\.tours\b/g)).toHaveLength(1); - const registeredKeys: string[] = []; - for (const statement of indexTree.statements) { - if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) continue; - const relativePath = statement.moduleSpecifier.text; - if (!relativePath.startsWith('./')) continue; - const domainUrl = new URL(`${relativePath}.ts`, new URL(indexPath, import.meta.url)); - registeredKeys.push(...literalKeys(readFileSync(fileURLToPath(domainUrl), 'utf8'))); - } - for (const [key, reference] of Object.entries(english)) { - if (pluralFormOf(key, groups)) continue; - expect(typeof strings[key], key).toBe('string'); - const value = strings[key] as string; - expect(value.trim(), key).not.toBe(''); - expect(value, key).not.toBe(key); - expect(tokens(value), key).toEqual(tokens(reference as string)); - expect( - registeredKeys.filter((registered) => registered === key), - key, - ).toHaveLength(1); - expect(aggregates[indexPath]?.default[key], key).toBe(value); - } - for (const key of domainKeys.filter((domainKey) => pluralFormOf(domainKey, groups))) { - expect( - registeredKeys.filter((registered) => registered === key), - key, - ).toHaveLength(1); - expect(aggregates[indexPath]?.default[key], key).toBe(strings[key]); - } +for (const { file, generalKeyCount, modules } of TOUR_DOMAINS) { + const englishModule = modules[`./en/${file}.ts`]; + if (!englishModule) throw new Error(`Missing English ${file} domain`); + const english = englishModule.default; + // Plural forms (`tours.import.success.one`) differ by language on purpose: + // Japanese has none, Arabic five. They are compared by the parity CLI and the + // placeholder spec; here only the general keys are. + const groups = pluralGroups(Object.keys(english)); + const generalKeys = (keys: string[]) => keys.filter((key) => !pluralFormOf(key, groups)); + + describe(`Tours locale contracts: ${file}.ts`, () => { + it(`covers all 27 supported locales with ${generalKeyCount} general source keys`, () => { + expect(Object.keys(modules)).toHaveLength(27); + expect(Object.keys(modules).sort()).toEqual( + SUPPORTED_LANGUAGE_CODES.map((code) => `./${code}/${file}.ts`).sort(), + ); + expect(generalKeys(Object.keys(english))).toHaveLength(generalKeyCount); + }); + + for (const [path, { default: strings }] of Object.entries(modules)) { + it(`${path} imports, preserves placeholders and registers every key exactly once`, () => { + const domainSource = readFileSync(fileURLToPath(new URL(path, import.meta.url)), 'utf8'); + const domainKeys = literalKeys(domainSource); + expect(generalKeys(domainKeys)).toHaveLength(generalKeyCount); + expect(new Set(domainKeys).size).toBe(domainKeys.length); + expect(generalKeys(Object.keys(strings)).sort()).toEqual(generalKeys(Object.keys(english)).sort()); + expect(domainSource).not.toMatch(/export\s*\{\s*default\s*\}\s*from/); + const indexPath = path.replace(`/${file}.ts`, '/index.ts'); + const indexSource = readFileSync(fileURLToPath(new URL(indexPath, import.meta.url)), 'utf8'); + expect(indexSource.match(new RegExp(`import ${file} from ['"]\\./${file}['"]`, 'g'))).toHaveLength(1); + expect(indexSource.match(new RegExp(`\\.\\.\\.${file}\\b`, 'g'))).toHaveLength(1); + const registeredKeys = registeredKeysOf(indexPath); + for (const [key, reference] of Object.entries(english)) { + if (pluralFormOf(key, groups)) continue; + expect(typeof strings[key], key).toBe('string'); + const value = strings[key] as string; + expect(value.trim(), key).not.toBe(''); + expect(value, key).not.toBe(key); + expect(tokens(value), key).toEqual(tokens(reference as string)); + expect( + registeredKeys.filter((registered) => registered === key), + key, + ).toHaveLength(1); + expect(aggregates[indexPath]?.default[key], key).toBe(value); + } + for (const key of domainKeys.filter((domainKey) => pluralFormOf(domainKey, groups))) { + expect( + registeredKeys.filter((registered) => registered === key), + key, + ).toHaveLength(1); + expect(aggregates[indexPath]?.default[key], key).toBe(strings[key]); + } + }); + } + }); +} + +describe('Tours locale contracts: safety strings', () => { + for (const [path, { default: strings }] of Object.entries(toursModules)) { + it(`${path} carries the safety notes`, () => { for (const key of [ 'tours.planner.safetyNote', 'tours.planner.difficulty.t3Warning', diff --git a/shared/src/i18n/tr/index.ts b/shared/src/i18n/tr/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/tr/index.ts +++ b/shared/src/i18n/tr/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/tr/tourCollection.ts b/shared/src/i18n/tr/tourCollection.ts new file mode 100644 index 000000000..ec12c1cc2 --- /dev/null +++ b/shared/src/i18n/tr/tourCollection.ts @@ -0,0 +1,49 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Bir koleksiyonda sakla', + 'tours.collection.saveHint': 'Bu turun bağımsız bir kopyasını koleksiyonlarınızdan birinde saklar', + 'tours.collection.saveFirst': 'Koleksiyonda saklamak için önce turu kaydedin', + 'tours.collection.saveSub': 'Bağımsız bir kopya. Bu turdaki sonraki değişiklikler ona ulaşmaz.', + 'tours.collection.list': 'Koleksiyon', + 'tours.collection.readOnly': 'Bu listeyi yalnızca okuyabilirsiniz', + 'tours.collection.noLists': 'Henüz bir koleksiyonunuz yok.', + 'tours.collection.openCollections': 'Koleksiyonları aç', + 'tours.collection.nameThere': 'Koleksiyondaki ad', + 'tours.collection.keep': 'Sakla', + 'tours.collection.kept': '“{name}” artık “{list}” içinde.', + 'tours.collection.keepFailed': 'Tur saklanamadı.', + 'tours.collection.offline': 'Koleksiyonlar bağlantı gerektirir.', + 'tours.collection.listsFailed': 'Koleksiyonlar yüklenemedi.', + 'tours.collection.toursFailed': 'Bu listenin turları yüklenemedi.', + 'tours.collection.points': '{count} ara nokta', + 'tours.collection.points.one': '{count} ara nokta', + 'tours.collection.savedFrom': 'Nereden saklandı', + 'tours.collection.source': '“{trip}” gezisindeki “{tour}” turundan saklandı', + 'tours.collection.keptBy': 'Saklayan: {name}', + 'tours.collection.add': 'Bir geziye ekle', + 'tours.collection.addHint': 'Seçtiğiniz bir gezide kendine ait yeni bir tur oluşturur', + 'tours.collection.remove': 'Koleksiyondan çıkar', + 'tours.collection.removeTitle': 'Bu tur koleksiyondan çıkarılsın mı?', + 'tours.collection.removeBody': 'Gezilerinizde ondan daha önce oluşturulan turlar olduğu gibi kalır.', + 'tours.collection.removed': 'Tur koleksiyondan çıkarıldı.', + 'tours.collection.removeFailed': 'Tur çıkarılamadı.', + 'tours.collection.takeEyebrow': 'Koleksiyondan', + 'tours.collection.takeSub': + 'Seçtiğiniz gezide günler olmadan kendine ait bir tur olur. Koleksiyon olduğu gibi kalır.', + 'tours.collection.intoTrip': 'Geziye', + 'tours.collection.noPermission': 'Bu geziye tur ekleyemezsiniz', + 'tours.collection.noTrips': 'Henüz ekleyebileceğiniz bir geziniz yok.', + 'tours.collection.withPoints': '{count} ara noktayla', + 'tours.collection.withPoints.one': '{count} ara noktayla', + 'tours.collection.withPointsHint': 'Başlangıç, duraklar ve bitiş kendi sıralarıyla gelir.', + 'tours.collection.lineOnly': 'Yalnızca çizgi', + 'tours.collection.lineOnlyHint': 'Çizgi kaydedildiği gibi kalır. Ara nokta eklenmez.', + 'tours.collection.needsPoints': 'Bu turun henüz çizgisi yok, bu yüzden ara noktaları da gelmeli.', + 'tours.collection.noLine': 'Henüz çizgi yok, yalnızca ara noktaları var', + 'tours.collection.nameInTrip': 'Gezideki ad', + 'tours.collection.taken': '“{name}” artık “{trip}” gezisinin bir turu.', + 'tours.collection.takeFailed': 'Tur geziye eklenemedi.', + 'tours.collection.openTrip': 'Geziyi aç', +}; +export default tourCollection; diff --git a/shared/src/i18n/tr/tours.ts b/shared/src/i18n/tr/tours.ts index f7416017b..884a9fa6b 100644 --- a/shared/src/i18n/tr/tours.ts +++ b/shared/src/i18n/tr/tours.ts @@ -1306,48 +1306,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Tüm tur', 'tours.stages.totalPartial': '{of} etabın {known} tanesi için biliniyor', 'tours.stages.openInPlanner': 'Bu etabı planlayıcıda aç', - 'tours.collection.save': 'Bir koleksiyonda sakla', - 'tours.collection.saveHint': 'Bu turun bağımsız bir kopyasını koleksiyonlarınızdan birinde saklar', - 'tours.collection.saveFirst': 'Koleksiyonda saklamak için önce turu kaydedin', - 'tours.collection.saveSub': 'Bağımsız bir kopya. Bu turdaki sonraki değişiklikler ona ulaşmaz.', - 'tours.collection.list': 'Koleksiyon', - 'tours.collection.readOnly': 'Bu listeyi yalnızca okuyabilirsiniz', - 'tours.collection.noLists': 'Henüz bir koleksiyonunuz yok.', - 'tours.collection.openCollections': 'Koleksiyonları aç', - 'tours.collection.nameThere': 'Koleksiyondaki ad', - 'tours.collection.keep': 'Sakla', - 'tours.collection.kept': '“{name}” artık “{list}” içinde.', - 'tours.collection.keepFailed': 'Tur saklanamadı.', - 'tours.collection.offline': 'Koleksiyonlar bağlantı gerektirir.', - 'tours.collection.listsFailed': 'Koleksiyonlar yüklenemedi.', - 'tours.collection.toursFailed': 'Bu listenin turları yüklenemedi.', - 'tours.collection.points': '{count} ara nokta', - 'tours.collection.points.one': '{count} ara nokta', - 'tours.collection.savedFrom': 'Nereden saklandı', - 'tours.collection.source': '“{trip}” gezisindeki “{tour}” turundan saklandı', - 'tours.collection.keptBy': 'Saklayan: {name}', - 'tours.collection.add': 'Bir geziye ekle', - 'tours.collection.addHint': 'Seçtiğiniz bir gezide kendine ait yeni bir tur oluşturur', - 'tours.collection.remove': 'Koleksiyondan çıkar', - 'tours.collection.removeTitle': 'Bu tur koleksiyondan çıkarılsın mı?', - 'tours.collection.removeBody': 'Gezilerinizde ondan daha önce oluşturulan turlar olduğu gibi kalır.', - 'tours.collection.removed': 'Tur koleksiyondan çıkarıldı.', - 'tours.collection.removeFailed': 'Tur çıkarılamadı.', - 'tours.collection.takeEyebrow': 'Koleksiyondan', - 'tours.collection.takeSub': - 'Seçtiğiniz gezide günler olmadan kendine ait bir tur olur. Koleksiyon olduğu gibi kalır.', - 'tours.collection.intoTrip': 'Geziye', - 'tours.collection.noPermission': 'Bu geziye tur ekleyemezsiniz', - 'tours.collection.noTrips': 'Henüz ekleyebileceğiniz bir geziniz yok.', - 'tours.collection.withPoints': '{count} ara noktayla', - 'tours.collection.withPoints.one': '{count} ara noktayla', - 'tours.collection.withPointsHint': 'Başlangıç, duraklar ve bitiş kendi sıralarıyla gelir.', - 'tours.collection.lineOnly': 'Yalnızca çizgi', - 'tours.collection.lineOnlyHint': 'Çizgi kaydedildiği gibi kalır. Ara nokta eklenmez.', - 'tours.collection.needsPoints': 'Bu turun henüz çizgisi yok, bu yüzden ara noktaları da gelmeli.', - 'tours.collection.nameInTrip': 'Gezideki ad', - 'tours.collection.taken': '“{name}” artık “{trip}” gezisinin bir turu.', - 'tours.collection.takeFailed': 'Tur geziye eklenemedi.', - 'tours.collection.openTrip': 'Geziyi aç', }; export default tours; diff --git a/shared/src/i18n/uk/index.ts b/shared/src/i18n/uk/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/uk/index.ts +++ b/shared/src/i18n/uk/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/uk/tourCollection.ts b/shared/src/i18n/uk/tourCollection.ts new file mode 100644 index 000000000..25f32d32e --- /dev/null +++ b/shared/src/i18n/uk/tourCollection.ts @@ -0,0 +1,52 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Зберегти в колекції', + 'tours.collection.saveHint': 'Зберігає незалежну копію цього маршруту в одній із ваших колекцій', + 'tours.collection.saveFirst': 'Спочатку збережіть маршрут, щоб покласти його в колекцію', + 'tours.collection.saveSub': 'Незалежна копія. Подальші зміни маршруту її не торкнуться.', + 'tours.collection.list': 'Колекція', + 'tours.collection.readOnly': 'Цей список ви можете лише переглядати', + 'tours.collection.noLists': 'У вас ще немає жодної колекції.', + 'tours.collection.openCollections': 'Відкрити колекції', + 'tours.collection.nameThere': 'Назва в колекції', + 'tours.collection.keep': 'Зберегти', + 'tours.collection.kept': '«{name}» тепер зберігається в «{list}».', + 'tours.collection.keepFailed': 'Не вдалося зберегти маршрут.', + 'tours.collection.offline': 'Для колекцій потрібне підключення.', + 'tours.collection.listsFailed': 'Не вдалося завантажити колекції.', + 'tours.collection.toursFailed': 'Не вдалося завантажити маршрути цього списку.', + 'tours.collection.points': 'Точок маршруту: {count}', + 'tours.collection.points.one': '{count} точка маршруту', + 'tours.collection.points.few': '{count} точки маршруту', + 'tours.collection.points.many': '{count} точок маршруту', + 'tours.collection.savedFrom': 'Збережено з', + 'tours.collection.source': 'Збережено з «{tour}» у «{trip}»', + 'tours.collection.keptBy': 'Зберіг(ла): {name}', + 'tours.collection.add': 'Додати до подорожі', + 'tours.collection.addHint': 'Створює новий власний маршрут у вибраній подорожі', + 'tours.collection.remove': 'Прибрати з колекції', + 'tours.collection.removeTitle': 'Прибрати цей маршрут із колекції?', + 'tours.collection.removeBody': 'Маршрути, вже створені з нього у ваших подорожах, залишаться як є.', + 'tours.collection.removed': 'Маршрут прибрано з колекції.', + 'tours.collection.removeFailed': 'Не вдалося прибрати маршрут.', + 'tours.collection.takeEyebrow': 'З колекції', + 'tours.collection.takeSub': 'Стане власним маршрутом вибраної подорожі, без днів. Колекція залишиться як є.', + 'tours.collection.intoTrip': 'До подорожі', + 'tours.collection.noPermission': 'Ви не можете додавати маршрути до цієї подорожі', + 'tours.collection.noTrips': 'У вас ще немає подорожі, куди його додати.', + 'tours.collection.withPoints': 'Точок маршруту: {count}', + 'tours.collection.withPoints.one': 'З {count} точкою маршруту', + 'tours.collection.withPoints.few': 'З {count} точками маршруту', + 'tours.collection.withPoints.many': 'З {count} точками маршруту', + 'tours.collection.withPointsHint': 'Старт, зупинки й фініш переходять у своєму порядку.', + 'tours.collection.lineOnly': 'Лише лінія', + 'tours.collection.lineOnlyHint': 'Лінія залишається такою, як її збережено. Точки маршруту не додаються.', + 'tours.collection.needsPoints': 'Цей маршрут ще не має лінії, тому його точки мають перейти разом із ним.', + 'tours.collection.noLine': 'Лінії ще немає, лише точки маршруту', + 'tours.collection.nameInTrip': 'Назва в подорожі', + 'tours.collection.taken': '«{name}» тепер маршрут подорожі «{trip}».', + 'tours.collection.takeFailed': 'Не вдалося додати маршрут до подорожі.', + 'tours.collection.openTrip': 'Відкрити подорож', +}; +export default tourCollection; diff --git a/shared/src/i18n/uk/tours.ts b/shared/src/i18n/uk/tours.ts index 60696239c..059c277ce 100644 --- a/shared/src/i18n/uk/tours.ts +++ b/shared/src/i18n/uk/tours.ts @@ -1355,51 +1355,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Увесь маршрут', 'tours.stages.totalPartial': 'відомо для {known} з {of} етапів', 'tours.stages.openInPlanner': 'Відкрити цей етап у планувальнику', - 'tours.collection.save': 'Зберегти в колекції', - 'tours.collection.saveHint': 'Зберігає незалежну копію цього маршруту в одній із ваших колекцій', - 'tours.collection.saveFirst': 'Спочатку збережіть маршрут, щоб покласти його в колекцію', - 'tours.collection.saveSub': 'Незалежна копія. Подальші зміни маршруту її не торкнуться.', - 'tours.collection.list': 'Колекція', - 'tours.collection.readOnly': 'Цей список ви можете лише переглядати', - 'tours.collection.noLists': 'У вас ще немає жодної колекції.', - 'tours.collection.openCollections': 'Відкрити колекції', - 'tours.collection.nameThere': 'Назва в колекції', - 'tours.collection.keep': 'Зберегти', - 'tours.collection.kept': '«{name}» тепер зберігається в «{list}».', - 'tours.collection.keepFailed': 'Не вдалося зберегти маршрут.', - 'tours.collection.offline': 'Для колекцій потрібне підключення.', - 'tours.collection.listsFailed': 'Не вдалося завантажити колекції.', - 'tours.collection.toursFailed': 'Не вдалося завантажити маршрути цього списку.', - 'tours.collection.points': 'Точок маршруту: {count}', - 'tours.collection.points.one': '{count} точка маршруту', - 'tours.collection.points.few': '{count} точки маршруту', - 'tours.collection.points.many': '{count} точок маршруту', - 'tours.collection.savedFrom': 'Збережено з', - 'tours.collection.source': 'Збережено з «{tour}» у «{trip}»', - 'tours.collection.keptBy': 'Зберіг(ла): {name}', - 'tours.collection.add': 'Додати до подорожі', - 'tours.collection.addHint': 'Створює новий власний маршрут у вибраній подорожі', - 'tours.collection.remove': 'Прибрати з колекції', - 'tours.collection.removeTitle': 'Прибрати цей маршрут із колекції?', - 'tours.collection.removeBody': 'Маршрути, вже створені з нього у ваших подорожах, залишаться як є.', - 'tours.collection.removed': 'Маршрут прибрано з колекції.', - 'tours.collection.removeFailed': 'Не вдалося прибрати маршрут.', - 'tours.collection.takeEyebrow': 'З колекції', - 'tours.collection.takeSub': 'Стане власним маршрутом вибраної подорожі, без днів. Колекція залишиться як є.', - 'tours.collection.intoTrip': 'До подорожі', - 'tours.collection.noPermission': 'Ви не можете додавати маршрути до цієї подорожі', - 'tours.collection.noTrips': 'У вас ще немає подорожі, куди його додати.', - 'tours.collection.withPoints': 'Точок маршруту: {count}', - 'tours.collection.withPoints.one': 'З {count} точкою маршруту', - 'tours.collection.withPoints.few': 'З {count} точками маршруту', - 'tours.collection.withPoints.many': 'З {count} точками маршруту', - 'tours.collection.withPointsHint': 'Старт, зупинки й фініш переходять у своєму порядку.', - 'tours.collection.lineOnly': 'Лише лінія', - 'tours.collection.lineOnlyHint': 'Лінія залишається такою, як її збережено. Точки маршруту не додаються.', - 'tours.collection.needsPoints': 'Цей маршрут ще не має лінії, тому його точки мають перейти разом із ним.', - 'tours.collection.nameInTrip': 'Назва в подорожі', - 'tours.collection.taken': '«{name}» тепер маршрут подорожі «{trip}».', - 'tours.collection.takeFailed': 'Не вдалося додати маршрут до подорожі.', - 'tours.collection.openTrip': 'Відкрити подорож', }; export default tours; diff --git a/shared/src/i18n/vi/index.ts b/shared/src/i18n/vi/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/vi/index.ts +++ b/shared/src/i18n/vi/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/vi/tourCollection.ts b/shared/src/i18n/vi/tourCollection.ts new file mode 100644 index 000000000..bea885964 --- /dev/null +++ b/shared/src/i18n/vi/tourCollection.ts @@ -0,0 +1,47 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': 'Giữ trong bộ sưu tập', + 'tours.collection.saveHint': 'Giữ một bản sao độc lập của chuyến này trong một bộ sưu tập của bạn', + 'tours.collection.saveFirst': 'Hãy lưu chuyến trước để giữ nó trong bộ sưu tập', + 'tours.collection.saveSub': 'Một bản sao độc lập. Các thay đổi sau này của chuyến không ảnh hưởng đến nó.', + 'tours.collection.list': 'Bộ sưu tập', + 'tours.collection.readOnly': 'Bạn chỉ có thể xem danh sách này', + 'tours.collection.noLists': 'Bạn chưa có bộ sưu tập nào.', + 'tours.collection.openCollections': 'Mở bộ sưu tập', + 'tours.collection.nameThere': 'Tên trong bộ sưu tập', + 'tours.collection.keep': 'Giữ', + 'tours.collection.kept': '“{name}” giờ được giữ trong “{list}”.', + 'tours.collection.keepFailed': 'Không giữ được chuyến.', + 'tours.collection.offline': 'Bộ sưu tập cần kết nối mạng.', + 'tours.collection.listsFailed': 'Không tải được các bộ sưu tập.', + 'tours.collection.toursFailed': 'Không tải được các chuyến của danh sách này.', + 'tours.collection.points': '{count} điểm tham chiếu', + 'tours.collection.savedFrom': 'Giữ từ', + 'tours.collection.source': 'Giữ từ “{tour}” trong “{trip}”', + 'tours.collection.keptBy': 'Do {name} giữ', + 'tours.collection.add': 'Thêm vào chuyến đi', + 'tours.collection.addHint': 'Tạo một chuyến mới riêng trong chuyến đi bạn chọn', + 'tours.collection.remove': 'Bỏ khỏi bộ sưu tập', + 'tours.collection.removeTitle': 'Bỏ chuyến này khỏi bộ sưu tập?', + 'tours.collection.removeBody': 'Các chuyến đã tạo từ nó trong các chuyến đi của bạn vẫn giữ nguyên.', + 'tours.collection.removed': 'Đã bỏ chuyến khỏi bộ sưu tập.', + 'tours.collection.removeFailed': 'Không bỏ được chuyến.', + 'tours.collection.takeEyebrow': 'Từ bộ sưu tập', + 'tours.collection.takeSub': + 'Trở thành một chuyến riêng trong chuyến đi bạn chọn, không có ngày. Bộ sưu tập giữ nguyên.', + 'tours.collection.intoTrip': 'Vào chuyến đi', + 'tours.collection.noPermission': 'Bạn không được thêm chuyến vào chuyến đi này', + 'tours.collection.noTrips': 'Bạn chưa có chuyến đi nào để thêm vào.', + 'tours.collection.withPoints': 'Kèm {count} điểm tham chiếu', + 'tours.collection.withPointsHint': 'Điểm đầu, các điểm dừng và điểm cuối đi theo đúng thứ tự.', + 'tours.collection.lineOnly': 'Chỉ đường nét', + 'tours.collection.lineOnlyHint': 'Đường nét giữ như khi lưu. Không thêm điểm tham chiếu nào.', + 'tours.collection.needsPoints': 'Chuyến này chưa có đường nét, nên các điểm tham chiếu phải đi cùng.', + 'tours.collection.noLine': 'Chưa có tuyến, chỉ có các điểm dừng', + 'tours.collection.nameInTrip': 'Tên trong chuyến đi', + 'tours.collection.taken': '“{name}” giờ là một chuyến của “{trip}”.', + 'tours.collection.takeFailed': 'Không thêm được chuyến vào chuyến đi.', + 'tours.collection.openTrip': 'Mở chuyến đi', +}; +export default tourCollection; diff --git a/shared/src/i18n/vi/tours.ts b/shared/src/i18n/vi/tours.ts index cff7dda50..55a4e5144 100644 --- a/shared/src/i18n/vi/tours.ts +++ b/shared/src/i18n/vi/tours.ts @@ -1288,46 +1288,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': 'Cả hành trình', 'tours.stages.totalPartial': 'đã biết cho {known} trên {of} chặng', 'tours.stages.openInPlanner': 'Mở chặng này trong trình lập kế hoạch', - 'tours.collection.save': 'Giữ trong bộ sưu tập', - 'tours.collection.saveHint': 'Giữ một bản sao độc lập của chuyến này trong một bộ sưu tập của bạn', - 'tours.collection.saveFirst': 'Hãy lưu chuyến trước để giữ nó trong bộ sưu tập', - 'tours.collection.saveSub': 'Một bản sao độc lập. Các thay đổi sau này của chuyến không ảnh hưởng đến nó.', - 'tours.collection.list': 'Bộ sưu tập', - 'tours.collection.readOnly': 'Bạn chỉ có thể xem danh sách này', - 'tours.collection.noLists': 'Bạn chưa có bộ sưu tập nào.', - 'tours.collection.openCollections': 'Mở bộ sưu tập', - 'tours.collection.nameThere': 'Tên trong bộ sưu tập', - 'tours.collection.keep': 'Giữ', - 'tours.collection.kept': '“{name}” giờ được giữ trong “{list}”.', - 'tours.collection.keepFailed': 'Không giữ được chuyến.', - 'tours.collection.offline': 'Bộ sưu tập cần kết nối mạng.', - 'tours.collection.listsFailed': 'Không tải được các bộ sưu tập.', - 'tours.collection.toursFailed': 'Không tải được các chuyến của danh sách này.', - 'tours.collection.points': '{count} điểm tham chiếu', - 'tours.collection.savedFrom': 'Giữ từ', - 'tours.collection.source': 'Giữ từ “{tour}” trong “{trip}”', - 'tours.collection.keptBy': 'Do {name} giữ', - 'tours.collection.add': 'Thêm vào chuyến đi', - 'tours.collection.addHint': 'Tạo một chuyến mới riêng trong chuyến đi bạn chọn', - 'tours.collection.remove': 'Bỏ khỏi bộ sưu tập', - 'tours.collection.removeTitle': 'Bỏ chuyến này khỏi bộ sưu tập?', - 'tours.collection.removeBody': 'Các chuyến đã tạo từ nó trong các chuyến đi của bạn vẫn giữ nguyên.', - 'tours.collection.removed': 'Đã bỏ chuyến khỏi bộ sưu tập.', - 'tours.collection.removeFailed': 'Không bỏ được chuyến.', - 'tours.collection.takeEyebrow': 'Từ bộ sưu tập', - 'tours.collection.takeSub': - 'Trở thành một chuyến riêng trong chuyến đi bạn chọn, không có ngày. Bộ sưu tập giữ nguyên.', - 'tours.collection.intoTrip': 'Vào chuyến đi', - 'tours.collection.noPermission': 'Bạn không được thêm chuyến vào chuyến đi này', - 'tours.collection.noTrips': 'Bạn chưa có chuyến đi nào để thêm vào.', - 'tours.collection.withPoints': 'Kèm {count} điểm tham chiếu', - 'tours.collection.withPointsHint': 'Điểm đầu, các điểm dừng và điểm cuối đi theo đúng thứ tự.', - 'tours.collection.lineOnly': 'Chỉ đường nét', - 'tours.collection.lineOnlyHint': 'Đường nét giữ như khi lưu. Không thêm điểm tham chiếu nào.', - 'tours.collection.needsPoints': 'Chuyến này chưa có đường nét, nên các điểm tham chiếu phải đi cùng.', - 'tours.collection.nameInTrip': 'Tên trong chuyến đi', - 'tours.collection.taken': '“{name}” giờ là một chuyến của “{trip}”.', - 'tours.collection.takeFailed': 'Không thêm được chuyến vào chuyến đi.', - 'tours.collection.openTrip': 'Mở chuyến đi', }; export default tours; diff --git a/shared/src/i18n/zh-TW/index.ts b/shared/src/i18n/zh-TW/index.ts index b6ade9a7c..1ae5cf38e 100644 --- a/shared/src/i18n/zh-TW/index.ts +++ b/shared/src/i18n/zh-TW/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/zh-TW/tourCollection.ts b/shared/src/i18n/zh-TW/tourCollection.ts new file mode 100644 index 000000000..01bcf0e29 --- /dev/null +++ b/shared/src/i18n/zh-TW/tourCollection.ts @@ -0,0 +1,46 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': '保存到收藏', + 'tours.collection.saveHint': '將這條路線的獨立副本保存到你的某個收藏中', + 'tours.collection.saveFirst': '請先儲存路線,再放入收藏', + 'tours.collection.saveSub': '獨立副本。之後對這條路線的修改不會影響它。', + 'tours.collection.list': '收藏', + 'tours.collection.readOnly': '你只能檢視此清單', + 'tours.collection.noLists': '你還沒有任何收藏。', + 'tours.collection.openCollections': '開啟收藏', + 'tours.collection.nameThere': '在收藏中的名稱', + 'tours.collection.keep': '保存', + 'tours.collection.kept': '「{name}」已保存到「{list}」。', + 'tours.collection.keepFailed': '無法保存路線。', + 'tours.collection.offline': '收藏需要網路連線。', + 'tours.collection.listsFailed': '無法載入收藏。', + 'tours.collection.toursFailed': '無法載入此清單的路線。', + 'tours.collection.points': '{count} 個途經點', + 'tours.collection.savedFrom': '保存自', + 'tours.collection.source': '保存自「{trip}」中的「{tour}」', + 'tours.collection.keptBy': '由 {name} 保存', + 'tours.collection.add': '加入行程', + 'tours.collection.addHint': '在你選擇的行程中新增一條獨立路線', + 'tours.collection.remove': '從收藏中移除', + 'tours.collection.removeTitle': '要從收藏中移除這條路線嗎?', + 'tours.collection.removeBody': '已在你的行程中由它建立的路線保持不變。', + 'tours.collection.removed': '已從收藏中移除路線。', + 'tours.collection.removeFailed': '無法移除路線。', + 'tours.collection.takeEyebrow': '來自收藏', + 'tours.collection.takeSub': '在所選行程中成為一條獨立路線,不分配日期。收藏保持不變。', + 'tours.collection.intoTrip': '加入的行程', + 'tours.collection.noPermission': '你不能在此行程加入路線', + 'tours.collection.noTrips': '你還沒有可以加入的行程。', + 'tours.collection.withPoints': '連同 {count} 個途經點', + 'tours.collection.withPointsHint': '起點、中途點和終點依原順序一起帶入。', + 'tours.collection.lineOnly': '僅線路', + 'tours.collection.lineOnlyHint': '線路維持儲存時的樣子,不加入任何途經點。', + 'tours.collection.needsPoints': '這條路線還沒有線路,因此必須帶上它的途經點。', + 'tours.collection.noLine': '還沒有路線,只有途經點', + 'tours.collection.nameInTrip': '在行程中的名稱', + 'tours.collection.taken': '「{name}」現在是「{trip}」的一條路線。', + 'tours.collection.takeFailed': '無法將路線加入行程。', + 'tours.collection.openTrip': '開啟行程', +}; +export default tourCollection; diff --git a/shared/src/i18n/zh-TW/tours.ts b/shared/src/i18n/zh-TW/tours.ts index beab55b59..b65efc05f 100644 --- a/shared/src/i18n/zh-TW/tours.ts +++ b/shared/src/i18n/zh-TW/tours.ts @@ -1203,45 +1203,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': '整條路線', 'tours.stages.totalPartial': '{of} 個階段中 {known} 個已知', 'tours.stages.openInPlanner': '在規劃器中開啟此階段', - 'tours.collection.save': '保存到收藏', - 'tours.collection.saveHint': '將這條路線的獨立副本保存到你的某個收藏中', - 'tours.collection.saveFirst': '請先儲存路線,再放入收藏', - 'tours.collection.saveSub': '獨立副本。之後對這條路線的修改不會影響它。', - 'tours.collection.list': '收藏', - 'tours.collection.readOnly': '你只能檢視此清單', - 'tours.collection.noLists': '你還沒有任何收藏。', - 'tours.collection.openCollections': '開啟收藏', - 'tours.collection.nameThere': '在收藏中的名稱', - 'tours.collection.keep': '保存', - 'tours.collection.kept': '「{name}」已保存到「{list}」。', - 'tours.collection.keepFailed': '無法保存路線。', - 'tours.collection.offline': '收藏需要網路連線。', - 'tours.collection.listsFailed': '無法載入收藏。', - 'tours.collection.toursFailed': '無法載入此清單的路線。', - 'tours.collection.points': '{count} 個途經點', - 'tours.collection.savedFrom': '保存自', - 'tours.collection.source': '保存自「{trip}」中的「{tour}」', - 'tours.collection.keptBy': '由 {name} 保存', - 'tours.collection.add': '加入行程', - 'tours.collection.addHint': '在你選擇的行程中新增一條獨立路線', - 'tours.collection.remove': '從收藏中移除', - 'tours.collection.removeTitle': '要從收藏中移除這條路線嗎?', - 'tours.collection.removeBody': '已在你的行程中由它建立的路線保持不變。', - 'tours.collection.removed': '已從收藏中移除路線。', - 'tours.collection.removeFailed': '無法移除路線。', - 'tours.collection.takeEyebrow': '來自收藏', - 'tours.collection.takeSub': '在所選行程中成為一條獨立路線,不分配日期。收藏保持不變。', - 'tours.collection.intoTrip': '加入的行程', - 'tours.collection.noPermission': '你不能在此行程加入路線', - 'tours.collection.noTrips': '你還沒有可以加入的行程。', - 'tours.collection.withPoints': '連同 {count} 個途經點', - 'tours.collection.withPointsHint': '起點、中途點和終點依原順序一起帶入。', - 'tours.collection.lineOnly': '僅線路', - 'tours.collection.lineOnlyHint': '線路維持儲存時的樣子,不加入任何途經點。', - 'tours.collection.needsPoints': '這條路線還沒有線路,因此必須帶上它的途經點。', - 'tours.collection.nameInTrip': '在行程中的名稱', - 'tours.collection.taken': '「{name}」現在是「{trip}」的一條路線。', - 'tours.collection.takeFailed': '無法將路線加入行程。', - 'tours.collection.openTrip': '開啟行程', }; export default tours; diff --git a/shared/src/i18n/zh/index.ts b/shared/src/i18n/zh/index.ts index 3fc4b520f..50d111aba 100644 --- a/shared/src/i18n/zh/index.ts +++ b/shared/src/i18n/zh/index.ts @@ -46,6 +46,7 @@ import shared from './shared'; import storage from './storage'; import system_notice from './system_notice'; import todo from './todo'; +import tourCollection from './tourCollection'; import tours from './tours'; import transport from './transport'; import trip from './trip'; @@ -61,6 +62,7 @@ const locale = { ...dashboard, ...roadtrip, ...tours, + ...tourCollection, ...wanderer, ...settings, ...admin, diff --git a/shared/src/i18n/zh/tourCollection.ts b/shared/src/i18n/zh/tourCollection.ts new file mode 100644 index 000000000..7e9ab989a --- /dev/null +++ b/shared/src/i18n/zh/tourCollection.ts @@ -0,0 +1,46 @@ +import type { TranslationStrings } from '../types'; + +const tourCollection: TranslationStrings = { + 'tours.collection.save': '保存到收藏', + 'tours.collection.saveHint': '将这条路线的独立副本保存到你的某个收藏中', + 'tours.collection.saveFirst': '请先保存路线,再放入收藏', + 'tours.collection.saveSub': '独立副本。之后对这条路线的修改不会影响它。', + 'tours.collection.list': '收藏', + 'tours.collection.readOnly': '你只能查看此列表', + 'tours.collection.noLists': '你还没有任何收藏。', + 'tours.collection.openCollections': '打开收藏', + 'tours.collection.nameThere': '在收藏中的名称', + 'tours.collection.keep': '保存', + 'tours.collection.kept': '“{name}”已保存到“{list}”。', + 'tours.collection.keepFailed': '无法保存路线。', + 'tours.collection.offline': '收藏需要网络连接。', + 'tours.collection.listsFailed': '无法加载收藏。', + 'tours.collection.toursFailed': '无法加载此列表的路线。', + 'tours.collection.points': '{count} 个途经点', + 'tours.collection.savedFrom': '保存自', + 'tours.collection.source': '保存自“{trip}”中的“{tour}”', + 'tours.collection.keptBy': '由 {name} 保存', + 'tours.collection.add': '添加到行程', + 'tours.collection.addHint': '在你选择的行程中新建一条独立路线', + 'tours.collection.remove': '从收藏中移除', + 'tours.collection.removeTitle': '要从收藏中移除这条路线吗?', + 'tours.collection.removeBody': '已在你的行程中由它创建的路线保持不变。', + 'tours.collection.removed': '已从收藏中移除路线。', + 'tours.collection.removeFailed': '无法移除路线。', + 'tours.collection.takeEyebrow': '来自收藏', + 'tours.collection.takeSub': '在所选行程中成为一条独立路线,不分配日期。收藏保持不变。', + 'tours.collection.intoTrip': '添加到的行程', + 'tours.collection.noPermission': '你不能向此行程添加路线', + 'tours.collection.noTrips': '你还没有可以添加的行程。', + 'tours.collection.withPoints': '连同 {count} 个途经点', + 'tours.collection.withPointsHint': '起点、中途点和终点按原顺序一起带入。', + 'tours.collection.lineOnly': '仅线路', + 'tours.collection.lineOnlyHint': '线路保持保存时的样子,不添加任何途经点。', + 'tours.collection.needsPoints': '这条路线还没有线路,因此必须带上它的途经点。', + 'tours.collection.noLine': '还没有线路,只有途经点', + 'tours.collection.nameInTrip': '在行程中的名称', + 'tours.collection.taken': '“{name}”现在是“{trip}”的一条路线。', + 'tours.collection.takeFailed': '无法将路线添加到行程。', + 'tours.collection.openTrip': '打开行程', +}; +export default tourCollection; diff --git a/shared/src/i18n/zh/tours.ts b/shared/src/i18n/zh/tours.ts index 12d786253..8bdf505b9 100644 --- a/shared/src/i18n/zh/tours.ts +++ b/shared/src/i18n/zh/tours.ts @@ -1204,45 +1204,5 @@ const tours: TranslationStrings = { 'tours.stages.wholeTour': '整条路线', 'tours.stages.totalPartial': '{of} 个阶段中 {known} 个已知', 'tours.stages.openInPlanner': '在规划器中打开此阶段', - 'tours.collection.save': '保存到收藏', - 'tours.collection.saveHint': '将这条路线的独立副本保存到你的某个收藏中', - 'tours.collection.saveFirst': '请先保存路线,再放入收藏', - 'tours.collection.saveSub': '独立副本。之后对这条路线的修改不会影响它。', - 'tours.collection.list': '收藏', - 'tours.collection.readOnly': '你只能查看此列表', - 'tours.collection.noLists': '你还没有任何收藏。', - 'tours.collection.openCollections': '打开收藏', - 'tours.collection.nameThere': '在收藏中的名称', - 'tours.collection.keep': '保存', - 'tours.collection.kept': '“{name}”已保存到“{list}”。', - 'tours.collection.keepFailed': '无法保存路线。', - 'tours.collection.offline': '收藏需要网络连接。', - 'tours.collection.listsFailed': '无法加载收藏。', - 'tours.collection.toursFailed': '无法加载此列表的路线。', - 'tours.collection.points': '{count} 个途经点', - 'tours.collection.savedFrom': '保存自', - 'tours.collection.source': '保存自“{trip}”中的“{tour}”', - 'tours.collection.keptBy': '由 {name} 保存', - 'tours.collection.add': '添加到行程', - 'tours.collection.addHint': '在你选择的行程中新建一条独立路线', - 'tours.collection.remove': '从收藏中移除', - 'tours.collection.removeTitle': '要从收藏中移除这条路线吗?', - 'tours.collection.removeBody': '已在你的行程中由它创建的路线保持不变。', - 'tours.collection.removed': '已从收藏中移除路线。', - 'tours.collection.removeFailed': '无法移除路线。', - 'tours.collection.takeEyebrow': '来自收藏', - 'tours.collection.takeSub': '在所选行程中成为一条独立路线,不分配日期。收藏保持不变。', - 'tours.collection.intoTrip': '添加到的行程', - 'tours.collection.noPermission': '你不能向此行程添加路线', - 'tours.collection.noTrips': '你还没有可以添加的行程。', - 'tours.collection.withPoints': '连同 {count} 个途经点', - 'tours.collection.withPointsHint': '起点、中途点和终点按原顺序一起带入。', - 'tours.collection.lineOnly': '仅线路', - 'tours.collection.lineOnlyHint': '线路保持保存时的样子,不添加任何途经点。', - 'tours.collection.needsPoints': '这条路线还没有线路,因此必须带上它的途经点。', - 'tours.collection.nameInTrip': '在行程中的名称', - 'tours.collection.taken': '“{name}”现在是“{trip}”的一条路线。', - 'tours.collection.takeFailed': '无法将路线添加到行程。', - 'tours.collection.openTrip': '打开行程', }; export default tours;