feat(tours): plan ski and winter tours, snowshoeing and winter hiking among them

Ski becomes "Ski & winter", a type the planner plans with six disciplines
(alpine, snowboard, cross-country, ski touring, snowshoeing, winter hiking),
nothing preselected; saving needs a discipline, and a technique for
cross-country. Every leg is drawn straight between the points through
planner/skiRouting.ts, the one place the piste router will plug in, with its
heights from the elevation source and no ski time worked out.

The hike's winter label goes entirely: its migration, column, field, marks,
GPX rule, MCP field and strings. A hike is summer only; a ski tour with the
snowshoe discipline exports as snowshoeing. The unreleased ski migration takes
the six disciplines and the collection migration loses the winter column.

The pistes are offered for a ski tour, shown until switched off, and with no
tour open, never for a hike. Export, copy, collections, stages (untimed),
actual tracks, the atlas, list and day marks (one glyph per discipline), 3D,
planning over a ski import and list_tours/get_tour_plan know the planned ski
tour.
This commit is contained in:
Maurice
2026-10-20 18:27:53 +02:00
parent 204ee2ef86
commit 164a3633ac
116 changed files with 1675 additions and 1576 deletions
+14 -11
View File
@@ -216,7 +216,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'مشي طويل',
'tourTypes.bike': 'جولة بالدراجة',
'tourTypes.run': 'جري',
'tourTypes.ski': 'تزلج',
'tourTypes.ski': 'تزلج وشتاء',
'tourTypes.kayak': 'جولة تجديف',
'tourTypes.walk': 'مشي في المدينة / مشاهدة المعالم',
'tourTypes.food': 'جولة طعام / نبيذ',
@@ -407,32 +407,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'سيرًا على الأقدام، ضمن صعوبة تحددها',
'tours.planner.tourTypeHint.bike': 'بالدراجة، مسار مناسب للتجوال أو الطريق أو الحصى أو الجبلية',
'tours.planner.tourTypeHint.kayak': 'على الماء، بقارب الكاياك أو الكانو أو لوح التجديف',
'tours.winter.title': 'نشاط شتوي',
'tours.winter.infoLabel': 'ماذا تعني علامة الشتاء',
'tours.winter.info':
'مجرد علامة للنزهة. يبقى المسار وألوان الانحدار ووقت المشي كما في أي نزهة، ولا تقول شيئًا عن الثلج أو الانهيارات الثلجية أو ما إذا كان الطريق صالحًا للمشي في الشتاء.',
'tours.winter.kind': 'نوع النشاط الشتوي',
'tours.winter.activity.winter_hike': 'مشي شتوي',
'tours.winter.activity.snowshoe': 'مشي بأحذية الثلج',
'tours.winter.labelOnly': 'وضعها المسافرون. يُخطَّط المسار والوقت كما في أي نزهة، دون فحص لظروف الشتاء.',
'tours.planner.tourTypeHint.ski': 'من ملف GPX كما سُجّل',
'tours.planner.tourTypeHint.ski': 'تزلج، لوح ثلج، أحذية ثلج، مشي شتوي',
'tours.ski.title': 'مسار تزلج',
'tours.ski.discipline': 'النوع',
'tours.ski.discipline.alpine': 'تزلج ألبي',
'tours.ski.discipline.snowboard': 'تزلج على اللوح',
'tours.ski.discipline.cross_country': 'تزلج ريفي',
'tours.ski.discipline.touring': 'تزلج جبلي',
'tours.ski.discipline.snowshoe': 'أحذية الثلج',
'tours.ski.discipline.winter_hike': 'مشي شتوي',
'tours.ski.technique': 'الأسلوب',
'tours.ski.technique.classic': 'كلاسيكي',
'tours.ski.technique.skating': 'تزحلق',
'tours.ski.technique.unknown': 'غير معروف',
'tours.ski.chooseDiscipline': 'اختر نوعًا لاستيراد المسار كتزلج.',
'tours.ski.chooseDisciplineToSave': 'اختر نوعًا لحفظ الجولة.',
'tours.ski.drawnFreely':
'تُرسم كل مرحلة بخط مستقيم بين نقاطك. لا شيء يتحقق منها مقابل المنحدرات أو المصاعد أو المسارات.',
'tours.ski.chooseTechnique': 'اختر الأسلوب، أو غير معروف.',
'tours.ski.infoLabel': 'ما يفعله TREK بمسار التزلج',
'tours.ski.info':
'يبقى كما سُجّل ولا يُعاد حسابه أبدًا. المسافة والارتفاعات من الملف. لا يحسب TREK وقتًا للتزلج، ولا يقول المسار ولا ألوان الانحدار في العرض ثلاثي الأبعاد شيئًا عن الصعوبة أو الثلج أو الانهيارات أو ما إذا كانت المسارات مفتوحة.',
'في الجولة المخطَّطة تُرسم كل مرحلة بخط مستقيم بين نقاطها، ويبقى المسار المستورد كما سُجّل. لا يُوجَّه أيٌّ منهما على المنحدرات أو المصاعد أو المسارات. تأتي الارتفاعات من التضاريس أو من الملف. لا يحسب TREK وقتًا للتزلج، ولا شيء هنا، ومنه ألوان الانحدار في العرض ثلاثي الأبعاد، يقول شيئًا عن الصعوبة أو الثلج أو الانهيارات أو ما إذا كانت المسارات مفتوحة.',
'tours.ski.time': 'وقت التزلج',
'tours.ski.timeUnknown': 'غير محسوب',
'tours.ski.timeInfoLabel': 'لماذا لا يوجد وقت تزلج',
'tours.ski.timeInfo':
'لا يحسب TREK وقت التزلج: المراحل مرسومة بخطوط مستقيمة، لا مخططة على المنحدرات أو المصاعد أو المسارات. أدخل بنفسك إجمالي الوقت المخطط إن أردت.',
'tours.ski.classifyTitle': 'تصنيف مسار التزلج',
'tours.ski.saved': 'تم حفظ التصنيف',
'tours.ski.saveFailed': 'تعذّر حفظ التصنيف.',
@@ -831,6 +831,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.many': 'استيراد {count} جولة',
'tours.conversion.introPaddle':
'الاستيراد مسار مسجّل. خطّط لجولة تجديف قابلة للتعديل: يأخذ TREK منه نقاط تحكم، ويصلها بخطوط مستقيمة كما تُرسم جولة التجديف، ويعرض مدى قربها منه. لا يتغير شيء حتى تختار.',
'tours.conversion.introSki':
'الاستيراد مسار مسجّل. خطّط لجولة تزلج قابلة للتعديل: يأخذ TREK منه نقاط تحكم، ويصلها بخطوط مستقيمة كما تُرسم جولة التزلج، ويعرض مدى قربها منه. لا يتغير شيء حتى تختار.',
'tours.conversion.closePaddle': 'يتبع الاقتراح المسار عن قرب. نقاطه موصولة بخطوط مستقيمة، لذا ليس هو الخط نفسه.',
'tours.planner.moreActions': 'إجراءات أخرى',
'tours.paddle.role.put_in': 'نقطة الإنزال',
@@ -1166,6 +1168,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'جولة على ظهر الخيل',
'tours.planner.tourTypeHint.horse': 'على ظهر الخيل، عبر مسارات فروسية معلّمة',
'tours.planner.namePlaceholder.horse': 'جولة على الخيل بلا عنوان',
'tours.planner.namePlaceholder.ski': 'جولة تزلج بلا عنوان',
'tours.horse.time': 'وقت الركوب',
'tours.horse.timeInfoLabel': 'لماذا لا يوجد وقت ركوب',
'tours.horse.timeInfo':
+14 -12
View File
@@ -200,7 +200,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Yürüş',
'tourTypes.bike': 'Velosiped turu',
'tourTypes.run': 'Qaçış',
'tourTypes.ski': 'Xizək',
'tourTypes.ski': 'Xizək və qış',
'tourTypes.kayak': 'Avarlı tur',
'tourTypes.walk': 'Şəhər / görməli yerlər gəzintisi',
'tourTypes.food': 'Yemək/şərab turu',
@@ -396,33 +396,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Piyada, təyin etdiyin çətinlik daxilində',
'tours.planner.tourTypeHint.bike': 'Velosipedlə, turinq, yol, qravel və ya MTB üçün marşrut',
'tours.planner.tourTypeHint.kayak': 'Suda, kayak, kanoe və ya SUP ilə',
'tours.winter.title': 'Qış fəaliyyəti',
'tours.winter.infoLabel': 'Qış nişanı nə edir',
'tours.winter.info':
'Yalnız yürüş üçün nişan. Marşrut, meyllilik rəngləri və yeriş vaxtı istənilən yürüşdəki kimi qalır və qar, uçqun və ya cığırın qışda keçilə bilməsi barədə heç nə demir.',
'tours.winter.kind': 'Qış fəaliyyətinin növü',
'tours.winter.activity.winter_hike': 'Qış yürüşü',
'tours.winter.activity.snowshoe': 'Qar ayaqqabısı ilə yürüş',
'tours.winter.labelOnly':
'Səyahətçilər tərəfindən qeyd edilib. Marşrut və vaxt istənilən yürüşdəki kimi planlaşdırılır, qış şəraiti üçün yoxlanılmır.',
'tours.planner.tourTypeHint.ski': 'GPX faylından, qeydə alındığı kimi',
'tours.planner.tourTypeHint.ski': 'Xizək, snoubord, qar ayaqqabısı, qış yürüşləri',
'tours.ski.title': 'Xizək izi',
'tours.ski.discipline': 'Növ',
'tours.ski.discipline.alpine': 'Alp xizəyi',
'tours.ski.discipline.snowboard': 'Snoubord',
'tours.ski.discipline.cross_country': 'Xizək qaçışı',
'tours.ski.discipline.touring': 'Dağ xizəyi turu',
'tours.ski.discipline.snowshoe': 'Qar ayaqqabısı',
'tours.ski.discipline.winter_hike': 'Qış yürüşü',
'tours.ski.technique': 'Texnika',
'tours.ski.technique.classic': 'Klassik',
'tours.ski.technique.skating': 'Konki üslubu',
'tours.ski.technique.unknown': 'Naməlum',
'tours.ski.chooseDiscipline': 'İzi xizək kimi idxal etmək üçün növ seç.',
'tours.ski.chooseDisciplineToSave': 'Turu saxlamaq üçün növ seç.',
'tours.ski.drawnFreely':
'Hər hissə nöqtələrin arasında düz xətlə çəkilir. Heç nə onu trassalar, liftlər və ya cığırlarla yoxlamır.',
'tours.ski.chooseTechnique': 'Texnikanı və ya Naməlum seç.',
'tours.ski.infoLabel': 'TREK xizək izi ilə nə edir',
'tours.ski.info':
'Qeydə alındığı kimi qalır və heç vaxt marşrutlanmır. Məsafə və hündürlüklər fayldan gəlir. TREK xizək vaxtı hesablamır, nə iz, nə də 3D-dəki meyil rəngləri çətinlik, qar, uçqun və ya trassaların açıq olub-olmaması barədə heç nə demir.',
'Planlaşdırılmış turda hər hissə nöqtələri arasında düz xətlə çəkilir, idxal olunmuş iz isə qeydə alındığı kimi qalır. Heç biri trassalar, liftlər və ya cığırlar boyunca marşrutlanmır. Hündürlüklər relyefdən və ya fayldan gəlir. TREK xizək vaxtı hesablamır və burada heç nə, 3D-dəki meyil rəngləri də daxil olmaqla, çətinlik, qar, uçqun və ya trassaların açıq olub-olmaması barədə heç nə demir.',
'tours.ski.time': 'Xizək vaxtı',
'tours.ski.timeUnknown': 'Hesablanmayıb',
'tours.ski.timeInfoLabel': 'Niyə xizək vaxtı yoxdur',
'tours.ski.timeInfo':
'TREK xizək vaxtını hesablamır: hissələr düz çəkilir, trassalar, liftlər və ya cığırlar boyunca planlaşdırılmır. İstəsən, planlaşdırılan ümumi vaxtı özün daxil et.',
'tours.ski.classifyTitle': 'Xizək izini təsnif et',
'tours.ski.saved': 'Təsnifat saxlanıldı',
'tours.ski.saveFailed': 'Təsnifatı saxlamaq alınmadı.',
@@ -808,6 +807,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': '{count} tur idxal et',
'tours.conversion.introPaddle':
'İdxal qeydə alınmış bir trekdir. Redaktə edilə bilən avarlı tur planla: TREK ondan nəzarət nöqtələri götürür, avarlı tur necə çəkilirsə onları düz xətlərlə birləşdirir və nə qədər yaxın olduğunu göstərir. Sən seçənə qədər heç nə dəyişmir.',
'tours.conversion.introSki':
'İdxal qeydə alınmış bir trekdir. Redaktə edilə bilən xizək turu planla: TREK ondan nəzarət nöqtələri götürür, xizək turu necə çəkilirsə onları düz xətlərlə birləşdirir və nə qədər yaxın olduğunu göstərir. Sən seçənə qədər heç nə dəyişmir.',
'tours.conversion.closePaddle':
'Təklif treki yaxından izləyir. Nöqtələri düz xətlərlə birləşdirilib, ona görə eyni xətt deyil.',
'tours.planner.moreActions': 'Digər əməliyyatlar',
@@ -1121,6 +1122,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'At gəzintisi',
'tours.planner.tourTypeHint.horse': 'At belində, nişanlanmış atçılıq marşrutları ilə',
'tours.planner.namePlaceholder.horse': 'Adsız at gəzintisi',
'tours.planner.namePlaceholder.ski': 'Adsız xizək turu',
'tours.horse.time': 'Sürmə vaxtı',
'tours.horse.timeInfoLabel': 'Niyə sürmə vaxtı yoxdur',
'tours.horse.timeInfo':
+14 -12
View File
@@ -205,7 +205,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Trilha',
'tourTypes.bike': 'Passeio de bicicleta',
'tourTypes.run': 'Corrida',
'tourTypes.ski': 'Esqui',
'tourTypes.ski': 'Esqui e inverno',
'tourTypes.kayak': 'Passeio de remo',
'tourTypes.walk': 'Caminhada urbana / turística',
'tourTypes.food': 'Passeio gastronômico / enológico',
@@ -402,33 +402,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'A pé, dentro de uma dificuldade que você define',
'tours.planner.tourTypeHint.bike': 'De bicicleta, com rota para cicloturismo, estrada, gravel ou MTB',
'tours.planner.tourTypeHint.kayak': 'Na água, de caiaque, canoa ou SUP',
'tours.winter.title': 'Atividade de inverno',
'tours.winter.infoLabel': 'O que a marcação de inverno faz',
'tours.winter.info':
'Apenas uma marcação da caminhada. A rota, as cores de inclinação e o tempo de caminhada continuam como em qualquer caminhada e não dizem nada sobre neve, avalanches ou se um caminho pode ser percorrido no inverno.',
'tours.winter.kind': 'Tipo de atividade de inverno',
'tours.winter.activity.winter_hike': 'Caminhada de inverno',
'tours.winter.activity.snowshoe': 'Caminhada com raquetes de neve',
'tours.winter.labelOnly':
'Marcado pelos viajantes. Rota e tempo são planejados como em qualquer caminhada, sem verificação para o inverno.',
'tours.planner.tourTypeHint.ski': 'De um arquivo GPX, como foi gravado',
'tours.planner.tourTypeHint.ski': 'Esqui, snowboard, raquetes de neve, caminhadas de inverno',
'tours.ski.title': 'Trilha de esqui',
'tours.ski.discipline': 'Modalidade',
'tours.ski.discipline.alpine': 'Alpino',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Esqui cross-country',
'tours.ski.discipline.touring': 'Esqui de travessia',
'tours.ski.discipline.snowshoe': 'Raquetes de neve',
'tours.ski.discipline.winter_hike': 'Caminhada de inverno',
'tours.ski.technique': 'Técnica',
'tours.ski.technique.classic': 'Clássica',
'tours.ski.technique.skating': 'Skating', // same-as-en
'tours.ski.technique.unknown': 'Desconhecida',
'tours.ski.chooseDiscipline': 'Escolha uma modalidade para importar a trilha como esqui.',
'tours.ski.chooseDisciplineToSave': 'Escolha uma modalidade para salvar o passeio.',
'tours.ski.drawnFreely':
'Cada trecho é desenhado em linha reta entre seus pontos. Nada o confere com pistas, teleféricos ou trilhas.',
'tours.ski.chooseTechnique': 'Escolha a técnica, ou Desconhecida.',
'tours.ski.infoLabel': 'O que o TREK faz com uma trilha de esqui',
'tours.ski.info':
'Fica como foi gravada e nunca é roteada. Distância e altitudes vêm do arquivo. O TREK não calcula tempo de esqui, e nem a trilha nem as cores de inclinação em 3D dizem algo sobre dificuldade, neve, avalanches ou se pistas e trilhas estão abertas.',
'Um passeio planejado tem cada trecho desenhado em linha reta entre seus pontos, e uma trilha importada fica como foi gravada. Nenhum dos dois é roteado por pistas, teleféricos ou trilhas. As altitudes vêm do terreno ou do arquivo. O TREK não calcula tempo de esqui, e nada aqui, nem as cores de inclinação em 3D, diz algo sobre dificuldade, neve, avalanches ou se pistas e trilhas estão abertas.',
'tours.ski.time': 'Tempo de esqui',
'tours.ski.timeUnknown': 'Não calculado',
'tours.ski.timeInfoLabel': 'Por que não há tempo de esqui',
'tours.ski.timeInfo':
'O TREK não calcula tempo de esqui: os trechos são desenhados em linha reta, não planejados por pistas, teleféricos ou trilhas. Se quiser, informe você mesmo um total planejado.',
'tours.ski.classifyTitle': 'Classificar trilha de esqui',
'tours.ski.saved': 'Classificação salva',
'tours.ski.saveFailed': 'Não foi possível salvar a classificação.',
@@ -813,6 +812,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': 'Importar {count} passeio',
'tours.conversion.introPaddle':
'Uma importação é uma trilha gravada. Planeje um passeio de remo editável: o TREK tira pontos de controle dela, liga-os com linhas retas como se desenha um passeio de remo e mostra o quanto chega perto. Nada muda até você escolher.',
'tours.conversion.introSki':
'Uma importação é uma trilha gravada. Planeje um passeio de esqui editável: o TREK tira pontos de controle dela, liga-os com linhas retas como se desenha um passeio de esqui e mostra o quanto chega perto. Nada muda até você escolher.',
'tours.conversion.closePaddle':
'A sugestão segue a trilha de perto. Os pontos são ligados por linhas retas, então não é a mesma linha.',
'tours.planner.moreActions': 'Mais ações',
@@ -1133,6 +1134,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Passeio a cavalo',
'tours.planner.tourTypeHint.horse': 'A cavalo, por rotas equestres sinalizadas',
'tours.planner.namePlaceholder.horse': 'Passeio a cavalo sem título',
'tours.planner.namePlaceholder.ski': 'Passeio de esqui sem título',
'tours.horse.time': 'Tempo a cavalo',
'tours.horse.timeInfoLabel': 'Por que não há tempo a cavalo',
'tours.horse.timeInfo':
+14 -12
View File
@@ -205,7 +205,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Senderisme',
'tourTypes.bike': 'Ruta en bicicleta',
'tourTypes.run': 'Córrer',
'tourTypes.ski': 'Esquí',
'tourTypes.ski': 'Esquí i hivern',
'tourTypes.kayak': 'Ruta en piragua',
'tourTypes.walk': 'Passeig urbà / turístic',
'tourTypes.food': 'Ruta gastronòmica / enològica',
@@ -403,33 +403,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': "A peu, dins d'una dificultat que tu tries",
'tours.planner.tourTypeHint.bike': 'En bicicleta, amb ruta per a cicloturisme, carretera, gravel o BTT',
'tours.planner.tourTypeHint.kayak': "A l'aigua, amb caiac, canoa o SUP",
'tours.winter.title': 'Activitat hivernal',
'tours.winter.infoLabel': 'Què fa la marca hivernal',
'tours.winter.info':
'Només una marca de l’excursió. La ruta, els colors de pendent i el temps de marxa són els de qualsevol excursió i no diuen res de la neu, les allaus ni de si un camí és transitable a l’hivern.',
'tours.winter.kind': 'Tipus d’activitat hivernal',
'tours.winter.activity.winter_hike': 'Excursió hivernal',
'tours.winter.activity.snowshoe': 'Excursió amb raquetes de neu',
'tours.winter.labelOnly':
'Marcat pels viatgers. La ruta i el temps es planifiquen com en qualsevol excursió, sense comprovar l’hivern.',
'tours.planner.tourTypeHint.ski': 'D’un fitxer GPX, tal com es va gravar',
'tours.planner.tourTypeHint.ski': 'Esquí, surf de neu, raquetes, excursions hivernals',
'tours.ski.title': 'Traça d’esquí',
'tours.ski.discipline': 'Disciplina',
'tours.ski.discipline.alpine': 'Alpí',
'tours.ski.discipline.snowboard': 'Surf de neu',
'tours.ski.discipline.cross_country': 'Esquí de fons',
'tours.ski.discipline.touring': 'Esquí de muntanya',
'tours.ski.discipline.snowshoe': 'Raquetes de neu',
'tours.ski.discipline.winter_hike': 'Excursió hivernal',
'tours.ski.technique': 'Tècnica',
'tours.ski.technique.classic': 'Clàssica',
'tours.ski.technique.skating': 'Patinador',
'tours.ski.technique.unknown': 'Desconeguda',
'tours.ski.chooseDiscipline': 'Tria una disciplina per importar la traça com a esquí.',
'tours.ski.chooseDisciplineToSave': 'Tria una disciplina per desar la ruta.',
'tours.ski.drawnFreely':
'Cada tram es dibuixa en línia recta entre els teus punts. Res no el comprova amb pistes, remuntadors o senders.',
'tours.ski.chooseTechnique': 'Tria la tècnica, o Desconeguda.',
'tours.ski.infoLabel': 'Què fa TREK amb una traça d’esquí',
'tours.ski.info':
'Es manté tal com es va gravar i mai no s’enruta. La distància i les altituds vénen del fitxer. TREK no calcula cap temps d’esquí, i ni la traça ni els colors de pendent en 3D diuen res de dificultat, neu, allaus o si les pistes estan obertes.',
'Una ruta planificada té cada tram dibuixat en línia recta entre els seus punts, i una traça importada es manté tal com es va gravar. Cap de les dues no s’enruta per pistes, remuntadors o senders. Les altituds vénen del terreny o del fitxer. TREK no calcula cap temps d’esquí, i res d’aquí, ni els colors de pendent en 3D, diu res de dificultat, neu, allaus o si les pistes estan obertes.',
'tours.ski.time': 'Temps d’esquí',
'tours.ski.timeUnknown': 'Sense calcular',
'tours.ski.timeInfoLabel': 'Per què no hi ha temps d’esquí',
'tours.ski.timeInfo':
'TREK no calcula cap temps d’esquí: els trams es dibuixen rectes, no es planifiquen per pistes, remuntadors o senders. Si vols, introdueix tu mateix un total previst.',
'tours.ski.classifyTitle': 'Classificar la traça d’esquí',
'tours.ski.saved': 'Classificació desada',
'tours.ski.saveFailed': 'No s’ha pogut desar la classificació.',
@@ -815,6 +814,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': 'Importa {count} ruta',
'tours.conversion.introPaddle':
'Una importació és un recorregut enregistrat. Planifica una ruta en piragua editable: TREK n’agafa punts de control, els uneix amb línies rectes com es dibuixa una ruta en piragua i mostra com s’hi acosta. No canvia res fins que triïs.',
'tours.conversion.introSki':
'Una importació és un recorregut enregistrat. Planifica una ruta d’esquí editable: TREK n’agafa punts de control, els uneix amb línies rectes com es dibuixa una ruta d’esquí i mostra com s’hi acosta. No canvia res fins que triïs.',
'tours.conversion.closePaddle':
'La proposta segueix el recorregut de prop. Els punts s’uneixen amb línies rectes, per tant no és la mateixa línia.',
'tours.planner.moreActions': 'Més accions',
@@ -1136,6 +1137,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Ruta a cavall',
'tours.planner.tourTypeHint.horse': 'A cavall, per rutes eqüestres senyalitzades',
'tours.planner.namePlaceholder.horse': 'Ruta a cavall sense títol',
'tours.planner.namePlaceholder.ski': 'Ruta d’esquí sense títol',
'tours.horse.time': 'Temps a cavall',
'tours.horse.timeInfoLabel': 'Per què no hi ha temps a cavall',
'tours.horse.timeInfo':
+14 -12
View File
@@ -203,7 +203,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Pěší túra',
'tourTypes.bike': 'Cyklovýlet',
'tourTypes.run': 'Běh',
'tourTypes.ski': 'Lyže',
'tourTypes.ski': 'Lyže a zima',
'tourTypes.kayak': 'Vodácká túra',
'tourTypes.walk': 'Procházka městem / po památkách',
'tourTypes.food': 'Gastronomický / vinařský výlet',
@@ -395,33 +395,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Pěšky, do obtížnosti, kterou nastavíš',
'tours.planner.tourTypeHint.bike': 'Na kole, trasa pro treking, silnici, gravel nebo MTB',
'tours.planner.tourTypeHint.kayak': 'Na vodě, na kajaku, kánoi nebo SUP',
'tours.winter.title': 'Zimní aktivita',
'tours.winter.infoLabel': 'Co dělá zimní označení',
'tours.winter.info':
'Jen označení túry. Trasa, barvy sklonu a doba chůze zůstávají jako u každé túry a neříkají nic o sněhu, lavinách ani o tom, zda je cesta v zimě schůdná.',
'tours.winter.kind': 'Druh zimní aktivity',
'tours.winter.activity.winter_hike': 'Zimní turistika',
'tours.winter.activity.snowshoe': 'Túra na sněžnicích',
'tours.winter.labelOnly':
'Označeno cestovateli. Trasa a čas se plánují jako u každé túry, bez kontroly zimních podmínek.',
'tours.planner.tourTypeHint.ski': 'Ze souboru GPX, tak jak byla zaznamenána',
'tours.planner.tourTypeHint.ski': 'Lyže, snowboard, sněžnice, zimní túry',
'tours.ski.title': 'Lyžařská trasa',
'tours.ski.discipline': 'Disciplína',
'tours.ski.discipline.alpine': 'Sjezd',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Běh na lyžích',
'tours.ski.discipline.touring': 'Skialpinismus',
'tours.ski.discipline.snowshoe': 'Sněžnice',
'tours.ski.discipline.winter_hike': 'Zimní turistika',
'tours.ski.technique': 'Technika',
'tours.ski.technique.classic': 'Klasika',
'tours.ski.technique.skating': 'Bruslení',
'tours.ski.technique.unknown': 'Neznámá',
'tours.ski.chooseDiscipline': 'Vyberte disciplínu pro import trasy jako lyže.',
'tours.ski.chooseDisciplineToSave': 'Vyberte disciplínu, abyste mohli túru uložit.',
'tours.ski.drawnFreely':
'Každý úsek se kreslí rovně mezi vašimi body. Nic ho neporovnává se sjezdovkami, vleky ani stopami.',
'tours.ski.chooseTechnique': 'Vyberte techniku, nebo Neznámá.',
'tours.ski.infoLabel': 'Co TREK dělá s lyžařskou trasou',
'tours.ski.info':
'Zůstává tak, jak byla zaznamenána, a nikdy se nepřepočítává. Vzdálenost a výšky pocházejí ze souboru. TREK nepočítá žádný čas na lyžích a ani trasa, ani barvy sklonu ve 3D neříkají nic o obtížnosti, sněhu, lavinách ani o tom, zda jsou sjezdovky a stopy otevřené.',
'Naplánovaná túra má každý úsek nakreslený rovně mezi svými body, importovaná trasa zůstává tak, jak byla zaznamenána. Ani jedna se nevede po sjezdovkách, vlecích ani stopách. Výšky pocházejí z terénu nebo ze souboru. TREK nepočítá žádný čas na lyžích a nic tady, ani barvy sklonu ve 3D, neříká nic o obtížnosti, sněhu, lavinách ani o tom, zda jsou sjezdovky a stopy otevřené.',
'tours.ski.time': 'Čas na lyžích',
'tours.ski.timeUnknown': 'Nepočítá se',
'tours.ski.timeInfoLabel': 'Proč tu není čas na lyžích',
'tours.ski.timeInfo':
'TREK čas na lyžích nepočítá: úseky jsou nakreslené rovně, ne naplánované po sjezdovkách, vlecích nebo stopách. Pokud chcete, zadejte plánovaný celkový čas sami.',
'tours.ski.classifyTitle': 'Zařadit lyžařskou trasu',
'tours.ski.saved': 'Zařazení uloženo',
'tours.ski.saveFailed': 'Zařazení se nepodařilo uložit.',
@@ -807,6 +806,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.few': 'Importovat {count} túry',
'tours.conversion.introPaddle':
'Import je zaznamenaná trasa. Naplánujte upravitelnou vodáckou túru: TREK z ní vezme kontrolní body, spojí je přímými čarami, jak se vodácká túra kreslí, a ukáže, jak blízko to je. Nic se nezmění, dokud se nerozhodnete.',
'tours.conversion.introSki':
'Import je zaznamenaná trasa. Naplánujte upravitelnou lyžařskou túru: TREK z ní vezme kontrolní body, spojí je přímými čarami, jak se lyžařská túra kreslí, a ukáže, jak blízko to je. Nic se nezmění, dokud se nerozhodnete.',
'tours.conversion.closePaddle': 'Návrh trasu těsně sleduje. Jeho body spojují přímé čáry, takže to není stejná čára.',
'tours.planner.moreActions': 'Další akce',
'tours.paddle.role.put_in': 'Nástup',
@@ -1123,6 +1124,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Vyjížďka na koni',
'tours.planner.tourTypeHint.horse': 'Na koni, po značených jezdeckých trasách',
'tours.planner.namePlaceholder.horse': 'Vyjížďka bez názvu',
'tours.planner.namePlaceholder.ski': 'Lyžařská túra bez názvu',
'tours.horse.time': 'Doba jízdy',
'tours.horse.timeInfoLabel': 'Proč tu není doba jízdy',
'tours.horse.timeInfo':
+14 -12
View File
@@ -206,7 +206,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Wanderung',
'tourTypes.bike': 'Radtour',
'tourTypes.run': 'Lauf',
'tourTypes.ski': 'Ski', // same-as-en
'tourTypes.ski': 'Ski & Winter',
'tourTypes.kayak': 'Paddeltour',
'tourTypes.walk': 'Stadt- und Spaziergang',
'tourTypes.food': 'Genusstour',
@@ -405,33 +405,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Zu Fuß, bis zu einer Schwierigkeit, die du festlegst',
'tours.planner.tourTypeHint.bike': 'Mit dem Rad, geroutet für Touring, Rennrad, Gravel oder MTB',
'tours.planner.tourTypeHint.kayak': 'Auf dem Wasser, mit Kajak, Kanadier oder SUP',
'tours.winter.title': 'Winteraktivität',
'tours.winter.infoLabel': 'Was die Winterkennzeichnung bewirkt',
'tours.winter.info':
'Nur eine Kennzeichnung der Wanderung. Route, Steigungsfarben und Gehzeit bleiben wie bei jeder Wanderung und sagen nichts über Schnee, Lawinen oder die Begehbarkeit im Winter.',
'tours.winter.kind': 'Art der Winteraktivität',
'tours.winter.activity.winter_hike': 'Winterwandern',
'tours.winter.activity.snowshoe': 'Schneeschuhwandern',
'tours.winter.labelOnly':
'Von den Reisenden gekennzeichnet. Route und Zeit sind wie bei jeder Wanderung geplant, nicht für den Winter geprüft.',
'tours.planner.tourTypeHint.ski': 'Aus einer GPX-Datei, wie aufgezeichnet',
'tours.planner.tourTypeHint.ski': 'Ski, Snowboard, Schneeschuh, Winterwandern',
'tours.ski.title': 'Skistrecke',
'tours.ski.discipline': 'Disziplin',
'tours.ski.discipline.alpine': 'Alpin',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Langlauf',
'tours.ski.discipline.touring': 'Skitour',
'tours.ski.discipline.snowshoe': 'Schneeschuh',
'tours.ski.discipline.winter_hike': 'Winterwandern',
'tours.ski.technique': 'Technik',
'tours.ski.technique.classic': 'Klassisch',
'tours.ski.technique.skating': 'Skating', // same-as-en
'tours.ski.technique.unknown': 'Unbekannt',
'tours.ski.chooseDiscipline': 'Wähle eine Disziplin, um die Strecke als Ski zu importieren.',
'tours.ski.chooseDisciplineToSave': 'Wähle eine Disziplin, um die Tour zu speichern.',
'tours.ski.drawnFreely':
'Jeder Abschnitt wird gerade zwischen deinen Punkten gezeichnet. Nichts gleicht ihn mit Pisten, Liften oder Loipen ab.',
'tours.ski.chooseTechnique': 'Wähle die Technik oder Unbekannt.',
'tours.ski.infoLabel': 'Was TREK mit einer Skistrecke macht',
'tours.ski.info':
'Bleibt wie aufgezeichnet und wird nie geroutet. Distanz und Höhen stammen aus der Datei. TREK berechnet keine Skizeit, und weder die Strecke noch die Steigungsfarben in 3D sagen etwas über Schwierigkeit, Schnee, Lawinen oder geöffnete Pisten und Loipen.',
'Bei einer geplanten Tour ist jeder Abschnitt gerade zwischen ihren Punkten gezeichnet, eine importierte Strecke bleibt wie aufgezeichnet. Keine von beiden wird über Pisten, Lifte oder Loipen geroutet. Die Höhen stammen aus dem Gelände oder aus der Datei. TREK berechnet keine Skizeit, und nichts hier, auch nicht die Steigungsfarben in 3D, sagt etwas über Schwierigkeit, Schnee, Lawinen oder geöffnete Pisten und Loipen.',
'tours.ski.time': 'Skizeit',
'tours.ski.timeUnknown': 'Nicht berechnet',
'tours.ski.timeInfoLabel': 'Warum es keine Skizeit gibt',
'tours.ski.timeInfo':
'TREK berechnet keine Skizeit: Die Abschnitte sind gerade gezeichnet, nicht über Pisten, Lifte oder Loipen geplant. Trag bei Bedarf selbst eine geplante Gesamtzeit ein.',
'tours.ski.classifyTitle': 'Skistrecke einordnen',
'tours.ski.saved': 'Einordnung gespeichert',
'tours.ski.saveFailed': 'Die Einordnung konnte nicht gespeichert werden.',
@@ -822,6 +821,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': '{count} Tour importieren',
'tours.conversion.introPaddle':
'Ein Import ist eine aufgezeichnete Strecke. Plane eine bearbeitbare Paddeltour: TREK nimmt Kontrollpunkte daraus, verbindet sie mit geraden Linien, wie eine Paddeltour gezeichnet wird, und zeigt, wie nah das herankommt. Nichts ändert sich, bis du dich entscheidest.',
'tours.conversion.introSki':
'Ein Import ist eine aufgezeichnete Strecke. Plane eine bearbeitbare Skitour: TREK nimmt Kontrollpunkte daraus, verbindet sie mit geraden Linien, wie eine Skitour gezeichnet wird, und zeigt, wie nah das herankommt. Nichts ändert sich, bis du dich entscheidest.',
'tours.conversion.closePaddle':
'Der Vorschlag folgt der Strecke eng. Seine Punkte sind mit geraden Linien verbunden, daher ist es nicht dieselbe Linie.',
'tours.planner.moreActions': 'Weitere Aktionen',
@@ -1145,6 +1146,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Ausritt',
'tours.planner.tourTypeHint.horse': 'Zu Pferd, auf ausgeschilderten Reitrouten',
'tours.planner.namePlaceholder.horse': 'Unbenannter Ausritt',
'tours.planner.namePlaceholder.ski': 'Unbenannte Skitour',
'tours.horse.time': 'Reitzeit',
'tours.horse.timeInfoLabel': 'Warum es keine Reitzeit gibt',
'tours.horse.timeInfo':
+14 -12
View File
@@ -199,7 +199,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Hike',
'tourTypes.bike': 'Bike tour',
'tourTypes.run': 'Run',
'tourTypes.ski': 'Ski',
'tourTypes.ski': 'Ski & winter',
'tourTypes.kayak': 'Paddle tour',
'tourTypes.walk': 'City / sightseeing walk',
'tourTypes.food': 'Food/wine tour',
@@ -395,33 +395,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'On foot, within a difficulty you set',
'tours.planner.tourTypeHint.bike': 'By bike, routed for touring, road, gravel or MTB',
'tours.planner.tourTypeHint.kayak': 'On the water, by kayak, canoe or SUP',
'tours.winter.title': 'Winter activity',
'tours.winter.infoLabel': 'What the winter label does',
'tours.winter.info':
'A label for the hike only. Route, grade colours and walking time stay as for any hike and say nothing about snow, avalanches or whether a path can be walked in winter.',
'tours.winter.kind': 'Kind of winter activity',
'tours.winter.activity.winter_hike': 'Winter hike',
'tours.winter.activity.snowshoe': 'Snowshoe hike',
'tours.winter.labelOnly':
'Marked by the travellers. Route and time are planned as for any hike, not checked for winter.',
'tours.planner.tourTypeHint.ski': 'From a GPX file, kept as recorded',
'tours.planner.tourTypeHint.ski': 'Skiing, snowboarding, snowshoeing, winter hikes',
'tours.ski.title': 'Ski track',
'tours.ski.discipline': 'Discipline',
'tours.ski.discipline.alpine': 'Alpine',
'tours.ski.discipline.snowboard': 'Snowboard',
'tours.ski.discipline.cross_country': 'Cross-country',
'tours.ski.discipline.touring': 'Ski touring',
'tours.ski.discipline.snowshoe': 'Snowshoeing',
'tours.ski.discipline.winter_hike': 'Winter hiking',
'tours.ski.technique': 'Technique',
'tours.ski.technique.classic': 'Classic',
'tours.ski.technique.skating': 'Skating',
'tours.ski.technique.unknown': 'Unknown',
'tours.ski.chooseDiscipline': 'Choose a discipline to import the track as ski.',
'tours.ski.chooseDisciplineToSave': 'Choose a discipline to save the tour.',
'tours.ski.drawnFreely':
'Each leg is drawn straight between your points. Nothing checks it against pistes, lifts or trails.',
'tours.ski.chooseTechnique': 'Choose the technique, or Unknown.',
'tours.ski.infoLabel': 'What TREK does with a ski track',
'tours.ski.info':
'Kept as recorded and never routed. Distance and heights come from the file. TREK works out no ski time, and neither the track nor the gradient colours in 3D say anything about difficulty, snow, avalanches or whether runs and trails are open.',
'A planned tour has each leg drawn straight between its points, an imported track is kept as recorded. Neither is routed along pistes, lifts or trails. Heights come from the terrain or the file. TREK works out no ski time, and nothing here, the gradient colours in 3D included, says anything about difficulty, snow, avalanches or whether runs and trails are open.',
'tours.ski.time': 'Ski time',
'tours.ski.timeUnknown': 'Not worked out',
'tours.ski.timeInfoLabel': 'Why there is no ski time',
'tours.ski.timeInfo':
'TREK works out no ski time: the legs are drawn straight, not planned along pistes, lifts or trails. Enter a planned total yourself if you want one.',
'tours.ski.classifyTitle': 'Classify ski track',
'tours.ski.saved': 'Classification saved',
'tours.ski.saveFailed': 'The classification could not be saved.',
@@ -800,6 +799,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': 'Import {count} tour',
'tours.conversion.introPaddle':
'An import is a recorded track. Plan an editable paddle tour: TREK takes control points from it, joins them with straight lines as a paddle tour is drawn, and shows how close that comes. Nothing changes until you choose.',
'tours.conversion.introSki':
'An import is a recorded track. Plan an editable ski tour: TREK takes control points from it, joins them with straight lines as a ski tour is drawn, and shows how close that comes. Nothing changes until you choose.',
'tours.conversion.closePaddle':
'The suggestion follows the track closely. Its points are joined by straight lines, so it is not the same line.',
'tours.planner.moreActions': 'More actions',
@@ -1108,6 +1109,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Horse ride',
'tours.planner.tourTypeHint.horse': 'On horseback, along signposted horse routes',
'tours.planner.namePlaceholder.horse': 'Untitled ride',
'tours.planner.namePlaceholder.ski': 'Untitled ski tour',
'tours.horse.time': 'Riding time',
'tours.horse.timeInfoLabel': 'Why there is no riding time',
'tours.horse.timeInfo':
+14 -12
View File
@@ -205,7 +205,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Senderismo',
'tourTypes.bike': 'Ruta en bicicleta',
'tourTypes.run': 'Carrera a pie',
'tourTypes.ski': 'Esquí',
'tourTypes.ski': 'Esquí e invierno',
'tourTypes.kayak': 'Ruta en piragua',
'tourTypes.walk': 'Paseo urbano / turístico',
'tourTypes.food': 'Ruta gastronómica / enológica',
@@ -402,33 +402,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'A pie, dentro de una dificultad que tú eliges',
'tours.planner.tourTypeHint.bike': 'En bici, con ruta para cicloturismo, carretera, gravel o MTB',
'tours.planner.tourTypeHint.kayak': 'En el agua, en kayak, canoa o SUP',
'tours.winter.title': 'Actividad invernal',
'tours.winter.infoLabel': 'Qué hace la marca invernal',
'tours.winter.info':
'Solo una marca de la ruta. El trazado, los colores de pendiente y el tiempo de marcha son los de cualquier ruta y no dicen nada sobre nieve, aludes ni si un camino es transitable en invierno.',
'tours.winter.kind': 'Tipo de actividad invernal',
'tours.winter.activity.winter_hike': 'Senderismo invernal',
'tours.winter.activity.snowshoe': 'Ruta con raquetas de nieve',
'tours.winter.labelOnly':
'Marcado por los viajeros. Ruta y tiempo se planifican como en cualquier ruta, sin comprobación invernal.',
'tours.planner.tourTypeHint.ski': 'Desde un archivo GPX, tal como se grabó',
'tours.planner.tourTypeHint.ski': 'Esquí, snowboard, raquetas, rutas invernales',
'tours.ski.title': 'Ruta de esquí',
'tours.ski.discipline': 'Disciplina',
'tours.ski.discipline.alpine': 'Alpino',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Esquí de fondo',
'tours.ski.discipline.touring': 'Esquí de travesía',
'tours.ski.discipline.snowshoe': 'Raquetas',
'tours.ski.discipline.winter_hike': 'Ruta invernal',
'tours.ski.technique': 'Técnica',
'tours.ski.technique.classic': 'Clásica',
'tours.ski.technique.skating': 'Skating', // same-as-en
'tours.ski.technique.unknown': 'Desconocida',
'tours.ski.chooseDiscipline': 'Elige una disciplina para importar la ruta como esquí.',
'tours.ski.chooseDisciplineToSave': 'Elige una disciplina para guardar la ruta.',
'tours.ski.drawnFreely':
'Cada tramo se dibuja en línea recta entre tus puntos. Nada lo comprueba con pistas, remontes ni senderos.',
'tours.ski.chooseTechnique': 'Elige la técnica, o Desconocida.',
'tours.ski.infoLabel': 'Qué hace TREK con una ruta de esquí',
'tours.ski.info':
'Se conserva tal como se grabó y nunca se enruta. La distancia y las alturas vienen del archivo. TREK no calcula ningún tiempo de esquí, y ni la ruta ni los colores de pendiente en 3D dicen nada sobre dificultad, nieve, aludes o si las pistas están abiertas.',
'Una ruta planificada tiene cada tramo dibujado en línea recta entre sus puntos, y un recorrido importado se conserva tal como se grabó. Ninguno se enruta por pistas, remontes ni senderos. Las alturas vienen del terreno o del archivo. TREK no calcula ningún tiempo de esquí, y nada de aquí, ni los colores de pendiente en 3D, dice nada sobre dificultad, nieve, aludes o si las pistas están abiertas.',
'tours.ski.time': 'Tiempo de esquí',
'tours.ski.timeUnknown': 'Sin calcular',
'tours.ski.timeInfoLabel': 'Por qué no hay tiempo de esquí',
'tours.ski.timeInfo':
'TREK no calcula ningún tiempo de esquí: los tramos se dibujan rectos, no se planifican por pistas, remontes ni senderos. Si quieres, introduce tú mismo un total previsto.',
'tours.ski.classifyTitle': 'Clasificar ruta de esquí',
'tours.ski.saved': 'Clasificación guardada',
'tours.ski.saveFailed': 'No se pudo guardar la clasificación.',
@@ -813,6 +812,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': 'Importar {count} ruta',
'tours.conversion.introPaddle':
'Una importación es un recorrido grabado. Planifica una ruta en piragua editable: TREK toma puntos de control, los une con líneas rectas como se dibuja una ruta en piragua y muestra cuánto se acerca. Nada cambia hasta que elijas.',
'tours.conversion.introSki':
'Una importación es un recorrido grabado. Planifica una ruta de esquí editable: TREK toma puntos de control, los une con líneas rectas como se dibuja una ruta de esquí y muestra cuánto se acerca. Nada cambia hasta que elijas.',
'tours.conversion.closePaddle':
'La propuesta sigue el recorrido de cerca. Sus puntos se unen con líneas rectas, así que no es la misma línea.',
'tours.planner.moreActions': 'Más acciones',
@@ -1131,6 +1132,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Ruta a caballo',
'tours.planner.tourTypeHint.horse': 'A caballo, por rutas ecuestres señalizadas',
'tours.planner.namePlaceholder.horse': 'Ruta a caballo sin título',
'tours.planner.namePlaceholder.ski': 'Ruta de esquí sin título',
'tours.horse.time': 'Tiempo a caballo',
'tours.horse.timeInfoLabel': 'Por qué no hay tiempo a caballo',
'tours.horse.timeInfo':
+14 -12
View File
@@ -202,7 +202,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Matk',
'tourTypes.bike': 'Rattaretk',
'tourTypes.run': 'Jooks',
'tourTypes.ski': 'Suusad',
'tourTypes.ski': 'Suusad ja talv',
'tourTypes.kayak': 'Aerutamismatk',
'tourTypes.walk': 'Linna- / vaatamisväärsuste jalutuskäik',
'tourTypes.food': 'Toidu- / veiniretk',
@@ -397,33 +397,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Jalgsi, sinu määratud raskuse piires',
'tours.planner.tourTypeHint.bike': 'Rattaga, marsruut matka-, maantee-, gravel- või maastikurattale',
'tours.planner.tourTypeHint.kayak': 'Vee peal, süsta, kanuu või SUP-iga',
'tours.winter.title': 'Talvine tegevus',
'tours.winter.infoLabel': 'Mida talvemärge teeb',
'tours.winter.info':
'Ainult matka märge. Marsruut, tõusuvärvid ja kõnniaeg jäävad samaks nagu igal matkal ega ütle midagi lume, laviinide ega selle kohta, kas rada on talvel läbitav.',
'tours.winter.kind': 'Talvise tegevuse liik',
'tours.winter.activity.winter_hike': 'Talvematk',
'tours.winter.activity.snowshoe': 'Räätsamatk',
'tours.winter.labelOnly':
'Reisijate märgitud. Marsruut ja aeg on kavandatud nagu igal matkal, talve jaoks kontrollimata.',
'tours.planner.tourTypeHint.ski': 'GPX-failist, nagu salvestati',
'tours.planner.tourTypeHint.ski': 'Suusatamine, lumelaud, räätsad, talvematkad',
'tours.ski.title': 'Suusarada',
'tours.ski.discipline': 'Ala',
'tours.ski.discipline.alpine': 'Mäesuusatamine',
'tours.ski.discipline.snowboard': 'Lumelaud',
'tours.ski.discipline.cross_country': 'Murdmaasuusatamine',
'tours.ski.discipline.touring': 'Matkasuusatamine',
'tours.ski.discipline.snowshoe': 'Räätsamatk',
'tours.ski.discipline.winter_hike': 'Talvematk',
'tours.ski.technique': 'Tehnika',
'tours.ski.technique.classic': 'Klassika',
'tours.ski.technique.skating': 'Uisutehnika',
'tours.ski.technique.unknown': 'Teadmata',
'tours.ski.chooseDiscipline': 'Vali ala, et importida rada suusatamisena.',
'tours.ski.chooseDisciplineToSave': 'Vali ala, et matk salvestada.',
'tours.ski.drawnFreely':
'Iga lõik joonistatakse sinu punktide vahele sirgelt. Miski ei võrdle seda nõlvade, tõstukite ega radadega.',
'tours.ski.chooseTechnique': 'Vali tehnika või Teadmata.',
'tours.ski.infoLabel': 'Mida TREK suusarajaga teeb',
'tours.ski.info':
'Jääb nii, nagu salvestati, ja seda ei marsruudita kunagi. Pikkus ja kõrgused tulevad failist. TREK ei arvuta suusaaega ning ei rada ega 3D kallakuvärvid ütle midagi raskuse, lume, laviinide ega nõlvade ja radade avatuse kohta.',
'Planeeritud matkal joonistatakse iga lõik punktide vahele sirgelt, imporditud rada jääb nii, nagu salvestati. Kumbagi ei marsruudita mööda nõlvu, tõstukeid ega radu. Kõrgused tulevad maastikust või failist. TREK ei arvuta suusaaega ning miski siin, ka 3D kallakuvärvid, ei ütle midagi raskuse, lume, laviinide ega nõlvade ja radade avatuse kohta.',
'tours.ski.time': 'Suusaaeg',
'tours.ski.timeUnknown': 'Arvutamata',
'tours.ski.timeInfoLabel': 'Miks suusaaega pole',
'tours.ski.timeInfo':
'TREK ei arvuta suusaaega: lõigud on joonistatud sirgelt, mitte planeeritud mööda nõlvu, tõstukeid ega radu. Soovi korral sisesta kavandatud koguaeg ise.',
'tours.ski.classifyTitle': 'Liigita suusarada',
'tours.ski.saved': 'Liigitus salvestatud',
'tours.ski.saveFailed': 'Liigitust ei õnnestunud salvestada.',
@@ -804,6 +803,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': 'Impordi {count} matk',
'tours.conversion.introPaddle':
'Import on salvestatud rada. Planeeri muudetav aerutamismatk: TREK võtab sellest kontrollpunktid, ühendab need sirgjoontega, nagu aerutamismatk joonistatakse, ja näitab, kui lähedale see jõuab. Midagi ei muutu enne, kui sa valid.',
'tours.conversion.introSki':
'Import on salvestatud rada. Planeeri muudetav suusamatk: TREK võtab sellest kontrollpunktid, ühendab need sirgjoontega, nagu suusamatk joonistatakse, ja näitab, kui lähedale see jõuab. Midagi ei muutu enne, kui sa valid.',
'tours.conversion.closePaddle':
'Ettepanek järgib rada täpselt. Selle punktid on ühendatud sirgjoontega, seega pole see sama joon.',
'tours.planner.moreActions': 'Rohkem toiminguid',
@@ -1117,6 +1118,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Ratsamatk',
'tours.planner.tourTypeHint.horse': 'Hobusel, märgistatud ratsaradadel',
'tours.planner.namePlaceholder.horse': 'Nimetu ratsamatk',
'tours.planner.namePlaceholder.ski': 'Nimetu suusamatk',
'tours.horse.time': 'Ratsutamisaeg',
'tours.horse.timeInfoLabel': 'Miks ratsutamisaega pole',
'tours.horse.timeInfo':
+14 -12
View File
@@ -208,7 +208,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Randonnée',
'tourTypes.bike': 'Sortie à vélo',
'tourTypes.run': 'Course à pied',
'tourTypes.ski': 'Ski', // same-as-en
'tourTypes.ski': 'Ski et hiver',
'tourTypes.kayak': 'Sortie en pagaie',
'tourTypes.walk': 'Balade urbaine / touristique',
'tourTypes.food': 'Circuit gastronomique / œnologique',
@@ -408,33 +408,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'À pied, dans la difficulté que tu choisis',
'tours.planner.tourTypeHint.bike': 'À vélo, itinéraire pour le voyage, la route, le gravel ou le VTT',
'tours.planner.tourTypeHint.kayak': "Sur l'eau, en kayak, canoë ou SUP",
'tours.winter.title': 'Activité hivernale',
'tours.winter.infoLabel': 'À quoi sert le marquage hivernal',
'tours.winter.info':
'Simple marquage de la randonnée. L’itinéraire, les couleurs de pente et le temps de marche restent ceux de toute randonnée et ne disent rien de la neige, des avalanches ni de la praticabilité d’un chemin en hiver.',
'tours.winter.kind': 'Type d’activité hivernale',
'tours.winter.activity.winter_hike': 'Randonnée hivernale',
'tours.winter.activity.snowshoe': 'Randonnée en raquettes',
'tours.winter.labelOnly':
'Marqué par les voyageurs. Itinéraire et durée sont planifiés comme pour toute randonnée, sans vérification hivernale.',
'tours.planner.tourTypeHint.ski': 'Depuis un fichier GPX, tel qu’enregistré',
'tours.planner.tourTypeHint.ski': 'Ski, snowboard, raquettes, randonnées hivernales',
'tours.ski.title': 'Trace de ski',
'tours.ski.discipline': 'Discipline', // same-as-en
'tours.ski.discipline.alpine': 'Alpin',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Ski de fond',
'tours.ski.discipline.touring': 'Ski de randonnée',
'tours.ski.discipline.snowshoe': 'Raquettes',
'tours.ski.discipline.winter_hike': 'Rando hivernale',
'tours.ski.technique': 'Technique', // same-as-en
'tours.ski.technique.classic': 'Classique',
'tours.ski.technique.skating': 'Skating', // same-as-en
'tours.ski.technique.unknown': 'Inconnue',
'tours.ski.chooseDiscipline': 'Choisissez une discipline pour importer la trace en ski.',
'tours.ski.chooseDisciplineToSave': 'Choisissez une discipline pour enregistrer la sortie.',
'tours.ski.drawnFreely':
'Chaque tronçon est tracé en ligne droite entre vos points. Rien ne le vérifie par rapport aux pistes, remontées ou sentiers.',
'tours.ski.chooseTechnique': 'Choisissez la technique, ou Inconnue.',
'tours.ski.infoLabel': 'Ce que TREK fait d’une trace de ski',
'tours.ski.info':
'Conservée telle qu’enregistrée et jamais calculée par un routeur. Distance et altitudes viennent du fichier. TREK ne calcule aucun temps de ski, et ni la trace ni les couleurs de pente en 3D ne disent quoi que ce soit sur la difficulté, la neige, les avalanches ou l’ouverture des pistes.',
'Une sortie planifiée a chaque tronçon tracé en ligne droite entre ses points, une trace importée est conservée telle qu’enregistrée. Aucune n’est calculée le long des pistes, remontées ou sentiers. Les altitudes viennent du terrain ou du fichier. TREK ne calcule aucun temps de ski, et rien ici, pas même les couleurs de pente en 3D, ne dit quoi que ce soit sur la difficulté, la neige, les avalanches ou l’ouverture des pistes.',
'tours.ski.time': 'Temps de ski',
'tours.ski.timeUnknown': 'Non calculé',
'tours.ski.timeInfoLabel': 'Pourquoi il n’y a pas de temps de ski',
'tours.ski.timeInfo':
'TREK ne calcule aucun temps de ski : les tronçons sont tracés en ligne droite, pas planifiés le long des pistes, remontées ou sentiers. Saisissez vous-même une durée totale prévue si besoin.',
'tours.ski.classifyTitle': 'Classer la trace de ski',
'tours.ski.saved': 'Classement enregistré',
'tours.ski.saveFailed': 'Le classement n’a pas pu être enregistré.',
@@ -826,6 +825,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': 'Importer {count} sortie',
'tours.conversion.introPaddle':
'Un import est une trace enregistrée. Planifiez une sortie en pagaie modifiable : TREK en tire des points de contrôle, les relie en lignes droites comme se trace une sortie en pagaie et montre à quel point c’est proche. Rien ne change tant que vous ne choisissez pas.',
'tours.conversion.introSki':
'Un import est une trace enregistrée. Planifiez une sortie à ski modifiable : TREK en tire des points de contrôle, les relie en lignes droites comme se trace une sortie à ski et montre à quel point c’est proche. Rien ne change tant que vous ne choisissez pas.',
'tours.conversion.closePaddle':
'La proposition suit la trace de près. Ses points sont reliés par des lignes droites, ce n’est donc pas la même ligne.',
'tours.planner.moreActions': 'Plus d’actions',
@@ -1153,6 +1154,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Randonnée équestre',
'tours.planner.tourTypeHint.horse': 'À cheval, sur des itinéraires équestres balisés',
'tours.planner.namePlaceholder.horse': 'Randonnée équestre sans titre',
'tours.planner.namePlaceholder.ski': 'Sortie à ski sans titre',
'tours.horse.time': 'Temps à cheval',
'tours.horse.timeInfoLabel': "Pourquoi il n'y a pas de temps à cheval",
'tours.horse.timeInfo':
+14 -12
View File
@@ -209,7 +209,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Πεζοπορία',
'tourTypes.bike': 'Ποδηλατική εκδρομή',
'tourTypes.run': 'Τρέξιμο',
'tourTypes.ski': 'Σκι',
'tourTypes.ski': 'Σκι και χειμώνας',
'tourTypes.kayak': 'Διαδρομή με κουπί',
'tourTypes.walk': 'Περίπατος στην πόλη / στα αξιοθέατα',
'tourTypes.food': 'Γαστρονομική / οινική εκδρομή',
@@ -410,33 +410,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Με τα πόδια, μέσα στη δυσκολία που ορίζεις',
'tours.planner.tourTypeHint.bike': 'Με ποδήλατο, διαδρομή για περιήγηση, δρόμο, gravel ή MTB',
'tours.planner.tourTypeHint.kayak': 'Στο νερό, με καγιάκ, κανό ή SUP',
'tours.winter.title': 'Χειμερινή δραστηριότητα',
'tours.winter.infoLabel': 'Τι κάνει η χειμερινή σήμανση',
'tours.winter.info':
'Μόνο μια σήμανση της πεζοπορίας. Η διαδρομή, τα χρώματα κλίσης και ο χρόνος πορείας μένουν όπως σε κάθε πεζοπορία και δεν λένε τίποτα για χιόνι, χιονοστιβάδες ή για το αν ένα μονοπάτι είναι βατό τον χειμώνα.',
'tours.winter.kind': 'Είδος χειμερινής δραστηριότητας',
'tours.winter.activity.winter_hike': 'Χειμερινή πεζοπορία',
'tours.winter.activity.snowshoe': 'Πεζοπορία με χιονοπέδιλα',
'tours.winter.labelOnly':
'Σημειώθηκε από τους ταξιδιώτες. Η διαδρομή και ο χρόνος σχεδιάζονται όπως σε κάθε πεζοπορία, χωρίς έλεγχο για τον χειμώνα.',
'tours.planner.tourTypeHint.ski': 'Από αρχείο GPX, όπως καταγράφηκε',
'tours.planner.tourTypeHint.ski': 'Σκι, σανίδα χιονιού, χιονοπέδιλα, χειμερινές πεζοπορίες',
'tours.ski.title': 'Διαδρομή σκι',
'tours.ski.discipline': 'Αγώνισμα',
'tours.ski.discipline.alpine': 'Αλπικό',
'tours.ski.discipline.snowboard': 'Σνόουμπορντ',
'tours.ski.discipline.cross_country': 'Σκι αντοχής',
'tours.ski.discipline.touring': 'Ορειβατικό σκι',
'tours.ski.discipline.snowshoe': 'Χιονοπέδιλα',
'tours.ski.discipline.winter_hike': 'Χειμερινή πεζοπορία',
'tours.ski.technique': 'Τεχνική',
'tours.ski.technique.classic': 'Κλασική',
'tours.ski.technique.skating': 'Ελεύθερη',
'tours.ski.technique.unknown': 'Άγνωστη',
'tours.ski.chooseDiscipline': 'Επιλέξτε αγώνισμα για εισαγωγή της διαδρομής ως σκι.',
'tours.ski.chooseDisciplineToSave': 'Επιλέξτε αγώνισμα για να αποθηκεύσετε τη διαδρομή.',
'tours.ski.drawnFreely':
'Κάθε σκέλος σχεδιάζεται ευθεία ανάμεσα στα σημεία σας. Τίποτα δεν το ελέγχει με πίστες, αναβατήρες ή μονοπάτια.',
'tours.ski.chooseTechnique': 'Επιλέξτε τεχνική ή Άγνωστη.',
'tours.ski.infoLabel': 'Τι κάνει το TREK με μια διαδρομή σκι',
'tours.ski.info':
'Μένει όπως καταγράφηκε και δεν δρομολογείται ποτέ. Απόσταση και υψόμετρα προέρχονται από το αρχείο. Το TREK δεν υπολογίζει χρόνο σκι, και ούτε η διαδρομή ούτε τα χρώματα κλίσης στο 3D λένε κάτι για δυσκολία, χιόνι, χιονοστιβάδες ή αν οι πίστες είναι ανοιχτές.',
'Σε μια σχεδιασμένη διαδρομή κάθε σκέλος σχεδιάζεται ευθεία ανάμεσα στα σημεία της, ενώ ένα εισαγόμενο ίχνος μένει όπως καταγράφηκε. Κανένα δεν δρομολογείται σε πίστες, αναβατήρες ή μονοπάτια. Τα υψόμετρα προέρχονται από το έδαφος ή το αρχείο. Το TREK δεν υπολογίζει χρόνο σκι, και τίποτα εδώ, ούτε τα χρώματα κλίσης στο 3D, δεν λέει κάτι για δυσκολία, χιόνι, χιονοστιβάδες ή αν οι πίστες είναι ανοιχτές.',
'tours.ski.time': 'Χρόνος σκι',
'tours.ski.timeUnknown': 'Δεν υπολογίστηκε',
'tours.ski.timeInfoLabel': 'Γιατί δεν υπάρχει χρόνος σκι',
'tours.ski.timeInfo':
'Το TREK δεν υπολογίζει χρόνο σκι: τα σκέλη σχεδιάζονται ευθεία, όχι κατά μήκος πιστών, αναβατήρων ή μονοπατιών. Αν θέλετε, δώστε μόνοι σας έναν προγραμματισμένο συνολικό χρόνο.',
'tours.ski.classifyTitle': 'Κατάταξη διαδρομής σκι',
'tours.ski.saved': 'Η κατάταξη αποθηκεύτηκε',
'tours.ski.saveFailed': 'Η κατάταξη δεν αποθηκεύτηκε.',
@@ -831,6 +830,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': 'Εισαγωγή {count} διαδρομής',
'tours.conversion.introPaddle':
'Μια εισαγωγή είναι ένα καταγεγραμμένο ίχνος. Σχεδιάστε μια επεξεργάσιμη διαδρομή με κουπί: το TREK παίρνει σημεία ελέγχου, τα ενώνει με ευθείες, όπως σχεδιάζεται μια διαδρομή με κουπί, και δείχνει πόσο κοντά φτάνει. Τίποτα δεν αλλάζει μέχρι να επιλέξετε.',
'tours.conversion.introSki':
'Μια εισαγωγή είναι ένα καταγεγραμμένο ίχνος. Σχεδιάστε μια επεξεργάσιμη διαδρομή σκι: το TREK παίρνει σημεία ελέγχου, τα ενώνει με ευθείες, όπως σχεδιάζεται μια διαδρομή σκι, και δείχνει πόσο κοντά φτάνει. Τίποτα δεν αλλάζει μέχρι να επιλέξετε.',
'tours.conversion.closePaddle':
'Η πρόταση ακολουθεί στενά το ίχνος. Τα σημεία της ενώνονται με ευθείες, άρα δεν είναι η ίδια γραμμή.',
'tours.planner.moreActions': 'Περισσότερες ενέργειες',
@@ -1157,6 +1158,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Ιππική βόλτα',
'tours.planner.tourTypeHint.horse': 'Με άλογο, σε σηματοδοτημένες ιππικές διαδρομές',
'tours.planner.namePlaceholder.horse': 'Ιππική βόλτα χωρίς τίτλο',
'tours.planner.namePlaceholder.ski': 'Διαδρομή σκι χωρίς τίτλο',
'tours.horse.time': 'Χρόνος ιππασίας',
'tours.horse.timeInfoLabel': 'Γιατί δεν υπάρχει χρόνος ιππασίας',
'tours.horse.timeInfo':
+14 -12
View File
@@ -204,7 +204,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Gyalogtúra',
'tourTypes.bike': 'Kerékpártúra',
'tourTypes.run': 'Futás',
'tourTypes.ski': 'Sí',
'tourTypes.ski': 'Sí és tél',
'tourTypes.kayak': 'Evezős túra',
'tourTypes.walk': 'Városi / városnéző séta',
'tourTypes.food': 'Gasztro- / bortúra',
@@ -402,33 +402,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Gyalog, az általad megadott nehézségig',
'tours.planner.tourTypeHint.bike': 'Kerékpárral, túra, országúti, gravel vagy MTB útvonallal',
'tours.planner.tourTypeHint.kayak': 'Vízen, kajakkal, kenuval vagy SUP-pal',
'tours.winter.title': 'Téli tevékenység',
'tours.winter.infoLabel': 'Mit jelent a téli jelölés',
'tours.winter.info':
'Csak a túra jelölése. Az útvonal, a meredekségi színek és a menetidő ugyanazok, mint bármely túránál, és semmit nem mondanak a hóról, a lavinákról vagy arról, hogy az út télen járható-e.',
'tours.winter.kind': 'A téli tevékenység fajtája',
'tours.winter.activity.winter_hike': 'Téli túra',
'tours.winter.activity.snowshoe': 'Hótalpas túra',
'tours.winter.labelOnly':
'Az utazók jelölték meg. Az útvonal és az idő úgy van tervezve, mint bármely túránál, téli szempontból nincs ellenőrizve.',
'tours.planner.tourTypeHint.ski': 'GPX-fájlból, ahogy rögzítették',
'tours.planner.tourTypeHint.ski': 'Sí, snowboard, hótalp, téli túrák',
'tours.ski.title': 'Sínyomvonal',
'tours.ski.discipline': 'Szakág',
'tours.ski.discipline.alpine': 'Alpesi',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Sífutás',
'tours.ski.discipline.touring': 'Sítúra',
'tours.ski.discipline.snowshoe': 'Hótalpas túra',
'tours.ski.discipline.winter_hike': 'Téli túra',
'tours.ski.technique': 'Technika',
'tours.ski.technique.classic': 'Klasszikus',
'tours.ski.technique.skating': 'Korcsolyázó',
'tours.ski.technique.unknown': 'Ismeretlen',
'tours.ski.chooseDiscipline': 'Válassz szakágat, hogy sínyomvonalként importáld.',
'tours.ski.chooseDisciplineToSave': 'Válassz szakágat a túra mentéséhez.',
'tours.ski.drawnFreely':
'Minden szakaszt egyenesen rajzolunk a pontjaid közé. Semmi sem veti össze pályákkal, felvonókkal vagy nyomvonalakkal.',
'tours.ski.chooseTechnique': 'Válaszd ki a technikát, vagy az Ismeretlent.',
'tours.ski.infoLabel': 'Mit kezd a TREK egy sínyomvonallal',
'tours.ski.info':
'Úgy marad, ahogy rögzítették, útvonaltervező soha nem számolja újra. A táv és a magasságok a fájlból származnak. A TREK nem számol síidőt, és sem a nyomvonal, sem a 3D lejtőszínei nem mondanak semmit a nehézségről, a hóról, a lavinákról vagy arról, hogy nyitva vannak-e a pályák.',
'Egy tervezett túra minden szakasza egyenesen fut a pontjai között, egy importált nyomvonal pedig úgy marad, ahogy rögzítették. Egyiket sem vezetjük pályákon, felvonókon vagy nyomvonalakon. A magasságok a terepből vagy a fájlból származnak. A TREK nem számol síidőt, és semmi itt, a 3D lejtőszínei sem, nem mond semmit a nehézségről, a hóról, a lavinákról vagy arról, hogy nyitva vannak-e a pályák.',
'tours.ski.time': 'Síidő',
'tours.ski.timeUnknown': 'Nincs kiszámolva',
'tours.ski.timeInfoLabel': 'Miért nincs síidő',
'tours.ski.timeInfo':
'A TREK nem számol síidőt: a szakaszok egyenesek, nem pályák, felvonók vagy nyomvonalak mentén tervezettek. Ha szeretnéd, add meg magad a tervezett teljes időt.',
'tours.ski.classifyTitle': 'Sínyomvonal besorolása',
'tours.ski.saved': 'Besorolás mentve',
'tours.ski.saveFailed': 'A besorolást nem sikerült menteni.',
@@ -817,6 +816,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': '{count} túra importálása',
'tours.conversion.introPaddle':
'Az import egy rögzített nyomvonal. Tervezz belőle szerkeszthető evezős túrát: a TREK kontrollpontokat vesz ki belőle, egyenes vonalakkal köti össze őket, ahogy az evezős túrát rajzolod, és megmutatja, mennyire közelíti meg. Semmi sem változik, amíg nem döntesz.',
'tours.conversion.introSki':
'Az import egy rögzített nyomvonal. Tervezz belőle szerkeszthető sítúrát: a TREK kontrollpontokat vesz ki belőle, egyenes vonalakkal köti össze őket, ahogy a sítúrát rajzolod, és megmutatja, mennyire közelíti meg. Semmi sem változik, amíg nem döntesz.',
'tours.conversion.closePaddle':
'A javaslat szorosan követi a nyomvonalat. Pontjait egyenes vonalak kötik össze, így nem ugyanaz a vonal.',
'tours.planner.moreActions': 'További műveletek',
@@ -1136,6 +1137,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Lovastúra',
'tours.planner.tourTypeHint.horse': 'Lóháton, jelzett lovas útvonalakon',
'tours.planner.namePlaceholder.horse': 'Névtelen lovastúra',
'tours.planner.namePlaceholder.ski': 'Névtelen sítúra',
'tours.horse.time': 'Lovaglási idő',
'tours.horse.timeInfoLabel': 'Miért nincs lovaglási idő',
'tours.horse.timeInfo':
+14 -12
View File
@@ -198,7 +198,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Pendakian',
'tourTypes.bike': 'Tur sepeda',
'tourTypes.run': 'Lari',
'tourTypes.ski': 'Ski', // same-as-en
'tourTypes.ski': 'Ski & musim dingin',
'tourTypes.kayak': 'Tur dayung',
'tourTypes.walk': 'Jalan-jalan kota / wisata',
'tourTypes.food': 'Tur kuliner / anggur',
@@ -397,33 +397,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Jalan kaki, dalam tingkat kesulitan yang kamu tentukan',
'tours.planner.tourTypeHint.bike': 'Dengan sepeda, rute untuk touring, road, gravel, atau MTB',
'tours.planner.tourTypeHint.kayak': 'Di air, dengan kayak, kano, atau SUP',
'tours.winter.title': 'Aktivitas musim dingin',
'tours.winter.infoLabel': 'Apa fungsi label musim dingin',
'tours.winter.info':
'Hanya label untuk pendakian. Rute, warna kemiringan, dan waktu jalan tetap seperti pendakian lain dan tidak mengatakan apa pun tentang salju, longsoran salju, atau apakah jalur bisa dilalui di musim dingin.',
'tours.winter.kind': 'Jenis aktivitas musim dingin',
'tours.winter.activity.winter_hike': 'Pendakian musim dingin',
'tours.winter.activity.snowshoe': 'Pendakian dengan sepatu salju',
'tours.winter.labelOnly':
'Ditandai oleh para pelancong. Rute dan waktu direncanakan seperti pendakian lain, tidak diperiksa untuk musim dingin.',
'tours.planner.tourTypeHint.ski': 'Dari berkas GPX, seperti yang direkam',
'tours.planner.tourTypeHint.ski': 'Ski, snowboard, sepatu salju, pendakian musim dingin',
'tours.ski.title': 'Jalur ski',
'tours.ski.discipline': 'Disiplin',
'tours.ski.discipline.alpine': 'Alpen',
'tours.ski.discipline.snowboard': 'Papan seluncur salju',
'tours.ski.discipline.cross_country': 'Ski lintas alam',
'tours.ski.discipline.touring': 'Tur ski',
'tours.ski.discipline.snowshoe': 'Sepatu salju',
'tours.ski.discipline.winter_hike': 'Pendakian salju',
'tours.ski.technique': 'Teknik',
'tours.ski.technique.classic': 'Klasik',
'tours.ski.technique.skating': 'Gaya bebas',
'tours.ski.technique.unknown': 'Tidak diketahui',
'tours.ski.chooseDiscipline': 'Pilih disiplin untuk mengimpor jalur sebagai ski.',
'tours.ski.chooseDisciplineToSave': 'Pilih disiplin untuk menyimpan tur.',
'tours.ski.drawnFreely':
'Setiap ruas digambar lurus di antara titik-titikmu. Tidak ada yang memeriksanya terhadap lintasan, lift, atau jalur.',
'tours.ski.chooseTechnique': 'Pilih teknik, atau Tidak diketahui.',
'tours.ski.infoLabel': 'Apa yang TREK lakukan dengan jalur ski',
'tours.ski.info':
'Disimpan seperti yang direkam dan tidak pernah dirutekan. Jarak dan ketinggian berasal dari berkas. TREK tidak menghitung waktu ski, dan baik jalur maupun warna kemiringan dalam 3D tidak mengatakan apa pun tentang kesulitan, salju, longsoran, atau apakah lintasan sedang dibuka.',
'Tur yang direncanakan menggambar setiap ruas lurus di antara titik-titiknya, jalur yang diimpor tetap seperti yang direkam. Keduanya tidak dirutekan lewat lintasan, lift, atau jalur. Ketinggian berasal dari medan atau berkas. TREK tidak menghitung waktu ski, dan tidak ada apa pun di sini, termasuk warna kemiringan dalam 3D, yang mengatakan sesuatu tentang kesulitan, salju, longsoran, atau apakah lintasan sedang dibuka.',
'tours.ski.time': 'Waktu ski',
'tours.ski.timeUnknown': 'Tidak dihitung',
'tours.ski.timeInfoLabel': 'Mengapa tidak ada waktu ski',
'tours.ski.timeInfo':
'TREK tidak menghitung waktu ski: ruas digambar lurus, tidak direncanakan lewat lintasan, lift, atau jalur. Jika mau, isi sendiri total waktu yang direncanakan.',
'tours.ski.classifyTitle': 'Klasifikasikan jalur ski',
'tours.ski.saved': 'Klasifikasi disimpan',
'tours.ski.saveFailed': 'Klasifikasi tidak dapat disimpan.',
@@ -801,6 +800,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm': 'Impor {count} tur',
'tours.conversion.introPaddle':
'Impor adalah jejak yang direkam. Rencanakan tur dayung yang bisa diedit: TREK mengambil titik kontrol darinya, menghubungkannya dengan garis lurus seperti tur dayung digambar, dan menunjukkan seberapa dekat hasilnya. Tidak ada yang berubah sampai kamu memilih.',
'tours.conversion.introSki':
'Impor adalah jejak yang direkam. Rencanakan tur ski yang bisa diedit: TREK mengambil titik kontrol darinya, menghubungkannya dengan garis lurus seperti tur ski digambar, dan menunjukkan seberapa dekat hasilnya. Tidak ada yang berubah sampai kamu memilih.',
'tours.conversion.closePaddle':
'Usulan mengikuti jejak dengan dekat. Titik-titiknya dihubungkan garis lurus, jadi bukan garis yang sama.',
'tours.planner.moreActions': 'Tindakan lainnya',
@@ -1113,6 +1114,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Tur berkuda',
'tours.planner.tourTypeHint.horse': 'Menunggang kuda, menyusuri rute berkuda bertanda',
'tours.planner.namePlaceholder.horse': 'Tur berkuda tanpa judul',
'tours.planner.namePlaceholder.ski': 'Tur ski tanpa judul',
'tours.horse.time': 'Waktu berkuda',
'tours.horse.timeInfoLabel': 'Mengapa tidak ada waktu berkuda',
'tours.horse.timeInfo':
+14 -12
View File
@@ -204,7 +204,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Escursione a piedi',
'tourTypes.bike': 'Escursione in bici',
'tourTypes.run': 'Corsa',
'tourTypes.ski': 'Sci',
'tourTypes.ski': 'Sci e inverno',
'tourTypes.kayak': 'Uscita in pagaia',
'tourTypes.walk': 'Passeggiata urbana / turistica',
'tourTypes.food': 'Tour enogastronomico',
@@ -405,33 +405,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'A piedi, entro una difficoltà che scegli tu',
'tours.planner.tourTypeHint.bike': 'In bici, percorso per cicloturismo, strada, gravel o MTB',
'tours.planner.tourTypeHint.kayak': 'In acqua, in kayak, canoa o SUP',
'tours.winter.title': 'Attività invernale',
'tours.winter.infoLabel': 'Cosa fa il contrassegno invernale',
'tours.winter.info':
'Solo un contrassegno dell’escursione. Percorso, colori di pendenza e tempo di cammino restano quelli di ogni escursione e non dicono nulla su neve, valanghe o percorribilità di un sentiero in inverno.',
'tours.winter.kind': 'Tipo di attività invernale',
'tours.winter.activity.winter_hike': 'Escursione invernale',
'tours.winter.activity.snowshoe': 'Ciaspolata',
'tours.winter.labelOnly':
'Contrassegnato dai viaggiatori. Percorso e tempi sono pianificati come per ogni escursione, non verificati per l’inverno.',
'tours.planner.tourTypeHint.ski': 'Da un file GPX, così come registrato',
'tours.planner.tourTypeHint.ski': 'Sci, snowboard, ciaspole, escursioni invernali',
'tours.ski.title': 'Traccia di sci',
'tours.ski.discipline': 'Disciplina',
'tours.ski.discipline.alpine': 'Alpino',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Sci di fondo',
'tours.ski.discipline.touring': 'Scialpinismo',
'tours.ski.discipline.snowshoe': 'Ciaspole',
'tours.ski.discipline.winter_hike': 'Escursione invernale',
'tours.ski.technique': 'Tecnica',
'tours.ski.technique.classic': 'Classica',
'tours.ski.technique.skating': 'Skating', // same-as-en
'tours.ski.technique.unknown': 'Sconosciuta',
'tours.ski.chooseDiscipline': 'Scegli una disciplina per importare la traccia come sci.',
'tours.ski.chooseDisciplineToSave': 'Scegli una disciplina per salvare il tour.',
'tours.ski.drawnFreely':
'Ogni tratto è disegnato in linea retta tra i tuoi punti. Nulla lo confronta con piste, impianti o sentieri.',
'tours.ski.chooseTechnique': 'Scegli la tecnica, oppure Sconosciuta.',
'tours.ski.infoLabel': 'Cosa fa TREK con una traccia di sci',
'tours.ski.info':
'Resta come registrata e non viene mai ricalcolata. Distanza e quote vengono dal file. TREK non calcola alcun tempo di sci, e né la traccia né i colori della pendenza in 3D dicono nulla su difficoltà, neve, valanghe o apertura di piste e anelli.',
'Un tour pianificato ha ogni tratto disegnato in linea retta tra i suoi punti, una traccia importata resta come registrata. Nessuno dei due viene instradato lungo piste, impianti o sentieri. Le quote vengono dal terreno o dal file. TREK non calcola alcun tempo di sci, e nulla qui, nemmeno i colori della pendenza in 3D, dice qualcosa su difficoltà, neve, valanghe o apertura di piste e anelli.',
'tours.ski.time': 'Tempo di sci',
'tours.ski.timeUnknown': 'Non calcolato',
'tours.ski.timeInfoLabel': 'Perché non c’è un tempo di sci',
'tours.ski.timeInfo':
'TREK non calcola alcun tempo di sci: i tratti sono disegnati in linea retta, non pianificati lungo piste, impianti o sentieri. Se vuoi, inserisci tu un totale previsto.',
'tours.ski.classifyTitle': 'Classifica traccia di sci',
'tours.ski.saved': 'Classificazione salvata',
'tours.ski.saveFailed': 'Impossibile salvare la classificazione.',
@@ -818,6 +817,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': 'Importa {count} tour',
'tours.conversion.introPaddle':
'Un import è una traccia registrata. Pianifica un’uscita in pagaia modificabile: TREK ne ricava punti di controllo, li collega con linee rette come si disegna un’uscita in pagaia e mostra quanto si avvicina. Nulla cambia finché non scegli.',
'tours.conversion.introSki':
'Un import è una traccia registrata. Pianifica un tour sciistico modificabile: TREK ne ricava punti di controllo, li collega con linee rette come si disegna un tour sciistico e mostra quanto si avvicina. Nulla cambia finché non scegli.',
'tours.conversion.closePaddle':
'La proposta segue da vicino la traccia. I suoi punti sono collegati da linee rette, quindi non è la stessa linea.',
'tours.planner.moreActions': 'Altre azioni',
@@ -1144,6 +1145,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Escursione a cavallo',
'tours.planner.tourTypeHint.horse': 'A cavallo, lungo itinerari equestri segnalati',
'tours.planner.namePlaceholder.horse': 'Escursione a cavallo senza titolo',
'tours.planner.namePlaceholder.ski': 'Tour sciistico senza titolo',
'tours.horse.time': 'Tempo a cavallo',
'tours.horse.timeInfoLabel': 'Perché non c’è un tempo a cavallo',
'tours.horse.timeInfo':
+12 -12
View File
@@ -195,7 +195,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'ハイキング',
'tourTypes.bike': 'サイクリング',
'tourTypes.run': 'ランニング',
'tourTypes.ski': 'スキー',
'tourTypes.ski': 'スキーと冬',
'tourTypes.kayak': 'パドルツアー',
'tourTypes.walk': '街歩き・観光',
'tourTypes.food': 'グルメ・ワインツアー',
@@ -387,33 +387,30 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': '徒歩、設定した難易度まで',
'tours.planner.tourTypeHint.bike': '自転車で、ツーリング、ロード、グラベル、MTB向けのルート',
'tours.planner.tourTypeHint.kayak': '水上で、カヤック、カヌー、SUPで',
'tours.winter.title': '冬のアクティビティ',
'tours.winter.infoLabel': '冬のラベルについて',
'tours.winter.info':
'ハイキングのラベルにすぎません。ルート、勾配の色、歩行時間は通常のハイキングと同じで、雪や雪崩、冬に道を歩けるかどうかについては何も示しません。',
'tours.winter.kind': '冬のアクティビティの種類',
'tours.winter.activity.winter_hike': '冬のハイキング',
'tours.winter.activity.snowshoe': 'スノーシューハイキング',
'tours.winter.labelOnly':
'旅行者が付けたラベルです。ルートと時間は通常のハイキングと同じく計画され、冬向けには確認されていません。',
'tours.planner.tourTypeHint.ski': 'GPX ファイルから、記録されたまま',
'tours.planner.tourTypeHint.ski': 'スキー、スノーボード、スノーシュー、冬のハイキング',
'tours.ski.title': 'スキーのトラック',
'tours.ski.discipline': '種目',
'tours.ski.discipline.alpine': 'アルペン',
'tours.ski.discipline.snowboard': 'スノーボード',
'tours.ski.discipline.cross_country': 'クロスカントリー',
'tours.ski.discipline.touring': '山スキー',
'tours.ski.discipline.snowshoe': 'スノーシュー',
'tours.ski.discipline.winter_hike': '冬のハイキング',
'tours.ski.technique': '走法',
'tours.ski.technique.classic': 'クラシカル',
'tours.ski.technique.skating': 'スケーティング',
'tours.ski.technique.unknown': '不明',
'tours.ski.chooseDiscipline': 'スキーとして取り込むには種目を選んでください。',
'tours.ski.chooseDisciplineToSave': '保存するには種目を選んでください。',
'tours.ski.drawnFreely': '各区間はポイントの間を直線で描きます。コース、リフト、トレイルとの照合は行いません。',
'tours.ski.chooseTechnique': '走法を選ぶか、不明を選んでください。',
'tours.ski.infoLabel': 'TREK がスキーのトラックで行うこと',
'tours.ski.info':
'記録されたまま保持され、ルート検索されることはありません。距離と標高はファイルの値です。TREK はスキーの所要時間を計算せず、トラックも 3D の勾配の色も、難易度、積雪、雪崩、コースの営業状況について何も示しません。',
'計画したツアーは各区間をポイントの間の直線で描き、取り込んだトラックは記録されたまま保持します。どちらもコース、リフト、トレイルに沿ったルート検索は行いません。標高は地形またはファイルの値です。TREK はスキーの所要時間を計算せず、3D の勾配の色を含めここにあるものは、難易度、積雪、雪崩、コースの営業状況について何も示しません。',
'tours.ski.time': 'スキー時間',
'tours.ski.timeUnknown': '計算なし',
'tours.ski.timeInfoLabel': 'スキー時間がない理由',
'tours.ski.timeInfo': 'TREK はスキー時間を計算しません。区間は直線で描かれ、コース、リフト、トレイルに沿って計画されていません。必要なら予定の合計時間をご自身で入力してください。',
'tours.ski.classifyTitle': 'スキーのトラックを分類',
'tours.ski.saved': '分類を保存しました',
'tours.ski.saveFailed': '分類を保存できませんでした。',
@@ -785,6 +782,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm': '{count} 件のツアーを取り込む',
'tours.conversion.introPaddle':
'インポートは記録されたトラックです。編集できるパドルツアーを計画すると、TREK はそこから制御点を取り出し、パドルツアーの描き方どおり直線で結び、どれだけ近いかを示します。選ぶまで何も変わりません。',
'tours.conversion.introSki':
'インポートは記録されたトラックです。編集できるスキーツアーを計画すると、TREK はそこから制御点を取り出し、スキーツアーの描き方どおり直線で結び、どれだけ近いかを示します。選ぶまで何も変わりません。',
'tours.conversion.closePaddle':
'提案はトラックによく沿っています。ポイントは直線で結ばれているため、同じ線ではありません。',
'tours.planner.moreActions': 'その他の操作',
@@ -1088,6 +1087,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': '乗馬ツアー',
'tours.planner.tourTypeHint.horse': '馬に乗って、標識のある乗馬ルートを進む',
'tours.planner.namePlaceholder.horse': '名前のない乗馬ツアー',
'tours.planner.namePlaceholder.ski': '名前のないスキーツアー',
'tours.horse.time': '乗馬時間',
'tours.horse.timeInfoLabel': '乗馬時間がない理由',
'tours.horse.timeInfo':
+12 -12
View File
@@ -193,7 +193,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': '하이킹',
'tourTypes.bike': '자전거 투어',
'tourTypes.run': '달리기',
'tourTypes.ski': '스키',
'tourTypes.ski': '스키와 겨울',
'tourTypes.kayak': '패들 투어',
'tourTypes.walk': '도심 산책 / 관광',
'tourTypes.food': '미식 / 와인 투어',
@@ -385,33 +385,30 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': '도보로, 설정한 난이도 안에서',
'tours.planner.tourTypeHint.bike': '자전거로, 투어링, 로드, 그래블, MTB에 맞춘 경로',
'tours.planner.tourTypeHint.kayak': '물 위에서, 카약, 카누 또는 SUP로',
'tours.winter.title': '겨울 활동',
'tours.winter.infoLabel': '겨울 표시의 의미',
'tours.winter.info':
'하이킹을 위한 표시일 뿐입니다. 경로, 경사 색상, 걷는 시간은 다른 하이킹과 같으며 눈, 눈사태 또는 겨울에 길을 걸을 수 있는지에 대해서는 아무것도 알려 주지 않습니다.',
'tours.winter.kind': '겨울 활동 종류',
'tours.winter.activity.winter_hike': '겨울 하이킹',
'tours.winter.activity.snowshoe': '스노슈 하이킹',
'tours.winter.labelOnly':
'여행자가 표시했습니다. 경로와 시간은 다른 하이킹과 같이 계획되며 겨울 조건은 확인하지 않았습니다.',
'tours.planner.tourTypeHint.ski': 'GPX 파일에서, 기록된 그대로',
'tours.planner.tourTypeHint.ski': '스키, 스노보드, 스노슈, 겨울 하이킹',
'tours.ski.title': '스키 트랙',
'tours.ski.discipline': '종목',
'tours.ski.discipline.alpine': '알파인',
'tours.ski.discipline.snowboard': '스노보드',
'tours.ski.discipline.cross_country': '크로스컨트리',
'tours.ski.discipline.touring': '산악 스키',
'tours.ski.discipline.snowshoe': '스노슈',
'tours.ski.discipline.winter_hike': '겨울 하이킹',
'tours.ski.technique': '주법',
'tours.ski.technique.classic': '클래식',
'tours.ski.technique.skating': '스케이팅',
'tours.ski.technique.unknown': '알 수 없음',
'tours.ski.chooseDiscipline': '트랙을 스키로 가져오려면 종목을 선택하세요.',
'tours.ski.chooseDisciplineToSave': '투어를 저장하려면 종목을 선택하세요.',
'tours.ski.drawnFreely': '각 구간은 지점 사이를 직선으로 그립니다. 슬로프, 리프트, 트레일과 대조하지 않습니다.',
'tours.ski.chooseTechnique': '주법을 선택하거나 알 수 없음을 선택하세요.',
'tours.ski.infoLabel': 'TREK이 스키 트랙으로 하는 일',
'tours.ski.info':
'기록된 그대로 유지되며 경로를 다시 계산하지 않습니다. 거리와 고도는 파일에서 가져옵니다. TREK은 스키 시간을 계산하지 않으며, 트랙도 3D 경사 색상도 난이도, 눈, 눈사태, 슬로프 운영 여부에 대해 아무것도 알려 주지 않습니다.',
'계획한 투어는 각 구간을 지점 사이의 직선으로 그리고, 가져온 트랙은 기록된 그대로 유지합니다. 어느 쪽도 슬로프, 리프트, 트레일을 따라 경로를 계산하지 않습니다. 고도는 지형 또는 파일에서 가져옵니다. TREK은 스키 시간을 계산하지 않으며, 3D 경사 색상을 포함해 여기의 어떤 것도 난이도, 눈, 눈사태, 슬로프 운영 여부에 대해 알려 주지 않습니다.',
'tours.ski.time': '스키 시간',
'tours.ski.timeUnknown': '계산 안 함',
'tours.ski.timeInfoLabel': '스키 시간이 없는 이유',
'tours.ski.timeInfo': 'TREK은 스키 시간을 계산하지 않습니다. 구간은 직선으로 그려지며 슬로프, 리프트, 트레일을 따라 계획되지 않습니다. 원하면 예정 총 시간을 직접 입력하세요.',
'tours.ski.classifyTitle': '스키 트랙 분류',
'tours.ski.saved': '분류를 저장했습니다',
'tours.ski.saveFailed': '분류를 저장하지 못했습니다.',
@@ -781,6 +778,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm': '투어 {count}개 가져오기',
'tours.conversion.introPaddle':
'가져온 항목은 기록된 트랙입니다. 편집 가능한 패들 투어를 계획하면 TREK이 트랙에서 제어 지점을 뽑아 패들 투어를 그리듯 직선으로 잇고, 얼마나 가까운지 보여 줍니다. 선택하기 전까지는 아무것도 바뀌지 않습니다.',
'tours.conversion.introSki':
'가져온 항목은 기록된 트랙입니다. 편집 가능한 스키 투어를 계획하면 TREK이 트랙에서 제어 지점을 뽑아 스키 투어를 그리듯 직선으로 잇고, 얼마나 가까운지 보여 줍니다. 선택하기 전까지는 아무것도 바뀌지 않습니다.',
'tours.conversion.closePaddle': '제안이 트랙을 가깝게 따릅니다. 지점들이 직선으로 이어져 있어 같은 선은 아닙니다.',
'tours.planner.moreActions': '작업 더 보기',
'tours.paddle.role.put_in': '입수 지점',
@@ -1083,6 +1082,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': '승마 투어',
'tours.planner.tourTypeHint.horse': '말을 타고, 표지가 있는 승마 루트를 따라',
'tours.planner.namePlaceholder.horse': '이름 없는 승마 투어',
'tours.planner.namePlaceholder.ski': '이름 없는 스키 투어',
'tours.horse.time': '승마 시간',
'tours.horse.timeInfoLabel': '승마 시간이 없는 이유',
'tours.horse.timeInfo':
+14 -12
View File
@@ -204,7 +204,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Wandeling',
'tourTypes.bike': 'Fietstocht',
'tourTypes.run': 'Hardlooptocht',
'tourTypes.ski': 'Ski', // same-as-en
'tourTypes.ski': 'Ski en winter',
'tourTypes.kayak': 'Peddeltocht',
'tourTypes.walk': 'Stadswandeling / bezienswaardigheden',
'tourTypes.food': 'Culinaire tocht / wijntocht',
@@ -404,33 +404,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Te voet, binnen een moeilijkheid die je kiest',
'tours.planner.tourTypeHint.bike': 'Met de fiets, gerouteerd voor toer, race, gravel of MTB',
'tours.planner.tourTypeHint.kayak': 'Op het water, met kajak, kano of SUP',
'tours.winter.title': 'Winteractiviteit',
'tours.winter.infoLabel': 'Wat het winterlabel doet',
'tours.winter.info':
'Alleen een label voor de wandeling. Route, hellingskleuren en looptijd blijven zoals bij elke wandeling en zeggen niets over sneeuw, lawines of de begaanbaarheid van een pad in de winter.',
'tours.winter.kind': 'Soort winteractiviteit',
'tours.winter.activity.winter_hike': 'Winterwandeling',
'tours.winter.activity.snowshoe': 'Sneeuwschoenwandeling',
'tours.winter.labelOnly':
'Gemarkeerd door de reizigers. Route en tijd worden gepland als bij elke wandeling, niet gecontroleerd op de winter.',
'tours.planner.tourTypeHint.ski': 'Uit een GPX-bestand, zoals opgenomen',
'tours.planner.tourTypeHint.ski': 'Skiën, snowboarden, sneeuwschoenen, winterwandelingen',
'tours.ski.title': 'Skispoor',
'tours.ski.discipline': 'Discipline', // same-as-en
'tours.ski.discipline.alpine': 'Alpine', // same-as-en
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Langlaufen',
'tours.ski.discipline.touring': 'Toerskiën',
'tours.ski.discipline.snowshoe': 'Sneeuwschoenen',
'tours.ski.discipline.winter_hike': 'Winterwandelen',
'tours.ski.technique': 'Techniek',
'tours.ski.technique.classic': 'Klassiek',
'tours.ski.technique.skating': 'Skating', // same-as-en
'tours.ski.technique.unknown': 'Onbekend',
'tours.ski.chooseDiscipline': 'Kies een discipline om het spoor als ski te importeren.',
'tours.ski.chooseDisciplineToSave': 'Kies een discipline om de tocht op te slaan.',
'tours.ski.drawnFreely':
'Elk deel wordt recht tussen je punten getekend. Niets toetst het aan pistes, liften of paden.',
'tours.ski.chooseTechnique': 'Kies de techniek, of Onbekend.',
'tours.ski.infoLabel': 'Wat TREK met een skispoor doet',
'tours.ski.info':
'Blijft zoals opgenomen en wordt nooit gerouteerd. Afstand en hoogtes komen uit het bestand. TREK berekent geen skitijd, en noch het spoor noch de hellingkleuren in 3D zeggen iets over moeilijkheid, sneeuw, lawines of of pistes en loipes open zijn.',
'Bij een geplande tocht is elk deel recht tussen de punten getekend, een geïmporteerd spoor blijft zoals opgenomen. Geen van beide wordt over pistes, liften of paden gerouteerd. Hoogtes komen uit het terrein of het bestand. TREK berekent geen skitijd, en niets hier, ook de hellingkleuren in 3D niet, zegt iets over moeilijkheid, sneeuw, lawines of of pistes en loipes open zijn.',
'tours.ski.time': 'Skitijd',
'tours.ski.timeUnknown': 'Niet berekend',
'tours.ski.timeInfoLabel': 'Waarom er geen skitijd is',
'tours.ski.timeInfo':
'TREK berekent geen skitijd: de delen zijn recht getekend, niet over pistes, liften of paden gepland. Vul zelf een geplande totale tijd in als je die wilt.',
'tours.ski.classifyTitle': 'Skispoor indelen',
'tours.ski.saved': 'Indeling opgeslagen',
'tours.ski.saveFailed': 'De indeling kon niet worden opgeslagen.',
@@ -817,6 +816,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': '{count} tocht importeren',
'tours.conversion.introPaddle':
'Een import is een opgenomen track. Plan een bewerkbare peddeltocht: TREK haalt er controlepunten uit, verbindt ze met rechte lijnen zoals een peddeltocht wordt getekend en laat zien hoe dicht dat in de buurt komt. Er verandert niets tot je kiest.',
'tours.conversion.introSki':
'Een import is een opgenomen track. Plan een bewerkbare skitocht: TREK haalt er controlepunten uit, verbindt ze met rechte lijnen zoals een skitocht wordt getekend en laat zien hoe dicht dat in de buurt komt. Er verandert niets tot je kiest.',
'tours.conversion.closePaddle':
'Het voorstel volgt de track nauw. De punten zijn met rechte lijnen verbonden, dus het is niet dezelfde lijn.',
'tours.planner.moreActions': 'Meer acties',
@@ -1137,6 +1138,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Rit te paard',
'tours.planner.tourTypeHint.horse': 'Te paard, langs bewegwijzerde ruiterroutes',
'tours.planner.namePlaceholder.horse': 'Naamloze rit',
'tours.planner.namePlaceholder.ski': 'Naamloze skitocht',
'tours.horse.time': 'Rijtijd',
'tours.horse.timeInfoLabel': 'Waarom er geen rijtijd is',
'tours.horse.timeInfo':
+14 -12
View File
@@ -212,7 +212,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Wędrówka piesza',
'tourTypes.bike': 'Wycieczka rowerowa',
'tourTypes.run': 'Bieg',
'tourTypes.ski': 'Narty',
'tourTypes.ski': 'Narty i zima',
'tourTypes.kayak': 'Spływ',
'tourTypes.walk': 'Spacer po mieście / zwiedzanie',
'tourTypes.food': 'Wycieczka kulinarna / winiarska',
@@ -411,33 +411,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Pieszo, w granicach wybranej trudności',
'tours.planner.tourTypeHint.bike': 'Na rowerze, trasa dla turystyki, szosy, gravela lub MTB',
'tours.planner.tourTypeHint.kayak': 'Na wodzie, kajakiem, kanadyjką lub SUP-em',
'tours.winter.title': 'Aktywność zimowa',
'tours.winter.infoLabel': 'Co daje oznaczenie zimowe',
'tours.winter.info':
'Tylko oznaczenie wędrówki. Trasa, kolory nachylenia i czas marszu pozostają jak przy każdej wędrówce i nic nie mówią o śniegu, lawinach ani o tym, czy ścieżka jest zimą do przejścia.',
'tours.winter.kind': 'Rodzaj aktywności zimowej',
'tours.winter.activity.winter_hike': 'Wędrówka zimowa',
'tours.winter.activity.snowshoe': 'Wędrówka na rakietach śnieżnych',
'tours.winter.labelOnly':
'Oznaczone przez podróżnych. Trasa i czas są planowane jak przy każdej wędrówce, bez sprawdzania pod kątem zimy.',
'tours.planner.tourTypeHint.ski': 'Z pliku GPX, tak jak został nagrany',
'tours.planner.tourTypeHint.ski': 'Narty, snowboard, rakiety śnieżne, zimowe wędrówki',
'tours.ski.title': 'Ślad narciarski',
'tours.ski.discipline': 'Dyscyplina',
'tours.ski.discipline.alpine': 'Zjazdowe',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Biegowe',
'tours.ski.discipline.touring': 'Skitury',
'tours.ski.discipline.snowshoe': 'Rakiety śnieżne',
'tours.ski.discipline.winter_hike': 'Wędrówka zimowa',
'tours.ski.technique': 'Technika',
'tours.ski.technique.classic': 'Klasyczna',
'tours.ski.technique.skating': 'Łyżwowa',
'tours.ski.technique.unknown': 'Nieznana',
'tours.ski.chooseDiscipline': 'Wybierz dyscyplinę, aby zaimportować ślad jako narty.',
'tours.ski.chooseDisciplineToSave': 'Wybierz dyscyplinę, aby zapisać trasę.',
'tours.ski.drawnFreely':
'Każdy odcinek jest rysowany prosto między twoimi punktami. Nic nie sprawdza go względem tras, wyciągów ani szlaków.',
'tours.ski.chooseTechnique': 'Wybierz technikę lub Nieznana.',
'tours.ski.infoLabel': 'Co TREK robi ze śladem narciarskim',
'tours.ski.info':
'Pozostaje taki, jak został nagrany, i nigdy nie jest wyznaczany na nowo. Dystans i wysokości pochodzą z pliku. TREK nie wylicza czasu na nartach, a ani ślad, ani kolory nachylenia w 3D nie mówią nic o trudności, śniegu, lawinach ani o tym, czy trasy są otwarte.',
'Zaplanowana trasa ma każdy odcinek narysowany prosto między swoimi punktami, a zaimportowany ślad pozostaje taki, jak został nagrany. Żaden nie jest wyznaczany po trasach, wyciągach ani szlakach. Wysokości pochodzą z terenu lub z pliku. TREK nie wylicza czasu na nartach i nic tutaj, także kolory nachylenia w 3D, nie mówi nic o trudności, śniegu, lawinach ani o tym, czy trasy są otwarte.',
'tours.ski.time': 'Czas na nartach',
'tours.ski.timeUnknown': 'Nie wyliczono',
'tours.ski.timeInfoLabel': 'Dlaczego nie ma czasu na nartach',
'tours.ski.timeInfo':
'TREK nie wylicza czasu na nartach: odcinki są narysowane prosto, a nie zaplanowane po trasach, wyciągach czy szlakach. Jeśli chcesz, wpisz sam planowany czas łączny.',
'tours.ski.classifyTitle': 'Sklasyfikuj ślad narciarski',
'tours.ski.saved': 'Klasyfikację zapisano',
'tours.ski.saveFailed': 'Nie udało się zapisać klasyfikacji.',
@@ -838,6 +837,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.many': 'Importuj {count} wycieczek',
'tours.conversion.introPaddle':
'Import to nagrany ślad. Zaplanuj edytowalny spływ: TREK pobiera z niego punkty kontrolne, łączy je prostymi liniami, tak jak rysuje się spływ, i pokazuje, jak blisko to wypada. Nic się nie zmienia, dopóki nie wybierzesz.',
'tours.conversion.introSki':
'Import to nagrany ślad. Zaplanuj edytowalną wycieczkę narciarską: TREK pobiera z niego punkty kontrolne, łączy je prostymi liniami, tak jak rysuje się wycieczkę narciarską, i pokazuje, jak blisko to wypada. Nic się nie zmienia, dopóki nie wybierzesz.',
'tours.conversion.closePaddle':
'Propozycja ściśle trzyma się śladu. Jej punkty łączą proste linie, więc to nie jest ta sama linia.',
'tours.planner.moreActions': 'Więcej działań',
@@ -1168,6 +1169,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Przejażdżka konna',
'tours.planner.tourTypeHint.horse': 'Konno, oznakowanymi szlakami konnymi',
'tours.planner.namePlaceholder.horse': 'Przejażdżka bez nazwy',
'tours.planner.namePlaceholder.ski': 'Wycieczka narciarska bez nazwy',
'tours.horse.time': 'Czas jazdy',
'tours.horse.timeInfoLabel': 'Dlaczego nie ma czasu jazdy',
'tours.horse.timeInfo':
+14 -12
View File
@@ -214,7 +214,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Пеший поход',
'tourTypes.bike': 'Велотур',
'tourTypes.run': 'Пробежка',
'tourTypes.ski': 'Лыжи',
'tourTypes.ski': 'Лыжи и зима',
'tourTypes.kayak': 'Сплав',
'tourTypes.walk': 'Прогулка по городу / достопримечательностям',
'tourTypes.food': 'Гастрономический / винный тур',
@@ -415,33 +415,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Пешком, в пределах выбранной сложности',
'tours.planner.tourTypeHint.bike': 'На велосипеде, маршрут для туризма, шоссе, гравела или МТБ',
'tours.planner.tourTypeHint.kayak': 'По воде, на каяке, каноэ или SUP',
'tours.winter.title': 'Зимняя активность',
'tours.winter.infoLabel': 'Что означает зимняя отметка',
'tours.winter.info':
'Только отметка похода. Маршрут, цвета крутизны и время в пути остаются как у любого похода и ничего не говорят о снеге, лавинах или проходимости тропы зимой.',
'tours.winter.kind': 'Вид зимней активности',
'tours.winter.activity.winter_hike': 'Зимний поход',
'tours.winter.activity.snowshoe': 'Поход на снегоступах',
'tours.winter.labelOnly':
'Отмечено путешественниками. Маршрут и время рассчитаны как для любого похода, без проверки на зимние условия.',
'tours.planner.tourTypeHint.ski': 'Из файла GPX, как записано',
'tours.planner.tourTypeHint.ski': 'Лыжи, сноуборд, снегоступы, зимние походы',
'tours.ski.title': 'Лыжный трек',
'tours.ski.discipline': 'Дисциплина',
'tours.ski.discipline.alpine': 'Горные лыжи',
'tours.ski.discipline.snowboard': 'Сноуборд',
'tours.ski.discipline.cross_country': 'Беговые лыжи',
'tours.ski.discipline.touring': 'Ски-тур',
'tours.ski.discipline.snowshoe': 'Снегоступы',
'tours.ski.discipline.winter_hike': 'Зимний поход',
'tours.ski.technique': 'Техника',
'tours.ski.technique.classic': 'Классика',
'tours.ski.technique.skating': 'Конёк',
'tours.ski.technique.unknown': 'Неизвестно',
'tours.ski.chooseDiscipline': 'Выберите дисциплину, чтобы импортировать трек как лыжи.',
'tours.ski.chooseDisciplineToSave': 'Выберите дисциплину, чтобы сохранить маршрут.',
'tours.ski.drawnFreely':
'Каждый участок рисуется прямой между вашими точками. Ничто не сверяет его с трассами, подъёмниками или тропами.',
'tours.ski.chooseTechnique': 'Выберите технику или «Неизвестно».',
'tours.ski.infoLabel': 'Что TREK делает с лыжным треком',
'tours.ski.info':
'Остаётся таким, как записан, и никогда не прокладывается заново. Расстояние и высоты взяты из файла. TREK не рассчитывает время на лыжах, а ни трек, ни цвета уклона в 3D ничего не говорят о сложности, снеге, лавинах или о том, открыты ли трассы и лыжни.',
'В запланированном маршруте каждый участок нарисован прямой между его точками, импортированный трек остаётся таким, как записан. Ни один из них не прокладывается по трассам, подъёмникам или тропам. Высоты берутся из рельефа или из файла. TREK не рассчитывает время на лыжах, и ничто здесь, включая цвета уклона в 3D, не говорит о сложности, снеге, лавинах или о том, открыты ли трассы и лыжни.',
'tours.ski.time': 'Время на лыжах',
'tours.ski.timeUnknown': 'Не рассчитано',
'tours.ski.timeInfoLabel': 'Почему нет времени на лыжах',
'tours.ski.timeInfo':
'TREK не рассчитывает время на лыжах: участки нарисованы прямыми, а не проложены по трассам, подъёмникам или тропам. При желании укажите общее время сами.',
'tours.ski.classifyTitle': 'Классифицировать лыжный трек',
'tours.ski.saved': 'Классификация сохранена',
'tours.ski.saveFailed': 'Не удалось сохранить классификацию.',
@@ -841,6 +840,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.many': 'Импортировать {count} туров',
'tours.conversion.introPaddle':
'Импорт — это записанный трек. Спланируйте редактируемый сплав: TREK берёт из него контрольные точки, соединяет их прямыми линиями, как рисуется сплав, и показывает, насколько это близко. Ничего не меняется, пока вы не решите.',
'tours.conversion.introSki':
'Импорт представляет собой записанный трек. Спланируйте редактируемый лыжный маршрут: TREK берёт из него контрольные точки, соединяет их прямыми линиями, как рисуется лыжный маршрут, и показывает, насколько это близко. Ничего не меняется, пока вы не решите.',
'tours.conversion.closePaddle':
'Предложение близко следует треку. Его точки соединены прямыми линиями, поэтому это не та же линия.',
'tours.planner.moreActions': 'Другие действия',
@@ -1171,6 +1172,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Конная прогулка',
'tours.planner.tourTypeHint.horse': 'Верхом, по маркированным конным маршрутам',
'tours.planner.namePlaceholder.horse': 'Конная прогулка без названия',
'tours.planner.namePlaceholder.ski': 'Лыжный маршрут без названия',
'tours.horse.time': 'Время в седле',
'tours.horse.timeInfoLabel': 'Почему нет времени в седле',
'tours.horse.timeInfo':
+14 -12
View File
@@ -204,7 +204,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Pešia túra',
'tourTypes.bike': 'Cyklotúra',
'tourTypes.run': 'Beh',
'tourTypes.ski': 'Lyže',
'tourTypes.ski': 'Lyže a zima',
'tourTypes.kayak': 'Vodácka túra',
'tourTypes.walk': 'Prechádzka mestom / po pamiatkach',
'tourTypes.food': 'Gastronomická / vínna túra',
@@ -396,33 +396,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Pešo, do obtiažnosti, ktorú nastavíš',
'tours.planner.tourTypeHint.bike': 'Na bicykli, trasa pre trekking, cestu, gravel alebo MTB',
'tours.planner.tourTypeHint.kayak': 'Na vode, na kajaku, kanoe alebo SUP',
'tours.winter.title': 'Zimná aktivita',
'tours.winter.infoLabel': 'Čo robí zimné označenie',
'tours.winter.info':
'Len označenie túry. Trasa, farby sklonu a čas chôdze zostávajú ako pri každej túre a nehovoria nič o snehu, lavínach ani o tom, či je cesta v zime schodná.',
'tours.winter.kind': 'Druh zimnej aktivity',
'tours.winter.activity.winter_hike': 'Zimná turistika',
'tours.winter.activity.snowshoe': 'Túra na snežniciach',
'tours.winter.labelOnly':
'Označené cestovateľmi. Trasa a čas sa plánujú ako pri každej túre, bez kontroly zimných podmienok.',
'tours.planner.tourTypeHint.ski': 'Zo súboru GPX, tak ako bola zaznamenaná',
'tours.planner.tourTypeHint.ski': 'Lyže, snowboard, snežnice, zimné túry',
'tours.ski.title': 'Lyžiarska trasa',
'tours.ski.discipline': 'Disciplína',
'tours.ski.discipline.alpine': 'Zjazd',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Beh na lyžiach',
'tours.ski.discipline.touring': 'Skialpinizmus',
'tours.ski.discipline.snowshoe': 'Snežnice',
'tours.ski.discipline.winter_hike': 'Zimná turistika',
'tours.ski.technique': 'Technika',
'tours.ski.technique.classic': 'Klasika',
'tours.ski.technique.skating': 'Korčuľovanie',
'tours.ski.technique.unknown': 'Neznáma',
'tours.ski.chooseDiscipline': 'Vyberte disciplínu na import trasy ako lyže.',
'tours.ski.chooseDisciplineToSave': 'Vyberte disciplínu, aby ste mohli túru uložiť.',
'tours.ski.drawnFreely':
'Každý úsek sa kreslí rovno medzi vašimi bodmi. Nič ho neporovnáva so zjazdovkami, vlekmi ani stopami.',
'tours.ski.chooseTechnique': 'Vyberte techniku, alebo Neznáma.',
'tours.ski.infoLabel': 'Čo TREK robí s lyžiarskou trasou',
'tours.ski.info':
'Zostáva tak, ako bola zaznamenaná, a nikdy sa neprepočítava. Vzdialenosť a výšky pochádzajú zo súboru. TREK nepočíta žiadny čas na lyžiach a ani trasa, ani farby sklonu v 3D nehovoria nič o náročnosti, snehu, lavínach ani o tom, či sú zjazdovky a stopy otvorené.',
'Naplánovaná túra má každý úsek nakreslený rovno medzi svojimi bodmi, importovaná trasa zostáva tak, ako bola zaznamenaná. Ani jedna nevedie po zjazdovkách, vlekoch ani stopách. Výšky pochádzajú z terénu alebo zo súboru. TREK nepočíta žiadny čas na lyžiach a nič tu, ani farby sklonu v 3D, nehovorí nič o náročnosti, snehu, lavínach ani o tom, či sú zjazdovky a stopy otvorené.',
'tours.ski.time': 'Čas na lyžiach',
'tours.ski.timeUnknown': 'Nepočíta sa',
'tours.ski.timeInfoLabel': 'Prečo tu nie je čas na lyžiach',
'tours.ski.timeInfo':
'TREK čas na lyžiach nepočíta: úseky sú nakreslené rovno, nie naplánované po zjazdovkách, vlekoch alebo stopách. Ak chcete, zadajte plánovaný celkový čas sami.',
'tours.ski.classifyTitle': 'Zaradiť lyžiarsku trasu',
'tours.ski.saved': 'Zaradenie uložené',
'tours.ski.saveFailed': 'Zaradenie sa nepodarilo uložiť.',
@@ -809,6 +808,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.few': 'Importovať {count} túry',
'tours.conversion.introPaddle':
'Import je zaznamenaná trasa. Naplánujte upraviteľnú vodácku túru: TREK z nej vezme kontrolné body, spojí ich priamymi čiarami, ako sa vodácka túra kreslí, a ukáže, ako blízko to je. Nič sa nezmení, kým sa nerozhodnete.',
'tours.conversion.introSki':
'Import je zaznamenaná trasa. Naplánujte upraviteľnú lyžiarsku túru: TREK z nej vezme kontrolné body, spojí ich priamymi čiarami, ako sa lyžiarska túra kreslí, a ukáže, ako blízko to je. Nič sa nezmení, kým sa nerozhodnete.',
'tours.conversion.closePaddle':
'Návrh trasu tesne sleduje. Jeho body spájajú priame čiary, takže to nie je tá istá čiara.',
'tours.planner.moreActions': 'Ďalšie akcie',
@@ -1127,6 +1128,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Vychádzka na koni',
'tours.planner.tourTypeHint.horse': 'Na koni, po značených jazdeckých trasách',
'tours.planner.namePlaceholder.horse': 'Vychádzka bez názvu',
'tours.planner.namePlaceholder.ski': 'Lyžiarska túra bez názvu',
'tours.horse.time': 'Čas jazdy',
'tours.horse.timeInfoLabel': 'Prečo tu nie je čas jazdy',
'tours.horse.timeInfo':
+14 -12
View File
@@ -199,7 +199,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Vandring',
'tourTypes.bike': 'Cykeltur',
'tourTypes.run': 'Löptur',
'tourTypes.ski': 'Skidor',
'tourTypes.ski': 'Skidor och vinter',
'tourTypes.kayak': 'Paddeltur',
'tourTypes.walk': 'Stadspromenad / sightseeing',
'tourTypes.food': 'Mat- och vintur',
@@ -394,33 +394,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Till fots, inom en svårighet du väljer',
'tours.planner.tourTypeHint.bike': 'Med cykel, rutt för tur, landsväg, grus eller MTB',
'tours.planner.tourTypeHint.kayak': 'På vattnet, med kajak, kanot eller SUP',
'tours.winter.title': 'Vinteraktivitet',
'tours.winter.infoLabel': 'Vad vintermärkningen gör',
'tours.winter.info':
'Bara en märkning av vandringen. Rutt, lutningsfärger och gångtid är desamma som för alla vandringar och säger inget om snö, laviner eller om en stig går att gå på vintern.',
'tours.winter.kind': 'Typ av vinteraktivitet',
'tours.winter.activity.winter_hike': 'Vintervandring',
'tours.winter.activity.snowshoe': 'Snöskovandring',
'tours.winter.labelOnly':
'Märkt av resenärerna. Rutt och tid planeras som för alla vandringar, inte kontrollerade för vinter.',
'tours.planner.tourTypeHint.ski': 'Från en GPX-fil, som den spelades in',
'tours.planner.tourTypeHint.ski': 'Skidor, snowboard, snöskor, vintervandringar',
'tours.ski.title': 'Skidspår',
'tours.ski.discipline': 'Gren',
'tours.ski.discipline.alpine': 'Utförsåkning',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Längdskidor',
'tours.ski.discipline.touring': 'Topptur',
'tours.ski.discipline.snowshoe': 'Snöskor',
'tours.ski.discipline.winter_hike': 'Vintervandring',
'tours.ski.technique': 'Teknik',
'tours.ski.technique.classic': 'Klassisk',
'tours.ski.technique.skating': 'Skate',
'tours.ski.technique.unknown': 'Okänd',
'tours.ski.chooseDiscipline': 'Välj en gren för att importera spåret som skidor.',
'tours.ski.chooseDisciplineToSave': 'Välj en gren för att spara turen.',
'tours.ski.drawnFreely':
'Varje etapp ritas rakt mellan dina punkter. Inget stämmer av den mot backar, liftar eller leder.',
'tours.ski.chooseTechnique': 'Välj teknik, eller Okänd.',
'tours.ski.infoLabel': 'Vad TREK gör med ett skidspår',
'tours.ski.info':
'Behålls som det spelades in och ruttplaneras aldrig. Sträcka och höjder kommer från filen. TREK räknar inte ut någon skidtid, och varken spåret eller lutningsfärgerna i 3D säger något om svårighet, snö, laviner eller om backar och spår är öppna.',
'En planerad tur har varje etapp ritad rakt mellan sina punkter, ett importerat spår behålls som det spelades in. Inget av dem ruttplaneras längs backar, liftar eller leder. Höjderna kommer från terrängen eller filen. TREK räknar inte ut någon skidtid, och inget här, inte heller lutningsfärgerna i 3D, säger något om svårighet, snö, laviner eller om backar och spår är öppna.',
'tours.ski.time': 'Skidtid',
'tours.ski.timeUnknown': 'Inte uträknad',
'tours.ski.timeInfoLabel': 'Varför det inte finns någon skidtid',
'tours.ski.timeInfo':
'TREK räknar inte ut någon skidtid: etapperna ritas raka, inte planerade längs backar, liftar eller leder. Ange själv en planerad total tid om du vill.',
'tours.ski.classifyTitle': 'Klassa skidspår',
'tours.ski.saved': 'Klassning sparad',
'tours.ski.saveFailed': 'Klassningen kunde inte sparas.',
@@ -800,6 +799,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': 'Importera {count} tur',
'tours.conversion.introPaddle':
'En import är ett inspelat spår. Planera en redigerbar paddeltur: TREK tar kontrollpunkter ur det, förbinder dem med raka linjer som en paddeltur ritas och visar hur nära det kommer. Inget ändras förrän du väljer.',
'tours.conversion.introSki':
'En import är ett inspelat spår. Planera en redigerbar skidtur: TREK tar kontrollpunkter ur det, förbinder dem med raka linjer som en skidtur ritas och visar hur nära det kommer. Inget ändras förrän du väljer.',
'tours.conversion.closePaddle':
'Förslaget följer spåret noga. Punkterna är förbundna med raka linjer, så det är inte samma linje.',
'tours.planner.moreActions': 'Fler åtgärder',
@@ -1112,6 +1113,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Ridtur',
'tours.planner.tourTypeHint.horse': 'Till häst, längs skyltade ridleder',
'tours.planner.namePlaceholder.horse': 'Namnlös ridtur',
'tours.planner.namePlaceholder.ski': 'Namnlös skidtur',
'tours.horse.time': 'Ridtid',
'tours.horse.timeInfoLabel': 'Varför det inte finns någon ridtid',
'tours.horse.timeInfo':
+13 -12
View File
@@ -191,7 +191,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'เดินป่า',
'tourTypes.bike': 'ทัวร์จักรยาน',
'tourTypes.run': 'วิ่ง',
'tourTypes.ski': 'สกี',
'tourTypes.ski': 'สกีและฤดูหนาว',
'tourTypes.kayak': 'ทริปพายเรือ',
'tourTypes.walk': 'เดินชมเมือง / สถานที่ท่องเที่ยว',
'tourTypes.food': 'ทัวร์อาหาร/ไวน์',
@@ -376,33 +376,31 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'เดินเท้า ภายในระดับความยากที่คุณกำหนด',
'tours.planner.tourTypeHint.bike': 'ด้วยจักรยาน เส้นทางสำหรับทัวริ่ง เสือหมอบ กราเวล หรือเสือภูเขา',
'tours.planner.tourTypeHint.kayak': 'บนน้ำ ด้วยคายัค แคนู หรือ SUP',
'tours.winter.title': 'กิจกรรมฤดูหนาว',
'tours.winter.infoLabel': 'ป้ายฤดูหนาวมีไว้ทำอะไร',
'tours.winter.info':
'เป็นเพียงป้ายกำกับของการเดินป่า เส้นทาง สีความชัน และเวลาเดินยังคงเหมือนการเดินป่าทั่วไป และไม่ได้บอกอะไรเกี่ยวกับหิมะ หิมะถล่ม หรือว่าเส้นทางเดินได้ในฤดูหนาวหรือไม่',
'tours.winter.kind': 'ประเภทกิจกรรมฤดูหนาว',
'tours.winter.activity.winter_hike': 'เดินป่าฤดูหนาว',
'tours.winter.activity.snowshoe': 'เดินป่าด้วยรองเท้าลุยหิมะ',
'tours.winter.labelOnly':
'ผู้เดินทางเป็นผู้ทำเครื่องหมาย เส้นทางและเวลาวางแผนเหมือนการเดินป่าทั่วไป ไม่ได้ตรวจสอบสำหรับฤดูหนาว',
'tours.planner.tourTypeHint.ski': 'จากไฟล์ GPX ตามที่บันทึกไว้',
'tours.planner.tourTypeHint.ski': 'สกี สโนว์บอร์ด รองเท้าลุยหิมะ เดินป่าฤดูหนาว',
'tours.ski.title': 'เส้นทางสกี',
'tours.ski.discipline': 'ประเภท',
'tours.ski.discipline.alpine': 'อัลไพน์',
'tours.ski.discipline.snowboard': 'สโนว์บอร์ด',
'tours.ski.discipline.cross_country': 'สกีทางเรียบ',
'tours.ski.discipline.touring': 'สกีปีนเขา',
'tours.ski.discipline.snowshoe': 'รองเท้าลุยหิมะ',
'tours.ski.discipline.winter_hike': 'เดินป่าฤดูหนาว',
'tours.ski.technique': 'เทคนิค',
'tours.ski.technique.classic': 'คลาสสิก',
'tours.ski.technique.skating': 'สเก็ตติ้ง',
'tours.ski.technique.unknown': 'ไม่ทราบ',
'tours.ski.chooseDiscipline': 'เลือกประเภทเพื่อนำเข้าเส้นทางเป็นสกี',
'tours.ski.chooseDisciplineToSave': 'เลือกประเภทเพื่อบันทึกทริป',
'tours.ski.drawnFreely': 'แต่ละช่วงจะวาดเป็นเส้นตรงระหว่างจุดของคุณ ไม่มีการตรวจสอบกับลานสกี ลิฟต์ หรือเส้นทาง',
'tours.ski.chooseTechnique': 'เลือกเทคนิค หรือไม่ทราบ',
'tours.ski.infoLabel': 'TREK ทำอะไรกับเส้นทางสกี',
'tours.ski.info':
'เก็บไว้ตามที่บันทึกและไม่คำนวณเส้นทางใหม่ ระยะทางและความสูงมาจากไฟล์ TREK ไม่คำนวณเวลาเล่นสกี และทั้งเส้นทางและสีความชันในมุมมอง 3D ไม่ได้บอกอะไรเกี่ยวกับความยาก หิมะ หิมะถล่ม หรือว่าลานสกีเปิดอยู่หรือไม่',
'ทริปที่วางแผนจะวาดแต่ละช่วงเป็นเส้นตรงระหว่างจุด ส่วนแทร็กที่นำเข้าจะเก็บไว้ตามที่บันทึก ทั้งสองแบบไม่ได้คำนวณเส้นทางตามลานสกี ลิฟต์ หรือเส้นทางเดิน ความสูงมาจากภูมิประเทศหรือไฟล์ TREK ไม่คำนวณเวลาเล่นสกี และไม่มีสิ่งใดในที่นี้ รวมถึงสีความชันในมุมมอง 3D ที่บอกอะไรเกี่ยวกับความยาก หิมะ หิมะถล่ม หรือว่าลานสกีเปิดอยู่หรือไม่',
'tours.ski.time': 'เวลาเล่นสกี',
'tours.ski.timeUnknown': 'ไม่ได้คำนวณ',
'tours.ski.timeInfoLabel': 'ทำไมจึงไม่มีเวลาเล่นสกี',
'tours.ski.timeInfo':
'TREK ไม่คำนวณเวลาเล่นสกี เพราะแต่ละช่วงวาดเป็นเส้นตรง ไม่ได้วางแผนตามลานสกี ลิฟต์ หรือเส้นทาง หากต้องการ ให้กรอกเวลารวมที่วางแผนไว้เอง',
'tours.ski.classifyTitle': 'จัดประเภทเส้นทางสกี',
'tours.ski.saved': 'บันทึกการจัดประเภทแล้ว',
'tours.ski.saveFailed': 'บันทึกการจัดประเภทไม่สำเร็จ',
@@ -765,6 +763,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm': 'นำเข้า {count} ทริป',
'tours.conversion.introPaddle':
'การนำเข้าคือแทร็กที่บันทึกไว้ วางแผนทริปพายเรือที่แก้ไขได้: TREK จะดึงจุดควบคุมออกมา เชื่อมด้วยเส้นตรงตามวิธีวาดทริปพายเรือ และแสดงว่าใกล้เคียงแค่ไหน ไม่มีอะไรเปลี่ยนจนกว่าคุณจะเลือก',
'tours.conversion.introSki':
'การนำเข้าคือแทร็กที่บันทึกไว้ วางแผนทริปสกีที่แก้ไขได้: TREK จะดึงจุดควบคุมออกมา เชื่อมด้วยเส้นตรงตามวิธีวาดทริปสกี และแสดงว่าใกล้เคียงแค่ไหน ไม่มีอะไรเปลี่ยนจนกว่าคุณจะเลือก',
'tours.conversion.closePaddle': 'ข้อเสนอตามแทร็กอย่างใกล้ชิด จุดต่างๆ เชื่อมด้วยเส้นตรง จึงไม่ใช่เส้นเดียวกัน',
'tours.planner.moreActions': 'การดำเนินการเพิ่มเติม',
'tours.paddle.role.put_in': 'จุดลงเรือ',
@@ -1064,6 +1064,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'ทริปขี่ม้า',
'tours.planner.tourTypeHint.horse': 'บนหลังม้า ตามเส้นทางขี่ม้าที่มีป้ายบอก',
'tours.planner.namePlaceholder.horse': 'ทริปขี่ม้าที่ไม่มีชื่อ',
'tours.planner.namePlaceholder.ski': 'ทริปสกีที่ไม่มีชื่อ',
'tours.horse.time': 'เวลาขี่ม้า',
'tours.horse.timeInfoLabel': 'ทำไมจึงไม่มีเวลาขี่ม้า',
'tours.horse.timeInfo':
+1 -1
View File
@@ -20,7 +20,7 @@ const toursModules = import.meta.glob<{ default: TranslationStrings }>('./*/tour
const TOUR_DOMAINS: { file: string; generalKeyCount: number; modules: DomainModules }[] = [
{
file: 'tours',
generalKeyCount: 1176,
generalKeyCount: 1177,
modules: toursModules,
},
{
+14 -12
View File
@@ -200,7 +200,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Doğa yürüyüşü',
'tourTypes.bike': 'Bisiklet turu',
'tourTypes.run': 'Koşu',
'tourTypes.ski': 'Kayak',
'tourTypes.ski': 'Kayak ve kış',
'tourTypes.kayak': 'Kürek turu',
'tourTypes.walk': 'Şehir / gezi yürüyüşü',
'tourTypes.food': 'Yemek / şarap turu',
@@ -396,33 +396,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Yürüyerek, belirlediğin zorluk içinde',
'tours.planner.tourTypeHint.bike': 'Bisikletle, tur, yol, gravel veya MTB için rota',
'tours.planner.tourTypeHint.kayak': 'Suda, kano, kanoe veya SUP ile',
'tours.winter.title': 'Kış etkinliği',
'tours.winter.infoLabel': 'Kış etiketi ne işe yarar',
'tours.winter.info':
'Yalnızca yürüyüş için bir etiket. Rota, eğim renkleri ve yürüme süresi her yürüyüşteki gibi kalır; kar, çığ ya da bir yolun kışın yürünebilir olup olmadığı hakkında hiçbir şey söylemez.',
'tours.winter.kind': 'Kış etkinliği türü',
'tours.winter.activity.winter_hike': 'Kış yürüyüşü',
'tours.winter.activity.snowshoe': 'Kar ayakkabısıyla yürüyüş',
'tours.winter.labelOnly':
'Gezginler tarafından işaretlendi. Rota ve süre her yürüyüşteki gibi planlanır, kış koşullarına göre denetlenmez.',
'tours.planner.tourTypeHint.ski': 'Bir GPX dosyasından, kaydedildiği gibi',
'tours.planner.tourTypeHint.ski': 'Kayak, snowboard, kar ayakkabısı, kış yürüyüşleri',
'tours.ski.title': 'Kayak izi',
'tours.ski.discipline': 'Branş',
'tours.ski.discipline.alpine': 'Alp disiplini',
'tours.ski.discipline.snowboard': 'Snowboard', // same-as-en
'tours.ski.discipline.cross_country': 'Kayaklı koşu',
'tours.ski.discipline.touring': 'Dağ kayağı',
'tours.ski.discipline.snowshoe': 'Kar ayakkabısı',
'tours.ski.discipline.winter_hike': 'Kış yürüyüşü',
'tours.ski.technique': 'Teknik',
'tours.ski.technique.classic': 'Klasik',
'tours.ski.technique.skating': 'Serbest stil',
'tours.ski.technique.unknown': 'Bilinmiyor',
'tours.ski.chooseDiscipline': 'İzi kayak olarak içe aktarmak için bir branş seç.',
'tours.ski.chooseDisciplineToSave': 'Turu kaydetmek için bir branş seç.',
'tours.ski.drawnFreely':
'Her bölüm noktaların arasında düz çizilir. Hiçbir şey onu pistler, teleferikler veya parkurlarla karşılaştırmaz.',
'tours.ski.chooseTechnique': 'Tekniği ya da Bilinmiyor seçeneğini seç.',
'tours.ski.infoLabel': 'TREK bir kayak iziyle ne yapar',
'tours.ski.info':
'Kaydedildiği gibi kalır ve hiçbir zaman yeniden rotalanmaz. Mesafe ve yükseklikler dosyadan gelir. TREK kayak süresi hesaplamaz; ne iz ne de 3D eğim renkleri zorluk, kar, çığ ya da pist ve parkurların açık olup olmadığı hakkında bir şey söyler.',
'Planlanan bir turda her bölüm noktaları arasında düz çizilir, içe aktarılan bir iz ise kaydedildiği gibi kalır. Hiçbiri pistler, teleferikler veya parkurlar boyunca rotalanmaz. Yükseklikler araziden ya da dosyadan gelir. TREK kayak süresi hesaplamaz; buradaki hiçbir şey, 3D eğim renkleri de dahil, zorluk, kar, çığ ya da pist ve parkurların açık olup olmadığı hakkında bir şey söylemez.',
'tours.ski.time': 'Kayak süresi',
'tours.ski.timeUnknown': 'Hesaplanmadı',
'tours.ski.timeInfoLabel': 'Neden kayak süresi yok',
'tours.ski.timeInfo':
'TREK kayak süresi hesaplamaz: bölümler düz çizilir, pistler, teleferikler veya parkurlar boyunca planlanmaz. İstersen planlanan toplam süreyi kendin gir.',
'tours.ski.classifyTitle': 'Kayak izini sınıflandır',
'tours.ski.saved': 'Sınıflandırma kaydedildi',
'tours.ski.saveFailed': 'Sınıflandırma kaydedilemedi.',
@@ -807,6 +806,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.one': '{count} turu içe aktar',
'tours.conversion.introPaddle':
'İçe aktarma kaydedilmiş bir izdir. Düzenlenebilir bir kürek turu planla: TREK ondan kontrol noktaları alır, kürek turu nasıl çiziliyorsa onları düz çizgilerle birleştirir ve ne kadar yaklaştığını gösterir. Sen seçene kadar hiçbir şey değişmez.',
'tours.conversion.introSki':
'İçe aktarma kaydedilmiş bir izdir. Düzenlenebilir bir kayak turu planla: TREK ondan kontrol noktaları alır, kayak turu nasıl çiziliyorsa onları düz çizgilerle birleştirir ve ne kadar yaklaştığını gösterir. Sen seçene kadar hiçbir şey değişmez.',
'tours.conversion.closePaddle':
'Öneri izi yakından takip ediyor. Noktaları düz çizgilerle birleştirildiği için aynı çizgi değil.',
'tours.planner.moreActions': 'Diğer işlemler',
@@ -1118,6 +1119,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'At gezisi',
'tours.planner.tourTypeHint.horse': 'At sırtında, işaretli binicilik rotalarında',
'tours.planner.namePlaceholder.horse': 'Adsız at gezisi',
'tours.planner.namePlaceholder.ski': 'Adsız kayak turu',
'tours.horse.time': 'Sürüş süresi',
'tours.horse.timeInfoLabel': 'Neden sürüş süresi yok',
'tours.horse.timeInfo':
+14 -12
View File
@@ -211,7 +211,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Піший похід',
'tourTypes.bike': 'Велотур',
'tourTypes.run': 'Пробіжка',
'tourTypes.ski': 'Лижі',
'tourTypes.ski': 'Лижі та зима',
'tourTypes.kayak': 'Сплав',
'tourTypes.walk': 'Прогулянка містом / визначними місцями',
'tourTypes.food': 'Гастрономічний / винний тур',
@@ -410,33 +410,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Пішки, у межах обраної складності',
'tours.planner.tourTypeHint.bike': 'На велосипеді, маршрут для туризму, шосе, гревелу або МТБ',
'tours.planner.tourTypeHint.kayak': 'По воді, на каяку, каное або SUP',
'tours.winter.title': 'Зимова активність',
'tours.winter.infoLabel': 'Що означає зимова позначка',
'tours.winter.info':
'Лише позначка походу. Маршрут, кольори крутизни й час у дорозі залишаються як для будь-якого походу й нічого не кажуть про сніг, лавини чи прохідність стежки взимку.',
'tours.winter.kind': 'Вид зимової активності',
'tours.winter.activity.winter_hike': 'Зимовий похід',
'tours.winter.activity.snowshoe': 'Похід на снігоступах',
'tours.winter.labelOnly':
'Позначено мандрівниками. Маршрут і час сплановано як для будь-якого походу, без перевірки на зимові умови.',
'tours.planner.tourTypeHint.ski': 'З файлу GPX, як записано',
'tours.planner.tourTypeHint.ski': 'Лижі, сноуборд, снігоступи, зимові походи',
'tours.ski.title': 'Лижний трек',
'tours.ski.discipline': 'Дисципліна',
'tours.ski.discipline.alpine': 'Гірські лижі',
'tours.ski.discipline.snowboard': 'Сноуборд',
'tours.ski.discipline.cross_country': 'Бігові лижі',
'tours.ski.discipline.touring': 'Скітур',
'tours.ski.discipline.snowshoe': 'Снігоступи',
'tours.ski.discipline.winter_hike': 'Зимовий похід',
'tours.ski.technique': 'Техніка',
'tours.ski.technique.classic': 'Класика',
'tours.ski.technique.skating': 'Ковзанярський хід',
'tours.ski.technique.unknown': 'Невідомо',
'tours.ski.chooseDiscipline': 'Виберіть дисципліну, щоб імпортувати трек як лижі.',
'tours.ski.chooseDisciplineToSave': 'Виберіть дисципліну, щоб зберегти маршрут.',
'tours.ski.drawnFreely':
'Кожна ділянка малюється прямою між вашими точками. Ніщо не звіряє її з трасами, підйомниками чи стежками.',
'tours.ski.chooseTechnique': 'Виберіть техніку або «Невідомо».',
'tours.ski.infoLabel': 'Що TREK робить з лижним треком',
'tours.ski.info':
'Залишається таким, як записано, і ніколи не прокладається заново. Відстань і висоти взято з файлу. TREK не розраховує час на лижах, а ні трек, ні кольори нахилу в 3D нічого не кажуть про складність, сніг, лавини чи про те, чи відкриті траси й лижні.',
'У запланованому маршруті кожна ділянка намальована прямою між його точками, імпортований трек лишається таким, як записано. Жоден не прокладається трасами, підйомниками чи стежками. Висоти взято з рельєфу або з файлу. TREK не розраховує час на лижах, і ніщо тут, зокрема кольори нахилу в 3D, не каже про складність, сніг, лавини чи про те, чи відкриті траси й лижні.',
'tours.ski.time': 'Час на лижах',
'tours.ski.timeUnknown': 'Не розраховано',
'tours.ski.timeInfoLabel': 'Чому немає часу на лижах',
'tours.ski.timeInfo':
'TREK не розраховує час на лижах: ділянки намальовано прямими, а не прокладено трасами, підйомниками чи стежками. За бажання вкажіть загальний час самі.',
'tours.ski.classifyTitle': 'Класифікувати лижний трек',
'tours.ski.saved': 'Класифікацію збережено',
'tours.ski.saveFailed': 'Не вдалося зберегти класифікацію.',
@@ -833,6 +832,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm.many': 'Імпортувати {count} турів',
'tours.conversion.introPaddle':
'Імпорт — це записаний трек. Сплануйте редагований сплав: TREK бере з нього контрольні точки, з’єднує їх прямими лініями, як малюється сплав, і показує, наскільки це близько. Нічого не змінюється, доки ви не вирішите.',
'tours.conversion.introSki':
'Імпорт є записаним треком. Сплануйте редагований лижний маршрут: TREK бере з нього контрольні точки, з’єднує їх прямими лініями, як малюється лижний маршрут, і показує, наскільки це близько. Нічого не змінюється, доки ви не вирішите.',
'tours.conversion.closePaddle':
'Пропозиція близько йде за треком. Її точки з’єднані прямими лініями, тож це не та сама лінія.',
'tours.planner.moreActions': 'Інші дії',
@@ -1160,6 +1161,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Кінна прогулянка',
'tours.planner.tourTypeHint.horse': 'Верхи, маркованими кінними маршрутами',
'tours.planner.namePlaceholder.horse': 'Кінна прогулянка без назви',
'tours.planner.namePlaceholder.ski': 'Лижний маршрут без назви',
'tours.horse.time': 'Час у сідлі',
'tours.horse.timeInfoLabel': 'Чому немає часу в сідлі',
'tours.horse.timeInfo':
+14 -12
View File
@@ -200,7 +200,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': 'Đi bộ đường dài',
'tourTypes.bike': 'Chuyến đạp xe',
'tourTypes.run': 'Chạy bộ',
'tourTypes.ski': 'Trượt tuyết',
'tourTypes.ski': 'Trượt tuyết & mùa đông',
'tourTypes.kayak': 'Chuyến chèo thuyền',
'tourTypes.walk': 'Đi bộ trong thành phố / ngắm cảnh',
'tourTypes.food': 'Chuyến khám phá ẩm thực / rượu vang',
@@ -394,33 +394,32 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': 'Đi bộ, trong mức độ khó bạn chọn',
'tours.planner.tourTypeHint.bike': 'Bằng xe đạp, lộ trình cho touring, đường trường, gravel hoặc MTB',
'tours.planner.tourTypeHint.kayak': 'Trên nước, bằng kayak, xuồng canoe hoặc SUP',
'tours.winter.title': 'Hoạt động mùa đông',
'tours.winter.infoLabel': 'Nhãn mùa đông có tác dụng gì',
'tours.winter.info':
'Chỉ là nhãn cho chuyến đi bộ. Tuyến đường, màu độ dốc và thời gian đi bộ vẫn như mọi chuyến đi bộ khác và không cho biết gì về tuyết, tuyết lở hay việc lối đi có đi được vào mùa đông không.',
'tours.winter.kind': 'Loại hoạt động mùa đông',
'tours.winter.activity.winter_hike': 'Đi bộ mùa đông',
'tours.winter.activity.snowshoe': 'Đi bộ bằng giày tuyết',
'tours.winter.labelOnly':
'Do du khách đánh dấu. Tuyến đường và thời gian được lập như mọi chuyến đi bộ khác, không kiểm tra cho mùa đông.',
'tours.planner.tourTypeHint.ski': 'Từ tệp GPX, giữ nguyên như đã ghi',
'tours.planner.tourTypeHint.ski': 'Trượt tuyết, ván trượt, giày tuyết, đi bộ mùa đông',
'tours.ski.title': 'Đường trượt tuyết',
'tours.ski.discipline': 'Bộ môn',
'tours.ski.discipline.alpine': 'Trượt đổ dốc',
'tours.ski.discipline.snowboard': 'Trượt ván tuyết',
'tours.ski.discipline.cross_country': 'Trượt tuyết băng đồng',
'tours.ski.discipline.touring': 'Trượt tuyết leo núi',
'tours.ski.discipline.snowshoe': 'Giày tuyết',
'tours.ski.discipline.winter_hike': 'Đi bộ mùa đông',
'tours.ski.technique': 'Kỹ thuật',
'tours.ski.technique.classic': 'Cổ điển',
'tours.ski.technique.skating': 'Trượt kiểu lướt',
'tours.ski.technique.unknown': 'Không rõ',
'tours.ski.chooseDiscipline': 'Chọn bộ môn để nhập đường đi thành trượt tuyết.',
'tours.ski.chooseDisciplineToSave': 'Chọn bộ môn để lưu chuyến đi.',
'tours.ski.drawnFreely':
'Mỗi chặng được vẽ thẳng giữa các điểm của bạn. Không có gì đối chiếu nó với đường trượt, cáp treo hay lối mòn.',
'tours.ski.chooseTechnique': 'Chọn kỹ thuật, hoặc Không rõ.',
'tours.ski.infoLabel': 'TREK làm gì với một đường trượt tuyết',
'tours.ski.info':
'Được giữ nguyên như đã ghi và không bao giờ được định tuyến. Quãng đường và độ cao lấy từ tệp. TREK không tính thời gian trượt, và cả đường đi lẫn màu độ dốc trong 3D đều không nói gì về độ khó, tuyết, tuyết lở hay việc đường trượt có mở hay không.',
'Chuyến đi đã lập có mỗi chặng được vẽ thẳng giữa các điểm của nó, còn vết được nhập giữ nguyên như đã ghi. Không cái nào được định tuyến theo đường trượt, cáp treo hay lối mòn. Độ cao lấy từ địa hình hoặc từ tệp. TREK không tính thời gian trượt, và không gì ở đây, kể cả màu độ dốc trong 3D, nói gì về độ khó, tuyết, tuyết lở hay việc đường trượt có mở hay không.',
'tours.ski.time': 'Thời gian trượt',
'tours.ski.timeUnknown': 'Không tính',
'tours.ski.timeInfoLabel': 'Vì sao không có thời gian trượt',
'tours.ski.timeInfo':
'TREK không tính thời gian trượt: các chặng được vẽ thẳng, không lập theo đường trượt, cáp treo hay lối mòn. Nếu muốn, hãy tự nhập tổng thời gian dự kiến.',
'tours.ski.classifyTitle': 'Phân loại đường trượt tuyết',
'tours.ski.saved': 'Đã lưu phân loại',
'tours.ski.saveFailed': 'Không thể lưu phân loại.',
@@ -794,6 +793,8 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm': 'Nhập {count} chuyến',
'tours.conversion.introPaddle':
'Bản nhập là một vết đã ghi. Hãy lập một chuyến chèo thuyền có thể chỉnh sửa: TREK lấy các điểm kiểm soát từ đó, nối chúng bằng đường thẳng như cách vẽ chuyến chèo thuyền và cho thấy nó sát đến đâu. Không gì thay đổi cho đến khi bạn chọn.',
'tours.conversion.introSki':
'Bản nhập là một vết đã ghi. Hãy lập một chuyến trượt tuyết có thể chỉnh sửa: TREK lấy các điểm kiểm soát từ đó, nối chúng bằng đường thẳng như cách vẽ chuyến trượt tuyết và cho thấy nó sát đến đâu. Không gì thay đổi cho đến khi bạn chọn.',
'tours.conversion.closePaddle':
'Đề xuất bám sát vết. Các điểm được nối bằng đường thẳng nên đây không phải cùng một đường.',
'tours.planner.moreActions': 'Thêm thao tác',
@@ -1104,6 +1105,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': 'Chuyến cưỡi ngựa',
'tours.planner.tourTypeHint.horse': 'Trên lưng ngựa, theo các tuyến cưỡi ngựa có biển chỉ dẫn',
'tours.planner.namePlaceholder.horse': 'Chuyến cưỡi ngựa chưa đặt tên',
'tours.planner.namePlaceholder.ski': 'Chuyến trượt tuyết chưa đặt tên',
'tours.horse.time': 'Thời gian cưỡi ngựa',
'tours.horse.timeInfoLabel': 'Vì sao không có thời gian cưỡi ngựa',
'tours.horse.timeInfo':
+11 -10
View File
@@ -184,7 +184,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': '健行',
'tourTypes.bike': '單車遊程',
'tourTypes.run': '跑步',
'tourTypes.ski': '滑雪',
'tourTypes.ski': '滑雪與冬季',
'tourTypes.kayak': '划槳行程',
'tourTypes.walk': '城市散步 / 觀光',
'tourTypes.food': '美食 / 葡萄酒之旅',
@@ -361,31 +361,30 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': '步行,在你設定的難度內',
'tours.planner.tourTypeHint.bike': '騎乘,為旅行車、公路車、礫石車或登山車規劃路線',
'tours.planner.tourTypeHint.kayak': '水上,獨木舟、加拿大艇或立槳',
'tours.winter.title': '冬季活動',
'tours.winter.infoLabel': '冬季標記的作用',
'tours.winter.info': '只是健行的標記。路線、坡度顏色與步行時間與任何健行相同,不說明積雪、雪崩或道路冬季是否可通行。',
'tours.winter.kind': '冬季活動類型',
'tours.winter.activity.winter_hike': '冬季健行',
'tours.winter.activity.snowshoe': '雪鞋健行',
'tours.winter.labelOnly': '由旅行者標記。路線與時間按一般健行規劃,未針對冬季查核。',
'tours.planner.tourTypeHint.ski': '來自 GPX 檔案,保持記錄原樣',
'tours.planner.tourTypeHint.ski': '滑雪、單板、雪鞋、冬季健行',
'tours.ski.title': '滑雪軌跡',
'tours.ski.discipline': '項目',
'tours.ski.discipline.alpine': '高山滑雪',
'tours.ski.discipline.snowboard': '單板滑雪',
'tours.ski.discipline.cross_country': '越野滑雪',
'tours.ski.discipline.touring': '登山滑雪',
'tours.ski.discipline.snowshoe': '雪鞋',
'tours.ski.discipline.winter_hike': '冬季健行',
'tours.ski.technique': '技術',
'tours.ski.technique.classic': '傳統式',
'tours.ski.technique.skating': '自由式',
'tours.ski.technique.unknown': '未知',
'tours.ski.chooseDiscipline': '請選擇項目,以便將軌跡匯入為滑雪。',
'tours.ski.chooseDisciplineToSave': '請選擇項目以儲存路線。',
'tours.ski.drawnFreely': '每段都在你的點之間以直線繪製,不會與雪道、纜車或步道進行核對。',
'tours.ski.chooseTechnique': '請選擇技術,或選擇未知。',
'tours.ski.infoLabel': 'TREK 如何處理滑雪軌跡',
'tours.ski.info':
'保持記錄原樣,絕不重新規劃路線。距離和海拔來自檔案。TREK 不計算滑雪時間,軌跡和 3D 中的坡度顏色都不代表難度、積雪、雪崩或雪道是否開放。',
'規劃的路線中每段都在其點之間以直線繪製,匯入的軌跡保持記錄原樣。兩者都不會沿雪道、纜車或步道規劃路線。海拔來自地形或檔案。TREK 不計算滑雪時間,這裡的任何內容,包括 3D 中的坡度顏色,都不代表難度、積雪、雪崩或雪道是否開放。',
'tours.ski.time': '滑雪時間',
'tours.ski.timeUnknown': '未計算',
'tours.ski.timeInfoLabel': '為什麼沒有滑雪時間',
'tours.ski.timeInfo': 'TREK 不計算滑雪時間:各段以直線繪製,並未沿雪道、纜車或步道規劃。如有需要,請自行填寫計畫總時長。',
'tours.ski.classifyTitle': '為滑雪軌跡分類',
'tours.ski.saved': '分類已儲存',
'tours.ski.saveFailed': '無法儲存分類。',
@@ -737,6 +736,7 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm': '匯入 {count} 條路線',
'tours.conversion.introPaddle':
'匯入的是一條記錄的軌跡。規劃一條可編輯的划槳行程:TREK 從中取出控制點,像繪製划槳行程那樣以直線相連,並顯示兩者有多接近。在你選擇之前不會有任何變更。',
'tours.conversion.introSki': '匯入的是一條記錄的軌跡。規劃一條可編輯的滑雪行程:TREK 從中取出控制點,像繪製滑雪行程那樣以直線相連,並顯示兩者有多接近。在你選擇之前不會有任何變更。',
'tours.conversion.closePaddle': '建議緊貼軌跡。其各點以直線相連,因此並不是同一條線。',
'tours.planner.moreActions': '更多操作',
'tours.paddle.role.put_in': '下水點',
@@ -1029,6 +1029,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': '騎馬遊',
'tours.planner.tourTypeHint.horse': '騎馬,沿著有標示的騎馬路線',
'tours.planner.namePlaceholder.horse': '未命名的騎馬遊',
'tours.planner.namePlaceholder.ski': '未命名的滑雪路線',
'tours.horse.time': '騎乘時間',
'tours.horse.timeInfoLabel': '為什麼沒有騎乘時間',
'tours.horse.timeInfo': 'TREK 不計算騎乘時間:節奏取決於馬和騎士。如有需要,請自行填寫計畫總時長。',
+11 -10
View File
@@ -185,7 +185,7 @@ const tours: TranslationStrings = {
'tourTypes.hike': '徒步',
'tourTypes.bike': '骑行',
'tourTypes.run': '跑步',
'tourTypes.ski': '滑雪',
'tourTypes.ski': '滑雪与冬季',
'tourTypes.kayak': '划桨游',
'tourTypes.walk': '城市漫步 / 观光',
'tourTypes.food': '美食 / 葡萄酒之旅',
@@ -362,31 +362,30 @@ const tours: TranslationStrings = {
'tours.planner.tourTypeHint.hike': '步行,在你设定的难度内',
'tours.planner.tourTypeHint.bike': '骑行,为旅行车、公路车、砾石车或山地车规划路线',
'tours.planner.tourTypeHint.kayak': '水上,皮划艇、独木舟或桨板',
'tours.winter.title': '冬季活动',
'tours.winter.infoLabel': '冬季标记的作用',
'tours.winter.info': '只是徒步的标记。路线、坡度颜色和步行时间与任何徒步相同,不说明积雪、雪崩或道路冬季是否可通行。',
'tours.winter.kind': '冬季活动类型',
'tours.winter.activity.winter_hike': '冬季徒步',
'tours.winter.activity.snowshoe': '雪鞋徒步',
'tours.winter.labelOnly': '由旅行者标记。路线和时间按普通徒步规划,未针对冬季核查。',
'tours.planner.tourTypeHint.ski': '来自 GPX 文件,保持记录原样',
'tours.planner.tourTypeHint.ski': '滑雪、单板、雪鞋、冬季徒步',
'tours.ski.title': '滑雪轨迹',
'tours.ski.discipline': '项目',
'tours.ski.discipline.alpine': '高山滑雪',
'tours.ski.discipline.snowboard': '单板滑雪',
'tours.ski.discipline.cross_country': '越野滑雪',
'tours.ski.discipline.touring': '登山滑雪',
'tours.ski.discipline.snowshoe': '雪鞋',
'tours.ski.discipline.winter_hike': '冬季徒步',
'tours.ski.technique': '技术',
'tours.ski.technique.classic': '传统式',
'tours.ski.technique.skating': '自由式',
'tours.ski.technique.unknown': '未知',
'tours.ski.chooseDiscipline': '请选择项目,以便将轨迹导入为滑雪。',
'tours.ski.chooseDisciplineToSave': '请选择项目以保存路线。',
'tours.ski.drawnFreely': '每段都在你的点之间以直线绘制,不会与雪道、缆车或小径进行核对。',
'tours.ski.chooseTechnique': '请选择技术,或选择未知。',
'tours.ski.infoLabel': 'TREK 如何处理滑雪轨迹',
'tours.ski.info':
'保持记录原样,绝不重新规划路线。距离和海拔来自文件。TREK 不计算滑雪用时,轨迹和 3D 中的坡度颜色都不代表难度、积雪、雪崩或雪道是否开放。',
'计划的路线中每段都在其点之间以直线绘制,导入的轨迹保持记录原样。两者都不会沿雪道、缆车或小径规划路线。海拔来自地形或文件。TREK 不计算滑雪用时,这里的任何内容,包括 3D 中的坡度颜色,都不代表难度、积雪、雪崩或雪道是否开放。',
'tours.ski.time': '滑雪用时',
'tours.ski.timeUnknown': '未计算',
'tours.ski.timeInfoLabel': '为什么没有滑雪用时',
'tours.ski.timeInfo': 'TREK 不计算滑雪用时:各段以直线绘制,并未沿雪道、缆车或小径规划。如有需要,请自行填写计划总时长。',
'tours.ski.classifyTitle': '为滑雪轨迹分类',
'tours.ski.saved': '分类已保存',
'tours.ski.saveFailed': '无法保存分类。',
@@ -738,6 +737,7 @@ const tours: TranslationStrings = {
'tours.import.previewConfirm': '导入 {count} 条路线',
'tours.conversion.introPaddle':
'导入的是一条记录的轨迹。规划一条可编辑的划桨路线:TREK 从中提取控制点,像绘制划桨路线那样用直线相连,并显示两者有多接近。在你选择之前不会有任何更改。',
'tours.conversion.introSki': '导入的是一条记录的轨迹。规划一条可编辑的滑雪路线:TREK 从中提取控制点,像绘制滑雪路线那样用直线相连,并显示两者有多接近。在你选择之前不会有任何更改。',
'tours.conversion.closePaddle': '建议紧贴轨迹。其各点以直线相连,因此并不是同一条线。',
'tours.planner.moreActions': '更多操作',
'tours.paddle.role.put_in': '下水点',
@@ -1030,6 +1030,7 @@ const tours: TranslationStrings = {
'tourTypes.horse': '骑马游',
'tours.planner.tourTypeHint.horse': '骑马,沿着有标识的骑马路线',
'tours.planner.namePlaceholder.horse': '未命名的骑马游',
'tours.planner.namePlaceholder.ski': '未命名的滑雪路线',
'tours.horse.time': '骑行时间',
'tours.horse.timeInfoLabel': '为什么没有骑行时间',
'tours.horse.timeInfo': 'TREK 不计算骑行时间:节奏取决于马和骑手。如有需要,请自行填写计划总时长。',
+1 -2
View File
@@ -44,7 +44,7 @@ export type CollectionTourTakeOverRequest = z.infer<typeof collectionTourTakeOve
/**
* A tour kept in a collection as the collection lists it: its measures as
* they were saved, null staying null, and what the trip's list shows of its
* type (winter label, ski discipline and technique, run profile and pace,
* type (ski discipline and technique, run profile and pace,
* bike profile, stage count).
*/
export const collectionTourItemSchema = tourListItemSchema
@@ -64,7 +64,6 @@ export const collectionTourItemSchema = tourListItemSchema
station_stay_minutes: true,
station_stays_unknown: true,
bike_profile: true,
winter_activity: true,
run_profile: true,
run_pace_seconds_per_km: true,
ski_discipline: true,
+81 -9
View File
@@ -9,15 +9,15 @@ import {
import { describe, expect, it } from 'vitest';
describe('ski tracks (SKI-02)', () => {
it('SKI-SCHEMA-001: knows four disciplines and three cross-country techniques, unknown among them on purpose', () => {
expect(SKI_DISCIPLINES).toEqual(['alpine', 'snowboard', 'cross_country', 'touring']);
describe('ski and winter tours (SKI-02)', () => {
it('SKI-SCHEMA-001: knows six disciplines and three cross-country techniques, unknown among them on purpose', () => {
expect(SKI_DISCIPLINES).toEqual(['alpine', 'snowboard', 'cross_country', 'touring', 'snowshoe', 'winter_hike']);
expect(SKI_TECHNIQUES).toEqual(['classic', 'skating', 'unknown']);
});
it('SKI-SCHEMA-002: ski is a type a track can be imported as, never one the planner plans', () => {
expect(importableTourTypeSchema.options).toEqual([...plannableTourTypeSchema.options, 'ski']);
expect(plannableTourTypeSchema.safeParse('ski').success).toBe(false);
it('SKI-SCHEMA-002: ski is a type the planner plans and a track can be imported as, never without its discipline', () => {
expect(plannableTourTypeSchema.options).toContain('ski');
expect([...importableTourTypeSchema.options].sort()).toEqual([...plannableTourTypeSchema.options].sort());
const planned = {
name: 'Valley run',
tour_type: 'ski',
@@ -30,16 +30,21 @@ describe('ski tracks (SKI-02)', () => {
{ lat: 47.01, lng: 11.01, role: 'end', sequence: 1 },
],
};
expect(tourCreateRequestSchema.safeParse(planned).success).toBe(false);
expect(() => tourCreateRequestSchema.parse(planned)).toThrow(/a ski tour needs a discipline/);
expect(tourCreateRequestSchema.parse({ ...planned, ski_discipline: 'snowshoe' })).toMatchObject({
tour_type: 'ski',
ski_discipline: 'snowshoe',
max_hiking_difficulty: null,
});
});
it('SKI-SCHEMA-003: a ski track names its discipline, a cross-country one its technique, and nothing else may', () => {
expect(skiIssues(true, { ski_discipline: 'alpine' })).toEqual([]);
expect(skiIssues(true, { ski_discipline: 'cross_country', ski_technique: 'unknown' })).toEqual([]);
expect(skiIssues(true, {})).toEqual([{ path: ['ski_discipline'], message: 'a ski track needs a discipline' }]);
expect(skiIssues(true, {})).toEqual([{ path: ['ski_discipline'], message: 'a ski tour needs a discipline' }]);
expect(skiIssues(true, { ski_discipline: 'cross_country' })[0]?.path).toEqual(['ski_technique']);
expect(skiIssues(true, { ski_discipline: 'touring', ski_technique: 'skating' })[0]?.message).toMatch(
/only a cross-country track/,
/only a cross-country tour/,
);
expect(skiIssues(false, { ski_discipline: 'alpine', ski_technique: 'classic' }).map((i) => i.path)).toEqual([
['ski_discipline'],
@@ -111,4 +116,71 @@ describe('ski tracks (SKI-02)', () => {
expect(tourListItemSchema.parse(listed).ski_discipline).toBeUndefined();
expect(tourListItemSchema.safeParse({ ...listed, ski_discipline: 'freeride' }).success).toBe(false);
});
describe('a planned ski tour (SKI-02)', () => {
const point = (lat: number, lng: number, role: 'start' | 'via' | 'end', sequence: number) => ({
lat,
lng,
role,
sequence,
});
const planned = {
name: 'Hut to hut on snowshoes',
tour_type: 'ski' as const,
ski_discipline: 'touring' as const,
route_geometry: [
[47, 11, 1200],
[47.01, 11.01, 1500],
],
waypoints: [point(47, 11, 'start', 0), point(47.01, 11.01, 'end', 1)],
};
it('SKI-SCHEMA-007: saves every discipline, a cross-country tour only with its technique', () => {
for (const discipline of SKI_DISCIPLINES.filter((value) => value !== 'cross_country')) {
expect(tourCreateRequestSchema.safeParse({ ...planned, ski_discipline: discipline }).success).toBe(true);
}
expect(() => tourCreateRequestSchema.parse({ ...planned, ski_discipline: 'cross_country' })).toThrow(
/a cross-country tour needs a technique/,
);
expect(
tourCreateRequestSchema.parse({ ...planned, ski_discipline: 'cross_country', ski_technique: 'skating' }),
).toMatchObject({ ski_technique: 'skating' });
expect(() => tourCreateRequestSchema.parse({ ...planned, ski_technique: 'classic' })).toThrow(
/only a cross-country tour has a technique/,
);
});
it('SKI-SCHEMA-008: works out no ski time and takes nothing of another type, a free leg allowed', () => {
expect(() => tourCreateRequestSchema.parse({ ...planned, duration_seconds: 3600 })).toThrow(
/a ski tour has no ski time worked out/,
);
expect(tourCreateRequestSchema.safeParse({ ...planned, duration_seconds: null }).success).toBe(true);
expect(() => tourCreateRequestSchema.parse({ ...planned, max_hiking_difficulty: 3 })).toThrow(
/a ski tour has no hiking difficulty/,
);
expect(() => tourCreateRequestSchema.parse({ ...planned, hiking_preferences: { avoid_steps: true } })).toThrow(
/a ski tour has no hiking preferences/,
);
expect(() => tourCreateRequestSchema.parse({ ...planned, bike_profile: 'mtb' })).toThrow(/bike tour/);
expect(() => tourCreateRequestSchema.parse({ ...planned, boat_type: 'sup' })).toThrow(/paddle tour/);
const [start, end] = planned.waypoints;
const line: Array<[number, number]> = [
[47, 11],
[47.01, 11.01],
];
const withLeg = (fixed_leg: object) => ({ ...planned, waypoints: [{ ...start, fixed_leg }, end] });
expect(tourCreateRequestSchema.safeParse(withLeg({ kind: 'free', geometry: line })).success).toBe(true);
const ferrata = withLeg({ kind: 'ferrata', ref: 'way/1', name: null, geometry: line });
expect(() => tourCreateRequestSchema.parse(ferrata)).toThrow(/a ski tour has no via ferrata/);
});
it('SKI-SCHEMA-009: keeps the ski fields off every other type', () => {
const hike = { ...planned, tour_type: 'hike' as const, ski_discipline: 'winter_hike' as const };
expect(() => tourCreateRequestSchema.parse(hike)).toThrow(/ski_discipline belongs to a ski tour/);
const { ski_discipline: _discipline, ...walk } = planned;
expect(() => tourCreateRequestSchema.parse({ ...walk, tour_type: 'walk', ski_technique: 'classic' })).toThrow(
/ski_technique belongs to a ski tour/,
);
});
});
});
+18 -14
View File
@@ -1,13 +1,16 @@
import { z } from 'zod';
/**
* SKI-02: a ski track comes in as a GPX file and is kept as it was recorded.
* TREK routes no ski track and works out no ski time: its distance and heights
* are the file's, and nothing is said about snow, avalanches or whether a run
* or a trail is open. What the skier names on purpose is the discipline, and
* for cross-country the technique.
* SKI-02: a ski and winter tour, planned in the planner or imported from a
* GPX file. A planned one has every leg drawn between its points (the piste
* router comes later), an imported one is kept as it was recorded. TREK works
* out no ski time, and nothing is said about snow, avalanches or whether a
* run or a trail is open. What the traveller names on purpose is the
* discipline: alpine, snowboard, cross-country, ski touring, snowshoeing or
* winter hiking (both of which live here and not on a hike), and for
* cross-country the technique.
*/
export const SKI_DISCIPLINES = ['alpine', 'snowboard', 'cross_country', 'touring'] as const;
export const SKI_DISCIPLINES = ['alpine', 'snowboard', 'cross_country', 'touring', 'snowshoe', 'winter_hike'] as const;
export const skiDisciplineSchema = z.enum(SKI_DISCIPLINES);
export type SkiDiscipline = z.infer<typeof skiDisciplineSchema>;
@@ -23,9 +26,10 @@ export type SkiTechnique = z.infer<typeof skiTechniqueSchema>;
type SkiIssue = { path: string[]; message: string };
/**
* What a ski track names, and what nothing else may: a ski track its
* discipline, a cross-country track its technique as well; a technique on any
* other discipline, and either field on another type, is refused.
* What a ski tour names, and what nothing else may: a ski tour its
* discipline, a cross-country tour its technique as well; a technique on any
* other discipline, and either field on another type, is refused. Planned and
* imported ski tours are held to the same rule.
*/
export function skiIssues(
isSki: boolean,
@@ -34,19 +38,19 @@ export function skiIssues(
if (!isSki) {
return (['ski_discipline', 'ski_technique'] as const)
.filter((field) => value[field] != null)
.map((field) => ({ path: [field], message: `${field} belongs to a ski track` }));
.map((field) => ({ path: [field], message: `${field} belongs to a ski tour` }));
}
if (value.ski_discipline == null) return [{ path: ['ski_discipline'], message: 'a ski track needs a discipline' }];
if (value.ski_discipline == null) return [{ path: ['ski_discipline'], message: 'a ski tour needs a discipline' }];
const crossCountry = value.ski_discipline === 'cross_country';
if (crossCountry && value.ski_technique == null)
return [{ path: ['ski_technique'], message: 'a cross-country track needs a technique' }];
return [{ path: ['ski_technique'], message: 'a cross-country tour needs a technique' }];
if (!crossCountry && value.ski_technique != null)
return [{ path: ['ski_technique'], message: 'only a cross-country track has a technique' }];
return [{ path: ['ski_technique'], message: 'only a cross-country tour has a technique' }];
return [];
}
/**
* A ski track classified again after its import: the discipline and the
* A ski tour classified again after its import: the discipline and the
* technique, nothing of the track. Refused with a 409 once the tour moved on
* past the revision the choice was made at.
*/
@@ -20,6 +20,8 @@ describe('tour POI search contracts (PLN-02)', () => {
expect(TOUR_POI_CATEGORIES_BY_TYPE.hike).toContain('viewpoint');
expect(TOUR_POI_CATEGORIES_BY_TYPE.kayak).toContain('slipway');
expect(TOUR_POI_CATEGORIES_BY_TYPE.hike).not.toContain('slipway');
expect(TOUR_POI_CATEGORIES_BY_TYPE.ski).toContain('shelter');
expect(TOUR_POI_CATEGORIES_BY_TYPE.ski).not.toContain('slipway');
for (const type of Object.values(TOUR_POI_CATEGORIES_BY_TYPE))
for (const category of type) expect(TOUR_POI_CATEGORIES).toContain(category);
});
@@ -29,6 +29,8 @@ export const TOUR_POI_CATEGORIES_BY_TYPE: Record<PlannableTourType, readonly Tou
run: ['drinking_water', 'toilets', 'park', 'viewpoint', 'cafe', 'food', 'shelter', 'sights'],
// HOR-01: water for horse and rider first; a ride stops where a walk would.
horse: ['drinking_water', 'shelter', 'viewpoint', 'food', 'picnic', 'toilets', 'campsite', 'sights'],
// SKI-02: huts and somewhere warm to eat first; a winter day out stops where the snow lets it.
ski: ['shelter', 'food', 'cafe', 'restaurant', 'toilets', 'viewpoint', 'peak', 'drinking_water'],
};
/**
+22 -54
View File
@@ -17,7 +17,6 @@ import {
tourMaxHikingDifficultySchema,
tourNameSchema,
tourWebsiteSchema,
WINTER_ACTIVITIES,
} from './tours.schema';
import { describe, expect, it } from 'vitest';
@@ -537,58 +536,27 @@ describe('city walks (CW-01 to CW-03, CW-10)', () => {
});
});
describe('winter activity of a hike (HIK-01)', () => {
const listedHike = {
place_id: 1,
tour_type: 'hike' as const,
distance: 8,
elevation_gain: 400,
elevation_loss: 400,
duration: 180,
difficulty: null,
wanderer_ref: null,
match_confidence: 1,
max_hiking_difficulty: 2,
name: 'Snowy ridge',
planned: false,
caution: false,
};
it('offers exactly winter hiking and snowshoeing, and a hike needs neither', () => {
expect(WINTER_ACTIVITIES).toEqual(['winter_hike', 'snowshoe']);
expect(tourCreateRequestSchema.parse(baseRequest).winter_activity).toBeUndefined();
expect(tourCreateRequestSchema.parse({ ...baseRequest, winter_activity: null }).winter_activity).toBeNull();
});
it('keeps the winter label a hike is saved with', () => {
for (const activity of WINTER_ACTIVITIES) {
expect(tourCreateRequestSchema.parse({ ...baseRequest, winter_activity: activity })).toMatchObject({
tour_type: 'hike',
winter_activity: activity,
});
}
});
it('refuses a label it does not know, and any label on another type', () => {
expect(tourCreateRequestSchema.safeParse({ ...baseRequest, winter_activity: 'ski_tour' }).success).toBe(false);
const bike = { ...baseRequest, tour_type: 'bike', bike_profile: 'mtb', winter_activity: 'snowshoe' };
expect(() => tourCreateRequestSchema.parse(bike)).toThrow(/a bike tour has no winter activity/);
const walk = { ...baseRequest, tour_type: 'walk', winter_activity: 'winter_hike' };
expect(() => tourCreateRequestSchema.parse(walk)).toThrow(/a city walk has no winter activity/);
const paddle = {
...baseRequest,
tour_type: 'kayak',
boat_type: 'sup',
water_context: 'lake',
winter_activity: 'snowshoe',
};
expect(() => tourCreateRequestSchema.parse(paddle)).toThrow(/a paddle tour has no winter activity/);
});
it('lists the label, and reads a list cached before it existed', () => {
expect(tourListItemSchema.parse({ ...listedHike, winter_activity: 'snowshoe' }).winter_activity).toBe('snowshoe');
expect(tourListItemSchema.parse(listedHike).winter_activity).toBeUndefined();
expect(tourListItemSchema.safeParse({ ...listedHike, winter_activity: 'ski_tour' }).success).toBe(false);
describe('a hike is summer only (HIK-01 withdrawn)', () => {
it('keeps no winter label on a hike: the field is not part of the contract and is dropped', () => {
const parsed = tourCreateRequestSchema.parse({ ...baseRequest, winter_activity: 'snowshoe' });
expect(parsed).not.toHaveProperty('winter_activity');
const listed = tourListItemSchema.parse({
place_id: 1,
tour_type: 'hike',
distance: 8,
elevation_gain: 400,
elevation_loss: 400,
duration: 180,
difficulty: null,
wanderer_ref: null,
match_confidence: 1,
max_hiking_difficulty: 2,
name: 'Snowy ridge',
planned: false,
caution: false,
winter_activity: 'winter_hike',
});
expect(listed).not.toHaveProperty('winter_activity');
});
});
@@ -641,7 +609,7 @@ describe('runs (RUN-01)', () => {
expect(() => tourCreateRequestSchema.parse({ ...run, run_profile: null })).toThrow(/a run needs a run profile/);
expect(tourCreateRequestSchema.safeParse({ ...run, run_profile: 'sprint' }).success).toBe(false);
expect(() => tourCreateRequestSchema.parse({ ...run, max_hiking_difficulty: 2 })).toThrow(/a run has no hiking/);
expect(() => tourCreateRequestSchema.parse({ ...run, winter_activity: 'snowshoe' })).toThrow(/a run has no winter/);
expect(() => tourCreateRequestSchema.parse({ ...run, ski_discipline: 'alpine' })).toThrow(/belongs to a ski tour/);
expect(() => tourCreateRequestSchema.parse({ ...run, bike_profile: 'road' })).toThrow(/bike tour/);
expect(() => tourCreateRequestSchema.parse({ ...run, boat_type: 'sup' })).toThrow(/paddle tour/);
const overFerrata = { ...run, waypoints: [{ ...run.waypoints[0], fixed_leg: ferrata }, run.waypoints[1]] };
+33 -27
View File
@@ -7,7 +7,13 @@ import {
trackMarksSchema,
} from './paddle-plan.schema';
import { runPaceSecondsPerKmSchema } from './run-pace';
import { skiDisciplineSchema, skiTechniqueSchema } from './ski.schema';
import {
skiDisciplineSchema,
skiIssues,
skiTechniqueSchema,
type SkiDiscipline,
type SkiTechnique,
} from './ski.schema';
import { tourActivityRefSchema, tourActivitySchema } from './tour-activity.schema';
import { tourPackingLinkSchema } from './tour-packing-link.schema';
import { tourPoiCategorySchema } from './tour-poi-category';
@@ -40,15 +46,17 @@ export type TourTypeKey = z.infer<typeof tourTypeKeySchema>;
* walk (CW-01): stations joined on foot, without a hiking limit. `run` is a
* run (RUN-01), planned on foot with the runner's own pace. `horse` is a
* ride (HOR-01): sections of signposted horse routes and stretches the rider
* draws by hand, never routed.
* draws by hand, never routed. `ski` is a ski and winter tour (SKI-02): a
* discipline from alpine skiing to winter hiking, every leg drawn between
* its points until the piste router plans them, no ski time worked out.
*/
export const plannableTourTypeSchema = z.enum(['hike', 'walk', 'run', 'bike', 'kayak', 'horse']);
export const plannableTourTypeSchema = z.enum(['hike', 'walk', 'run', 'bike', 'kayak', 'horse', 'ski']);
export type PlannableTourType = z.infer<typeof plannableTourTypeSchema>;
/**
* The types a tour can be imported and kept as: every type the planner plans,
* and ski (SKI-02), which TREK does not route. A ski track comes in as it was
* recorded and stays so; the planner never opens it as a draft.
* The types a tour can be imported and kept as: every type the planner plans.
* An imported track (a ski track among them, SKI-02) comes in as it was
* recorded and stays so until a tour is planned from it.
*/
export const importableTourTypeSchema = z.enum(['hike', 'walk', 'run', 'bike', 'kayak', 'horse', 'ski']);
export type ImportableTourType = z.infer<typeof importableTourTypeSchema>;
@@ -87,16 +95,6 @@ export type PaddleWaterContext = z.infer<typeof paddleWaterContextSchema>;
export const paddleLakeStyleSchema = z.enum(['direct', 'shore']);
export type PaddleLakeStyle = z.infer<typeof paddleLakeStyleSchema>;
/**
* HIK-01: a hike marked as one done in winter, walked or on snowshoes. It is
* optional and only a label: the route, its grade and its time are planned as
* for any hike, and the label says nothing about whether a way can be walked
* in winter, about snow or about avalanches. A hike without one keeps null.
*/
export const WINTER_ACTIVITIES = ['winter_hike', 'snowshoe'] as const;
export const winterActivitySchema = z.enum(WINTER_ACTIVITIES);
export type WinterActivity = z.infer<typeof winterActivitySchema>;
/** The highest planning speed a paddler can enter, in km/h. */
export const MAX_PADDLE_SPEED_KMH = 20;
export const paddleSpeedKmhSchema = z.number().finite().min(0.5).max(MAX_PADDLE_SPEED_KMH);
@@ -214,15 +212,13 @@ export const tourSchema = z.object({
derived_from_place_id: z.number().int().positive().nullable().optional(),
/** BIK-01: a bike tour's profile; null for every other type. Absent in a list cached before it existed. */
bike_profile: bikeProfileSchema.nullable().optional(),
/** HIK-01: a hike's winter label; null for none and for every other type. Absent in a list cached before it existed. */
winter_activity: winterActivitySchema.nullable().optional(),
/** RUN-01: a run's profile; null for every other type. Absent in a list cached before it existed. */
run_profile: runProfileSchema.nullable().optional(),
/** RUN-01: the pace a run is planned at, seconds per km; null while none is entered and for every other type. */
run_pace_seconds_per_km: z.number().nullable().optional(),
/** SKI-02: a ski track's discipline; null for every other type. Absent in a list cached before it existed. */
/** SKI-02: a ski tour's discipline; null for every other type. Absent in a list cached before it existed. */
ski_discipline: skiDisciplineSchema.nullable().optional(),
/** SKI-02: how a cross-country track is skied; null for every other discipline and type. */
/** SKI-02: how a cross-country tour is skied; null for every other discipline and type. */
ski_technique: skiTechniqueSchema.nullable().optional(),
/** A paddle tour's boat and water; null for every other type. Absent in a list cached before they existed. */
boat_type: paddleBoatTypeSchema.nullable().optional(),
@@ -509,12 +505,13 @@ export const tourCreateRequestSchema = z
hiking_preferences: hikingPreferencesSchema.nullable().optional(),
/** BIK-01, a bike tour's only, and its one requirement. */
bike_profile: bikeProfileSchema.nullable().optional(),
/** HIK-01, a hike's only: its winter label, null to take it off; left out, an edit keeps the one it has. */
winter_activity: winterActivitySchema.nullable().optional(),
/** RUN-01, a run's only, and its one requirement. */
run_profile: runProfileSchema.nullable().optional(),
/** RUN-01, a run's only: the pace it is planned at, seconds per km; null while none is entered. */
run_pace_seconds_per_km: runPaceSecondsPerKmSchema.nullable().optional(),
/** SKI-02, a ski tour's only, and its one requirement: the discipline, for cross-country the technique too. */
ski_discipline: skiDisciplineSchema.nullable().optional(),
ski_technique: skiTechniqueSchema.nullable().optional(),
boat_type: paddleBoatTypeSchema.nullable().optional(),
water_context: paddleWaterContextSchema.nullable().optional(),
paddle_speed_kmh: paddleSpeedKmhSchema.nullable().optional(),
@@ -599,6 +596,7 @@ const TYPE_NAMED: Record<PlannableTourType, string> = {
run: 'a run',
hike: 'a hike',
horse: 'a horse tour',
ski: 'a ski tour',
};
/**
@@ -624,7 +622,9 @@ const PADDLE_FIELDS = [
* bike tour and a run exactly one profile each and nothing of a hike's or a
* paddler's, a run also its pace; a paddle tour exactly one boat and its
* water, and no hiking limit; a horse tour (HOR-01) only legs taken from a
* horse route or drawn by hand, and no riding time worked out for it.
* horse route or drawn by hand, and no riding time worked out for it; a ski
* tour (SKI-02) its discipline (and a cross-country technique), no via
* ferrata, and no ski time worked out for it.
*/
function tourTypeIssues(value: {
tour_type: PlannableTourType;
@@ -632,9 +632,10 @@ function tourTypeIssues(value: {
max_hiking_difficulty?: number | null;
hiking_preferences?: HikingPreferences | null;
bike_profile?: BikeProfile | null;
winter_activity?: WinterActivity | null;
run_profile?: RunProfile | null;
run_pace_seconds_per_km?: number | null;
ski_discipline?: SkiDiscipline | null;
ski_technique?: SkiTechnique | null;
boat_type?: PaddleBoatType | null;
water_context?: PaddleWaterContext | null;
paddle_speed_kmh?: number | null;
@@ -668,17 +669,19 @@ function tourTypeIssues(value: {
issues.push({ path: ['max_hiking_difficulty'], message: `${named} has no hiking difficulty` });
if (hikingPreferencesOf(value.hiking_preferences) !== null)
issues.push({ path: ['hiking_preferences'], message: `${named} has no hiking preferences` });
if (value.winter_activity != null)
issues.push({ path: ['winter_activity'], message: `${named} has no winter activity` });
}
if (type === 'bike' && value.bike_profile == null)
issues.push({ path: ['bike_profile'], message: 'a bike tour needs a bike profile' });
if (type !== 'bike' && value.bike_profile != null)
issues.push({ path: ['bike_profile'], message: 'bike_profile belongs to a bike tour' });
issues.push(...runIssues(value));
issues.push(...skiIssues(type === 'ski', value));
// No router plans a ride, so no time is worked out for it; a planned total the rider enters is theirs.
if (type === 'horse' && value.duration_seconds != null)
issues.push({ path: ['duration_seconds'], message: 'a horse tour has no riding time worked out' });
// SKI-02: no ski time is worked out until the piste router plans the legs; a planned total stays the traveller's.
if (type === 'ski' && value.duration_seconds != null)
issues.push({ path: ['duration_seconds'], message: 'a ski tour has no ski time worked out' });
const points = value.waypoints ?? [];
// A portage and a lock are a paddler's; a via ferrata is climbed, never ridden.
points.forEach((point, index) => {
@@ -687,7 +690,10 @@ function tourTypeIssues(value: {
issues.push({ path: ['waypoints', index, 'fixed_leg'], message: 'a portage belongs to a paddle tour' });
if (type !== 'kayak' && point.lock != null)
issues.push({ path: ['waypoints', index, 'lock'], message: 'a lock belongs to a paddle tour' });
if ((type === 'bike' || type === 'walk' || type === 'run' || type === 'horse') && kind === 'ferrata')
if (
(type === 'bike' || type === 'walk' || type === 'run' || type === 'horse' || type === 'ski') &&
kind === 'ferrata'
)
issues.push({ path: ['waypoints', index, 'fixed_leg'], message: `${named} has no via ferrata` });
if (type !== 'horse' && kind === 'horse_route')
issues.push({