mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-21 14:36:31 +00:00
feat(tours): keep whole tours in collections and take them into trips
A saved tour can now be kept in a collection, apart from any trip, and later made into a tour of another trip. The bookmark button in a tour's footer and in the planner's head (waiting for the save while there are unsaved changes) opens a dialog with every list of the user; a list they may only read stays in it, dimmed with a lock and a tooltip. The list keeps an independent copy: the line, the type, every measure and setting, the waypoints in order with their roles, the origin, and the trip and tour it was saved from as they were called then. Its days, its links to places of the trip and its obstacle decisions stay in the trip, and later changes to the tour do not reach the copy. A collection shows its kept tours as cards above its places: the grade tile with the source badge, measures and the waypoint count as badges, the trip it came from, and who kept it. The owner or an admin of the list can remove one after a question; tours made from it stay. "Add to a trip" shows the kept tour on a map with its facts and numbered waypoints, lists the user's trips (the ones they may not add tours to dimmed), and asks outright whether the waypoints come along. "Line only" keeps the line as saved and adds no waypoints; a tour kept without a line can only bring them. The new tour has an id of its own, no days and no new places, and names the trip and tour it was saved from; the dialog then offers to open that trip. Neither the collection nor the original tour changes. On the server the kept tours are a table of their own in the tours domain (collection_tours, migration 046100), each row written whole once. Every copy, the in-trip "save as new tour", the take-over from another trip and both directions here, now goes through one copy model (tour-copy.helpers) instead of a second one. Reading and removing follow the collection's roles, keeping one also needs access to the source trip, and taking one over needs place_edit on the target trip; the kept tour is read again inside the write, so one removed meanwhile leaves no half-made tour. The MCP tools list_collection_tours, get_collection_tour, save_tour_to_collection, take_over_collection_tour and delete_collection_tour run over the same service and checks. All 27 locales carry the new strings, and the wiki describes the flow.
This commit is contained in:
@@ -1368,5 +1368,55 @@ 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;
|
||||
|
||||
@@ -1308,5 +1308,47 @@ 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;
|
||||
|
||||
@@ -1321,5 +1321,47 @@ 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;
|
||||
|
||||
@@ -1328,5 +1328,47 @@ 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;
|
||||
|
||||
@@ -1313,5 +1313,49 @@ 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;
|
||||
|
||||
@@ -1339,6 +1339,49 @@ 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;
|
||||
|
||||
@@ -1295,5 +1295,48 @@ 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;
|
||||
|
||||
@@ -1320,5 +1320,48 @@ 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;
|
||||
|
||||
@@ -1304,5 +1304,47 @@ 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;
|
||||
|
||||
@@ -1347,5 +1347,49 @@ 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;
|
||||
|
||||
@@ -1349,5 +1349,48 @@ 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;
|
||||
|
||||
@@ -1326,5 +1326,47 @@ 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;
|
||||
|
||||
@@ -1300,5 +1300,46 @@ 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;
|
||||
|
||||
@@ -1334,5 +1334,48 @@ 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;
|
||||
|
||||
@@ -1262,5 +1262,45 @@ 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;
|
||||
|
||||
@@ -1260,5 +1260,45 @@ 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;
|
||||
|
||||
@@ -1330,5 +1330,48 @@ 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;
|
||||
|
||||
@@ -1363,5 +1363,51 @@ 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;
|
||||
|
||||
@@ -1369,5 +1369,51 @@ 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;
|
||||
|
||||
@@ -1317,5 +1317,49 @@ 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;
|
||||
|
||||
@@ -1299,5 +1299,47 @@ 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;
|
||||
|
||||
@@ -1244,5 +1244,45 @@ 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;
|
||||
|
||||
@@ -20,7 +20,7 @@ const tokens = (value: string) => [...value.matchAll(/\{[^{}]+\}/g)].map((match)
|
||||
// placeholder spec; here only the general keys are.
|
||||
const groups = pluralGroups(Object.keys(english));
|
||||
const generalKeys = (keys: string[]) => keys.filter((key) => !pluralFormOf(key, groups));
|
||||
const GENERAL_KEY_COUNT = 1182;
|
||||
const GENERAL_KEY_COUNT = 1222;
|
||||
|
||||
function literalKeys(source: string): string[] {
|
||||
const tree = ts.createSourceFile('locale.ts', source, ts.ScriptTarget.Latest, true);
|
||||
|
||||
@@ -1306,5 +1306,48 @@ 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;
|
||||
|
||||
@@ -1355,5 +1355,51 @@ 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;
|
||||
|
||||
@@ -1288,5 +1288,46 @@ 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;
|
||||
|
||||
@@ -1203,5 +1203,45 @@ 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;
|
||||
|
||||
@@ -1204,5 +1204,45 @@ 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;
|
||||
|
||||
@@ -63,6 +63,7 @@ export * from './tours/tour-activity.schema';
|
||||
export * from './tours/tour-activity-stats.schema';
|
||||
export * from './tours/tour-activity-stats';
|
||||
export * from './tours/tour-library.schema';
|
||||
export * from './tours/collection-tour.schema';
|
||||
export * from './tours/tour-poi-search.schema';
|
||||
export * from './tours/tour-trail-grade.schema';
|
||||
export * from './tours/tour-walk.schema';
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
import {
|
||||
collectionTourDetailResponseSchema,
|
||||
collectionTourListResponseSchema,
|
||||
collectionTourSaveRequestSchema,
|
||||
collectionTourTakeOverRequestSchema,
|
||||
} from './collection-tour.schema';
|
||||
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
const item = {
|
||||
id: 4,
|
||||
collection_id: 9,
|
||||
name: 'Kramerplateauweg',
|
||||
description: null,
|
||||
tour_type: 'hike',
|
||||
distance: 4.8,
|
||||
elevation_gain: 533,
|
||||
elevation_loss: 530,
|
||||
duration: 156,
|
||||
planned_duration_minutes: null,
|
||||
break_additional_minutes: null,
|
||||
max_hiking_difficulty: 1,
|
||||
wanderer_ref: null,
|
||||
origin: 'trek',
|
||||
has_line: true,
|
||||
waypoint_count: 3,
|
||||
source: { tripTitle: 'Garmisch', tourName: 'Kramer' },
|
||||
saved_by: 'maurice',
|
||||
saved_at: '2026-10-20 10:00:00',
|
||||
};
|
||||
|
||||
describe('collection tour contracts (LIB-03)', () => {
|
||||
it('saves a tour of a trip under its own name or a new one, nothing else', () => {
|
||||
expect(collectionTourSaveRequestSchema.parse({ source_trip_id: 2, source_place_id: 7, name: ' Kept ' }).name).toBe(
|
||||
'Kept',
|
||||
);
|
||||
expect(collectionTourSaveRequestSchema.safeParse({ source_trip_id: 2, source_place_id: 7 }).success).toBe(true);
|
||||
expect(collectionTourSaveRequestSchema.safeParse({ source_trip_id: 2, source_place_id: 7, name: '' }).success).toBe(
|
||||
false,
|
||||
);
|
||||
expect(collectionTourSaveRequestSchema.safeParse({ source_trip_id: '2', source_place_id: 7 }).success).toBe(false);
|
||||
expect(
|
||||
collectionTourSaveRequestSchema.safeParse({ source_trip_id: 2, source_place_id: 7, collection_id: 1 }).success,
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('takes a kept tour into a trip only once the choice about its points is said', () => {
|
||||
const accepts = (body: unknown) => collectionTourTakeOverRequestSchema.safeParse(body).success;
|
||||
const body = { collection_id: 9, collection_tour_id: 4, include_waypoints: false };
|
||||
expect(collectionTourTakeOverRequestSchema.parse(body)).toEqual(body);
|
||||
expect(accepts({ collection_id: 9, collection_tour_id: 4 })).toBe(false);
|
||||
expect(accepts({ collection_tour_id: 4, include_waypoints: true })).toBe(false);
|
||||
expect(accepts({ ...body, include_waypoints: 'yes' })).toBe(false);
|
||||
expect(accepts({ ...body, day_id: 1 })).toBe(false);
|
||||
});
|
||||
|
||||
it('lists kept tours with where they came from, unknown measures staying unknown', () => {
|
||||
const answer = collectionTourListResponseSchema.parse({
|
||||
tours: [item, { ...item, id: 5, distance: null, saved_by: null }],
|
||||
});
|
||||
expect(answer.tours[1]?.distance).toBeNull();
|
||||
expect(answer.tours[1]?.saved_by).toBeNull();
|
||||
expect(collectionTourListResponseSchema.safeParse({ tours: [{ ...item, source: undefined }] }).success).toBe(false);
|
||||
expect(collectionTourListResponseSchema.safeParse({ tours: [{ ...item, origin: 'komoot' }] }).success).toBe(false);
|
||||
});
|
||||
|
||||
it('previews the line, the points in order and the trips it could go into', () => {
|
||||
const detail = collectionTourDetailResponseSchema.parse({
|
||||
tour: item,
|
||||
line: [[47.4, 11.1]],
|
||||
points: [
|
||||
{ role: 'start', name: null, shaping: false },
|
||||
{ role: 'end', name: 'Hut', shaping: false },
|
||||
],
|
||||
trips: [{ id: 3, title: 'Alps', start_date: null, end_date: null, can_add: true }],
|
||||
});
|
||||
expect(detail.points[1]?.name).toBe('Hut');
|
||||
expect(
|
||||
collectionTourDetailResponseSchema.safeParse({
|
||||
...detail,
|
||||
points: [{ role: 'middle', name: null, shaping: false }],
|
||||
}).success,
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,118 @@
|
||||
import { idSchema } from '../common/primitives.schema';
|
||||
import { tourOriginSchema } from './tour-provenance.schema';
|
||||
import { tourListItemSchema, tourNameSchema, tourWaypointRoleSchema } from './tours.schema';
|
||||
|
||||
import { z } from 'zod';
|
||||
|
||||
/**
|
||||
* LIB-03: a whole tour kept in a collection, apart from any trip. Saving one
|
||||
* makes an independent snapshot of a saved tour: its line, type, measures,
|
||||
* settings and control points as they are at that moment, and the trip and
|
||||
* tour it was saved from as they were called then. Taking it into a trip makes
|
||||
* a new tour of its own there. Nothing keeps the tour it came from, the
|
||||
* snapshot and a tour made from it in step with one another.
|
||||
*/
|
||||
|
||||
/** The most points a preview's line carries, thinned evenly along it. */
|
||||
export const COLLECTION_TOUR_PREVIEW_POINTS = 400;
|
||||
|
||||
/** Which tour of which trip to keep in the collection, and the name it gets there (the tour's own when left out). */
|
||||
export const collectionTourSaveRequestSchema = z
|
||||
.object({
|
||||
source_trip_id: idSchema,
|
||||
source_place_id: idSchema,
|
||||
name: tourNameSchema.optional(),
|
||||
})
|
||||
.strict();
|
||||
export type CollectionTourSaveRequest = z.infer<typeof collectionTourSaveRequestSchema>;
|
||||
|
||||
/**
|
||||
* Which tour of which collection to take into the trip, whether its control
|
||||
* points come along, and the name the new tour gets (the kept one's when left
|
||||
* out). The choice about the points is never assumed: it has to be said.
|
||||
*/
|
||||
export const collectionTourTakeOverRequestSchema = z
|
||||
.object({
|
||||
collection_id: idSchema,
|
||||
collection_tour_id: idSchema,
|
||||
include_waypoints: z.boolean(),
|
||||
name: tourNameSchema.optional(),
|
||||
})
|
||||
.strict();
|
||||
export type CollectionTourTakeOverRequest = z.infer<typeof collectionTourTakeOverRequestSchema>;
|
||||
|
||||
/** A tour kept in a collection as the collection lists it: its measures as they were saved, null staying null. */
|
||||
export const collectionTourItemSchema = tourListItemSchema
|
||||
.pick({
|
||||
name: true,
|
||||
description: true,
|
||||
tour_type: true,
|
||||
distance: true,
|
||||
elevation_gain: true,
|
||||
elevation_loss: true,
|
||||
duration: true,
|
||||
planned_duration_minutes: true,
|
||||
break_additional_minutes: true,
|
||||
max_hiking_difficulty: true,
|
||||
wanderer_ref: true,
|
||||
station_count: true,
|
||||
station_stay_minutes: true,
|
||||
station_stays_unknown: true,
|
||||
})
|
||||
.extend({
|
||||
id: idSchema,
|
||||
collection_id: idSchema,
|
||||
origin: tourOriginSchema,
|
||||
/** False for a city walk kept with its stations only, its way not planned yet. */
|
||||
has_line: z.boolean(),
|
||||
/** The control points kept with it; shaping points count too. */
|
||||
waypoint_count: z.number().int().nonnegative(),
|
||||
/** The trip and tour it was saved from, as they were called when it was saved. */
|
||||
source: z.object({ tripTitle: z.string(), tourName: z.string() }),
|
||||
/** Who saved it; null once that account is gone. */
|
||||
saved_by: z.string().nullable(),
|
||||
saved_at: z.string(),
|
||||
});
|
||||
export type CollectionTourItem = z.infer<typeof collectionTourItemSchema>;
|
||||
|
||||
export const collectionTourListResponseSchema = z.object({
|
||||
tours: z.array(collectionTourItemSchema),
|
||||
});
|
||||
export type CollectionTourListResponse = z.infer<typeof collectionTourListResponseSchema>;
|
||||
|
||||
export const collectionTourSaveResponseSchema = z.object({
|
||||
tour: collectionTourItemSchema,
|
||||
});
|
||||
export type CollectionTourSaveResponse = z.infer<typeof collectionTourSaveResponseSchema>;
|
||||
|
||||
/** One kept control point as the preview shows it, in route order. */
|
||||
export const collectionTourPointSchema = z.object({
|
||||
role: tourWaypointRoleSchema,
|
||||
name: z.string().nullable(),
|
||||
/** A point there only to steer the route, not a stop. */
|
||||
shaping: z.boolean(),
|
||||
});
|
||||
export type CollectionTourPoint = z.infer<typeof collectionTourPointSchema>;
|
||||
|
||||
/** A trip the user can open, and whether they may add a tour to it. */
|
||||
export const collectionTourTargetSchema = z.object({
|
||||
id: idSchema,
|
||||
title: z.string(),
|
||||
start_date: z.string().nullable(),
|
||||
end_date: z.string().nullable(),
|
||||
can_add: z.boolean(),
|
||||
});
|
||||
export type CollectionTourTarget = z.infer<typeof collectionTourTargetSchema>;
|
||||
|
||||
/**
|
||||
* Everything the take-over asks about, read anew when it opens: the kept tour,
|
||||
* its line thinned for drawing, its points in order, and the trips it could go
|
||||
* into, newest first.
|
||||
*/
|
||||
export const collectionTourDetailResponseSchema = z.object({
|
||||
tour: collectionTourItemSchema,
|
||||
line: z.array(z.tuple([z.number(), z.number()])),
|
||||
points: z.array(collectionTourPointSchema),
|
||||
trips: z.array(collectionTourTargetSchema),
|
||||
});
|
||||
export type CollectionTourDetailResponse = z.infer<typeof collectionTourDetailResponseSchema>;
|
||||
Reference in New Issue
Block a user