feat(planner): bring the plan tab and every trip dialog into the new look

The Plan tab was the last trip tab still in the old design. It now reads
like Bookings, Costs, Lists, Files and Collab, without losing a function:

- Day plan: each day is a card with a head band (day tile with weather,
  stay and rental pills, a "+" menu for place, stay, transport, transit
  and note), rows with "..." menus, white badges and a white route bar.
- Places column: add, search and filters in three rows, a show dropdown,
  category and rating filters, and a selection bar at the foot.
- Place inspector, day details and the stay editor on the shared dialog
  frame; the place form in the editor look with the name in the head band.
- Clicking a booking or transport anywhere on the plan opens the booking
  detail popup first; Edit leads to the editor. The popup is one host
  shared with the Bookings and Transports tabs.
- Files and Collab dialogs, notes, polls, links and chat moved to the same
  frame; shared DialogShell and dialogParts hold the building blocks.
- The map hover card shows the place photo and follows the theme.

Every new and reworded string is translated into all locales, and a few
older English leftovers (help center, cost split, import hints) with them.
Phone screens keep their own look.
This commit is contained in:
Maurice
2026-09-27 21:00:19 +02:00
parent acd0d6511e
commit 0dd07befa7
314 changed files with 17106 additions and 10400 deletions
+12 -5
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'في الإجمالي فقط — لم تتم التسوية بعد',
'costs.tapToInclude': 'اضغط للتضمين',
'costs.amount': 'المبلغ',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'التقسيم',
'costs.splitEqually': 'بالتساوي',
'costs.splitCustom': 'مخصص',
'costs.splitTicket': 'الإيصال',
'costs.perPerson': '{amount} لكل شخص',
'costs.payersHint': 'حدّد من دفع واكتب المبلغ الذي دفعه كل منهم.',
'costs.splitHint.equally': 'يدفع كل من حُدّد الحصة نفسها.',
'costs.splitHint.custom': 'اكتب حصة كل شخص؛ ويجب أن يساوي مجموع الحصص المبلغ الإجمالي.',
'costs.splitHint.ticket': 'اكتب ما ورد في الإيصال وحدّد من أخذ كل عنصر.',
'costs.filter.allCategories': 'كل الفئات',
'costs.filter.allDays': 'كل الأيام',
'costs.expensesCount': '{count} مصروف',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'الإيصالات',
'costs.receiptsTitle': 'الإيصالات والفواتير',
'costs.attachReceipt': 'إرفاق إيصال / فاتورة',
'costs.attach': 'إرفاق',
'costs.scan.button': 'مسح إيصال',
'costs.scan.reading': 'جارٍ قراءة الإيصال…',
'costs.scan.review': 'مراجعة المصروف',
'costs.scan.nothingRead': 'تعذّرت قراءة أي إيصال من هذه الصورة.',
'costs.scan.failed': 'تعذّر بدء قراءة الإيصال.',
'costs.scan.title': 'مسح إيصال',
'costs.scan.accepted': 'صورة لإيصال واحد (JPG أو PNG أو WEBP، حتى 10 ميغابايت). يقرأها نموذج الذكاء الاصطناعي في الخلفية، ثم تراجع المصروف قبل حفظه.',
'costs.scan.accepted':
'صورة لإيصال واحد (JPG أو PNG أو WEBP، حتى 10 ميغابايت). يقرأها نموذج الذكاء الاصطناعي في الخلفية، ثم تراجع المصروف قبل حفظه.',
'costs.scan.dropHere': 'أفلت صورة الإيصال هنا، أو انقر لاختيار صورة أو التقاطها',
'costs.scan.dropActive': 'أفلت الصورة لمسحها',
'costs.scan.start': 'مسح',
+2 -2
View File
@@ -66,8 +66,8 @@ const dayplan: TranslationStrings = {
'dayplan.gpxEmpty': 'لا يوجد شيء للتصدير بعد',
'dayplan.gpxFailed': 'فشل تصدير GPX',
'dayplan.pdfError': 'فشل تصدير PDF',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'توسيع كل الأيام', // en-fallback
'dayplan.collapseAll': 'طي كل الأيام', // en-fallback
'dayplan.export': 'تصدير',
'dayplan.exportIntro': 'خذ خطتك معك: كمستند أو في تقويمك أو على جهاز GPS.',
'dayplan.exportDocument': 'مستند',
+25 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'ar' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'المساعدة والوثائق',
'help.search': 'ابحث في الوثائق…',
'help.contents': 'المحتويات',
'help.noResults': 'لا توجد صفحات مطابقة.',
'help.errorTitle': 'تعذّر تحميل هذه الصفحة',
'help.errorBody': 'يُجلب محتوى المساعدة من ويكي TREK. تحقّق من اتصالك وحاول مرة أخرى.',
// center
'help.center.button': 'مساعدة لهذه الشاشة',
@@ -941,7 +941,7 @@ const help: TranslationStrings = {
'«Travel & map»: مسارات الحجوزات دائمًا على الخريطة، وزر استكشاف الأماكن، وتحسين المسار انطلاقًا من مكان إقامتك، وإخفاء رموز الحجز، ومسارات الحجوزات المسمّاة.',
'help.ctx.settings-display.bullet.3':
'«البدء»: هل يفتح TREK على لوحة التحكم أم على الرحلة النشطة، وأي علامة تبويب في الرحلة تظهر أولًا.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'المظهر',
'help.ctx.settings-appearance.summary':
'كيف يبدو TREK على هذا الحساب: فاتح أم داكن، ولون التمييز، والزجاج والحركة، وحجم النص، وأي الأدوات تعرضها لوحة التحكم. كل شيء يسري مباشرة، على كل جهاز تسجّل الدخول منه.',
'help.ctx.settings-appearance.bullet.1':
@@ -2070,9 +2070,9 @@ const help: TranslationStrings = {
'help.guide.place-booking.step.1':
'افتح المحطة التي يخصّها الحجز. تعرض البطاقة شريطًا فيه «مؤكد» أو «قيد الانتظار» واسم الحجز.',
'help.guide.place-booking.step.2': 'يحمل الشريط «التاريخ» و«الوقت» و«رمز الحجز»، وما للحجز من ملاحظات.',
'help.guide.place-booking.step.3': 'انقر على الشريط. يُفتح نموذج الحجز نفسه عليه.',
'help.guide.place-booking.step.3': 'انقر على الشريط. يُفتح الحجز فوق الخريطة.',
'help.guide.place-booking.step.4':
'«ربط بخطة اليوم» هو ما يثبّت حجزًا على محطة، وهو هنا يسمّي هذه المحطة سلفًا. أغلق النموذج من جديد.',
'«تعديل» في أسفل الحجز يفتح نموذجه الخاص. و«ربط بخطة اليوم» هناك هو ما يثبّت حجزًا على محطة، وهو هنا يسمّي هذه المحطة سلفًا. أغلق النموذج من جديد.',
'help.guide.place-booking.step.5':
'الحجز الجديد لمحطة يبدأ في عمود الأيام: مرّر المؤشر فوق المحطة وانقر على علامة + في نهايتها. يُفتح النموذج باسم «حجز جديد»، مربوطًا بها سلفًا.',
'help.guide.place-booking.result':
@@ -2395,7 +2395,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'اللون يقول أين يقف الحجز: الصف الأخضر مؤكد، والكهرماني ما زال قيد الانتظار. والفنادق ليست في هذه القائمة، فلها كتلتها الخاصة تحتها.',
'help.guide.day-bookings.step.4':
'القائمة تقرأ الحجوزات فقط. أما إنشاء حجز وتغييره فيتم في علامة التبويب «الحجوزات».',
'انقر على صف فيُفتح الحجز. «تعديل» في أسفله يغيّره؛ أما الحجوزات الجديدة فتُنشأ في علامة التبويب «الحجوزات».',
'help.guide.day-bookings.result': 'كل ما هو مؤرخ في اليوم، وكل ما هو معلق بإحدى محطاته، في هذه القائمة الواحدة.',
'help.guide.day-bookings.tip.1':
'يقع الحجز على يوم بتاريخه هو. غير التاريخ في علامة التبويب «الحجوزات» فينتقل إلى اليوم الآخر من تلقاء نفسه.',
@@ -2894,13 +2894,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.goal': 'أدخل مطعمًا أو فعالية أو جولة أو موقف سيارات أو أي شيء آخر إلى الرحلة يدويًا.',
'help.guide.create-booking.step.1': 'انقر على «حجز يدوي» في أعلى يمين علامة التبويب. يُفتح «حجز جديد».',
'help.guide.create-booking.step.2':
'اختر «نوع الحجز» من القائمة أعلى النموذج، بجانب «المسافرون». «إقامة» و«مطعم» و«فعالية» و«جولة» و«موقف سيارات» و«أخرى» هي الأنواع الستة التي تنشئها علامة التبويب هذه، ويتغير النموذج مع الاختيار: «إقامة» وحدها تستبدل بتواريخها مدى من الأيام.',
'انقر شارة النوع تحت العنوان، في رأس النموذج، واختر «نوع الحجز». «إقامة» و«مطعم» و«فعالية» و«جولة» و«موقف سيارات» و«أخرى» هي الأنواع الستة التي تنشئها علامة التبويب هذه، ويتغير النموذج مع الاختيار: «إقامة» وحدها تستبدل بتواريخها مدى من الأيام.',
'help.guide.create-booking.step.3':
'اكتب «العنوان». هو الحقل الوحيد الذي يصر عليه النموذج، ويبقى «إضافة» معطلًا إلى أن يحمل شيئًا.',
'help.guide.create-booking.step.4':
'حدّد «التاريخ» و«وقت البداية»، و«تاريخ الانتهاء» و«وقت النهاية» إن كان للحجز نهاية. لا تعرض التقاويم سوى أيام داخل الرحلة، والنهاية التي ليست بعد البداية تُعلن بالأحمر وتوقف «إضافة».',
'help.guide.create-booking.step.5':
'أدخل «رمز الحجز» من التأكيد وحدّد «الحالة». «قيد الانتظار» أو «مؤكد» هو ما يقرر في أي القسمين تحط البطاقة.',
'أدخل «رمز الحجز» من التأكيد. شارة الحالة بجانب النوع تعرض «قيد الانتظار»؛ ونقرة واحدة تحوّلها إلى «مؤكد» ونقرة أخرى تعيدها، وهذا ما يقرر في أي القسمين تحط البطاقة.',
'help.guide.create-booking.step.6': 'انقر على «إضافة».',
'help.guide.create-booking.result':
'يصير الحجز بطاقة في قسمه تحمل شريحة نوعه وتواريخه ورمزه، ويراه كل من في الرحلة وهو يظهر.',
@@ -2947,7 +2947,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'تحديد لمن الحجز',
'help.guide.booking-travelers.goal': 'علّم المسافرين الذين يشملهم الحجز، ثم اعرض حجوزاتهم وحدها.',
'help.guide.booking-travelers.step.1':
'افتح الحجز بقلم الرصاص. يقع «المسافرون» أعلى النموذج، بجانب «نوع الحجز»، ويعرض «تعيين المسافرين» ما دام لا أحد في الحجز.',
'افتح الحجز بقلم الرصاص. يقع «المسافرون» بجانب «رمز الحجز»، ويعرض «تعيين المسافرين» ما دام لا أحد في الحجز.',
'help.guide.booking-travelers.step.2':
'انقر عليه واختر الأشخاص الذين لهم هذا الحجز؛ وكل «ضيف» له اسم موجود في القائمة أيضًا. يحصل المختار على علامة صح وتظهر صورته الرمزية في الحقل. وانقر على الاسم ثانية لإزالته.',
'help.guide.booking-travelers.step.3': 'انقر على «تحديث».',
@@ -3035,7 +3035,7 @@ const help: TranslationStrings = {
'صحّح وقتًا، أو أضف الرمز الذي وصل متأخرًا، أو انقل حجزًا من «قيد الانتظار» إلى «مؤكد».',
'help.guide.edit-booking.step.1': 'انقر على قلم الرصاص في رأس البطاقة. يُفتح «تعديل الحجز» بكل ما يعرفه الحجز.',
'help.guide.edit-booking.step.2': 'غيّر ما يحتاج إلى تغيير، وهو هنا «رمز الحجز» الذي أرسله المشغّل أخيرًا.',
'help.guide.edit-booking.step.3': 'اضبط «الحالة» على «مؤكد».',
'help.guide.edit-booking.step.3': 'انقر شارة «قيد الانتظار» في رأس النموذج. فتتحول إلى «مؤكد».',
'help.guide.edit-booking.step.4': 'انقر على «تحديث».',
'help.guide.edit-booking.result':
'تنتقل البطاقة: الحجز المؤكد يقف في قسم «مؤكد» خلف نقطة خضراء، ويرى كل من في الرحلة انتقاله.',
@@ -3311,17 +3311,18 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.title': 'فتح رحلة مخطط لها وتغييرها',
'help.guide.change-transit-route.goal': 'اقرأ الرحلة محطة محطة، أو أعد تسميتها، أو ابحث عن المسار من جديد.',
'help.guide.change-transit-route.step.1':
'في تبويب «المواصلات» تجلس الرحلات المخطط لها تحت «النقل العام التلقائي». انقر البطاقة.',
'في تبويب «المواصلات» تجلس الرحلات المخطط لها تحت «النقل العام التلقائي». انقر البطاقة؛ فتُفتح الرحلة كحجز.',
'help.guide.change-transit-route.step.2':
'«المدة» و«التحويلات» و«المشي» في الأعلى. و«خط سير الرحلة» تحتها يمشي بالرحلة محطة محطة، مع الأرصفة والمشي بين الخطوط.',
'help.guide.change-transit-route.step.3': '«تغيير المسار» يعيد تشغيل البحث، مملوءًا مسبقًا بطرفَي هذه الرحلة ويومها.',
'help.guide.change-transit-route.step.3':
'«تغيير المسار» في أسفل الحجز يعيد تشغيل البحث، مملوءًا مسبقًا بطرفَي هذه الرحلة ويومها.',
'help.guide.change-transit-route.step.4':
'اختر رحلة أخرى وانقر «إضافة إلى اليوم»، فتحل محل القديمة. أما «تعديل التفاصيل»، بجانب «تغيير المسار»، فيفتح نموذج وسيلة النقل العادي، حيث «رمز الحجز» و«الحالة» و«المسافرون» والملفات.',
'اختر رحلة أخرى وانقر «إضافة إلى اليوم»، فتحل محل القديمة. أما «تعديل»، في الطرف الآخر من الشريط نفسه، فيفتح بدلًا من ذلك نموذج وسيلة النقل العادي، حيث «رمز الحجز» و«الحالة» و«المسافرون» والملاحظات والملفات.',
'help.guide.change-transit-route.result':
'تحمل الرحلة خط السير الجديد، وتعرض بطاقتها في تبويب «المواصلات» الخطوط والأوقات الجديدة.',
'help.guide.change-transit-route.tip.1':
'عنوان الرحلة نص فقط: القلم بجانبه يعيد تسميتها دون المساس بالمسار. و«ملاحظات» تحتها تقبل markdown ولها تبويبا «تعديل» و«معاينة».',
'help.guide.change-transit-route.tip.2': '«حذف» في أسفل الرحلة يزيلها من خطة السفر، ويحتفظ اليوم بمحطاته.',
'العنوان في رأس الحجز يعيد تسمية الرحلة دون المساس بالمسار. أما ملاحظاتها فتُكتب في نموذج وسيلة النقل خلف «تعديل».',
'help.guide.change-transit-route.tip.2': '«حذف» في أسفل الحجز يزيل الرحلة من خطة السفر، ويحتفظ اليوم بمحطاته.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'تغيير طريقة قطع مرحلة واحدة',
'help.guide.leg-travel-mode.goal':
@@ -3344,17 +3345,18 @@ const help: TranslationStrings = {
// edit-transport
'help.guide.edit-transport.title': 'تغيير وسيلة نقل أو حذفها',
'help.guide.edit-transport.goal': 'صحّح وقتًا أو منصة أو رمز حجز، أو أخرج الرحلة من خطة السفر.',
'help.guide.edit-transport.step.1': 'في خطة اليوم تكون وسيلة النقل صفًا ملونًا بين المحطات. انقره.',
'help.guide.edit-transport.step.1':
'في خطة اليوم تكون وسيلة النقل صفًا ملونًا بين المحطات. انقره؛ فيُفتح حجزها مع الأوقات والمسار و«رمز الحجز».',
'help.guide.edit-transport.step.2':
'النموذج هو نفسه الذي أنشأها، مع «تعديل وسيلة النقل» في شريط عنوانه. كل شيء قابل للتغيير: النوع والمسار والأيام والأوقات و«رمز الحجز» و«الحالة».',
'«تعديل» في أسفل الحجز يفتح النموذج الذي أنشأها، مع «تعديل وسيلة النقل» في شريط عنوانه. كل شيء قابل للتغيير: النوع والمسار والأيام والأوقات و«رمز الحجز» و«الحالة».',
'help.guide.edit-transport.step.3':
'مسار الرحلة الجوية سلسلة مطارات، ومسار القطار سلسلة محطات. و«إضافة محطة توقف» تضع واحدة أخرى بينهما، وتحتفظ كل مرحلة بأوقاتها وبرقم رحلتها أو قطارها.',
'help.guide.edit-transport.step.4':
'انقر «تحديث». ولإزالة وسيلة النقل تمامًا، استعمل سلة المهملات على بطاقتها في تبويب «المواصلات» وأكّد.',
'انقر «تحديث». ولإزالة وسيلة النقل تمامًا، استعمل «حذف» في أسفل حجزها، أو سلة المهملات على بطاقتها في تبويب «المواصلات»، وأكّد.',
'help.guide.edit-transport.result':
'يظهر التغيير في كل مكان تظهر فيه وسيلة النقل: تبويب «المواصلات»، واليوم الذي تجري فيه، وخطها على الخريطة.',
'help.guide.edit-transport.tip.1':
'يُفتح النموذج نفسه من الجهتين: القلم على البطاقة في تبويب «المواصلات»، وصف وسيلة النقل نفسه في خطة اليوم. والاستثناء هو رحلة النقل العام المخطط لها: صفها يفتح عرض الرحلة، و«تعديل التفاصيل» هناك يقود إلى هذا النموذج.',
'يُفتح النموذج نفسه من الجهتين: عبر «تعديل» في الحجز الذي يفتحه صف في خطة اليوم، وعبر القلم على البطاقة في تبويب «المواصلات». ورحلة النقل العام المخطط لها تُفتح كحجز أيضًا؛ «تغيير المسار» هناك يبحث من جديد، و«تعديل» يقود إلى هذا النموذج.',
'help.guide.edit-transport.tip.2':
'نقل وسيلة نقل إلى يوم آخر لا يحتاج النموذج أصلًا: اسحب صفها من بطاقة يوم إلى التالية.',
// transport-on-map
+6 -2
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'اختر نوعًا واحدًا على الأقل.',
'places.selectionCount': '{count} محدد',
'places.deleteSelected': 'حذف المحدد',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'تغيير الفئة',
'places.categoryChanged': 'تم تحديث {count} من الأماكن',
'places.kmlKmzImported': 'تم استيراد {count} مكان من KMZ/KML',
'places.urlResolved': 'تم استيراد المكان من الرابط',
'places.importList': 'استيراد قائمة',
@@ -52,6 +52,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'عرض الرحلة كاملة',
'places.filterTracks': 'المسارات',
'places.filterByRating': 'تصفية حسب التقييم',
'places.filterShow': 'عرض',
'places.clearSearch': 'مسح البحث',
'places.yourRating': 'تقييمك',
'places.notRated': 'لم يُقيَّم بعد',
'places.search': 'ابحث عن أماكن...',
@@ -71,6 +73,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'الشارع، المدينة، البلد',
'places.formLat': 'خط العرض (مثال: 48.8566)',
'places.formLng': 'خط الطول (مثال: 2.3522)',
'places.formLatLabel': 'خط العرض',
'places.formLngLabel': 'خط الطول',
'places.formCategory': 'الفئة',
'places.noCategory': 'بلا فئة',
'places.newCategory': 'فئة جديدة',
+60 -3
View File
@@ -64,6 +64,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'دراجة',
'reservations.type.taxi': 'سيارة أجرة',
'reservations.type.transit': 'النقل العام',
'reservations.typeShort.transit': 'نقل عام',
'reservations.type.transport_other': 'أخرى',
'reservations.confirm.delete': 'هل تريد حذف الحجز "{name}"؟',
'reservations.confirm.deleteTitle': 'حذف الحجز؟',
@@ -79,6 +80,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'الموقع / العنوان',
'reservations.locationPlaceholder': 'العنوان، المطار، الفندق...',
'reservations.confirmationCode': 'رمز الحجز',
'reservations.routeLabel': 'المسار',
'reservations.segmentCodes': 'رموز المراحل',
'reservations.confirmationPlaceholder': 'مثال: ABC12345',
'reservations.day': 'اليوم',
'reservations.noDay': 'بلا يوم',
@@ -93,6 +96,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'فشل الحذف',
'reservations.confirm.remove': 'إزالة الحجز "{name}"؟',
'reservations.linkAssignment': 'ربط بخطة اليوم',
'reservations.linkedTo': 'مرتبط بـ',
'reservations.pickAssignment': 'اختر عنصرًا من خطتك...',
'reservations.noAssignment': 'بلا ربط',
'reservations.price': 'السعر',
@@ -134,9 +138,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': 'تم العثور على {count} حجز/حجوزات',
'reservations.import.previewEmpty': 'تعذّر استخراج أي حجوزات من الملفات المُحمَّلة.',
'reservations.import.removeItem': 'إزالة',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'مراجعة',
'reservations.import.tryAi': 'جرّب القراءة بالذكاء الاصطناعي',
'reservations.import.aiParsing': 'جارٍ القراءة بالذكاء الاصطناعي…',
'reservations.import.confirm': 'استيراد {count} حجز/حجوزات',
'reservations.import.back': 'رجوع',
'reservations.import.success': 'تم استيراد {count} حجز/حجوزات',
@@ -179,5 +183,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'المسافرون',
'reservations.travelers.assign': 'تعيين المسافرين',
'reservations.travelers.none': 'لا يوجد مسافرون في الرحلة بعد.',
'reservations.status.switchTo': 'التبديل إلى {status}',
'reservations.view.label': 'العرض',
'reservations.view.cards': 'بطاقات',
'reservations.view.list': 'قائمة',
'reservations.view.timeline': 'مخطط زمني',
'reservations.filter': 'تصفية',
'reservations.searchPlaceholder': 'بحث',
'reservations.results': '{shown} من {total}',
'reservations.resetFilters': 'إعادة ضبط عوامل التصفية',
'reservations.noMatches': 'لا شيء يطابق عوامل التصفية هذه',
'reservations.viewOptions': 'خيارات العرض',
'reservations.resetView': 'إعادة ضبط العرض',
'reservations.group.label': 'التجميع حسب',
'reservations.group.status': 'الحالة',
'reservations.group.day': 'اليوم',
'reservations.group.type': 'النوع',
'reservations.group.none': 'بدون تجميع',
'reservations.transitApart': 'النقل العام في قسم مستقل',
'reservations.group.before': 'قبل الرحلة',
'reservations.group.after': 'بعد الرحلة',
'reservations.group.undated': 'بدون تاريخ',
'reservations.sort.label': 'ترتيب حسب',
'reservations.sort.date': 'التاريخ',
'reservations.sort.title': 'العنوان',
'reservations.sort.type': 'النوع',
'reservations.sort.status': 'الحالة',
'reservations.sort.earlyFirst': 'الأقدم أولًا',
'reservations.sort.lateFirst': 'الأحدث أولًا',
'reservations.sort.aToZ': 'من أ إلى ي',
'reservations.sort.zToA': 'من ي إلى أ',
'reservations.timeline.dayCount': '{count} أيام',
'reservations.timeline.zoom': 'التقريب',
'reservations.timeline.trip': 'رحلة',
'reservations.timeline.day': 'يوم',
'reservations.timeline.prevDay': 'اليوم السابق',
'reservations.timeline.nextDay': 'اليوم التالي',
'reservations.timeline.openDay': 'فتح {day} حسب الساعة',
'reservations.timeline.nothingThisDay': 'لا شيء في هذا اليوم.',
'reservations.timeline.today': 'اليوم',
'reservations.timeline.now': 'الآن',
'reservations.timeline.byType': 'صف لكل نوع',
'reservations.timeline.context': 'إظهار التبويب الآخر',
'reservations.timeline.contextBookings': 'الحجوزات',
'reservations.timeline.contextTransports': 'المواصلات',
'reservations.timeline.noneDated': 'لا يحمل أيٌّ من هذه تاريخًا بعد.',
'reservations.undated': 'بدون تاريخ',
'reservations.nights': 'ليالٍ',
'reservations.start': 'البداية',
'reservations.end': 'النهاية',
'reservations.rename': 'إعادة تسمية',
'reservations.copyCode': 'نسخ رمز الحجز',
'reservations.copyFailed': 'تعذّر النسخ',
'reservations.showInFiles': 'عرض في الملفات',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'تعديل وسيلة النقل',
'transport.title': 'المواصلات',
'transport.addManual': 'وسيلة نقل',
'transport.empty': 'لا توجد وسائل نقل بعد',
};
export default transport;
+20 -24
View File
@@ -7,8 +7,7 @@ const budget: TranslationStrings = {
'budget.title': 'Büdcə',
'budget.exportCsv': 'CSV ixrac et',
'budget.emptyTitle': 'Hələ büdcə yaradılmayıb',
'budget.emptyText':
'Səyahət büdcənizi planlaşdırmaq üçün kateqoriyalar və qeydlər yaradın',
'budget.emptyText': 'Səyahət büdcənizi planlaşdırmaq üçün kateqoriyalar və qeydlər yaradın',
'budget.emptyPlaceholder': 'Kateqoriyanın adını daxil edin...',
'budget.createCategory': 'Kateqoriya yarat',
'budget.category': 'Kateqoriya',
@@ -31,8 +30,7 @@ const budget: TranslationStrings = {
'budget.totalBudget': 'Ümumi büdcə',
'budget.byCategory': 'Kateqoriya üzrə',
'budget.editTooltip': 'Redaktə etmək üçün klikləyin',
'budget.linkedToReservation':
'Rezervasiya ilə əlaqələndirilib — adı orada redaktə edin',
'budget.linkedToReservation': 'Rezervasiya ilə əlaqələndirilib — adı orada redaktə edin',
'budget.confirm.deleteCategory':
'“{name}” kateqoriyasını daxilindəki {count} qeydlə birlikdə silmək istədiyinizə əminsiniz?',
'budget.deleteCategory': 'Kateqoriyanı sil',
@@ -89,8 +87,7 @@ const budget: TranslationStrings = {
'costs.settleUp': 'Hesablaş',
'costs.history': 'Tarixçə',
'costs.everyoneSquare': 'Hamının hesabı bağlanıb',
'costs.nothingOutstanding':
'Hazırda gözləyən heç bir ödəniş yoxdur.',
'costs.nothingOutstanding': 'Hazırda gözləyən heç bir ödəniş yoxdur.',
'costs.pay': 'ödə',
'costs.pays': 'ödəyir',
'costs.settle': 'Hesablaş',
@@ -110,11 +107,9 @@ const budget: TranslationStrings = {
'costs.undo': 'Geri qaytar',
'costs.whatFor': 'Bu xərc nə üçün idi?',
'costs.namePlaceholder':
'məs. Şam yeməyi, suvenirlər, yanacaq…',
'costs.namePlaceholder': 'məs. Şam yeməyi, suvenirlər, yanacaq…',
'costs.note': 'Qeyd',
'costs.notePlaceholder':
'Nələri əhatə etdiyi, kimin nə qədər qaytarmalı olduğu…',
'costs.notePlaceholder': 'Nələri əhatə etdiyi, kimin nə qədər qaytarmalı olduğu…',
'costs.addNote': 'Qeyd əlavə et',
'costs.showNote': 'Qeydi göstər',
'costs.hideNote': 'Qeydi gizlət',
@@ -128,18 +123,20 @@ const budget: TranslationStrings = {
'costs.whoPaid': 'Kim ödədi?',
'costs.multiplePayers': 'Bir neçə nəfər ödədi',
'costs.singlePayer': 'Bir nəfər ödədi',
'costs.payersUnbalanced':
'Ödəyicilərin məbləğlərinin cəmi {amount} olmalıdır',
'costs.payersUnbalanced': 'Ödəyicilərin məbləğlərinin cəmi {amount} olmalıdır',
'costs.splitBetween': 'Bərabər bölüşdürüləcək şəxslər',
'costs.split': 'Bölüşdür',
'costs.splitEqually': 'Bərabər',
'costs.splitCustom': 'Fərdi',
'costs.splitTicket': 'Qəbz üzrə',
'costs.pickSomeone':
'Bölüşdürmək üçün ən azı bir nəfər seçin.',
'costs.splitSummary':
'{count} nəfər arasında bölünüb · hərəsinə {amount}',
'costs.perPerson': '{amount} nəfər başına',
'costs.payersHint': 'Kimin ödədiyini işarələyin və hər birinin nə qədər ödədiyini yazın.',
'costs.splitHint.equally': 'İşarələnən hər kəs bərabər pay ödəyir.',
'costs.splitHint.custom': 'Hər şəxsin payını yazın; paylar birlikdə ümumi məbləği təşkil etməlidir.',
'costs.splitHint.ticket': 'Qəbzdə olanları sadalayın və hər elementi kimin götürdüyünü işarələyin.',
'costs.pickSomeone': 'Bölüşdürmək üçün ən azı bir nəfər seçin.',
'costs.splitSummary': '{count} nəfər arasında bölünüb · hərəsinə {amount}',
'costs.cat.accommodation': 'Yaşayış yeri',
'costs.cat.food': 'Yemək və içki',
@@ -176,23 +173,22 @@ const budget: TranslationStrings = {
'costs.ticketShares': 'Fərdi paylar',
'costs.excluded': 'Daxil edilməyib',
'costs.splitBalanced': 'Bölüşdürmə ümumi məbləğə uyğundur',
'costs.splitSumUnder':
'Payların cəmi: {total} məbləğindən {sum} ({diff} azdır)',
'costs.splitSumOver':
'Payların cəmi: {total} məbləğindən {sum} ({diff} çoxdur)',
'costs.toggleSign':
'Xərc və geri ödəniş arasında keçid et',
'costs.splitSumUnder': 'Payların cəmi: {total} məbləğindən {sum} ({diff} azdır)',
'costs.splitSumOver': 'Payların cəmi: {total} məbləğindən {sum} ({diff} çoxdur)',
'costs.toggleSign': 'Xərc və geri ödəniş arasında keçid et',
'costs.receipts': 'Qəbzlər',
'costs.receiptsTitle': 'Qəbzlər və fakturalar',
'costs.attachReceipt': 'Qəbz / faktura əlavə et',
'costs.attach': 'Əlavə et',
'costs.scan.button': 'Qəbzi skan et',
'costs.scan.reading': 'Qəbz oxunur…',
'costs.scan.review': 'Xərci yoxla',
'costs.scan.nothingRead': 'Bu fotodan qəbz oxunmadı.',
'costs.scan.failed': 'Qəbzin oxunmasına başlamaq mümkün olmadı.',
'costs.scan.title': 'Qəbzi skan et',
'costs.scan.accepted': 'Bir qəbzin fotosu (JPG, PNG və ya WEBP, 10 MB-a qədər). Süni intellekt modeli onu arxa planda oxuyur, sonra xərci saxlamazdan əvvəl yoxlayırsan.',
'costs.scan.accepted':
'Bir qəbzin fotosu (JPG, PNG və ya WEBP, 10 MB-a qədər). Süni intellekt modeli onu arxa planda oxuyur, sonra xərci saxlamazdan əvvəl yoxlayırsan.',
'costs.scan.dropHere': 'Qəbzin fotosunu bura burax və ya seçmək ya çəkmək üçün kliklə',
'costs.scan.dropActive': 'Skan etmək üçün fotonu burax',
'costs.scan.start': 'Skan et',
@@ -204,4 +200,4 @@ const budget: TranslationStrings = {
'Yadda saxlamaq mümkün olmadı və yüklənmiş {count} qəbz hələ də qalır. Onları Fayllar bölməsindən silin.',
};
export default budget;
export default budget;
+17 -16
View File
@@ -2335,9 +2335,9 @@ const help: TranslationStrings = {
'Rezervasiyanın aid olduğu dayanacağı açın. Kartda Təsdiqlənib və ya Gözləyir yazısı və rezervasiyanın adı olan zolaq görünür.',
'help.guide.place-booking.step.2':
'Zolaqda Tarix, Vaxt və Rezervasiya kodu, həmçinin rezervasiyanın bütün qeydləri yer alır.',
'help.guide.place-booking.step.3': 'Zolağa klikləyin. Rezervasiyanın öz forması onun üzərində açılır.',
'help.guide.place-booking.step.3': 'Zolağa klikləyin. Rezervasiya xəritənin üzərində açılır.',
'help.guide.place-booking.step.4':
'Rezervasiyanı dayanacağa bağlayan Günlük planla əlaqələndir sahəsidir və burada artıq bu dayanacaq göstərilir. Formanı yenidən bağlayın.',
'Rezervasiyanın aşağısındakı Redaktə et onun öz formasını açır. Rezervasiyanı dayanacağa bağlayan oradakı Günlük planla əlaqələndir sahəsidir və burada artıq bu dayanacaq göstərilir. Formanı yenidən bağlayın.',
'help.guide.place-booking.step.5':
'Dayanacaq üçün yeni rezervasiya günlər sütunundan başlayır: kursoru dayanacağın üzərinə gətirin və sonundakı + düyməsinə klikləyin. Forma artıq ona bağlanmış Yeni rezervasiya kimi açılır.',
'help.guide.place-booking.result':
@@ -2539,7 +2539,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'Rəng rezervasiyanın vəziyyətini bildirir: yaşıl sətir təsdiqlənib, kəhrəba rəngli sətir hələ gözləyir. Otellər bu siyahıda deyil, onların aşağıda öz bloku var.',
'help.guide.day-bookings.step.4':
'Siyahı rezervasiyaları yalnız göstərir. Rezervasiya Rezervasiyalar bölməsində yaradılır və dəyişdirilir.',
'Sətrə klikləyin və rezervasiya açılır. Onun aşağısındakı Redaktə et onu dəyişir; yeni rezervasiyalar Rezervasiyalar bölməsində yaradılır.',
'help.guide.day-bookings.result':
'Həmin tarixə düşən və dayanacaqlarından birinə bağlı olan hər şey bu bir siyahıdadır.',
'help.guide.day-bookings.tip.1':
@@ -2821,19 +2821,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Əlaqəni dayanacaq-dayanacaq oxuyun, adını dəyişin və ya marşrutu yenidən axtarın.',
'help.guide.change-transit-route.step.1':
'Nəqliyyat bölməsində planlaşdırılmış əlaqələr Avtomatik ictimai nəqliyyat altındadır. Karta klikləyin.',
'Nəqliyyat bölməsində planlaşdırılmış əlaqələr Avtomatik ictimai nəqliyyat altındadır. Karta klikləyin; əlaqə rezervasiya kimi açılır.',
'help.guide.change-transit-route.step.2':
'Müddət, Dəyişmələr və Piyada yuxarıdadır. Onların altındakı Marşrut planı əlaqəni platformalar və xətlər arasındakı piyada yollarla birlikdə dayanacaq-dayanacaq göstərir.',
'help.guide.change-transit-route.step.3':
'Marşrutu dəyiş axtarışı bu əlaqənin iki ucu və günü ilə artıq doldurulmuş halda yenidən işə salır.',
'Rezervasiyanın aşağısındakı Marşrutu dəyiş axtarışı bu əlaqənin iki ucu və günü ilə artıq doldurulmuş halda yenidən işə salır.',
'help.guide.change-transit-route.step.4':
'Başqa əlaqə seçin və Günə əlavə et düyməsinə klikləyin; o, köhnəsinin yerini tutur. Marşrutu dəyiş yanındakı Təfərrüatları redaktə et isə adi nəqliyyat formasını açır, burada Rezervasiya kodu, Vəziyyət, səyahətçilər və fayllar yerləşir.',
'Başqa əlaqə seçin və Günə əlavə et düyməsinə klikləyin; o, köhnəsinin yerini tutur. Eyni zolağın o biri ucundakı Redaktə et isə adi nəqliyyat formasını açır, burada Rezervasiya kodu, Vəziyyət, səyahətçilər, qeydlər və fayllar yerləşir.',
'help.guide.change-transit-route.result':
'Səfər yeni marşrut planını daşıyır, Nəqliyyat bölməsindəki kartı isə yeni xətləri və vaxtları göstərir.',
'help.guide.change-transit-route.tip.1':
'Səfərin başlığı sadəcə mətndir: yanındakı karandaş marşruta toxunmadan onun adını dəyişir. Altındakı Qeydlər markdown qəbul edir və onun Redaktə et və Önizləmə tabları var.',
'Rezervasiyanın yuxarı hissəsindəki başlıq marşruta toxunmadan əlaqənin adını dəyişir. Onun qeydləri Redaktə et arxasındakı nəqliyyat formasında yazılır.',
'help.guide.change-transit-route.tip.2':
'Səfərin aşağısındakı Sil əlaqəni səyahətdən çıxarır; gün öz dayanacaqlarını saxlayır.',
'Rezervasiyanın aşağısındakı Sil əlaqəni səyahətdən çıxarır; gün öz dayanacaqlarını saxlayır.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Bir mərhələnin necə keçildiyini dəyişin',
'help.guide.leg-travel-mode.goal':
@@ -2858,17 +2858,18 @@ const help: TranslationStrings = {
'help.guide.edit-transport.title': 'Nəqliyyatı dəyişin və ya silin',
'help.guide.edit-transport.goal':
'Vaxtı, platformanı və ya rezervasiya kodunu düzəldin, yaxud gedişi səyahətdən çıxarın.',
'help.guide.edit-transport.step.1': 'Gün planında nəqliyyat dayanacaqlar arasında rəngli sətirdir. Ona klikləyin.',
'help.guide.edit-transport.step.1':
'Gün planında nəqliyyat dayanacaqlar arasında rəngli sətirdir. Ona klikləyin; onun rezervasiyası vaxtlar, marşrut və Rezervasiya kodu ilə açılır.',
'help.guide.edit-transport.step.2':
'Bu, onu yaradan formadır, başlıq zolağında Nəqliyyatı redaktə et yazılıb. Hər şeyi dəyişmək olar: növü, marşrutu, günləri və vaxtları, Rezervasiya kodunu, Vəziyyəti.',
'Rezervasiyanın aşağısındakı Redaktə et onu yaradan formanı açır, başlıq zolağında Nəqliyyatı redaktə et yazılıb. Hər şeyi dəyişmək olar: növü, marşrutu, günləri və vaxtları, Rezervasiya kodunu, Vəziyyəti.',
'help.guide.edit-transport.step.3':
'Uçuşun marşrutu hava limanları zənciri, qatarınkı isə stansiyalar zənciridir. Ara dayanacaq əlavə et aralarına yenisini qoyur və hər mərhələ öz vaxtlarını və öz uçuş və ya qatar nömrəsini saxlayır.',
'help.guide.edit-transport.step.4':
'Yenilə düyməsinə klikləyin. Nəqliyyatı tamamilə silmək üçün Nəqliyyat bölməsində onun kartındakı zibil qutusundan istifadə edin və təsdiqləyin.',
'Yenilə düyməsinə klikləyin. Nəqliyyatı tamamilə silmək üçün onun rezervasiyasının aşağısındakı Sil düyməsindən və ya Nəqliyyat bölməsində onun kartındakı zibil qutusundan istifadə edin və təsdiqləyin.',
'help.guide.edit-transport.result':
'Dəyişiklik nəqliyyatın göründüyü hər yerdə əks olunur: Nəqliyyat bölməsində, yola düşdüyü gündə və xəritədəki xəttində.',
'help.guide.edit-transport.tip.1':
'Eyni forma hər iki tərəfdən açılır: Nəqliyyat bölməsindəki kartın karandaşından və gün planındakı nəqliyyatın öz sətrindən. Planlaşdırılmış ictimai nəqliyyat əlaqəsi istisnadır: onun sətri səfər görünüşünü açır, oradakı Təfərrüatları redaktə et isə bu formaya aparır.',
'Eyni forma hər iki tərəfdən açılır: gün planındakı sətrin açdığı rezervasiyada Redaktə et ilə və Nəqliyyat bölməsindəki kartın karandaşı ilə. Planlaşdırılmış ictimai nəqliyyat əlaqəsi də rezervasiya kimi açılır; oradakı Marşrutu dəyiş yenidən axtarır, Redaktə et isə bu formaya aparır.',
'help.guide.edit-transport.tip.2':
'Nəqliyyatı başqa günə köçürmək üçün formaya ümumiyyətlə ehtiyac yoxdur: onun sətrini bir günün kartından digərinə sürükləyin.',
// transport-on-map
@@ -2939,13 +2940,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Bölmənin sağ yuxarısında Əl ilə rezervasiya et düyməsinə klikləyin. Yeni rezervasiya açılır.',
'help.guide.create-booking.step.2':
'Rezervasiya növü formanın yuxarısındakı siyahıdan, Səyahətçilər yanında seçin. Bu bölmənin yaratdığı altı növ Yaşayış yeri, Restoran, Tədbir, Tur, Parkinq və Digərdir, forma isə seçimə uyğun dəyişir: yalnız Yaşayış yeri tarixlər əvəzinə günlər aralığı istifadə edir.',
'Formanın yuxarı hissəsində, başlığın altındakı növ nişanına klikləyin və Rezervasiya növünü seçin. Bu bölmənin yaratdığı altı növ Yaşayış yeri, Restoran, Tədbir, Tur, Parkinq və Digərdir, forma isə seçimə uyğun dəyişir: yalnız Yaşayış yeri tarixlər əvəzinə günlər aralığı istifadə edir.',
'help.guide.create-booking.step.3':
'Başlığı yazın. Bu, formanın tələb etdiyi yeganə sahədir və o doldurulmayana qədər Əlavə et işləmir.',
'help.guide.create-booking.step.4':
'Tarix və Başlanğıc vaxtı, rezervasiyanın sonu varsa, Bitmə tarixi və Bitmə vaxtı təyin edin. Təqvimlər yalnız səyahət daxilindəki günləri təklif edir, başlanğıcdan sonra olmayan son isə qırmızı ilə bildirilir və Əlavə et düyməsini bloklayır.',
'help.guide.create-booking.step.5':
'Təsdiqdən Rezervasiya kodunu daxil edin və Vəziyyət təyin edin. Gözləyir və ya Təsdiqlənib kartın iki bölmədən hansına düşəcəyini müəyyən edir.',
'Təsdiqdən Rezervasiya kodunu daxil edin. Növün yanındakı vəziyyət nişanında Gözləyir yazılıb; bir klik onu Təsdiqlənib edir, növbəti klik geri qaytarır, bu da kartın iki bölmədən hansına düşəcəyini müəyyən edir.',
'help.guide.create-booking.step.6': 'Əlavə et düyməsinə klikləyin.',
'help.guide.create-booking.result':
'Rezervasiya öz bölməsində növ nişanı, tarixləri və kodu ilə bir kartdır və səyahətdəki hər kəs onun görünməsini görür.',
@@ -2997,7 +2998,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.goal':
'Rezervasiyanın əhatə etdiyi səyahətçiləri qeyd edin və sonra yalnız onlarınkını görün.',
'help.guide.booking-travelers.step.1':
'Rezervasiyanı karandaşla açın. Səyahətçilər formanın yuxarısında, Rezervasiya növü yanında yerləşir və rezervasiyada heç kim olmadıqca Səyahətçiləri təyin et yazısını göstərir.',
'Rezervasiyanı karandaşla açın. Səyahətçilər Rezervasiya kodunun yanında yerləşir və rezervasiyada heç kim olmadıqca Səyahətçiləri təyin et yazısını göstərir.',
'help.guide.booking-travelers.step.2':
'Ona klikləyin və bu rezervasiyanın aid olduğu insanları seçin; adlı qonaqlar da siyahıdadır. Seçilmiş şəxsdə işarə görünür, onun avatarı isə sahədə göstərilir. Onu götürmək üçün ada yenidən klikləyin.',
'help.guide.booking-travelers.step.3': 'Yenilə düyməsinə klikləyin.',
@@ -3093,7 +3094,7 @@ const help: TranslationStrings = {
'Kartın başlığındakı karandaşa klikləyin. Rezervasiyanı redaktə et rezervasiyanın bütün məlumatları ilə açılır.',
'help.guide.edit-booking.step.2':
'Dəyişməli olanı dəyişin, məsələn, operatorun nəhayət göndərdiyi Rezervasiya kodunu.',
'help.guide.edit-booking.step.3': 'Vəziyyəti Təsdiqlənib olaraq təyin edin.',
'help.guide.edit-booking.step.3': 'Formanın yuxarı hissəsindəki Gözləyir nişanına klikləyin. O, Təsdiqlənib olur.',
'help.guide.edit-booking.step.4': 'Yenilə düyməsinə klikləyin.',
'help.guide.edit-booking.result':
'Kart yerini dəyişir: təsdiqlənmiş rezervasiya Təsdiqlənib bölməsində yaşıl nöqtə ilə yer alır və səyahətdəki hər kəs onun yerdəyişməsini görür.',
+24 -39
View File
@@ -10,13 +10,10 @@ const places: TranslationStrings = {
'places.sidebarDrop': 'İdxal etmək üçün buraya burax',
'places.importFileHint':
'Google My Maps, Google Earth və ya GPS izləyicisi kimi alətlərdən .gpx, .kml və ya .kmz fayllarını idxal edin.',
'places.importFileDropHere':
'Fayl seçmək üçün klikləyin və ya faylı buraya sürükləyib buraxın',
'places.importFileDropHere': 'Fayl seçmək üçün klikləyin və ya faylı buraya sürükləyib buraxın',
'places.importFileDropActive': 'Seçmək üçün faylı buraya buraxın',
'places.importFileUnsupported':
'Dəstəklənməyən fayl növüdür. .gpx, .kml və ya .kmz istifadə edin.',
'places.importFileTooLarge':
'Fayl həddindən çox böyükdür. Maksimum yükləmə ölçüsü {maxMb} MB-dır.',
'places.importFileUnsupported': 'Dəstəklənməyən fayl növüdür. .gpx, .kml və ya .kmz istifadə edin.',
'places.importFileTooLarge': 'Fayl həddindən çox böyükdür. Maksimum yükləmə ölçüsü {maxMb} MB-dır.',
'places.importFileError': 'İdxal uğursuz oldu',
'places.importAllSkipped': 'Bütün məkanlar artıq bu səyahətdə mövcuddur.',
@@ -25,14 +22,12 @@ const places: TranslationStrings = {
'places.gpxImportWaypoints': 'Yol nöqtələri',
'places.gpxImportRoutes': 'Marşrutlar',
'places.gpxImportTracks': 'İzlər (marşrut xətti ilə)',
'places.gpxImportNoneSelected':
'İdxal etmək üçün ən azı bir növ seçin.',
'places.gpxImportNoneSelected': 'İdxal etmək üçün ən azı bir növ seçin.',
'places.kmlImportTypes': 'Nələri idxal etmək istəyirsiniz?',
'places.kmlImportPoints': 'Nöqtələr (Placemarks)',
'places.kmlImportPaths': 'Yollar (LineStrings)',
'places.kmlImportNoneSelected':
'İdxal etmək üçün ən azı bir növ seçin.',
'places.kmlImportNoneSelected': 'İdxal etmək üçün ən azı bir növ seçin.',
'places.selectionCount': '{count} seçilib',
'places.deleteSelected': 'Seçilənləri sil',
@@ -41,25 +36,18 @@ const places: TranslationStrings = {
'places.kmlKmzImported': 'KMZ/KML-dən {count} məkan idxal edildi',
'places.urlResolved': 'Məkan URL-dən idxal edildi',
'places.importList': 'Siyahı idxalı',
'places.kmlKmzSummaryValues':
'Məkan nişanları: {total} • İdxal edildi: {created} • Buraxıldı: {skipped}',
'places.kmlKmzSummaryValues': 'Məkan nişanları: {total} • İdxal edildi: {created} • Buraxıldı: {skipped}',
'places.importGoogleList': 'Google siyahısı',
'places.importNaverList': 'Naver siyahısı',
'places.googleListHint':
'Bütün məkanları idxal etmək üçün paylaşılan Google Maps siyahısının linkini daxil edin.',
'places.googleListHint': 'Bütün məkanları idxal etmək üçün paylaşılan Google Maps siyahısının linkini daxil edin.',
'places.googleDirHint':
'İstiqamət linki də istifadə edilə bilər: dayanacaqlar avtomobillə hərəkət sırasına uyğun məkanlara çevriləcək.',
'places.googleListImported':
'“{list}” siyahısından {count} məkan idxal edildi',
'places.googleListError':
'Google Maps siyahısını idxal etmək mümkün olmadı',
'places.naverListHint':
'Bütün məkanları idxal etmək üçün paylaşılan Naver Maps siyahısının linkini daxil edin.',
'places.naverListImported':
'“{list}” siyahısından {count} məkan idxal edildi',
'places.naverListError':
'Naver Maps siyahısını idxal etmək mümkün olmadı',
'places.googleListImported': '“{list}” siyahısından {count} məkan idxal edildi',
'places.googleListError': 'Google Maps siyahısını idxal etmək mümkün olmadı',
'places.naverListHint': 'Bütün məkanları idxal etmək üçün paylaşılan Naver Maps siyahısının linkini daxil edin.',
'places.naverListImported': '“{list}” siyahısından {count} məkan idxal edildi',
'places.naverListError': 'Naver Maps siyahısını idxal etmək mümkün olmadı',
'places.viewDetails': 'Təfərrüatlara bax',
'places.assignToDay': 'Hansı günə əlavə edilsin?',
@@ -73,6 +61,8 @@ const places: TranslationStrings = {
'places.filterTracks': 'İzlər',
'places.filterByRating': 'Reytinqə görə filtrlə',
'places.filterShow': 'Göstər',
'places.clearSearch': 'Axtarışı təmizlə',
'places.yourRating': 'Sizin reytinqiniz',
'places.notRated': 'Hələ qiymətləndirilməyib',
'places.search': 'Məkanları axtarın...',
@@ -93,6 +83,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Küçə, şəhər, ölkə',
'places.formLat': 'Enlik (məs. 48.8566)',
'places.formLng': 'Uzunluq (məs. 2.3522)',
'places.formLatLabel': 'Enlik',
'places.formLngLabel': 'Uzunluq',
'places.formCategory': 'Kateqoriya',
'places.noCategory': 'Kateqoriya yoxdur',
'places.newCategory': 'Yeni kateqoriya',
@@ -100,22 +92,18 @@ const places: TranslationStrings = {
'places.formTime': 'Vaxt',
'places.startTime': 'Başlanğıc',
'places.endTime': 'Son',
'places.endTimeBeforeStart':
'Bitmə vaxtı başlanğıc vaxtından əvvəldir',
'places.endTimeBeforeStart': 'Bitmə vaxtı başlanğıc vaxtından əvvəldir',
'places.timeCollision': 'Vaxt üst-üstə düşür:',
'places.formWebsite': 'Veb-sayt',
'places.formNotes': 'Qeydlər',
'places.formNotesPlaceholder': 'Şəxsi qeydlər...',
'places.assignmentNotes': 'Bu gün üçün qeydlər',
'places.assignmentNotesPlaceholder':
'Bu məkan haqqında yalnız bu günə aid qeydlər...',
'places.assignmentNotesPlaceholder': 'Bu məkan haqqında yalnız bu günə aid qeydlər...',
'places.formReservation': 'Rezervasiya',
'places.reservationNotesPlaceholder':
'Rezervasiya qeydləri, təsdiq nömrəsi...',
'places.reservationNotesPlaceholder': 'Rezervasiya qeydləri, təsdiq nömrəsi...',
'places.mapsSearchPlaceholder': 'Məkanları axtarın...',
'places.mapsSearchError': 'Məkan axtarışı uğursuz oldu.',
'places.searchGoogleInstead':
'Axtardığınız məkan deyil? Əvəzində Google-da axtarın',
'places.searchGoogleInstead': 'Axtardığınız məkan deyil? Əvəzində Google-da axtarın',
'places.loadingDetails': 'Məkan təfərrüatları yüklənir…',
'places.osmHint':
'OpenStreetMap axtarışından istifadə edilir (fotolar, iş saatları və reytinqlər yoxdur). Tam təfərrüatlar üçün tənzimləmələrdə Google API açarı əlavə edin.',
@@ -125,8 +113,7 @@ const places: TranslationStrings = {
'places.details.empty': 'Ətraflı məlumat üçün bir nəticə seçin',
'places.details.loading': 'Təfərrüatlar yüklənir...',
'places.details.error': 'Təfərrüatları yükləmək mümkün olmadı.',
'places.details.disabled':
'Əlavə məlumatların əldə edilməsi administrator tərəfindən deaktiv edilib.',
'places.details.disabled': 'Əlavə məlumatların əldə edilməsi administrator tərəfindən deaktiv edilib.',
'places.details.noPhotos': 'Bu məkan üçün heç bir şəkil tapılmadı.',
'places.details.pickImage': 'Şəkil seç',
'places.details.description': 'Təsvir',
@@ -135,8 +122,7 @@ const places: TranslationStrings = {
'places.details.facts': 'Faydalı məlumatlar',
'places.details.nothing': 'Bu məkan haqqında məlumat tapılmadı.',
'places.details.aboutBrand': 'Şəbəkə haqqında',
'places.details.aboutBrandNote':
'Bu məlumat həmin filialı deyil, ümumi şəbəkəni təsvir edir.',
'places.details.aboutBrandNote': 'Bu məlumat həmin filialı deyil, ümumi şəbəkəni təsvir edir.',
'places.details.fact.rating': 'Reytinq',
'places.details.fact.cuisine': 'Mətbəx',
'places.details.fact.openingHours': 'İş saatları',
@@ -152,8 +138,7 @@ const places: TranslationStrings = {
'places.categoryCreateError': 'Kateqoriya yaratmaq mümkün olmadı',
'places.nameRequired': 'Ad daxil edin',
'places.saveError': 'Yadda saxlamaq mümkün olmadı',
'places.createExpenseHint':
'Məkanı yadda saxlayır, sonra Xərclər redaktorunu açır.',
'places.createExpenseHint': 'Məkanı yadda saxlayır, sonra Xərclər redaktorunu açır.',
'places.duplicateExists': '“{name}” artıq bu səyahətdə mövcuddur.',
'places.addAnyway': 'Yenə də əlavə et',
@@ -168,4 +153,4 @@ const places: TranslationStrings = {
'places.imageRemoveError': 'Şəkli silmək mümkün olmadı',
};
export default places;
export default places;
+95 -75
View File
@@ -3,8 +3,7 @@ import type { TranslationStrings } from '../types';
const reservations: TranslationStrings = {
'reservations.title': 'Rezervasiyalar',
'reservations.empty': 'Hələ rezervasiya yoxdur',
'reservations.emptyHint':
'Uçuşlar, otellər və digər xidmətlər üçün rezervasiyalar əlavə edin',
'reservations.emptyHint': 'Uçuşlar, otellər və digər xidmətlər üçün rezervasiyalar əlavə edin',
'reservations.add': 'Rezervasiya əlavə et',
'reservations.addManual': 'Əl ilə rezervasiya et',
'reservations.placeHint':
@@ -12,8 +11,7 @@ const reservations: TranslationStrings = {
'reservations.confirmed': 'Təsdiqlənib',
'reservations.pending': 'Gözləyir',
'reservations.summary':
'{confirmed} təsdiqlənib, {pending} gözləyir',
'reservations.summary': '{confirmed} təsdiqlənib, {pending} gözləyir',
'reservations.showFiles': 'Faylları göstər',
'reservations.editTitle': 'Rezervasiyanı redaktə et',
@@ -41,10 +39,8 @@ const reservations: TranslationStrings = {
'reservations.layover.layover': 'Tranzit gözləmə',
'reservations.needsReview': 'Yoxlayın',
'reservations.needsReviewHint':
'Hava limanını avtomatik uyğunlaşdırmaq mümkün olmadı — məkanı təsdiqləyin.',
'reservations.searchLocation':
'Stansiya, liman və ya ünvan axtarın…',
'reservations.needsReviewHint': 'Hava limanını avtomatik uyğunlaşdırmaq mümkün olmadı — məkanı təsdiqləyin.',
'reservations.searchLocation': 'Stansiya, liman və ya ünvan axtarın…',
'reservations.meta.trainNumber': 'Qatar nömrəsi',
'reservations.meta.platform': 'Platforma',
@@ -54,8 +50,7 @@ const reservations: TranslationStrings = {
'reservations.meta.checkOut': 'Çıxış',
'reservations.meta.linkAccommodation': 'Yaşayış yeri',
'reservations.meta.pickAccommodation':
'Yaşayış yeri ilə əlaqələndir',
'reservations.meta.pickAccommodation': 'Yaşayış yeri ilə əlaqələndir',
'reservations.meta.noAccommodation': 'Heç biri',
'reservations.meta.hotelPlace': 'Yaşayış yeri',
@@ -81,13 +76,12 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Velosiped',
'reservations.type.taxi': 'Taksi',
'reservations.type.transit': 'İctimai nəqliyyat',
'reservations.typeShort.transit': 'Tranzit',
'reservations.type.transport_other': 'Digər',
'reservations.confirm.delete':
'“{name}” rezervasiyasını silmək istədiyinizə əminsiniz?',
'reservations.confirm.delete': '“{name}” rezervasiyasını silmək istədiyinizə əminsiniz?',
'reservations.confirm.deleteTitle': 'Rezervasiya silinsin?',
'reservations.confirm.deleteBody':
'“{name}” həmişəlik silinəcək.',
'reservations.confirm.deleteBody': '“{name}” həmişəlik silinəcək.',
'reservations.toast.updated': 'Rezervasiya yeniləndi',
'reservations.toast.removed': 'Rezervasiya silindi',
@@ -97,12 +91,12 @@ const reservations: TranslationStrings = {
'reservations.newTitle': 'Yeni rezervasiya',
'reservations.bookingType': 'Rezervasiya növü',
'reservations.titleLabel': 'Başlıq',
'reservations.titlePlaceholder':
'məs. Lufthansa LH123, Hotel Adlon...',
'reservations.titlePlaceholder': 'məs. Lufthansa LH123, Hotel Adlon...',
'reservations.locationAddress': 'Məkan / Ünvan',
'reservations.locationPlaceholder':
'Ünvan, hava limanı, otel...',
'reservations.locationPlaceholder': 'Ünvan, hava limanı, otel...',
'reservations.confirmationCode': 'Rezervasiya kodu',
'reservations.routeLabel': 'Marşrut',
'reservations.segmentCodes': 'Seqment kodları',
'reservations.confirmationPlaceholder': 'məs. ABC12345',
'reservations.day': 'Gün',
'reservations.noDay': 'Gün seçilməyib',
@@ -118,22 +112,18 @@ const reservations: TranslationStrings = {
'reservations.toast.updateError': 'Yeniləmək mümkün olmadı',
'reservations.toast.deleteError': 'Silmək mümkün olmadı',
'reservations.confirm.remove':
'“{name}” üçün rezervasiya silinsin?',
'reservations.confirm.remove': '“{name}” üçün rezervasiya silinsin?',
'reservations.linkAssignment': 'Günlük planla əlaqələndir',
'reservations.pickAssignment':
'Planınızdan bir təyinat seçin...',
'reservations.linkedTo': 'Əlaqələndirilib',
'reservations.pickAssignment': 'Planınızdan bir təyinat seçin...',
'reservations.noAssignment': 'Əlaqə yoxdur (müstəqil)',
'reservations.price': 'Qiymət',
'reservations.budgetCategory': 'Büdcə kateqoriyası',
'reservations.budgetCategoryPlaceholder':
'məs. Nəqliyyat, Yaşayış yeri',
'reservations.budgetCategoryAuto':
'Avtomatik (rezervasiya növünə əsasən)',
'reservations.budgetHint':
'Yadda saxlanarkən avtomatik olaraq büdcə qeydi yaradılacaq.',
'reservations.budgetCategoryPlaceholder': 'məs. Nəqliyyat, Yaşayış yeri',
'reservations.budgetCategoryAuto': 'Avtomatik (rezervasiya növünə əsasən)',
'reservations.budgetHint': 'Yadda saxlanarkən avtomatik olaraq büdcə qeydi yaradılacaq.',
'reservations.departureDate': 'Yola düşmə',
'reservations.arrivalDate': 'Çatma',
@@ -145,10 +135,8 @@ const reservations: TranslationStrings = {
'reservations.returnTime': 'Qaytarma vaxtı',
'reservations.endDate': 'Bitmə tarixi',
'reservations.meta.departureTimezone':
'Yola düşmə saat qurşağı',
'reservations.meta.arrivalTimezone':
'Çatma saat qurşağı',
'reservations.meta.departureTimezone': 'Yola düşmə saat qurşağı',
'reservations.meta.arrivalTimezone': 'Çatma saat qurşağı',
'reservations.span.departure': 'Yola düşmə',
'reservations.span.arrival': 'Çatma',
@@ -165,45 +153,34 @@ const reservations: TranslationStrings = {
'reservations.span.end': 'Son',
'reservations.span.ongoing': 'Davam edir',
'reservations.validation.endBeforeStart':
'Bitmə tarixi və vaxtı başlanğıc tarixi və vaxtından sonra olmalıdır',
'reservations.validation.endBeforeStart': 'Bitmə tarixi və vaxtı başlanğıc tarixi və vaxtından sonra olmalıdır',
'reservations.addBooking': 'Rezervasiya əlavə et',
'reservations.import.title':
'Rezervasiya təsdiqlərini idxal et',
'reservations.import.title': 'Rezervasiya təsdiqlərini idxal et',
'reservations.import.cta': 'Fayldan idxal et',
'reservations.import.dropHere':
'Rezervasiya təsdiqi fayllarını buraya sürükləyib buraxın və ya seçmək üçün klikləyin',
'reservations.import.dropActive':
'İdxal etmək üçün faylları buraya buraxın',
'reservations.import.dropActive': 'İdxal etmək üçün faylları buraya buraxın',
'reservations.import.acceptedFormats':
'Qəbul edilən formatlar: EML, PDF, PKPass, HTML, TXT (hər biri maksimum 10 MB, 5 fayladək)',
'reservations.import.acceptedPhotos': 'Fotoları (JPG, PNG, WEBP) süni intellekt modeli oxuyur.',
'reservations.import.parsing': 'Fayllar təhlil edilir…',
'reservations.import.previewHeading':
'{count} rezervasiya tapıldı',
'reservations.import.previewEmpty':
'Yüklənən fayllardan heç bir rezervasiya çıxarmaq mümkün olmadı.',
'reservations.import.previewHeading': '{count} rezervasiya tapıldı',
'reservations.import.previewEmpty': 'Yüklənən fayllardan heç bir rezervasiya çıxarmaq mümkün olmadı.',
'reservations.import.removeItem': 'Sil',
'reservations.import.needsReview': 'Yoxlayın',
'reservations.import.tryAi': 'AI ilə təhlil et',
'reservations.import.aiParsing': 'AI ilə təhlil edilir…',
'reservations.import.confirm':
'{count} rezervasiyanı idxal et',
'reservations.import.confirm': '{count} rezervasiyanı idxal et',
'reservations.import.back': 'Geri',
'reservations.import.success':
'{count} rezervasiya idxal edildi',
'reservations.import.partialFailure':
'{created} idxal edildi, {failed} uğursuz oldu',
'reservations.import.error':
'Təhlil uğursuz oldu. Faylın etibarlı rezervasiya təsdiqi olduğuna əmin olun.',
'reservations.import.unavailable':
'Rezervasiyaların idxalı bu serverdə əlçatan deyil.',
'reservations.import.success': '{count} rezervasiya idxal edildi',
'reservations.import.partialFailure': '{created} idxal edildi, {failed} uğursuz oldu',
'reservations.import.error': 'Təhlil uğursuz oldu. Faylın etibarlı rezervasiya təsdiqi olduğuna əmin olun.',
'reservations.import.unavailable': 'Rezervasiyaların idxalı bu serverdə əlçatan deyil.',
'reservations.import.unsupportedFormat':
'Dəstəklənməyən fayl formatıdır. EML, PDF, PKPass, HTML və ya TXT istifadə edin.',
'reservations.import.fileTooLarge':
'“{name}” faylı 10 MB limitini keçir.',
'reservations.import.fileTooLarge': '“{name}” faylı 10 MB limitini keçir.',
'reservations.airtrail.title': 'AirTrail-dən idxal et',
'reservations.airtrail.cta': 'AirTrail',
@@ -211,34 +188,25 @@ const reservations: TranslationStrings = {
'reservations.airtrail.syncedHint':
'AirTrail ilə sinxronlaşdırılıb — dəyişikliklər hər iki istiqamətdə sinxron qalır.',
'reservations.airtrail.notSynced': 'Sinxronlaşdırılmayıb',
'reservations.airtrail.notSyncedHint':
'Bu uçuş AirTrail-dən silinib və artıq sinxronlaşdırılmır.',
'reservations.airtrail.notSyncedHint': 'Bu uçuş AirTrail-dən silinib və artıq sinxronlaşdırılmır.',
'reservations.airtrail.layoverHint':
'AirTrail-dən idxal edilib. Tranzit gözləməsi olan çoxseqmentli uçuşun AirTrail-də sinxronlaşdırıla biləcək vahid uçuş qeydi olmadığından, bu birdəfəlik idxal kimi qalır.',
'reservations.airtrail.loadError':
'AirTrail uçuşlarınızı yükləmək mümkün olmadı.',
'reservations.airtrail.imported':
'{count} uçuş idxal edildi',
'reservations.airtrail.skippedDuplicate':
'{count} uçuş artıq bu səyahətdədir və buraxıldı',
'reservations.airtrail.nothingImported':
'İdxal ediləcək heç nə yoxdur.',
'reservations.airtrail.importError':
'İdxal uğursuz oldu. Yenidən cəhd edin.',
'reservations.airtrail.loadError': 'AirTrail uçuşlarınızı yükləmək mümkün olmadı.',
'reservations.airtrail.imported': '{count} uçuş idxal edildi',
'reservations.airtrail.skippedDuplicate': '{count} uçuş artıq bu səyahətdədir və buraxıldı',
'reservations.airtrail.nothingImported': 'İdxal ediləcək heç nə yoxdur.',
'reservations.airtrail.importError': 'İdxal uğursuz oldu. Yenidən cəhd edin.',
'reservations.airtrail.undo': 'AirTrail-dən idxal et',
'reservations.airtrail.alreadyImported': 'İdxal edilib',
'reservations.airtrail.duringTrip': 'Bu səyahət zamanı',
'reservations.airtrail.otherFlights': 'Digər uçuşlar',
'reservations.airtrail.empty':
'AirTrail hesabınızda heç bir uçuş tapılmadı.',
'reservations.airtrail.empty': 'AirTrail hesabınızda heç bir uçuş tapılmadı.',
'reservations.airtrail.importCta': '{count} uçuşu idxal et',
'reservations.airtrail.joinConnection':
'{stops} dayanacağında tranzit gözləmə ilə bir uçuş kimi idxal et',
'reservations.airtrail.joinConnection': '{stops} dayanacağında tranzit gözləmə ilə bir uçuş kimi idxal et',
'reservations.costsLabel': 'Xərclər',
'reservations.createExpense': 'Xərc yarat',
'reservations.createExpenseHint':
'Rezervasiyanı yadda saxlayır, sonra Xərclər redaktorunu açır.',
'reservations.createExpenseHint': 'Rezervasiyanı yadda saxlayır, sonra Xərclər redaktorunu açır.',
'reservations.linkedExpense': 'Əlaqəli xərc',
'reservations.removeExpense': 'Xərci sil',
'reservations.linkedExpenses': 'Əlaqəli xərclər',
@@ -248,8 +216,60 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Səyahətçilər',
'reservations.travelers.assign': 'Səyahətçiləri təyin et',
'reservations.travelers.none':
'Hələ səyahət üzvü yoxdur.',
'reservations.travelers.none': 'Hələ səyahət üzvü yoxdur.',
'reservations.status.switchTo': '{status} olaraq təyin et',
'reservations.view.label': 'Görünüş',
'reservations.view.cards': 'Kartlar',
'reservations.view.list': 'Siyahı',
'reservations.view.timeline': 'Zaman xətti',
'reservations.filter': 'Filtrlə',
'reservations.searchPlaceholder': 'Axtar',
'reservations.results': '{shown} / {total}',
'reservations.resetFilters': 'Filtrləri sıfırla',
'reservations.noMatches': 'Bu filtrlərə uyğun heç nə yoxdur',
'reservations.viewOptions': 'Görünüş seçimləri',
'reservations.resetView': 'Görünüşü sıfırla',
'reservations.group.label': 'Qruplaşdır',
'reservations.group.status': 'Status',
'reservations.group.day': 'Gün',
'reservations.group.type': 'Növ',
'reservations.group.none': 'Qruplaşdırmadan',
'reservations.transitApart': 'İctimai nəqliyyat ayrıca bölmədə',
'reservations.group.before': 'Səyahətdən əvvəl',
'reservations.group.after': 'Səyahətdən sonra',
'reservations.group.undated': 'Tarixsiz',
'reservations.sort.label': 'Sırala',
'reservations.sort.date': 'Tarix',
'reservations.sort.title': 'Başlıq',
'reservations.sort.type': 'Növ',
'reservations.sort.status': 'Status',
'reservations.sort.earlyFirst': 'Əvvəlcə ən erkən',
'reservations.sort.lateFirst': 'Əvvəlcə ən gec',
'reservations.sort.aToZ': 'A-dan Z-yə',
'reservations.sort.zToA': 'Z-dən A-ya',
'reservations.timeline.dayCount': '{count} gün',
'reservations.timeline.zoom': 'Miqyas',
'reservations.timeline.trip': 'Səyahət',
'reservations.timeline.day': 'Gün',
'reservations.timeline.prevDay': 'Əvvəlki gün',
'reservations.timeline.nextDay': 'Növbəti gün',
'reservations.timeline.openDay': '{day} saatbasaat aç',
'reservations.timeline.nothingThisDay': 'Bu gündə heç nə yoxdur.',
'reservations.timeline.today': 'Bu gün',
'reservations.timeline.now': 'indi',
'reservations.timeline.byType': 'Hər növ üçün bir zolaq',
'reservations.timeline.context': 'Digər bölməni göstər',
'reservations.timeline.contextBookings': 'Rezervasiyalar',
'reservations.timeline.contextTransports': 'Nəqliyyat',
'reservations.timeline.noneDated': 'Bunların heç birinin hələ tarixi yoxdur.',
'reservations.undated': 'Tarixsiz',
'reservations.nights': 'Gecə',
'reservations.start': 'Başlanğıc',
'reservations.end': 'Son',
'reservations.rename': 'Adını dəyiş',
'reservations.copyCode': 'Rezervasiya kodunu kopyala',
'reservations.copyFailed': 'Kopyalamaq alınmadı',
'reservations.showInFiles': 'Fayllarda göstər',
};
export default reservations;
export default reservations;
+2 -1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Nəqliyyatı redaktə et',
'transport.title': 'Nəqliyyat',
'transport.addManual': 'Nəqliyyat',
'transport.empty': 'Hələ nəqliyyat yoxdur',
};
export default transport;
export default transport;
+12 -5
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Apenas no total — ainda não acertado',
'costs.tapToInclude': 'Toque para incluir',
'costs.amount': 'Valor',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Dividir',
'costs.splitEqually': 'Igualmente',
'costs.splitCustom': 'Personalizado',
'costs.splitTicket': 'Recibo',
'costs.perPerson': '{amount} por pessoa',
'costs.payersHint': 'Marque quem pagou e digite quanto cada um pagou.',
'costs.splitHint.equally': 'Todos os marcados pagam a mesma parte.',
'costs.splitHint.custom': 'Digite a parte de cada pessoa; juntas, elas precisam dar o total.',
'costs.splitHint.ticket': 'Liste o que estava no comprovante e marque quem consumiu cada item.',
'costs.filter.allCategories': 'Todas as categorias',
'costs.filter.allDays': 'Todos os dias',
'costs.expensesCount': '{count} despesas',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Comprovantes',
'costs.receiptsTitle': 'Comprovantes e notas',
'costs.attachReceipt': 'Anexar comprovante / nota',
'costs.attach': 'Anexar',
'costs.scan.button': 'Escanear comprovante',
'costs.scan.reading': 'Lendo o comprovante…',
'costs.scan.review': 'Revisar a despesa',
'costs.scan.nothingRead': 'Não foi possível ler um comprovante nesta foto.',
'costs.scan.failed': 'Não foi possível começar a ler o comprovante.',
'costs.scan.title': 'Escanear comprovante',
'costs.scan.accepted': 'A foto de um único comprovante (JPG, PNG ou WEBP, até 10 MB). O modelo de IA lê em segundo plano e depois você confere a despesa antes de salvar.',
'costs.scan.accepted':
'A foto de um único comprovante (JPG, PNG ou WEBP, até 10 MB). O modelo de IA lê em segundo plano e depois você confere a despesa antes de salvar.',
'costs.scan.dropHere': 'Solte aqui a foto do comprovante, ou clique para escolher ou tirar uma',
'costs.scan.dropActive': 'Solte a foto para escaneá-la',
'costs.scan.start': 'Escanear',
+2 -2
View File
@@ -78,8 +78,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Todos os lugares atribuídos',
'dayplan.mobile.noMatch': 'Sem correspondência',
'dayplan.mobile.createNew': 'Criar novo lugar',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Expandir todos os dias', // en-fallback
'dayplan.collapseAll': 'Recolher todos os dias', // en-fallback
'dayplan.reorderDays': 'Reordenar dias',
'dayplan.reorderTitle': 'Reordenar dias',
'dayplan.reorderHint': 'Os lugares, notas e reservas de um dia se movem junto com ele.',
+24 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'br' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Ajuda e documentação',
'help.search': 'Pesquisar na documentação…',
'help.contents': 'Conteúdo',
'help.noResults': 'Nenhuma página encontrada.',
'help.errorTitle': 'Não foi possível carregar esta página',
'help.errorBody': 'O conteúdo da ajuda vem da wiki do TREK. Verifique sua conexão e tente novamente.',
// center
'help.center.button': 'Ajuda para esta tela',
@@ -1030,7 +1030,7 @@ const help: TranslationStrings = {
'Travel & map: rotas de reserva sempre no mapa, a pílula Explorar lugares, otimização de rota a partir da sua hospedagem, códigos de reserva ocultos e rotas de reserva com rótulo.',
'help.ctx.settings-display.bullet.3':
'Inicialização: se o TREK abre no painel ou na viagem ativa, e qual aba de uma viagem aparece primeiro.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Aparência',
'help.ctx.settings-appearance.summary':
'Como o TREK aparece nesta conta: claro ou escuro, a cor de destaque, vidro e movimento, tamanho do texto, e quais widgets o painel mostra. Tudo vale ao vivo, em cada dispositivo em que você entra.',
'help.ctx.settings-appearance.bullet.1':
@@ -2268,9 +2268,9 @@ const help: TranslationStrings = {
'Abra a parada a que a reserva pertence. O painel mostra uma faixa com Confirmada ou Pendente e o nome da reserva.',
'help.guide.place-booking.step.2':
'A faixa traz a Data, a Hora e o Código da reserva, e as notas que a reserva tiver.',
'help.guide.place-booking.step.3': 'Clique na faixa. O formulário da própria reserva abre sobre ela.',
'help.guide.place-booking.step.3': 'Clique na faixa. A reserva abre sobre o mapa.',
'help.guide.place-booking.step.4':
'Vincular à atribuição do dia é o que prende uma reserva a uma parada, e aqui já nomeia esta. Feche o formulário de novo.',
'Editar, no pé da reserva, abre o formulário dela. Vincular à atribuição do dia, ali, é o que prende uma reserva a uma parada, e aqui já nomeia esta. Feche o formulário de novo.',
'help.guide.place-booking.step.5':
'Uma reserva nova para uma parada começa na coluna dos dias: passe o ponteiro pela parada e clique no + no fim dela. O formulário abre como Nova reserva, já vinculada a ela.',
'help.guide.place-booking.result':
@@ -2624,7 +2624,8 @@ const help: TranslationStrings = {
'Uma linha mostra que tipo de reserva é, o nome dela e, quando pertence a uma parada, essa parada depois de um ponto. Os horários dela ficam na ponta direita.',
'help.guide.day-bookings.step.3':
'A cor diz como está uma reserva: uma linha verde está confirmada, uma âmbar ainda está pendente. As hospedagens não estão nesta lista, elas têm o bloco próprio logo abaixo.',
'help.guide.day-bookings.step.4': 'A lista só lê as reservas. Uma reserva é criada e alterada na aba Reservas.',
'help.guide.day-bookings.step.4':
'Clique em uma linha e a reserva abre. Editar, no pé dela, a altera; reservas novas são criadas na aba Reservas.',
'help.guide.day-bookings.result':
'Tudo o que está datado no dia, e tudo o que está pendurado numa das paradas dele, está nesta única lista.',
'help.guide.day-bookings.tip.1':
@@ -3164,13 +3165,13 @@ const help: TranslationStrings = {
'Coloque à mão na viagem um restaurante, um evento, um passeio, uma vaga de estacionamento ou qualquer outra coisa.',
'help.guide.create-booking.step.1': 'Clique em Reserva manual no canto superior direito da aba. Nova reserva abre.',
'help.guide.create-booking.step.2':
'Escolha o Tipo de reserva na lista no topo do formulário, ao lado de Viajantes. Hospedagem, Restaurante, Evento, Passeio, Estacionamento e Outro são os seis que esta aba cria, e o formulário muda com a escolha: só Hospedagem troca suas datas por um intervalo de dias.',
'Clique na pílula do tipo, abaixo do título, no cabeçalho do formulário, e escolha o Tipo de reserva. Hospedagem, Restaurante, Evento, Passeio, Estacionamento e Outro são os seis que esta aba cria, e o formulário muda com a escolha: só Hospedagem troca suas datas por um intervalo de dias.',
'help.guide.create-booking.step.3':
'Digite o Título. É o único campo em que o formulário insiste, e Adicionar fica morto até ter algo.',
'help.guide.create-booking.step.4':
'Defina Data e Horário de início, e Data final e Horário de término se a reserva tiver um fim. Os calendários só oferecem dias dentro da viagem, e um fim que não é posterior ao início diz isso em vermelho e bloqueia Adicionar.',
'help.guide.create-booking.step.5':
'Coloque o Código da reserva da confirmação e defina o Status. Pendente ou Confirmada decide em qual das duas seções o cartão aterrissa.',
'Coloque o Código da reserva da confirmação. A pílula de status ao lado do tipo mostra Pendente; um clique a muda para Confirmada e outro a traz de volta, e isso decide em qual das duas seções o cartão aterrissa.',
'help.guide.create-booking.step.6': 'Clique em Adicionar.',
'help.guide.create-booking.result':
'A reserva é um cartão na sua seção, com seu chip de tipo, suas datas e seu código, e todos os outros na viagem a veem aparecer.',
@@ -3220,7 +3221,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Dizer para quem é uma reserva',
'help.guide.booking-travelers.goal': 'Marque os viajantes que uma reserva cobre e depois veja só as deles.',
'help.guide.booking-travelers.step.1':
'Abra a reserva com o lápis. Viajantes fica no topo do formulário, ao lado de Tipo de reserva, e mostra Atribuir viajantes enquanto ninguém estiver na reserva.',
'Abra a reserva com o lápis. Viajantes fica ao lado do Código da reserva e mostra Atribuir viajantes enquanto ninguém estiver na reserva.',
'help.guide.booking-travelers.step.2':
'Clique nele e escolha as pessoas para quem esta reserva é; convidados com nome também estão na lista. Quem é escolhido ganha um tique e seu avatar no campo. Clique no nome de novo para tirar.',
'help.guide.booking-travelers.step.3': 'Clique em Atualizar.',
@@ -3314,7 +3315,7 @@ const help: TranslationStrings = {
'Clique no lápis no cabeçalho do cartão. Editar reserva abre com tudo o que a reserva sabe.',
'help.guide.edit-booking.step.2':
'Mude o que precisa mudar, aqui o Código da reserva que o operador finalmente mandou.',
'help.guide.edit-booking.step.3': 'Ponha Status em Confirmada.',
'help.guide.edit-booking.step.3': 'Clique na pílula Pendente no cabeçalho do formulário. Ela muda para Confirmada.',
'help.guide.edit-booking.step.4': 'Clique em Atualizar.',
'help.guide.edit-booking.result':
'O cartão se muda: uma reserva confirmada fica na seção Confirmada atrás de um ponto verde, e todos na viagem a veem mudar de lugar.',
@@ -3605,19 +3606,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.title': 'Abrir e mudar uma conexão planejada',
'help.guide.change-transit-route.goal': 'Ler a conexão parada por parada, renomeá-la, ou buscar o trajeto de novo.',
'help.guide.change-transit-route.step.1':
'Na aba Transportes, as conexões planejadas ficam sob Transporte público automático. Clique no cartão.',
'Na aba Transportes, as conexões planejadas ficam sob Transporte público automático. Clique no cartão; a conexão abre como uma reserva.',
'help.guide.change-transit-route.step.2':
'Duração, Baldeações e A pé ficam no topo. Itinerário, abaixo, percorre a conexão parada por parada, com as plataformas e as caminhadas entre as linhas.',
'help.guide.change-transit-route.step.3':
'Alterar trajeto roda a busca de novo, já preenchida com as duas pontas desta conexão e com o dia dela.',
'Alterar trajeto, no pé da reserva, roda a busca de novo, já preenchida com as duas pontas desta conexão e com o dia dela.',
'help.guide.change-transit-route.step.4':
'Escolha outra conexão e clique em Adicionar ao dia; ela toma o lugar da antiga. Editar detalhes, ao lado de Alterar trajeto, abre em vez disso o formulário de transporte comum, onde ficam o Código da reserva, o Status, os viajantes e os arquivos.',
'Escolha outra conexão e clique em Adicionar ao dia; ela toma o lugar da antiga. Editar, na outra ponta da mesma barra, abre em vez disso o formulário de transporte comum, onde ficam o Código da reserva, o Status, os viajantes, as notas e os arquivos.',
'help.guide.change-transit-route.result':
'A viagem de transporte público carrega o novo itinerário, e o cartão dela na aba Transportes mostra as novas linhas e horários.',
'help.guide.change-transit-route.tip.1':
'O título da viagem de transporte público é só texto: o lápis ao lado o renomeia sem tocar no trajeto. Notas, abaixo, aceitam markdown e têm uma aba Editar e uma aba Prévia.',
'O título no cabeçalho da reserva renomeia a conexão sem tocar no trajeto. As notas dela são escritas no formulário de transporte, atrás de Editar.',
'help.guide.change-transit-route.tip.2':
'Excluir, no pé da viagem de transporte público, remove a conexão da viagem; o dia mantém as paradas.',
'Excluir, no pé da reserva, remove a conexão da viagem; o dia mantém as paradas.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Mudar como um trecho é percorrido',
'help.guide.leg-travel-mode.goal':
@@ -3642,17 +3643,17 @@ const help: TranslationStrings = {
'help.guide.edit-transport.goal':
'Corrigir um horário, uma plataforma ou um código de reserva, ou tirar o trajeto da viagem.',
'help.guide.edit-transport.step.1':
'No plano do dia, um transporte é uma linha colorida entre as paradas. Clique nela.',
'No plano do dia, um transporte é uma linha colorida entre as paradas. Clique nela; a reserva dele abre com os horários, a rota e o Código da reserva.',
'help.guide.edit-transport.step.2':
'O formulário é o mesmo que o criou, com Editar transporte na barra de título. Tudo pode mudar: o tipo, a rota, os dias e horários, o Código da reserva, o Status.',
'Editar, no pé da reserva, abre o formulário que o criou, com Editar transporte na barra de título. Tudo pode mudar: o tipo, a rota, os dias e horários, o Código da reserva, o Status.',
'help.guide.edit-transport.step.3':
'A rota de um voo é uma cadeia de aeroportos, a de um trem uma cadeia de estações. Adicionar parada põe mais uma no meio, e cada trecho mantém os próprios horários e o próprio número de voo ou de trem.',
'help.guide.edit-transport.step.4':
'Clique em Atualizar. Para remover o transporte de vez, use a lixeira no cartão dele na aba Transportes e confirme.',
'Clique em Atualizar. Para remover o transporte de vez, use Excluir no pé da reserva dele, ou a lixeira no cartão dele na aba Transportes, e confirme.',
'help.guide.edit-transport.result':
'A mudança aparece em todo lugar onde o transporte está: na aba Transportes, no dia em que ele corre, e na linha dele no mapa.',
'help.guide.edit-transport.tip.1':
'O mesmo formulário abre dos dois lados, pelo lápis no cartão da aba Transportes e pela linha do próprio transporte no plano do dia. Uma conexão de transporte público planejada é a exceção: a linha dela abre a viagem de transporte público, e Editar detalhes leva de lá a este formulário.',
'O mesmo formulário abre dos dois lados: por Editar na reserva que uma linha do plano do dia abre, e pelo lápis no cartão da aba Transportes. Uma conexão de transporte público planejada também abre como reserva; Alterar trajeto ali busca de novo, e Editar leva a este formulário.',
'help.guide.edit-transport.tip.2':
'Mover um transporte para outro dia não precisa do formulário: arraste a linha dele de um cartão de dia para o seguinte.',
// transport-on-map
+6 -2
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Selecione pelo menos um tipo.',
'places.selectionCount': '{count} selecionado(s)',
'places.deleteSelected': 'Excluir seleção',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Alterar categoria',
'places.categoryChanged': '{count} lugares atualizados',
'places.kmlKmzImported': '{count} lugares importados de KMZ/KML',
'places.urlResolved': 'Lugar importado da URL',
'places.importList': 'Importar lista',
@@ -52,6 +52,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Mostrar a viagem inteira',
'places.filterTracks': 'Trilhas',
'places.filterByRating': 'Filtrar por avaliação',
'places.filterShow': 'Mostrar',
'places.clearSearch': 'Limpar busca',
'places.yourRating': 'Sua avaliação',
'places.notRated': 'Ainda sem avaliações',
'places.search': 'Buscar lugares...',
@@ -71,6 +73,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Rua, cidade, país',
'places.formLat': 'Latitude (ex.: -23.5505)',
'places.formLng': 'Longitude (ex.: -46.6333)',
'places.formLatLabel': 'Latitude',
'places.formLngLabel': 'Longitude',
'places.formCategory': 'Categoria',
'places.noCategory': 'Sem categoria',
'places.newCategory': 'Nova categoria',
+60 -3
View File
@@ -64,6 +64,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Bicicleta',
'reservations.type.taxi': 'Táxi',
'reservations.type.transit': 'Transporte público',
'reservations.typeShort.transit': 'Transp. público',
'reservations.type.transport_other': 'Outro',
'reservations.confirm.delete': 'Tem certeza de que deseja excluir a reserva "{name}"?',
'reservations.confirm.deleteTitle': 'Excluir reserva?',
@@ -79,6 +80,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Local / endereço',
'reservations.locationPlaceholder': 'Endereço, aeroporto, hotel...',
'reservations.confirmationCode': 'Código da reserva',
'reservations.routeLabel': 'Rota',
'reservations.segmentCodes': 'Códigos por trecho',
'reservations.confirmationPlaceholder': 'ex.: ABC12345',
'reservations.day': 'Dia',
'reservations.noDay': 'Sem dia',
@@ -93,6 +96,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Falha ao excluir',
'reservations.confirm.remove': 'Remover a reserva "{name}"?',
'reservations.linkAssignment': 'Vincular à atribuição do dia',
'reservations.linkedTo': 'Vinculada a',
'reservations.pickAssignment': 'Selecione uma atribuição do seu plano...',
'reservations.noAssignment': 'Sem vínculo (avulsa)',
'reservations.price': 'Preço',
@@ -133,9 +137,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count} reserva(s) encontrada(s)',
'reservations.import.previewEmpty': 'Nenhuma reserva pôde ser extraída dos arquivos enviados.',
'reservations.import.removeItem': 'Remover',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Revisar',
'reservations.import.tryAi': 'Tentar leitura com IA',
'reservations.import.aiParsing': 'Lendo com IA…',
'reservations.import.confirm': 'Importar {count} reserva(s)',
'reservations.import.back': 'Voltar',
'reservations.import.success': '{count} reserva(s) importada(s)',
@@ -179,5 +183,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Viajantes',
'reservations.travelers.assign': 'Atribuir viajantes',
'reservations.travelers.none': 'Nenhum viajante na viagem ainda.',
'reservations.status.switchTo': 'Mudar para {status}',
'reservations.view.label': 'Visualização',
'reservations.view.cards': 'Cartões',
'reservations.view.list': 'Lista',
'reservations.view.timeline': 'Linha do tempo',
'reservations.filter': 'Filtrar',
'reservations.searchPlaceholder': 'Buscar',
'reservations.results': '{shown} de {total}',
'reservations.resetFilters': 'Limpar filtros',
'reservations.noMatches': 'Nada corresponde a esses filtros',
'reservations.viewOptions': 'Opções de visualização',
'reservations.resetView': 'Redefinir visualização',
'reservations.group.label': 'Agrupar por',
'reservations.group.status': 'Status',
'reservations.group.day': 'Dia',
'reservations.group.type': 'Tipo',
'reservations.group.none': 'Sem agrupamento',
'reservations.transitApart': 'Transporte público em seção própria',
'reservations.group.before': 'Antes da viagem',
'reservations.group.after': 'Depois da viagem',
'reservations.group.undated': 'Sem data',
'reservations.sort.label': 'Ordenar por',
'reservations.sort.date': 'Data',
'reservations.sort.title': 'Título',
'reservations.sort.type': 'Tipo',
'reservations.sort.status': 'Status',
'reservations.sort.earlyFirst': 'Mais cedo primeiro',
'reservations.sort.lateFirst': 'Mais tarde primeiro',
'reservations.sort.aToZ': 'A a Z',
'reservations.sort.zToA': 'Z a A',
'reservations.timeline.dayCount': '{count} dias',
'reservations.timeline.zoom': 'Zoom',
'reservations.timeline.trip': 'Viagem',
'reservations.timeline.day': 'Dia',
'reservations.timeline.prevDay': 'Dia anterior',
'reservations.timeline.nextDay': 'Próximo dia',
'reservations.timeline.openDay': 'Abrir {day} hora a hora',
'reservations.timeline.nothingThisDay': 'Nada neste dia.',
'reservations.timeline.today': 'Hoje',
'reservations.timeline.now': 'agora',
'reservations.timeline.byType': 'Uma faixa por tipo',
'reservations.timeline.context': 'Mostrar a outra aba',
'reservations.timeline.contextBookings': 'Reservas',
'reservations.timeline.contextTransports': 'Transportes',
'reservations.timeline.noneDated': 'Nada aqui tem data ainda.',
'reservations.undated': 'Sem data',
'reservations.nights': 'Noites',
'reservations.start': 'Início',
'reservations.end': 'Fim',
'reservations.rename': 'Renomear',
'reservations.copyCode': 'Copiar código da reserva',
'reservations.copyFailed': 'Não foi possível copiar',
'reservations.showInFiles': 'Mostrar nos arquivos',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Editar transporte',
'transport.title': 'Transportes',
'transport.addManual': 'Transporte',
'transport.empty': 'Nenhum transporte ainda',
};
export default transport;
+10 -2
View File
@@ -107,6 +107,11 @@ const budget: TranslationStrings = {
'costs.splitEqually': 'A parts iguals',
'costs.splitCustom': 'Personalitzat',
'costs.splitTicket': 'Tiquet',
'costs.perPerson': '{amount} per persona',
'costs.payersHint': 'Marca qui ha pagat i escriu quant hi ha posat cadascú.',
'costs.splitHint.equally': 'Totes les persones marcades paguen la mateixa part.',
'costs.splitHint.custom': 'Escriu la part de cada persona; entre totes han de sumar el total.',
'costs.splitHint.ticket': 'Llista el que hi havia al rebut i marca qui ha pres cada article.',
'costs.pickSomeone': 'Tria almenys una persona amb qui dividir-ho.',
'costs.splitSummary': 'Dividit de {count} maneres · {amount} cadascú',
'costs.cat.accommodation': 'Allotjament',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Rebuts',
'costs.receiptsTitle': 'Rebuts i factures',
'costs.attachReceipt': 'Adjuntar rebut / factura',
'costs.attach': 'Adjuntar',
'costs.scan.button': 'Escanejar rebut',
'costs.scan.reading': 'Llegint el rebut…',
'costs.scan.review': 'Revisar la despesa',
'costs.scan.nothingRead': "No s'ha pogut llegir cap rebut d'aquesta foto.",
'costs.scan.failed': "No s'ha pogut començar a llegir el rebut.",
'costs.scan.title': 'Escanejar rebut',
'costs.scan.accepted': "Una foto d'un sol rebut (JPG, PNG o WEBP, fins a 10 MB). El model d'IA la llegeix en segon pla i després revises la despesa abans de desar-la.",
'costs.scan.accepted':
"Una foto d'un sol rebut (JPG, PNG o WEBP, fins a 10 MB). El model d'IA la llegeix en segon pla i després revises la despesa abans de desar-la.",
'costs.scan.dropHere': 'Deixa aquí la foto del rebut, o fes clic per triar-ne o fer-ne una',
'costs.scan.dropActive': 'Deixa anar la foto per escanejar-la',
'costs.scan.start': 'Escanejar',
@@ -168,7 +175,8 @@ const budget: TranslationStrings = {
'costs.noReceipts': 'Cap rebut adjunt',
'costs.deleteReceipt': 'Eliminar rebut',
'costs.viewReceipt': 'Veure rebut',
'costs.receiptLeftBehind': 'No es pot desar i encara hi ha {count} rebuts pujats. Elimina aquests fitxers a la pestanya Fitxers.',
'costs.receiptLeftBehind':
'No es pot desar i encara hi ha {count} rebuts pujats. Elimina aquests fitxers a la pestanya Fitxers.',
};
export default budget;
+16 -16
View File
@@ -2314,9 +2314,9 @@ const help: TranslationStrings = {
'Obre la parada a la qual pertany la reserva. La fitxa mostra una franja amb Confirmada o Pendent i el nom de la reserva.',
'help.guide.place-booking.step.2':
'La franja duu la Data, l’Hora i el Codi de reserva, i les notes que tingui la reserva.',
'help.guide.place-booking.step.3': 'Fes clic a la franja. El formulari de la reserva s’hi obre al damunt.',
'help.guide.place-booking.step.3': 'Fes clic a la franja. La reserva s’obre damunt del mapa.',
'help.guide.place-booking.step.4':
'Vincula a una assignació del dia és el que penja una reserva d’una parada, i aquí ja n’anomena aquesta. Torna a tancar el formulari.',
'Editar, al peu de la reserva, n’obre el formulari. Vincula a una assignació del dia, allà, és el que penja una reserva d’una parada, i aquí ja n’anomena aquesta. Torna a tancar el formulari.',
'help.guide.place-booking.step.5':
'Una reserva nova per a una parada comença a la columna dels dies: passa per sobre de la parada i fes clic al + del seu extrem. El formulari s’obre com a Reserva nova, ja vinculada a ella.',
'help.guide.place-booking.result':
@@ -2676,7 +2676,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'El color diu com està una reserva: una fila verda està confirmada, una d’ambre encara està pendent. Els allotjaments no surten en aquesta llista, tenen el seu propi bloc a sota.',
'help.guide.day-bookings.step.4':
'La llista només llegeix les reserves. Una reserva es crea i es canvia a la pestanya Reserves.',
'Fes clic a una fila i s’obre la reserva. Editar, al seu peu, la canvia; les reserves noves es creen a la pestanya Reserves.',
'help.guide.day-bookings.result':
'Tot el que està datat al dia, i tot el que penja d’alguna de les seves parades, és en aquesta única llista.',
'help.guide.day-bookings.tip.1':
@@ -3222,13 +3222,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Fes clic a Reserva manual, a dalt a la dreta de la pestanya. S’obre Reserva nova.',
'help.guide.create-booking.step.2':
'Tria el Tipus de reserva a la llista de dalt del formulari, al costat de Viatgers. Allotjament, Restaurant, Esdeveniment, Excursió, Aparcament i Altres són els sis que fa aquesta pestanya, i el formulari canvia amb la tria: només Allotjament bescanvia les dates per un interval de dies.',
'Fes clic a la píndola del tipus, sota el títol, a la capçalera del formulari, i tria el Tipus de reserva. Allotjament, Restaurant, Esdeveniment, Excursió, Aparcament i Altres són els sis que fa aquesta pestanya, i el formulari canvia amb la tria: només Allotjament bescanvia les dates per un interval de dies.',
'help.guide.create-booking.step.3':
'Escriu el Títol. És l’únic camp en què el formulari insisteix, i Afegir es queda mort fins que hi hagi alguna cosa.',
'help.guide.create-booking.step.4':
'Posa Data i Hora d’inici, i Data de fi i Hora de fi si la reserva té un final. Els calendaris només ofereixen dies de dins del viatge, i un final que no és posterior a l’inici ho diu en vermell i bloqueja Afegir.',
'help.guide.create-booking.step.5':
'Posa el Codi de reserva de la confirmació i posa l’Estat. Pendent o Confirmada decideix a quina de les dues seccions aterra la targeta.',
'Posa el Codi de reserva de la confirmació. La píndola d’estat al costat del tipus diu Pendent; un clic la passa a Confirmada i un altre la torna enrere, i això decideix a quina de les dues seccions aterra la targeta.',
'help.guide.create-booking.step.6': 'Fes clic a Afegir.',
'help.guide.create-booking.result':
'La reserva és una targeta a la seva secció, amb el seu xip de tipus, les seves dates i el seu codi, i tothom més del viatge la veu aparèixer.',
@@ -3278,7 +3278,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Dir per a qui és una reserva',
'help.guide.booking-travelers.goal': 'Marca els viatgers que cobreix una reserva i després mira només les seves.',
'help.guide.booking-travelers.step.1':
'Obre la reserva amb el llapis. Viatgers és a dalt del formulari, al costat de Tipus de reserva, i diu Assigna viatgers mentre no hi ha ningú a la reserva.',
'Obre la reserva amb el llapis. Viatgers és al costat del Codi de reserva, i diu Assigna viatgers mentre no hi ha ningú a la reserva.',
'help.guide.booking-travelers.step.2':
'Fes-hi clic i tria les persones per a qui és aquesta reserva; els convidats amb nom també són a la llista. La que tries rep una marca i el seu avatar al camp. Torna a fer clic al nom per treure-la.',
'help.guide.booking-travelers.step.3': 'Fes clic a Actualitzar.',
@@ -3373,7 +3373,7 @@ const help: TranslationStrings = {
'Fes clic al llapis de la capçalera de la targeta. Edita la reserva s’obre amb tot el que la reserva sap.',
'help.guide.edit-booking.step.2':
'Canvia el que calgui canviar, aquí el Codi de reserva que l’operador ha acabat enviant.',
'help.guide.edit-booking.step.3': 'Posa Estat a Confirmada.',
'help.guide.edit-booking.step.3': 'Fes clic a la píndola Pendent a la capçalera del formulari. Passa a Confirmada.',
'help.guide.edit-booking.step.4': 'Fes clic a Actualitzar.',
'help.guide.edit-booking.result':
'La targeta es mou: una reserva confirmada és a la secció Confirmada darrere d’un punt verd, i tothom del viatge la veu moure’s.',
@@ -3668,19 +3668,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Llegir la connexió parada a parada, canviar-li el nom, o tornar a cercar la ruta.',
'help.guide.change-transit-route.step.1':
'A la pestanya Transports, les connexions planificades són sota Transport públic automatitzat. Fes clic a la targeta.',
'A la pestanya Transports, les connexions planificades són sota Transport públic automatitzat. Fes clic a la targeta; la connexió s’obre com una reserva.',
'help.guide.change-transit-route.step.2':
'Durada, Transbords i A peu són a dalt. Itinerari, a sota, recorre la connexió parada a parada, amb les andanes i els trams a peu entre les línies.',
'help.guide.change-transit-route.step.3':
'Canviar de ruta torna a executar la cerca, ja plena amb els dos extrems d’aquesta connexió i amb el seu dia.',
'Canviar de ruta, al peu de la reserva, torna a executar la cerca, ja plena amb els dos extrems d’aquesta connexió i amb el seu dia.',
'help.guide.change-transit-route.step.4':
'Tria una altra connexió i fes clic a Afegir al dia; ocupa el lloc de l’anterior. Editar detalls, al costat de Canviar de ruta, obre en canvi el formulari de transport corrent, on viuen el Codi de reserva, l’Estat, els viatgers i els fitxers.',
'Tria una altra connexió i fes clic a Afegir al dia; ocupa el lloc de l’anterior. Editar, a l’altre extrem de la mateixa barra, obre en canvi el formulari de transport corrent, on viuen el Codi de reserva, l’Estat, els viatgers, les notes i els fitxers.',
'help.guide.change-transit-route.result':
'El trajecte porta el nou itinerari, i la seva targeta a la pestanya Transports mostra les línies i les hores noves.',
'help.guide.change-transit-route.tip.1':
'El títol del trajecte només és text: el llapis del costat el canvia de nom sense tocar la ruta. Notes, a sota, accepten markdown i tenen una pestanya Editar i una de Vista prèvia.',
'El títol a la capçalera de la reserva canvia el nom de la connexió sense tocar la ruta. Les seves notes s’escriuen al formulari de transport, darrere d’Editar.',
'help.guide.change-transit-route.tip.2':
'Eliminar, al peu del trajecte, treu la connexió del viatge; el dia manté les seves parades.',
'Eliminar, al peu de la reserva, treu la connexió del viatge; el dia manté les seves parades.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Canviar com es fa un tram',
'help.guide.leg-travel-mode.goal':
@@ -3705,17 +3705,17 @@ const help: TranslationStrings = {
'help.guide.edit-transport.goal':
'Corregir una hora, una andana o un codi de reserva, o treure el trajecte del viatge.',
'help.guide.edit-transport.step.1':
'Al pla del dia un transport és una fila de color entre les parades. Fes-hi clic.',
'Al pla del dia un transport és una fila de color entre les parades. Fes-hi clic; s’obre la seva reserva amb les hores, la ruta i el Codi de reserva.',
'help.guide.edit-transport.step.2':
'El formulari és el mateix que el va crear, amb Edita el transport a la barra de títol. Tot es pot canviar: el tipus, la ruta, els dies i les hores, el Codi de reserva, l’Estat.',
'Editar, al peu de la reserva, obre el formulari que el va crear, amb Edita el transport a la barra de títol. Tot es pot canviar: el tipus, la ruta, els dies i les hores, el Codi de reserva, l’Estat.',
'help.guide.edit-transport.step.3':
'La ruta d’un vol és una cadena d’aeroports, la d’un tren una cadena d’estacions. Afegeix una escala en posa una altra al mig, i cada tram manté les seves hores i el seu número de vol o de tren.',
'help.guide.edit-transport.step.4':
'Fes clic a Actualitzar. Per treure el transport del tot, fes servir la paperera de la seva targeta a la pestanya Transports i confirma.',
'Fes clic a Actualitzar. Per treure el transport del tot, fes servir Eliminar al peu de la seva reserva, o la paperera de la seva targeta a la pestanya Transports, i confirma.',
'help.guide.edit-transport.result':
'El canvi es veu a tot arreu on surt el transport: la pestanya Transports, el dia en què va, i la seva línia al mapa.',
'help.guide.edit-transport.tip.1':
'El mateix formulari s’obre pels dos costats, amb el llapis de la targeta a la pestanya Transports i amb la fila pròpia del transport al pla del dia. Una connexió de transport públic planificada és l’excepció: la seva fila obre la vista del trajecte, i Editar detalls hi porta a aquest formulari.',
'El mateix formulari s’obre pels dos costats: amb Editar a la reserva que obre una fila del pla del dia, i amb el llapis de la targeta a la pestanya Transports. Una connexió de transport públic planificada també s’obre com una reserva; Canviar de ruta hi torna a cercar, i Editar porta a aquest formulari.',
'help.guide.edit-transport.tip.2':
'Moure un transport a un altre dia no necessita gens el formulari: arrossega la seva fila d’una targeta de dia a la següent.',
// transport-on-map
+6 -1
View File
@@ -36,7 +36,8 @@ const places: TranslationStrings = {
'places.importNaverList': 'Llista de Naver',
'places.googleListHint': "Enganxa un enllaç compartit d'una llista de Google Maps per importar tots els llocs.",
'places.googleListImported': '{count} llocs importats de "{list}"',
'places.googleDirHint': 'Un enllaç d’indicacions també serveix: les seves parades esdevenen llocs, en ordre de conducció.',
'places.googleDirHint':
'Un enllaç d’indicacions també serveix: les seves parades esdevenen llocs, en ordre de conducció.',
'places.googleListError': 'Error en importar la llista de Google Maps',
'places.naverListHint': "Enganxa un enllaç compartit d'una llista de Naver Maps per importar tots els llocs.",
'places.naverListImported': '{count} llocs importats de "{list}"',
@@ -50,6 +51,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Mostra tot el viatge',
'places.filterTracks': 'Rutes',
'places.filterByRating': 'Filtra per valoració',
'places.filterShow': 'Mostrar',
'places.clearSearch': 'Esborra la cerca',
'places.yourRating': 'La teva valoració',
'places.notRated': 'Encara sense valoració',
'places.search': 'Cerca llocs...',
@@ -69,6 +72,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Carrer, ciutat, país',
'places.formLat': 'Latitud (p. ex. 48.8566)',
'places.formLng': 'Longitud (p. ex. 2.3522)',
'places.formLatLabel': 'Latitud',
'places.formLngLabel': 'Longitud',
'places.formCategory': 'Categoria',
'places.noCategory': 'Sense categoria',
'places.newCategory': 'Categoria nova',
+57
View File
@@ -37,6 +37,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Bicicleta',
'reservations.type.taxi': 'Taxi',
'reservations.type.transit': 'Transport públic',
'reservations.typeShort.transit': 'Transp. públic',
'reservations.type.transport_other': 'Altres',
'reservations.confirm.delete': 'Segur que vols eliminar la reserva "{name}"?',
'reservations.confirm.deleteTitle': 'Vols eliminar la reserva?',
@@ -52,6 +53,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Ubicació / adreça',
'reservations.locationPlaceholder': 'Adreça, aeroport, hotel...',
'reservations.confirmationCode': 'Codi de reserva',
'reservations.routeLabel': 'Ruta',
'reservations.segmentCodes': 'Codis per tram',
'reservations.confirmationPlaceholder': 'p. ex. ABC12345',
'reservations.day': 'Dia',
'reservations.noDay': 'Sense dia',
@@ -66,6 +69,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': "No s'ha pogut eliminar",
'reservations.confirm.remove': 'Vols eliminar la reserva de "{name}"?',
'reservations.linkAssignment': 'Vincula a una assignació del dia',
'reservations.linkedTo': 'Vinculada a',
'reservations.pickAssignment': 'Selecciona una assignació del teu pla...',
'reservations.noAssignment': 'Sense vincle (independent)',
'reservations.price': 'Preu',
@@ -182,5 +186,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Viatgers',
'reservations.travelers.assign': 'Assigna viatgers',
'reservations.travelers.none': 'Encara no hi ha viatgers al viatge.',
'reservations.status.switchTo': 'Canviar a {status}',
'reservations.view.label': 'Vista',
'reservations.view.cards': 'Targetes',
'reservations.view.list': 'Llista',
'reservations.view.timeline': 'Cronologia',
'reservations.filter': 'Filtrar',
'reservations.searchPlaceholder': 'Cerca',
'reservations.results': '{shown} de {total}',
'reservations.resetFilters': 'Restablir els filtres',
'reservations.noMatches': 'Res no coincideix amb aquests filtres',
'reservations.viewOptions': 'Opcions de vista',
'reservations.resetView': 'Restablir la vista',
'reservations.group.label': 'Agrupar per',
'reservations.group.status': 'Estat',
'reservations.group.day': 'Dia',
'reservations.group.type': 'Tipus',
'reservations.group.none': 'Sense agrupar',
'reservations.transitApart': 'Transport públic en una secció pròpia',
'reservations.group.before': 'Abans del viatge',
'reservations.group.after': 'Després del viatge',
'reservations.group.undated': 'Sense data',
'reservations.sort.label': 'Ordenar per',
'reservations.sort.date': 'Data',
'reservations.sort.title': 'Títol',
'reservations.sort.type': 'Tipus',
'reservations.sort.status': 'Estat',
'reservations.sort.earlyFirst': 'Més aviat primer',
'reservations.sort.lateFirst': 'Més tard primer',
'reservations.sort.aToZ': 'De la A a la Z',
'reservations.sort.zToA': 'De la Z a la A',
'reservations.timeline.dayCount': '{count} dies',
'reservations.timeline.zoom': 'Zoom',
'reservations.timeline.trip': 'Viatge',
'reservations.timeline.day': 'Dia',
'reservations.timeline.prevDay': 'Dia anterior',
'reservations.timeline.nextDay': 'Dia següent',
'reservations.timeline.openDay': 'Obrir {day} hora per hora',
'reservations.timeline.nothingThisDay': 'No hi ha res aquest dia.',
'reservations.timeline.today': 'Avui',
'reservations.timeline.now': 'ara',
'reservations.timeline.byType': 'Un carril per tipus',
'reservations.timeline.context': "Mostrar l'altra pestanya",
'reservations.timeline.contextBookings': 'Reserves',
'reservations.timeline.contextTransports': 'Transports',
'reservations.timeline.noneDated': "Encara no n'hi ha cap amb data.",
'reservations.undated': 'Sense data',
'reservations.nights': 'Nits',
'reservations.start': 'Inici',
'reservations.end': 'Fi',
'reservations.rename': 'Canviar el nom',
'reservations.copyCode': 'Copiar el codi de reserva',
'reservations.copyFailed': "No s'ha pogut copiar",
'reservations.showInFiles': 'Mostrar als fitxers',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Edita el transport',
'transport.title': 'Transports',
'transport.addManual': 'Transport manual',
'transport.empty': 'Encara no hi ha transports',
};
export default transport;
+12 -5
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Jen v součtu — zatím nevyrovnáno',
'costs.tapToInclude': 'Klepnutím zahrnout',
'costs.amount': 'Částka',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Rozdělení',
'costs.splitEqually': 'Rovným dílem',
'costs.splitCustom': 'Vlastní',
'costs.splitTicket': 'Účtenka',
'costs.perPerson': '{amount} na osobu',
'costs.payersHint': 'Zaškrtněte, kdo platil, a zadejte, kolik kdo zaplatil.',
'costs.splitHint.equally': 'Všichni zaškrtnutí platí stejný podíl.',
'costs.splitHint.custom': 'Zadejte podíl každé osoby; dohromady musí dát celkovou částku.',
'costs.splitHint.ticket': 'Vypište, co bylo na účtence, a zaškrtněte, kdo měl kterou položku.',
'costs.filter.allCategories': 'Všechny kategorie',
'costs.filter.allDays': 'Všechny dny',
'costs.expensesCount': '{count} výdajů',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Účtenky',
'costs.receiptsTitle': 'Účtenky a faktury',
'costs.attachReceipt': 'Připojit účtenku / fakturu',
'costs.attach': 'Připojit',
'costs.scan.button': 'Naskenovat účtenku',
'costs.scan.reading': 'Čtení účtenky…',
'costs.scan.review': 'Zkontrolovat výdaj',
'costs.scan.nothingRead': 'Z této fotografie se nepodařilo přečíst žádnou účtenku.',
'costs.scan.failed': 'Čtení účtenky se nepodařilo spustit.',
'costs.scan.title': 'Naskenovat účtenku',
'costs.scan.accepted': 'Fotografie jedné účtenky (JPG, PNG nebo WEBP, do 10 MB). Model AI ji přečte na pozadí a vy pak výdaj před uložením zkontrolujete.',
'costs.scan.accepted':
'Fotografie jedné účtenky (JPG, PNG nebo WEBP, do 10 MB). Model AI ji přečte na pozadí a vy pak výdaj před uložením zkontrolujete.',
'costs.scan.dropHere': 'Přetáhněte sem fotografii účtenky, nebo klikněte a vyberte či pořiďte novou',
'costs.scan.dropActive': 'Pusťte fotografii pro naskenování',
'costs.scan.start': 'Skenovat',
+2 -2
View File
@@ -78,8 +78,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Všechna místa přiřazena',
'dayplan.mobile.noMatch': 'Žádná shoda',
'dayplan.mobile.createNew': 'Vytvořit nové místo',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Rozbalit všechny dny', // en-fallback
'dayplan.collapseAll': 'Sbalit všechny dny', // en-fallback
'dayplan.reorderDays': 'Změnit pořadí dnů',
'dayplan.reorderTitle': 'Změnit pořadí dnů',
'dayplan.reorderHint': 'Místa, poznámky a rezervace daného dne se přesunou spolu s ním.',
+25 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'cs' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Nápověda a dokumentace',
'help.search': 'Hledat v dokumentaci…',
'help.contents': 'Obsah',
'help.noResults': 'Žádné odpovídající stránky.',
'help.errorTitle': 'Tuto stránku nelze načíst',
'help.errorBody': 'Obsah nápovědy se načítá z wiki TREK. Zkontrolujte připojení a zkuste to znovu.',
// center
'help.center.button': 'Nápověda k této obrazovce',
@@ -1001,7 +1001,7 @@ const help: TranslationStrings = {
'Travel & map: trasy rezervací vždy na mapě, pilulka Objevovat místa, optimalizace trasy od ubytování, skryté rezervační kódy a popisky tras rezervací.',
'help.ctx.settings-display.bullet.3':
'Spuštění: zda se TREK otevře na přehledu, nebo na aktivní cestě, a která karta cesty se ukáže první.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Vzhled',
'help.ctx.settings-appearance.summary':
'Jak TREK vypadá na tomto účtu: světlý nebo tmavý, barva zvýraznění, sklo a pohyb, velikost textu a které widgety přehled ukazuje. Všechno se projeví živě, na každém zařízení, kde se přihlásíte.',
'help.ctx.settings-appearance.bullet.1':
@@ -2204,9 +2204,9 @@ const help: TranslationStrings = {
'Otevřete zastávku, ke které rezervace patří. Karta ukáže proužek s Potvrzeno nebo Čeká na potvrzení a s názvem rezervace.',
'help.guide.place-booking.step.2':
'Proužek nese Datum, Čas a Rezervační kód, a jakékoli poznámky, které rezervace má.',
'help.guide.place-booking.step.3': 'Klikněte na proužek. Otevře se na něm vlastní formulář rezervace.',
'help.guide.place-booking.step.3': 'Klikněte na proužek. Rezervace se otevře nad mapou.',
'help.guide.place-booking.step.4':
'Rezervaci k zastávce připíná Propojit s přiřazením dne a tady už tuhle zastávku jmenuje. Formulář zase zavřete.',
'Upravit na patě rezervace otevře její vlastní formulář. Rezervaci k zastávce tam připíná Propojit s přiřazením dne a tady už tuhle zastávku jmenuje. Formulář zase zavřete.',
'help.guide.place-booking.step.5':
'Nová rezervace pro zastávku začíná ve sloupci dnů: najeďte na zastávku a klikněte na + na jejím konci. Formulář se otevře jako Nová rezervace, už s ní propojený.',
'help.guide.place-booking.result':
@@ -2555,7 +2555,8 @@ const help: TranslationStrings = {
'Řádek ukazuje, jaký druh rezervace to je, její název a, když patří k zastávce, tu zastávku za tečkou. Její časy sedí na pravém konci.',
'help.guide.day-bookings.step.3':
'Barva říká, jak rezervace stojí: zelený řádek je potvrzený, jantarový ještě čeká na potvrzení. Hotely v tomto seznamu nejsou, mají vlastní blok níže.',
'help.guide.day-bookings.step.4': 'Seznam rezervace jen vypisuje. Rezervace se vytváří a mění na kartě Rezervace.',
'help.guide.day-bookings.step.4':
'Klikněte na řádek a rezervace se otevře. Upravit na její patě ji změní; nové rezervace se vytvářejí na kartě Rezervace.',
'help.guide.day-bookings.result':
'Všechno datované na ten den a všechno, co visí na některé z jeho zastávek, je v tomto jednom seznamu.',
'help.guide.day-bookings.tip.1':
@@ -3086,13 +3087,13 @@ const help: TranslationStrings = {
'Vložte do cesty ručně restauraci, událost, prohlídku, parkovací místo nebo cokoli jiného.',
'help.guide.create-booking.step.1': 'Klikněte vpravo nahoře na kartě na Ruční rezervace. Otevře se Nová rezervace.',
'help.guide.create-booking.step.2':
'Vyberte Typ rezervace ze seznamu nahoře ve formuláři, vedle pole Cestující. Ubytování, Restaurace, Událost, Prohlídka, Parkování a Jiné je těch šest, které tato karta dělá, a formulář se s volbou mění: jen Ubytování vymění svá data za rozsah dnů.',
'Klikněte na odznak typu pod názvem v záhlaví formuláře a vyberte Typ rezervace. Ubytování, Restaurace, Událost, Prohlídka, Parkování a Jiné je těch šest, které tato karta dělá, a formulář se s volbou mění: jen Ubytování vymění svá data za rozsah dnů.',
'help.guide.create-booking.step.3':
'Napište Název. Je to jediné pole, na kterém formulář trvá, a Přidat zůstane mrtvé, dokud v něm něco není.',
'help.guide.create-booking.step.4':
'Nastavte Datum a Čas začátku, a Datum konce a Čas konce, pokud má rezervace konec. Kalendáře nabízejí jen dny uvnitř cesty, a konec, který není po začátku, to řekne červeně a zablokuje Přidat.',
'help.guide.create-booking.step.5':
'Vložte Rezervační kód z potvrzení a nastavte Stav. Čeká na potvrzení nebo Potvrzeno rozhodne, do které ze dvou sekcí karta padne.',
'Vložte Rezervační kód z potvrzení. Odznak stavu vedle typu ukazuje Čeká na potvrzení; kliknutí ho přepne na Potvrzeno a další zase zpět, a to rozhodne, do které ze dvou sekcí karta padne.',
'help.guide.create-booking.step.6': 'Klikněte na Přidat.',
'help.guide.create-booking.result':
'Rezervace je karta ve své sekci se svým štítkem typu, svými daty a svým kódem, a všichni ostatní v cestě ji vidí přibýt.',
@@ -3141,7 +3142,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Říct, pro koho rezervace je',
'help.guide.booking-travelers.goal': 'Označte cestující, které rezervace pokrývá, a pak si nechte ukázat jen jejich.',
'help.guide.booking-travelers.step.1':
'Otevřete rezervaci tužkou. Pole Cestující je nahoře ve formuláři, vedle pole Typ rezervace, a dokud na rezervaci nikdo není, ukazuje Přiřadit cestující.',
'Otevřete rezervaci tužkou. Pole Cestující je vedle Rezervačního kódu, a dokud na rezervaci nikdo není, ukazuje Přiřadit cestující.',
'help.guide.booking-travelers.step.2':
'Klikněte na něj a vyberte lidi, pro které tato rezervace je; jmenovaní hosté jsou v seznamu také. Vybraný dostane fajfku a jeho avatar se objeví v poli. Dalším kliknutím na jméno ho zase sundáte.',
'help.guide.booking-travelers.step.3': 'Klikněte na Aktualizovat.',
@@ -3234,7 +3235,7 @@ const help: TranslationStrings = {
'Klikněte v hlavičce karty na tužku. Otevře se Upravit rezervaci se vším, co rezervace ví.',
'help.guide.edit-booking.step.2':
'Změňte, co je potřeba změnit, tady Rezervační kód, který provozovatel konečně poslal.',
'help.guide.edit-booking.step.3': 'Dejte Stav na Potvrzeno.',
'help.guide.edit-booking.step.3': 'Klikněte v záhlaví formuláře na odznak Čeká na potvrzení. Přepne se na Potvrzeno.',
'help.guide.edit-booking.step.4': 'Klikněte na Aktualizovat.',
'help.guide.edit-booking.result':
'Karta se přesune: potvrzená rezervace stojí v sekci Potvrzeno za zelenou tečkou, a všichni v cestě ji vidí se přesunout.',
@@ -3524,19 +3525,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Přečíst spojení zastávku po zastávce, přejmenovat je nebo trasu vyhledat znovu.',
'help.guide.change-transit-route.step.1':
'Na kartě Doprava sedí naplánovaná spojení pod Automatické spojení MHD. Klikněte na kartu.',
'Na kartě Doprava sedí naplánovaná spojení pod Automatické spojení MHD. Klikněte na kartu; spojení se otevře jako rezervace.',
'help.guide.change-transit-route.step.2':
'Doba trvání, Přestupy a Chůze sedí nahoře. Itinerář pod nimi projde spojení zastávku po zastávce, s nástupišti a s úseky pěšky mezi linkami.',
'help.guide.change-transit-route.step.3':
'Změnit trasu spustí vyhledávání znovu, již vyplněné oběma konci tohoto spojení a jeho dnem.',
'Změnit trasu na patě rezervace spustí vyhledávání znovu, již vyplněné oběma konci tohoto spojení a jeho dnem.',
'help.guide.change-transit-route.step.4':
'Vyberte jiné spojení a klikněte na Přidat ke dni; zaujme místo toho starého. Upravit podrobnosti vedle Změnit trasu otevře místo toho běžný formulář dopravy, kde žijí Rezervační kód, Stav, cestující a soubory.',
'Vyberte jiné spojení a klikněte na Přidat ke dni; zaujme místo toho starého. Upravit, na druhém konci téže lišty, otevře místo toho běžný formulář dopravy, kde žijí Rezervační kód, Stav, cestující, poznámky a soubory.',
'help.guide.change-transit-route.result':
'Okno Cesta veřejnou dopravou nese nový Itinerář a jeho karta na kartě Doprava ukazuje nové linky a časy.',
'help.guide.change-transit-route.tip.1':
'Název v okně Cesta veřejnou dopravou je jen text: tužka vedle něj jej přejmenuje, aniž by se dotkla trasy. Poznámky pod ním přijímají markdown a mají kartu Upravit a Náhled.',
'Název v záhlaví rezervace přejmenuje spojení, aniž by se dotkl trasy. Jeho poznámky se píšou ve formuláři dopravy za tlačítkem Upravit.',
'help.guide.change-transit-route.tip.2':
'Smazat na patě okna Cesta veřejnou dopravou vyjme spojení z cesty; den si ponechá své zastávky.',
'Smazat na patě rezervace vyjme spojení z cesty; den si ponechá své zastávky.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Změnit způsob cesty na jednom úseku',
'help.guide.leg-travel-mode.goal':
@@ -3560,17 +3561,18 @@ const help: TranslationStrings = {
// edit-transport
'help.guide.edit-transport.title': 'Změnit nebo smazat dopravu',
'help.guide.edit-transport.goal': 'Opravit čas, nástupiště nebo rezervační kód, nebo jízdu z cesty odebrat.',
'help.guide.edit-transport.step.1': 'V plánu dne je doprava barevným řádkem mezi zastávkami. Klikněte na něj.',
'help.guide.edit-transport.step.1':
'V plánu dne je doprava barevným řádkem mezi zastávkami. Klikněte na něj; otevře se její rezervace s časy, trasou a Rezervačním kódem.',
'help.guide.edit-transport.step.2':
'Formulář je ten, který ji vytvořil, s nápisem Upravit dopravu v záhlaví. Změnit lze vše: typ, trasu, dny a časy, Rezervační kód, Stav.',
'Upravit na patě rezervace otevře formulář, který ji vytvořil, s nápisem Upravit dopravu v záhlaví. Změnit lze vše: typ, trasu, dny a časy, Rezervační kód, Stav.',
'help.guide.edit-transport.step.3':
'Trasa letu je řetězec letišť, trasa vlaku řetězec stanic. Přidat zastávku vloží mezi ně další a každý úsek si ponechá vlastní časy a vlastní číslo letu nebo vlaku.',
'help.guide.edit-transport.step.4':
'Klikněte na Aktualizovat. Chcete-li dopravu odstranit úplně, použijte koš na její kartě na kartě Doprava a potvrďte.',
'Klikněte na Aktualizovat. Chcete-li dopravu odstranit úplně, použijte Smazat na patě její rezervace nebo koš na její kartě na kartě Doprava a potvrďte.',
'help.guide.edit-transport.result':
'Změna se projeví všude, kde se doprava objevuje: na kartě Doprava, ve dni, kdy jede, a na její čáře na mapě.',
'help.guide.edit-transport.tip.1':
'Stejný formulář se otevře z obou stran, tužkou na kartě na kartě Doprava i vlastním řádkem dopravy v plánu dne. Výjimkou je naplánované spojení veřejnou dopravou: jeho řádek otevře okno Cesta veřejnou dopravou a Upravit podrobnosti tam vede k tomuto formuláři.',
'Stejný formulář se otevře z obou stran: přes Upravit v rezervaci, kterou otevře řádek v plánu dne, i tužkou na kartě na kartě Doprava. Naplánované spojení veřejnou dopravou se také otevře jako rezervace; Změnit trasu tam hledá znovu a Upravit vede k tomuto formuláři.',
'help.guide.edit-transport.tip.2':
'Přesun dopravy na jiný den formulář vůbec nepotřebuje: přetáhněte její řádek z jedné karty dne na druhou.',
// transport-on-map
+6 -2
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Vyberte alespoň jeden typ.',
'places.selectionCount': '{count} vybráno',
'places.deleteSelected': 'Smazat vybrané',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Změnit kategorii',
'places.categoryChanged': 'Aktualizováno míst: {count}',
'places.kmlKmzImported': 'Importováno {count} míst z KMZ/KML',
'places.urlResolved': 'Místo importováno z URL',
'places.importList': 'Import seznamu',
@@ -52,6 +52,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Zobrazit celou cestu',
'places.filterTracks': 'Trasy',
'places.filterByRating': 'Filtrovat podle hodnocení',
'places.filterShow': 'Zobrazit',
'places.clearSearch': 'Vymazat hledání',
'places.yourRating': 'Tvé hodnocení',
'places.notRated': 'Zatím bez hodnocení',
'places.search': 'Hledat místa...',
@@ -71,6 +73,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Ulice, město, země',
'places.formLat': 'Zeměpisná šířka',
'places.formLng': 'Zeměpisná délka',
'places.formLatLabel': 'Zeměpisná šířka',
'places.formLngLabel': 'Zeměpisná délka',
'places.formCategory': 'Kategorie',
'places.noCategory': 'Bez kategorie',
'places.newCategory': 'Nová kategorie',
+60 -3
View File
@@ -64,6 +64,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Kolo',
'reservations.type.taxi': 'Taxi',
'reservations.type.transit': 'Veřejná doprava',
'reservations.typeShort.transit': 'MHD',
'reservations.type.transport_other': 'Ostatní',
'reservations.confirm.delete': 'Opravdu chcete smazat rezervaci „{name}”?',
'reservations.confirm.deleteTitle': 'Smazat rezervaci?',
@@ -79,6 +80,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Místo / Adresa',
'reservations.locationPlaceholder': 'Adresa, letiště, hotel...',
'reservations.confirmationCode': 'Rezervační kód',
'reservations.routeLabel': 'Trasa',
'reservations.segmentCodes': 'Kódy úseků',
'reservations.confirmationPlaceholder': 'např. ABC12345',
'reservations.day': 'Den',
'reservations.noDay': 'Žádný den',
@@ -93,6 +96,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Smazání se nezdařilo',
'reservations.confirm.remove': 'Odstranit rezervaci pro „{name}”?',
'reservations.linkAssignment': 'Propojit s přiřazením dne',
'reservations.linkedTo': 'Propojeno s',
'reservations.pickAssignment': 'Vyberte přiřazení z vašeho plánu...',
'reservations.noAssignment': 'Bez propojení (samostatné)',
'reservations.price': 'Cena',
@@ -134,9 +138,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': 'Nalezeno {count} rezervace/í',
'reservations.import.previewEmpty': 'Z nahraných souborů se nepodařilo extrahovat žádné rezervace.',
'reservations.import.removeItem': 'Odebrat',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Ke kontrole',
'reservations.import.tryAi': 'Zkusit načíst pomocí AI',
'reservations.import.aiParsing': 'Načítání pomocí AI…',
'reservations.import.confirm': 'Importovat {count} rezervaci/í',
'reservations.import.back': 'Zpět',
'reservations.import.success': '{count} rezervace/í importováno',
@@ -179,5 +183,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Cestující',
'reservations.travelers.assign': 'Přiřadit cestující',
'reservations.travelers.none': 'Zatím žádní účastníci výletu.',
'reservations.status.switchTo': 'Přepnout na {status}',
'reservations.view.label': 'Zobrazení',
'reservations.view.cards': 'Karty',
'reservations.view.list': 'Seznam',
'reservations.view.timeline': 'Časová osa',
'reservations.filter': 'Filtr',
'reservations.searchPlaceholder': 'Hledat',
'reservations.results': '{shown} z {total}',
'reservations.resetFilters': 'Zrušit filtry',
'reservations.noMatches': 'Těmto filtrům nic neodpovídá',
'reservations.viewOptions': 'Možnosti zobrazení',
'reservations.resetView': 'Obnovit zobrazení',
'reservations.group.label': 'Seskupit podle',
'reservations.group.status': 'Stav',
'reservations.group.day': 'Den',
'reservations.group.type': 'Typ',
'reservations.group.none': 'Neseskupovat',
'reservations.transitApart': 'MHD jako samostatná sekce',
'reservations.group.before': 'Před cestou',
'reservations.group.after': 'Po cestě',
'reservations.group.undated': 'Bez data',
'reservations.sort.label': 'Řadit podle',
'reservations.sort.date': 'Datum',
'reservations.sort.title': 'Název',
'reservations.sort.type': 'Typ',
'reservations.sort.status': 'Stav',
'reservations.sort.earlyFirst': 'Od nejdřívějších',
'reservations.sort.lateFirst': 'Od nejpozdějších',
'reservations.sort.aToZ': 'A až Z',
'reservations.sort.zToA': 'Z až A',
'reservations.timeline.dayCount': '{count} dní',
'reservations.timeline.zoom': 'Přiblížení',
'reservations.timeline.trip': 'Cesta',
'reservations.timeline.day': 'Den',
'reservations.timeline.prevDay': 'Předchozí den',
'reservations.timeline.nextDay': 'Následující den',
'reservations.timeline.openDay': 'Otevřít {day} po hodinách',
'reservations.timeline.nothingThisDay': 'Na tento den nic není.',
'reservations.timeline.today': 'Dnes',
'reservations.timeline.now': 'teď',
'reservations.timeline.byType': 'Jeden pruh pro každý typ',
'reservations.timeline.context': 'Zobrazit druhou kartu',
'reservations.timeline.contextBookings': 'Rezervace',
'reservations.timeline.contextTransports': 'Doprava',
'reservations.timeline.noneDated': 'Zatím nic z toho nemá datum.',
'reservations.undated': 'Bez data',
'reservations.nights': 'Noci',
'reservations.start': 'Začátek',
'reservations.end': 'Konec',
'reservations.rename': 'Přejmenovat',
'reservations.copyCode': 'Kopírovat rezervační kód',
'reservations.copyFailed': 'Kopírování se nezdařilo',
'reservations.showInFiles': 'Zobrazit v souborech',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Upravit dopravu',
'transport.title': 'Doprava',
'transport.addManual': 'Doprava',
'transport.empty': 'Zatím žádná doprava',
};
export default transport;
+10 -2
View File
@@ -142,6 +142,11 @@ const budget: TranslationStrings = {
'costs.splitEqually': 'Gleichmäßig',
'costs.splitCustom': 'Individuell',
'costs.splitTicket': 'Beleg',
'costs.perPerson': '{amount} pro Person',
'costs.payersHint': 'Hak an, wer bezahlt hat, und trag ein, wie viel jede Person gezahlt hat.',
'costs.splitHint.equally': 'Alle Angehakten zahlen den gleichen Anteil.',
'costs.splitHint.custom': 'Trag für jede Person ihren Anteil ein; zusammen ergeben sie den Betrag.',
'costs.splitHint.ticket': 'Liste auf, was auf dem Beleg steht, und hak ab, wer was hatte.',
'costs.ticketItemName': 'Artikelname',
'costs.ticketSplitting': 'Aufteilen auf:',
'costs.ticketAddItem': 'Artikel hinzufügen',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Belege',
'costs.receiptsTitle': 'Belege & Rechnungen',
'costs.attachReceipt': 'Beleg / Rechnung anhängen',
'costs.attach': 'Anhängen',
'costs.scan.button': 'Beleg scannen',
'costs.scan.reading': 'Beleg wird gelesen…',
'costs.scan.review': 'Ausgabe prüfen',
'costs.scan.nothingRead': 'Aus diesem Foto ließ sich kein Beleg lesen.',
'costs.scan.failed': 'Der Beleg konnte nicht eingelesen werden.',
'costs.scan.title': 'Beleg scannen',
'costs.scan.accepted': 'Ein Foto eines Belegs (JPG, PNG oder WEBP, bis 10 MB). Das KI-Modell liest es im Hintergrund, danach prüfst du die Ausgabe, bevor sie gespeichert wird.',
'costs.scan.accepted':
'Ein Foto eines Belegs (JPG, PNG oder WEBP, bis 10 MB). Das KI-Modell liest es im Hintergrund, danach prüfst du die Ausgabe, bevor sie gespeichert wird.',
'costs.scan.dropHere': 'Belegfoto hier ablegen oder klicken, um eins auszuwählen oder aufzunehmen',
'costs.scan.dropActive': 'Foto ablegen, um es zu scannen',
'costs.scan.start': 'Scannen',
@@ -168,6 +175,7 @@ const budget: TranslationStrings = {
'costs.noReceipts': 'Keine Belege angehängt',
'costs.deleteReceipt': 'Beleg entfernen',
'costs.viewReceipt': 'Beleg ansehen',
'costs.receiptLeftBehind': 'Speichern fehlgeschlagen, {count} hochgeladene Belege liegen noch da. Im Dateien-Tab entfernen.',
'costs.receiptLeftBehind':
'Speichern fehlgeschlagen, {count} hochgeladene Belege liegen noch da. Im Dateien-Tab entfernen.',
};
export default budget;
+16 -16
View File
@@ -2331,9 +2331,9 @@ const help: TranslationStrings = {
'Öffne den Stopp, zu dem die Buchung gehört. Die Ortsdetails zeigen einen Streifen mit Bestätigt oder Ausstehend und dem Namen der Buchung.',
'help.guide.place-booking.step.2':
'Der Streifen trägt Datum, Uhrzeit und Buchungscode, dazu alle Notizen, die die Buchung hat.',
'help.guide.place-booking.step.3': 'Klick auf den Streifen. Das Formular der Buchung öffnet sich darauf.',
'help.guide.place-booking.step.3': 'Klick auf den Streifen. Die Buchung öffnet sich über der Karte.',
'help.guide.place-booking.step.4':
'Mit Tagesplanung verknüpfen ist das, was eine Buchung an einen Stopp hängt, und hier nennt es schon diesen. Schließ das Formular wieder.',
'Bearbeiten am Fuß der Buchung öffnet ihr eigenes Formular. Mit Tagesplanung verknüpfen ist dort das, was eine Buchung an einen Stopp hängt, und hier nennt es schon diesen. Schließ das Formular wieder.',
'help.guide.place-booking.step.5':
'Eine neue Buchung für einen Stopp beginnt in der Tage-Spalte: Fahr über den Stopp und klick auf das + an seinem Ende. Das Formular öffnet sich als Neue Buchung, schon mit ihm verknüpft.',
'help.guide.place-booking.result':
@@ -2701,7 +2701,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'Die Farbe sagt, wo eine Buchung steht: eine grüne Zeile ist bestätigt, eine bernsteinfarbene noch ausstehend. Unterkünfte stehen nicht in dieser Liste, sie haben ihren eigenen Block darunter.',
'help.guide.day-bookings.step.4':
'Die Liste gibt die Buchungen nur wieder. Angelegt und geändert wird eine Buchung unter Buchungen.',
'Klick eine Zeile an, und die Buchung öffnet sich. Bearbeiten an ihrem Fuß ändert sie; neue Buchungen legst du unter Buchungen an.',
'help.guide.day-bookings.result':
'Alles, was auf den Tag datiert ist, und alles, was an einem seiner Stopps hängt, steht in dieser einen Liste.',
'help.guide.day-bookings.tip.1':
@@ -3254,13 +3254,13 @@ const help: TranslationStrings = {
'Trag ein Restaurant, eine Veranstaltung, eine Tour, einen Parkplatz oder sonst etwas von Hand in die Reise ein.',
'help.guide.create-booking.step.1': 'Klick oben rechts im Tab auf Manuelle Buchung. Neue Buchung öffnet sich.',
'help.guide.create-booking.step.2':
'Wähl die Art der Buchung aus der Liste oben im Formular, neben Reisende. Unterkunft, Restaurant, Veranstaltung, Tour, Parkplatz und Sonstiges sind die sechs, die dieser Tab anlegt, und das Formular ändert sich mit der Wahl: nur Unterkunft tauscht ihre Daten gegen eine Spanne von Tagen.',
'Klick auf die Pille für die Art unter dem Titel, im Kopf des Formulars, und wähl die Art der Buchung. Unterkunft, Restaurant, Veranstaltung, Tour, Parkplatz und Sonstiges sind die sechs, die dieser Tab anlegt, und das Formular ändert sich mit der Wahl: nur Unterkunft tauscht ihre Daten gegen eine Spanne von Tagen.',
'help.guide.create-booking.step.3':
'Tipp den Titel ein. Es ist das eine Feld, auf dem das Formular besteht, und Hinzufügen bleibt tot, bis dort etwas steht.',
'help.guide.create-booking.step.4':
'Setz Datum und Startzeit, und Enddatum und Endzeit, wenn die Buchung ein Ende hat. Die Kalender bieten nur Tage innerhalb der Reise an, und ein Ende, das nicht nach dem Start liegt, sagt das in Rot und sperrt Hinzufügen.',
'help.guide.create-booking.step.5':
'Trag den Buchungscode aus der Bestätigung ein und setz Status. Ausstehend oder Bestätigt entscheidet, in welchem der beiden Abschnitte die Karte landet.',
'Trag den Buchungscode aus der Bestätigung ein. Die Status-Pille neben der Art zeigt Ausstehend; ein Klick stellt sie auf Bestätigt und wieder zurück, und das entscheidet, in welchem der beiden Abschnitte die Karte landet.',
'help.guide.create-booking.step.6': 'Klick auf Hinzufügen.',
'help.guide.create-booking.result':
'Die Buchung ist eine Karte in ihrem Abschnitt, mit ihrem Chip für die Art, ihren Daten und ihrem Code, und alle anderen in der Reise sehen sie auftauchen.',
@@ -3311,7 +3311,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Sagen, für wen eine Buchung ist',
'help.guide.booking-travelers.goal': 'Markier die Reisenden, die eine Buchung abdeckt, und sieh dann nur ihre.',
'help.guide.booking-travelers.step.1':
'Öffne die Buchung mit dem Stift. Reisende steht oben im Formular, neben Art der Buchung, und zeigt Reisende zuweisen, solange niemand auf der Buchung ist.',
'Öffne die Buchung mit dem Stift. Reisende steht neben dem Buchungscode und zeigt Reisende zuweisen, solange niemand auf der Buchung ist.',
'help.guide.booking-travelers.step.2':
'Klick darauf und wähl die Personen, für die diese Buchung ist; benannte Gäste stehen auch in der Liste. Eine gewählte bekommt einen Haken und ihren Avatar im Feld. Klick den Namen noch einmal an, um sie wieder wegzunehmen.',
'help.guide.booking-travelers.step.3': 'Klick auf Aktualisieren.',
@@ -3409,7 +3409,7 @@ const help: TranslationStrings = {
'Klick auf den Stift im Kopf der Karte. Reservierung bearbeiten öffnet sich mit allem, was die Buchung weiß.',
'help.guide.edit-booking.step.2':
'Änder, was zu ändern ist, hier den Buchungscode, den der Anbieter endlich geschickt hat.',
'help.guide.edit-booking.step.3': 'Setz Status auf Bestätigt.',
'help.guide.edit-booking.step.3': 'Klick im Kopf des Formulars auf die Pille Ausstehend. Sie wechselt auf Bestätigt.',
'help.guide.edit-booking.step.4': 'Klick auf Aktualisieren.',
'help.guide.edit-booking.result':
'Die Karte wandert: eine bestätigte Buchung steht im Abschnitt Bestätigt hinter einem grünen Punkt, und alle in der Reise sehen sie wandern.',
@@ -3704,19 +3704,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Die Verbindung Halt für Halt lesen, sie umbenennen, oder die Route neu heraussuchen lassen.',
'help.guide.change-transit-route.step.1':
'Im Tab Transport sitzen die geplanten Verbindungen unter Automatische ÖPNV-Verbindungen. Klick die Karte an.',
'Im Tab Transport sitzen die geplanten Verbindungen unter Automatische ÖPNV-Verbindungen. Klick die Karte an; die Verbindung öffnet sich als Buchung.',
'help.guide.change-transit-route.step.2':
'Dauer, Umstiege und Fußweg stehen oben. Verbindung darunter geht die Fahrt Halt für Halt durch, mit den Gleisen und den Fußwegen zwischen den Linien.',
'help.guide.change-transit-route.step.3':
'Route ändern startet die Suche noch einmal, schon gefüllt mit den beiden Enden dieser Verbindung und ihrem Tag.',
'Route ändern am Fuß der Buchung startet die Suche noch einmal, schon gefüllt mit den beiden Enden dieser Verbindung und ihrem Tag.',
'help.guide.change-transit-route.step.4':
'Wähl eine andere Verbindung und klick auf Zum Tag hinzufügen; sie tritt an die Stelle der alten. Details bearbeiten, neben Route ändern, öffnet stattdessen das gewöhnliche Transport-Formular, in dem der Buchungscode, der Status, die Reisenden und die Dateien liegen.',
'Wähl eine andere Verbindung und klick auf Zum Tag hinzufügen; sie tritt an die Stelle der alten. Bearbeiten, am anderen Ende derselben Leiste, öffnet stattdessen das gewöhnliche Transport-Formular, in dem der Buchungscode, der Status, die Reisenden, die Notizen und die Dateien liegen.',
'help.guide.change-transit-route.result':
'Die Fahrt trägt die neue Verbindung, und ihre Karte im Tab Transport zeigt die neuen Linien und Zeiten.',
'help.guide.change-transit-route.tip.1':
'Der Titel der Fahrt ist nur Text: der Stift daneben benennt sie um, ohne die Route anzurühren. Notizen darunter nehmen Markdown und haben einen Tab Bearbeiten und einen Tab Vorschau.',
'Der Titel im Kopf der Buchung benennt die Verbindung um, ohne die Route anzurühren. Ihre Notizen schreibst du im Transport-Formular hinter Bearbeiten.',
'help.guide.change-transit-route.tip.2':
'Löschen am Fuß der Fahrt nimmt die Verbindung aus der Reise; der Tag behält seine Stopps.',
'Löschen am Fuß der Buchung nimmt die Verbindung aus der Reise; der Tag behält seine Stopps.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Ändern, wie eine Etappe zurückgelegt wird',
'help.guide.leg-travel-mode.goal':
@@ -3742,17 +3742,17 @@ const help: TranslationStrings = {
'help.guide.edit-transport.goal':
'Eine Zeit, ein Gleis oder einen Buchungscode richten, oder die Fahrt aus der Reise nehmen.',
'help.guide.edit-transport.step.1':
'Im Tagesplan ist ein Transport eine farbige Zeile zwischen den Stopps. Klick sie an.',
'Im Tagesplan ist ein Transport eine farbige Zeile zwischen den Stopps. Klick sie an; seine Buchung öffnet sich mit den Zeiten, der Route und dem Buchungscode.',
'help.guide.edit-transport.step.2':
'Das Formular ist dasselbe, das ihn angelegt hat, mit Transport bearbeiten in der Titelzeile. Alles lässt sich ändern: der Typ, die Route, die Tage und Zeiten, der Buchungscode, der Status.',
'Bearbeiten am Fuß der Buchung öffnet das Formular, das ihn angelegt hat, mit Transport bearbeiten in der Titelzeile. Alles lässt sich ändern: der Typ, die Route, die Tage und Zeiten, der Buchungscode, der Status.',
'help.guide.edit-transport.step.3':
'Die Route eines Fluges ist eine Kette von Flughäfen, die eines Zuges eine Kette von Bahnhöfen. Zwischenstopp hinzufügen setzt einen weiteren dazwischen, und jede Etappe behält ihre eigenen Zeiten und ihre eigene Flug- oder Zugnummer.',
'help.guide.edit-transport.step.4':
'Klick auf Aktualisieren. Um den Transport ganz zu entfernen, nimm den Papierkorb auf seiner Karte im Tab Transport und bestätige.',
'Klick auf Aktualisieren. Um den Transport ganz zu entfernen, nimm Löschen am Fuß seiner Buchung oder den Papierkorb auf seiner Karte im Tab Transport und bestätige.',
'help.guide.edit-transport.result':
'Die Änderung zeigt sich überall, wo der Transport auftaucht: im Tab Transport, an dem Tag, an dem er läuft, und in seiner Linie auf der Karte.',
'help.guide.edit-transport.tip.1':
'Dasselbe Formular öffnet sich von beiden Seiten, über den Stift auf der Karte im Tab Transport und über die eigene Zeile des Transports im Tagesplan. Eine geplante ÖPNV-Verbindung ist die Ausnahme: ihre Zeile öffnet die Fahrtansicht, und Details bearbeiten führt von dort zu diesem Formular.',
'Dasselbe Formular öffnet sich von beiden Seiten: über Bearbeiten in der Buchung, die eine Zeile im Tagesplan öffnet, und über den Stift auf der Karte im Tab Transport. Eine geplante ÖPNV-Verbindung öffnet sich ebenfalls als Buchung; Route ändern sucht dort neu, und Bearbeiten führt zu diesem Formular.',
'help.guide.edit-transport.tip.2':
'Einen Transport auf einen anderen Tag zu verschieben braucht das Formular gar nicht: zieh seine Zeile von einer Tageskarte auf die nächste.',
// transport-on-map
+4
View File
@@ -52,6 +52,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Ganze Reise anzeigen',
'places.filterTracks': 'Tracks',
'places.filterByRating': 'Nach Bewertung filtern',
'places.filterShow': 'Anzeigen',
'places.clearSearch': 'Suche leeren',
'places.yourRating': 'Deine Bewertung',
'places.notRated': 'Noch nicht bewertet',
'places.search': 'Orte suchen...',
@@ -71,6 +73,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Straße, Stadt, Land',
'places.formLat': 'Breitengrad (z.B. 48.8566)',
'places.formLng': 'Längengrad (z.B. 2.3522)',
'places.formLatLabel': 'Breitengrad',
'places.formLngLabel': 'Längengrad',
'places.formCategory': 'Kategorie',
'places.noCategory': 'Keine Kategorie',
'places.newCategory': 'Neue Kategorie',
+9 -4
View File
@@ -67,6 +67,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Fahrrad',
'reservations.type.taxi': 'Taxi',
'reservations.type.transit': 'ÖPNV',
'reservations.typeShort.transit': 'ÖPNV',
'reservations.type.transport_other': 'Sonstiges',
'reservations.confirm.delete': 'Möchtest du die Reservierung "{name}" wirklich löschen?',
'reservations.confirm.deleteTitle': 'Buchung löschen?',
@@ -86,6 +87,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Ort / Adresse',
'reservations.locationPlaceholder': 'Adresse, Flughafen, Hotel...',
'reservations.confirmationCode': 'Buchungscode',
'reservations.routeLabel': 'Strecke',
'reservations.segmentCodes': 'Codes pro Abschnitt',
'reservations.confirmationPlaceholder': 'z.B. ABC12345',
'reservations.day': 'Tag',
'reservations.noDay': 'Kein Tag',
@@ -96,6 +99,7 @@ const reservations: TranslationStrings = {
'reservations.attachFile': 'Datei anhängen',
'reservations.linkExisting': 'Vorhandene verknüpfen',
'reservations.linkAssignment': 'Mit Tagesplanung verknüpfen',
'reservations.linkedTo': 'Verknüpft mit',
'reservations.pickAssignment': 'Zuordnung aus dem Plan wählen...',
'reservations.noAssignment': 'Keine Verknüpfung',
'reservations.price': 'Preis',
@@ -137,9 +141,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count} Reservierung(en) gefunden',
'reservations.import.previewEmpty': 'Aus den hochgeladenen Dateien konnten keine Reservierungen extrahiert werden.',
'reservations.import.removeItem': 'Entfernen',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Prüfen',
'reservations.import.tryAi': 'Mit KI auslesen',
'reservations.import.aiParsing': 'Wird mit KI ausgelesen…',
'reservations.import.confirm': '{count} Reservierung(en) importieren',
'reservations.import.back': 'Zurück',
'reservations.import.success': '{count} Reservierung(en) importiert',
@@ -199,6 +203,7 @@ const reservations: TranslationStrings = {
'reservations.group.day': 'Tag',
'reservations.group.type': 'Typ',
'reservations.group.none': 'Nicht gruppieren',
'reservations.transitApart': 'ÖPNV als eigener Abschnitt',
'reservations.group.before': 'Vor der Reise',
'reservations.group.after': 'Nach der Reise',
'reservations.group.undated': 'Ohne Datum',
@@ -223,7 +228,7 @@ const reservations: TranslationStrings = {
'reservations.timeline.now': 'jetzt',
'reservations.timeline.byType': 'Eine Spur pro Typ',
'reservations.timeline.context': 'Anderen Tab einblenden',
'reservations.timeline.contextStays': 'Unterkünfte',
'reservations.timeline.contextBookings': 'Buchungen',
'reservations.timeline.contextTransports': 'Transporte',
'reservations.timeline.noneDated': 'Hier hat noch nichts ein Datum.',
'reservations.undated': 'Ohne Datum',
+10 -2
View File
@@ -115,6 +115,11 @@ const budget: TranslationStrings = {
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.perPerson': '{amount} per person',
'costs.payersHint': 'Tick who paid and type how much each of them put in.',
'costs.splitHint.equally': 'Everyone ticked pays the same share.',
'costs.splitHint.custom': "Type each person's share; together they have to make the total.",
'costs.splitHint.ticket': 'List what was on the receipt and tick who had each item.',
'costs.pickSomeone': 'Pick at least one person to split with.',
'costs.splitSummary': 'Split {count} ways · {amount} each',
'costs.cat.accommodation': 'Accommodation',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Receipts',
'costs.receiptsTitle': 'Receipts & Invoices',
'costs.attachReceipt': 'Attach receipt / invoice',
'costs.attach': 'Attach',
'costs.scan.button': 'Scan receipt',
'costs.scan.reading': 'Reading the receipt…',
'costs.scan.review': 'Review expense',
'costs.scan.nothingRead': 'No receipt could be read from this photo.',
'costs.scan.failed': 'Could not start reading the receipt.',
'costs.scan.title': 'Scan a receipt',
'costs.scan.accepted': 'A photo of one receipt (JPG, PNG or WEBP, up to 10 MB). The AI model reads it in the background, then you check the expense before it is saved.',
'costs.scan.accepted':
'A photo of one receipt (JPG, PNG or WEBP, up to 10 MB). The AI model reads it in the background, then you check the expense before it is saved.',
'costs.scan.dropHere': 'Drop the receipt photo here, or click to pick or take one',
'costs.scan.dropActive': 'Drop the photo to scan it',
'costs.scan.start': 'Scan',
@@ -168,7 +175,8 @@ const budget: TranslationStrings = {
'costs.noReceipts': 'No receipts attached',
'costs.deleteReceipt': 'Remove receipt',
'costs.viewReceipt': 'View receipt',
'costs.receiptLeftBehind': 'Save failed, and {count} uploaded receipts are still there. Remove them in the Files tab.',
'costs.receiptLeftBehind':
'Save failed, and {count} uploaded receipts are still there. Remove them in the Files tab.',
};
export default budget;
+17 -16
View File
@@ -2204,9 +2204,9 @@ const help: TranslationStrings = {
'Open the stop the booking belongs to. The card shows a strip with Confirmed or Pending and the booking’s name.',
'help.guide.place-booking.step.2':
'The strip carries the Date, the Time and the Booking Code, and whatever notes the booking has.',
'help.guide.place-booking.step.3': 'Click the strip. The booking’s own form opens on it.',
'help.guide.place-booking.step.3': 'Click the strip. The booking opens over the map.',
'help.guide.place-booking.step.4':
'Link to day assignment is what pins a booking to a stop, and here it already names this one. Close the form again.',
'Edit at the foot of the booking opens its own form. Link to day assignment there is what pins a booking to a stop, and here it already names this one. Close the form again.',
'help.guide.place-booking.step.5':
'A new booking for a stop starts in the days column: hover the stop and click the + at its end. The form opens as New Reservation, already linked to it.',
'help.guide.place-booking.result':
@@ -2405,7 +2405,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'The colour says where a booking stands: a green row is confirmed, an amber one is still pending. Hotels are not in this list, they have their own block below.',
'help.guide.day-bookings.step.4':
'The list only reads the bookings out. A booking is created and changed under Bookings.',
'Click a row and the booking opens. Edit at its foot changes it; new bookings are created under Bookings.',
'help.guide.day-bookings.result':
'Everything dated on the day, and everything hanging off one of its stops, is in this one list.',
'help.guide.day-bookings.tip.1':
@@ -2686,19 +2686,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.title': 'Open and change a planned connection',
'help.guide.change-transit-route.goal': 'Read the connection stop by stop, rename it, or look the route up again.',
'help.guide.change-transit-route.step.1':
'In the Transports tab the planned connections sit under Automated public transit. Click the card.',
'In the Transports tab the planned connections sit under Automated public transit. Click the card; the connection opens as a booking.',
'help.guide.change-transit-route.step.2':
'Duration, Transfers and Walking sit at the top. Itinerary below them walks the connection stop by stop, with the platforms and the walks between the lines.',
'help.guide.change-transit-route.step.3':
'Change route runs the search again, already filled with this connection’s two ends and its day.',
'Change route at the foot of the booking runs the search again, already filled with this connection’s two ends and its day.',
'help.guide.change-transit-route.step.4':
'Pick another connection and click Add to day; it takes the old one’s place. Edit details, next to Change route, opens the ordinary transport form instead, where the Booking Code, the Status, the travelers and the files live.',
'Pick another connection and click Add to day; it takes the old one’s place. Edit, at the other end of the same bar, opens the ordinary transport form instead, where the Booking Code, the Status, the travelers, the notes and the files live.',
'help.guide.change-transit-route.result':
'The journey carries the new itinerary, and its card in the Transports tab shows the new lines and times.',
'help.guide.change-transit-route.tip.1':
'The journey’s title is only text: the pencil next to it renames it without touching the route. Notes underneath take markdown and have an Edit and a Preview tab.',
'The title in the head of the booking renames the connection without touching the route. Its notes are written in the transport form behind Edit.',
'help.guide.change-transit-route.tip.2':
'Delete at the foot of the journey takes the connection out of the trip; the day keeps its stops.',
'Delete at the foot of the booking takes the connection out of the trip; the day keeps its stops.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Change how one leg is travelled',
'help.guide.leg-travel-mode.goal':
@@ -2721,17 +2721,18 @@ const help: TranslationStrings = {
// edit-transport
'help.guide.edit-transport.title': 'Change or delete a transport',
'help.guide.edit-transport.goal': 'Fix a time, a platform or a booking code, or take the ride out of the trip.',
'help.guide.edit-transport.step.1': 'In the day plan a transport is a coloured row between the stops. Click it.',
'help.guide.edit-transport.step.1':
'In the day plan a transport is a coloured row between the stops. Click it; its booking opens with the times, the route and the Booking Code.',
'help.guide.edit-transport.step.2':
'The form is the one that created it, with Edit transport in its title bar. Everything can be changed: the type, the route, the days and times, the Booking Code, the Status.',
'Edit at the foot of the booking opens the form that created it, with Edit transport in its title bar. Everything can be changed: the type, the route, the days and times, the Booking Code, the Status.',
'help.guide.edit-transport.step.3':
'A flight’s route is a chain of airports, a train’s a chain of stations. Add stop puts another one in between, and every leg keeps its own times and its own flight or train number.',
'help.guide.edit-transport.step.4':
'Click Update. To remove the transport altogether, use the bin on its card in the Transports tab and confirm.',
'Click Update. To remove the transport altogether, use Delete at the foot of its booking, or the bin on its card in the Transports tab, and confirm.',
'help.guide.edit-transport.result':
'The change shows everywhere the transport appears: the Transports tab, the day it runs on, and its line on the map.',
'help.guide.edit-transport.tip.1':
'The same form opens from both sides, the pencil on the card in the Transports tab and the transport’s own row in the day plan. A planned public-transit connection is the exception: its row opens the journey view, and Edit details there leads to this form.',
'The same form opens from both sides: through Edit in the booking a row of the day plan opens, and through the pencil on the card in the Transports tab. A planned public-transit connection opens as a booking too; Change route there searches again, and Edit leads to this form.',
'help.guide.edit-transport.tip.2':
'Moving a transport to another day does not need the form at all: drag its row from one day card to the next.',
// transport-on-map
@@ -2802,13 +2803,13 @@ const help: TranslationStrings = {
'Put a restaurant, an event, a tour, a parking space or anything else into the trip by hand.',
'help.guide.create-booking.step.1': 'Click Manual Booking at the top right of the tab. New Reservation opens.',
'help.guide.create-booking.step.2':
'Pick the Booking Type from the list at the top of the form, next to Travelers. Accommodation, Restaurant, Event, Tour, Parking and Other are the six this tab makes, and the form changes with the choice: only Accommodation trades its dates for a range of days.',
'Click the type pill under the title, in the head of the form, and pick the Booking Type. Accommodation, Restaurant, Event, Tour, Parking and Other are the six this tab makes, and the form changes with the choice: only Accommodation trades its dates for a range of days.',
'help.guide.create-booking.step.3':
'Type the Title. It is the one field the form insists on, and Add stays dead until it has something.',
'help.guide.create-booking.step.4':
'Set Date and Start time, and End date and End time if the booking has an end. The calendars only offer days inside the trip, and an end that is not after the start says so in red and blocks Add.',
'help.guide.create-booking.step.5':
'Put in the Booking Code from the confirmation and set Status. Pending or Confirmed decides which of the two sections the card lands in.',
'Put in the Booking Code from the confirmation. The status pill beside the type reads Pending; a click turns it to Confirmed and back, and that decides which of the two sections the card lands in.',
'help.guide.create-booking.step.6': 'Click Add.',
'help.guide.create-booking.result':
'The booking is a card in its section with its type chip, its dates and its code, and everyone else in the trip sees it appear.',
@@ -2857,7 +2858,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Say who a booking is for',
'help.guide.booking-travelers.goal': 'Mark the travellers a booking covers, and then see only theirs.',
'help.guide.booking-travelers.step.1':
'Open the booking with the pencil. Travelers sits at the top of the form, next to Booking Type, and reads Assign travelers while nobody is on the booking.',
'Open the booking with the pencil. Travelers sits next to the Booking Code, and reads Assign travelers while nobody is on the booking.',
'help.guide.booking-travelers.step.2':
'Click it and pick the people this booking is for; named guests are in the list too. A chosen one gets a tick and their avatar in the field. Click the name again to take it off.',
'help.guide.booking-travelers.step.3': 'Click Update.',
@@ -2950,7 +2951,7 @@ const help: TranslationStrings = {
'help.guide.edit-booking.step.1':
'Click the pencil in the card’s header. Edit Reservation opens with everything the booking knows.',
'help.guide.edit-booking.step.2': 'Change what needs changing, here the Booking Code the operator finally sent.',
'help.guide.edit-booking.step.3': 'Put Status on Confirmed.',
'help.guide.edit-booking.step.3': 'Click the Pending pill in the head of the form. It turns to Confirmed.',
'help.guide.edit-booking.step.4': 'Click Update.',
'help.guide.edit-booking.result':
'The card moves: a confirmed booking stands in the Confirmed section behind a green dot, and everyone in the trip sees it move.',
+7
View File
@@ -53,6 +53,10 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Show the whole trip',
'places.filterTracks': 'Tracks',
'places.filterByRating': 'Filter by rating',
/** The button that opens the filter panel, and the panel's name. */
/** Label over the all/unplanned/planned/tracks choice in the filter panel. */
'places.filterShow': 'Show',
'places.clearSearch': 'Clear search',
'places.yourRating': 'Your rating',
'places.notRated': 'Not rated yet',
'places.search': 'Search places...',
@@ -72,6 +76,9 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Street, City, Country',
'places.formLat': 'Latitude (e.g. 48.8566)',
'places.formLng': 'Longitude (e.g. 2.3522)',
/** The small labels over the two coordinate fields of the desktop place dialog. */
'places.formLatLabel': 'Latitude',
'places.formLngLabel': 'Longitude',
'places.formCategory': 'Category',
'places.noCategory': 'No Category',
'places.newCategory': 'New category',
+6 -1
View File
@@ -66,6 +66,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Bicycle',
'reservations.type.taxi': 'Taxi',
'reservations.type.transit': 'Public transit',
'reservations.typeShort.transit': 'Transit',
'reservations.type.transport_other': 'Other',
'reservations.confirm.delete': 'Are you sure you want to delete the reservation "{name}"?',
'reservations.confirm.deleteTitle': 'Delete booking?',
@@ -81,6 +82,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Location / Address',
'reservations.locationPlaceholder': 'Address, Airport, Hotel...',
'reservations.confirmationCode': 'Booking Code',
'reservations.routeLabel': 'Route',
'reservations.segmentCodes': 'Segment codes',
'reservations.confirmationPlaceholder': 'e.g. ABC12345',
'reservations.day': 'Day',
'reservations.noDay': 'No Day',
@@ -95,6 +98,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Failed to delete',
'reservations.confirm.remove': 'Remove reservation for "{name}"?',
'reservations.linkAssignment': 'Link to day assignment',
'reservations.linkedTo': 'Linked to',
'reservations.pickAssignment': 'Select an assignment from your plan...',
'reservations.noAssignment': 'No link (standalone)',
'reservations.price': 'Price',
@@ -198,6 +202,7 @@ const reservations: TranslationStrings = {
'reservations.group.day': 'Day',
'reservations.group.type': 'Type',
'reservations.group.none': 'No grouping',
'reservations.transitApart': 'Public transit as its own section',
'reservations.group.before': 'Before the trip',
'reservations.group.after': 'After the trip',
'reservations.group.undated': 'No date',
@@ -222,7 +227,7 @@ const reservations: TranslationStrings = {
'reservations.timeline.now': 'now',
'reservations.timeline.byType': 'One lane per type',
'reservations.timeline.context': 'Show the other tab',
'reservations.timeline.contextStays': 'Stays',
'reservations.timeline.contextBookings': 'Bookings',
'reservations.timeline.contextTransports': 'Transports',
'reservations.timeline.noneDated': 'None of these has a date yet.',
'reservations.undated': 'No date',
+12 -5
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Solo en el total — aún sin saldar',
'costs.tapToInclude': 'Toca para incluir',
'costs.amount': 'Importe',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Dividir',
'costs.splitEqually': 'A partes iguales',
'costs.splitCustom': 'Personalizado',
'costs.splitTicket': 'Recibo',
'costs.perPerson': '{amount} por persona',
'costs.payersHint': 'Marca quién pagó y escribe cuánto puso cada uno.',
'costs.splitHint.equally': 'Todos los marcados pagan la misma parte.',
'costs.splitHint.custom': 'Escribe la parte de cada persona; entre todas tienen que sumar el total.',
'costs.splitHint.ticket': 'Enumera lo que había en el recibo y marca quién tomó cada artículo.',
'costs.filter.allCategories': 'Todas las categorías',
'costs.filter.allDays': 'Todos los días',
'costs.expensesCount': '{count} gastos',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Recibos',
'costs.receiptsTitle': 'Recibos y facturas',
'costs.attachReceipt': 'Adjuntar recibo / factura',
'costs.attach': 'Adjuntar',
'costs.scan.button': 'Escanear recibo',
'costs.scan.reading': 'Leyendo el recibo…',
'costs.scan.review': 'Revisar el gasto',
'costs.scan.nothingRead': 'No se pudo leer ningún recibo en esta foto.',
'costs.scan.failed': 'No se pudo iniciar la lectura del recibo.',
'costs.scan.title': 'Escanear recibo',
'costs.scan.accepted': 'Una foto de un solo recibo (JPG, PNG o WEBP, hasta 10 MB). El modelo de IA la lee en segundo plano y luego revisas el gasto antes de guardarlo.',
'costs.scan.accepted':
'Una foto de un solo recibo (JPG, PNG o WEBP, hasta 10 MB). El modelo de IA la lee en segundo plano y luego revisas el gasto antes de guardarlo.',
'costs.scan.dropHere': 'Suelta aquí la foto del recibo, o haz clic para elegir o hacer una',
'costs.scan.dropActive': 'Suelta la foto para escanearla',
'costs.scan.start': 'Escanear',
+2 -2
View File
@@ -78,8 +78,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Todos los lugares asignados',
'dayplan.mobile.noMatch': 'Sin coincidencias',
'dayplan.mobile.createNew': 'Crear nuevo lugar',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Desplegar todos los días', // en-fallback
'dayplan.collapseAll': 'Plegar todos los días', // en-fallback
'dayplan.reorderDays': 'Reordenar días',
'dayplan.reorderTitle': 'Reordenar días',
'dayplan.reorderHint': 'Los lugares, las notas y las reservas de un día se mueven con él.',
+24 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'es' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Ayuda y documentación',
'help.search': 'Buscar en la documentación…',
'help.contents': 'Contenido',
'help.noResults': 'No hay páginas que coincidan.',
'help.errorTitle': 'No se pudo cargar esta página',
'help.errorBody': 'El contenido de la ayuda viene de la wiki de TREK. Comprueba tu conexión e inténtalo de nuevo.',
// center
'help.center.button': 'Ayuda para esta pantalla',
@@ -1049,7 +1049,7 @@ const help: TranslationStrings = {
'Travel & map: rutas de reserva siempre en el mapa, la píldora Explorar lugares, optimización de la ruta desde tu alojamiento, códigos de reserva difuminados y rutas de reserva etiquetadas.',
'help.ctx.settings-display.bullet.3':
'Inicio: si TREK se abre en el panel o en el viaje activo, y qué pestaña de un viaje sale primero.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Apariencia',
'help.ctx.settings-appearance.summary':
'Cómo se ve TREK en esta cuenta: claro u oscuro, el color de acento, cristal y movimiento, tamaño del texto, y qué widgets muestra el panel. Todo se aplica en vivo, en cada dispositivo en el que inicies sesión.',
'help.ctx.settings-appearance.bullet.1':
@@ -2321,9 +2321,9 @@ const help: TranslationStrings = {
'Abre la parada a la que pertenece la reserva. La ficha muestra una franja con Confirmada o Pendiente y el nombre de la reserva.',
'help.guide.place-booking.step.2':
'La franja lleva la Fecha, la Hora y el Código de reserva, y las notas que tenga la reserva.',
'help.guide.place-booking.step.3': 'Haz clic en la franja. Se abre encima el formulario de la reserva.',
'help.guide.place-booking.step.3': 'Haz clic en la franja. La reserva se abre encima del mapa.',
'help.guide.place-booking.step.4':
'Vincular a una asignación del día es lo que engancha una reserva a una parada, y aquí ya nombra esta. Cierra el formulario otra vez.',
'Editar, al pie de la reserva, abre su propio formulario. Allí, Vincular a una asignación del día es lo que engancha una reserva a una parada, y aquí ya nombra esta. Cierra el formulario otra vez.',
'help.guide.place-booking.step.5':
'Una reserva nueva para una parada empieza en la columna de días: pasa el puntero por la parada y haz clic en el + de su extremo. El formulario se abre como Nueva reserva, ya vinculada a ella.',
'help.guide.place-booking.result':
@@ -2685,7 +2685,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'El color dice cómo está una reserva: una fila verde está confirmada, una ámbar sigue pendiente. Los alojamientos no están en esta lista, tienen su propio bloque debajo.',
'help.guide.day-bookings.step.4':
'La lista solo lee las reservas. Una reserva se crea y se cambia en la pestaña Reservas.',
'Haz clic en una fila y se abre la reserva. Editar, a su pie, la cambia; las reservas nuevas se crean en la pestaña Reservas.',
'help.guide.day-bookings.result':
'Todo lo fechado en el día, y todo lo que cuelga de alguna de sus paradas, está en esta única lista.',
'help.guide.day-bookings.tip.1':
@@ -3236,13 +3236,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Haz clic en Reserva manual, arriba a la derecha de la pestaña. Se abre Nueva reserva.',
'help.guide.create-booking.step.2':
'Elige el Tipo de reserva en la lista de arriba del formulario, junto a Viajeros. Alojamiento, Restaurante, Evento, Excursión, Aparcamiento y Otro son las seis que hace esta pestaña, y el formulario cambia con la elección: solo Alojamiento cambia sus fechas por un rango de días.',
'Haz clic en la píldora de tipo bajo el título, en la cabecera del formulario, y elige el Tipo de reserva. Alojamiento, Restaurante, Evento, Excursión, Aparcamiento y Otro son las seis que hace esta pestaña, y el formulario cambia con la elección: solo Alojamiento cambia sus fechas por un rango de días.',
'help.guide.create-booking.step.3':
'Escribe el Título. Es el único campo en el que el formulario insiste, y Añadir sigue muerto mientras esté vacío.',
'help.guide.create-booking.step.4':
'Pon Fecha y Hora de inicio, y Fecha fin y Hora de fin si la reserva tiene final. Los calendarios solo ofrecen días dentro del viaje, y un final que no es posterior al inicio lo dice en rojo y bloquea Añadir.',
'help.guide.create-booking.step.5':
'Mete el Código de reserva de la confirmación y pon el Estado. Pendiente o Confirmada decide en cuál de las dos secciones aterriza la tarjeta.',
'Mete el Código de reserva de la confirmación. La píldora de estado, junto al tipo, pone Pendiente; un clic la pasa a Confirmada y de vuelta, y eso decide en cuál de las dos secciones aterriza la tarjeta.',
'help.guide.create-booking.step.6': 'Haz clic en Añadir.',
'help.guide.create-booking.result':
'La reserva es una tarjeta en su sección, con su chip de clase, sus fechas y su código, y todos los demás del viaje la ven aparecer.',
@@ -3292,7 +3292,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Decir para quién es una reserva',
'help.guide.booking-travelers.goal': 'Marca los viajeros que cubre una reserva y luego ve solo las suyas.',
'help.guide.booking-travelers.step.1':
'Abre la reserva con el lápiz. Viajeros está arriba del formulario, junto a Tipo de reserva, y pone Asignar viajeros mientras no haya nadie en la reserva.',
'Abre la reserva con el lápiz. Viajeros está junto al Código de reserva, y pone Asignar viajeros mientras no haya nadie en la reserva.',
'help.guide.booking-travelers.step.2':
'Haz clic y elige las personas para las que es esta reserva; los invitados con nombre también están en la lista. Una elegida recibe una marca y su avatar en el campo. Vuelve a hacer clic en el nombre para quitarla.',
'help.guide.booking-travelers.step.3': 'Haz clic en Actualizar.',
@@ -3388,7 +3388,8 @@ const help: TranslationStrings = {
'Haz clic en el lápiz de la cabecera de la tarjeta. Editar reserva se abre con todo lo que la reserva sabe.',
'help.guide.edit-booking.step.2':
'Cambia lo que haya que cambiar, aquí el Código de reserva que el operador mandó por fin.',
'help.guide.edit-booking.step.3': 'Pon Estado en Confirmada.',
'help.guide.edit-booking.step.3':
'Haz clic en la píldora Pendiente de la cabecera del formulario. Pasa a Confirmada.',
'help.guide.edit-booking.step.4': 'Haz clic en Actualizar.',
'help.guide.edit-booking.result':
'La tarjeta se muda: una reserva confirmada está en la sección Confirmada detrás de un punto verde, y todos en el viaje la ven mudarse.',
@@ -3682,19 +3683,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Leer la conexión parada a parada, cambiarle el nombre, o volver a buscar la ruta.',
'help.guide.change-transit-route.step.1':
'En la pestaña Transportes, las conexiones planificadas están bajo Transporte público automático. Haz clic en la tarjeta.',
'En la pestaña Transportes, las conexiones planificadas están bajo Transporte público automático. Haz clic en la tarjeta; la conexión se abre como una reserva.',
'help.guide.change-transit-route.step.2':
'Duración, Transbordos y A pie están arriba. Itinerario, debajo, recorre la conexión parada a parada, con los andenes y los tramos a pie entre las líneas.',
'help.guide.change-transit-route.step.3':
'Cambiar ruta lanza la búsqueda de nuevo, ya rellena con los dos extremos de esta conexión y con su día.',
'Cambiar ruta, al pie de la reserva, lanza la búsqueda de nuevo, ya rellena con los dos extremos de esta conexión y con su día.',
'help.guide.change-transit-route.step.4':
'Elige otra conexión y haz clic en Añadir al día; ocupa el lugar de la anterior. Editar detalles, junto a Cambiar ruta, abre en cambio el formulario de transporte normal, donde viven el Código de reserva, el Estado, los viajeros y los archivos.',
'Elige otra conexión y haz clic en Añadir al día; ocupa el lugar de la anterior. Editar, en el otro extremo de la misma barra, abre en cambio el formulario de transporte normal, donde viven el Código de reserva, el Estado, los viajeros, las notas y los archivos.',
'help.guide.change-transit-route.result':
'El trayecto lleva el nuevo itinerario, y su tarjeta en la pestaña Transportes muestra las nuevas líneas y horas.',
'help.guide.change-transit-route.tip.1':
'El título del trayecto es solo texto: el lápiz de al lado lo renombra sin tocar la ruta. Notas, debajo, acepta markdown y tiene una pestaña Editar y una Vista previa.',
'El título en la cabecera de la reserva renombra la conexión sin tocar la ruta. Sus notas se escriben en el formulario de transporte, detrás de Editar.',
'help.guide.change-transit-route.tip.2':
'Eliminar, al pie del trayecto, saca la conexión del viaje; el día conserva sus paradas.',
'Eliminar, al pie de la reserva, saca la conexión del viaje; el día conserva sus paradas.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Cambiar cómo se recorre un tramo',
'help.guide.leg-travel-mode.goal':
@@ -3720,17 +3721,17 @@ const help: TranslationStrings = {
'help.guide.edit-transport.goal':
'Corregir una hora, un andén o un código de reserva, o sacar el trayecto del viaje.',
'help.guide.edit-transport.step.1':
'En el plan del día un transporte es una fila de color entre las paradas. Haz clic en ella.',
'En el plan del día un transporte es una fila de color entre las paradas. Haz clic en ella; se abre su reserva con las horas, la ruta y el Código de reserva.',
'help.guide.edit-transport.step.2':
'El formulario es el que lo creó, con Editar transporte en su barra de título. Todo se puede cambiar: el tipo, la ruta, los días y las horas, el Código de reserva, el Estado.',
'Editar, al pie de la reserva, abre el formulario que lo creó, con Editar transporte en su barra de título. Todo se puede cambiar: el tipo, la ruta, los días y las horas, el Código de reserva, el Estado.',
'help.guide.edit-transport.step.3':
'La ruta de un vuelo es una cadena de aeropuertos, la de un tren una cadena de estaciones. Añadir escala pone otra en medio, y cada tramo conserva sus propias horas y su propio número de vuelo o de tren.',
'help.guide.edit-transport.step.4':
'Haz clic en Actualizar. Para quitar el transporte del todo, usa la papelera de su tarjeta en la pestaña Transportes y confirma.',
'Haz clic en Actualizar. Para quitar el transporte del todo, usa Eliminar al pie de su reserva, o la papelera de su tarjeta en la pestaña Transportes, y confirma.',
'help.guide.edit-transport.result':
'El cambio se ve en todas partes donde aparece el transporte: la pestaña Transportes, el día en que va, y su línea en el mapa.',
'help.guide.edit-transport.tip.1':
'El mismo formulario se abre por los dos lados, con el lápiz de la tarjeta en la pestaña Transportes y con la fila propia del transporte en el plan del día. Una conexión de transporte público planificada es la excepción: su fila abre la vista del trayecto, y Editar detalles lleva allí a este formulario.',
'El mismo formulario se abre por los dos lados: con Editar en la reserva que abre una fila del plan del día, y con el lápiz de la tarjeta en la pestaña Transportes. Una conexión de transporte público planificada también se abre como reserva; allí Cambiar ruta vuelve a buscar, y Editar lleva a este formulario.',
'help.guide.edit-transport.tip.2':
'Mover un transporte a otro día no necesita el formulario en absoluto: arrastra su fila de una tarjeta de día a la siguiente.',
// transport-on-map
+8 -3
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Selecciona al menos un tipo.',
'places.selectionCount': '{count} seleccionado(s)',
'places.deleteSelected': 'Eliminar selección',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Cambiar categoría',
'places.categoryChanged': '{count} lugares actualizados',
'places.kmlKmzImported': '{count} lugares importados desde KMZ/KML',
'places.urlResolved': 'Lugar importado desde URL',
'places.importList': 'Importar lista',
@@ -37,7 +37,8 @@ const places: TranslationStrings = {
'places.importGoogleList': 'Lista Google',
'places.importNaverList': 'Lista Naver',
'places.googleListHint': 'Pega un enlace compartido de una lista de Google Maps para importar todos los lugares.',
'places.googleDirHint': 'Un enlace de indicaciones también sirve: sus paradas se convierten en lugares, en orden de conducción.',
'places.googleDirHint':
'Un enlace de indicaciones también sirve: sus paradas se convierten en lugares, en orden de conducción.',
'places.googleListImported': '{count} lugares importados de "{list}"',
'places.googleListError': 'Error al importar la lista de Google Maps',
'places.naverListHint': 'Pega un enlace compartido de una lista de Naver Maps para importar todos los lugares.',
@@ -52,6 +53,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Mostrar todo el viaje',
'places.filterTracks': 'Rutas',
'places.filterByRating': 'Filtrar por valoración',
'places.filterShow': 'Mostrar',
'places.clearSearch': 'Borrar búsqueda',
'places.yourRating': 'Tu valoración',
'places.notRated': 'Sin valorar todavía',
'places.search': 'Buscar lugares...',
@@ -71,6 +74,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Calle, ciudad, país',
'places.formLat': 'Latitud (p. ej. 48.8566)',
'places.formLng': 'Longitud (p. ej. 2.3522)',
'places.formLatLabel': 'Latitud',
'places.formLngLabel': 'Longitud',
'places.formCategory': 'Categoría',
'places.noCategory': 'Sin categoría',
'places.newCategory': 'Nueva categoría',
+60 -3
View File
@@ -37,6 +37,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Bicicleta',
'reservations.type.taxi': 'Taxi',
'reservations.type.transit': 'Transporte público',
'reservations.typeShort.transit': 'T. público',
'reservations.type.transport_other': 'Otro',
'reservations.confirm.delete': '¿Seguro que quieres eliminar la reserva "{name}"?',
'reservations.confirm.deleteTitle': '¿Eliminar reserva?',
@@ -52,6 +53,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Ubicación / dirección',
'reservations.locationPlaceholder': 'Dirección, aeropuerto, hotel...',
'reservations.confirmationCode': 'Código de reserva',
'reservations.routeLabel': 'Ruta',
'reservations.segmentCodes': 'Códigos por tramo',
'reservations.confirmationPlaceholder': 'p. ej. ABC12345',
'reservations.day': 'Día',
'reservations.noDay': 'Sin día',
@@ -66,6 +69,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'No se pudo eliminar',
'reservations.confirm.remove': '¿Eliminar la reserva de "{name}"?',
'reservations.linkAssignment': 'Vincular a una asignación del día',
'reservations.linkedTo': 'Vinculado a',
'reservations.pickAssignment': 'Selecciona una asignación de tu plan...',
'reservations.noAssignment': 'Sin vínculo (independiente)',
'reservations.price': 'Precio',
@@ -136,9 +140,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count} reserva(s) encontrada(s)',
'reservations.import.previewEmpty': 'No se pudieron extraer reservas de los archivos subidos.',
'reservations.import.removeItem': 'Eliminar',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Revisar',
'reservations.import.tryAi': 'Probar lectura con IA',
'reservations.import.aiParsing': 'Leyendo con IA…',
'reservations.import.confirm': 'Importar {count} reserva(s)',
'reservations.import.back': 'Atrás',
'reservations.import.success': '{count} reserva(s) importada(s)',
@@ -182,5 +186,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Viajeros',
'reservations.travelers.assign': 'Asignar viajeros',
'reservations.travelers.none': 'Aún no hay viajeros en el viaje.',
'reservations.status.switchTo': 'Cambiar a {status}',
'reservations.view.label': 'Vista',
'reservations.view.cards': 'Tarjetas',
'reservations.view.list': 'Lista',
'reservations.view.timeline': 'Cronología',
'reservations.filter': 'Filtrar',
'reservations.searchPlaceholder': 'Buscar',
'reservations.results': '{shown} de {total}',
'reservations.resetFilters': 'Restablecer filtros',
'reservations.noMatches': 'Nada coincide con estos filtros',
'reservations.viewOptions': 'Opciones de vista',
'reservations.resetView': 'Restablecer vista',
'reservations.group.label': 'Agrupar por',
'reservations.group.status': 'Estado',
'reservations.group.day': 'Día',
'reservations.group.type': 'Tipo',
'reservations.group.none': 'Sin agrupar',
'reservations.transitApart': 'Transporte público en su propia sección',
'reservations.group.before': 'Antes del viaje',
'reservations.group.after': 'Después del viaje',
'reservations.group.undated': 'Sin fecha',
'reservations.sort.label': 'Ordenar por',
'reservations.sort.date': 'Fecha',
'reservations.sort.title': 'Título',
'reservations.sort.type': 'Tipo',
'reservations.sort.status': 'Estado',
'reservations.sort.earlyFirst': 'Más tempranas primero',
'reservations.sort.lateFirst': 'Más tardías primero',
'reservations.sort.aToZ': 'De la A a la Z',
'reservations.sort.zToA': 'De la Z a la A',
'reservations.timeline.dayCount': '{count} días',
'reservations.timeline.zoom': 'Zoom',
'reservations.timeline.trip': 'Viaje',
'reservations.timeline.day': 'Día',
'reservations.timeline.prevDay': 'Día anterior',
'reservations.timeline.nextDay': 'Día siguiente',
'reservations.timeline.openDay': 'Abrir {day} por horas',
'reservations.timeline.nothingThisDay': 'Nada en este día.',
'reservations.timeline.today': 'Hoy',
'reservations.timeline.now': 'ahora',
'reservations.timeline.byType': 'Una fila por tipo',
'reservations.timeline.context': 'Mostrar la otra pestaña',
'reservations.timeline.contextBookings': 'Reservas',
'reservations.timeline.contextTransports': 'Transportes',
'reservations.timeline.noneDated': 'Ninguna tiene fecha todavía.',
'reservations.undated': 'Sin fecha',
'reservations.nights': 'Noches',
'reservations.start': 'Inicio',
'reservations.end': 'Fin',
'reservations.rename': 'Renombrar',
'reservations.copyCode': 'Copiar código de reserva',
'reservations.copyFailed': 'No se pudo copiar',
'reservations.showInFiles': 'Mostrar en archivos',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Editar transporte',
'transport.title': 'Transportes',
'transport.addManual': 'Transporte',
'transport.empty': 'Aún no hay transportes',
};
export default transport;
+8 -1
View File
@@ -115,6 +115,11 @@ const budget: TranslationStrings = {
'costs.splitEqually': 'Võrdselt',
'costs.splitCustom': 'Kohandatud',
'costs.splitTicket': 'Tšekk',
'costs.perPerson': '{amount} inimese kohta',
'costs.payersHint': 'Märgi, kes maksis, ja sisesta, kui palju igaüks neist maksis.',
'costs.splitHint.equally': 'Kõik märgitud maksavad võrdse osa.',
'costs.splitHint.custom': 'Sisesta iga inimese osa; kokku peavad need andma kogusumma.',
'costs.splitHint.ticket': 'Loetle, mis tšekil oli, ja märgi iga kirje juurde, kellele see kuulus.',
'costs.pickSomeone': 'Vali jagamiseks vähemalt üks inimene.',
'costs.splitSummary': 'Jaotatud {count} osaks · igaühele {amount}',
'costs.cat.accommodation': 'Majutus',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Kviitungid',
'costs.receiptsTitle': 'Kviitungid ja arved',
'costs.attachReceipt': 'Lisa kviitung või arve',
'costs.attach': 'Lisa',
'costs.scan.button': 'Skanni kviitung',
'costs.scan.reading': 'Kviitungit loetakse…',
'costs.scan.review': 'Vaata kulu üle',
'costs.scan.nothingRead': 'Sellelt fotolt ei õnnestunud kviitungit lugeda.',
'costs.scan.failed': 'Kviitungi lugemist ei õnnestunud alustada.',
'costs.scan.title': 'Skanni kviitung',
'costs.scan.accepted': 'Ühe kviitungi foto (JPG, PNG või WEBP, kuni 10 MB). Tehisintellekti mudel loeb selle taustal, seejärel kontrollid kulu enne salvestamist.',
'costs.scan.accepted':
'Ühe kviitungi foto (JPG, PNG või WEBP, kuni 10 MB). Tehisintellekti mudel loeb selle taustal, seejärel kontrollid kulu enne salvestamist.',
'costs.scan.dropHere': 'Lohista kviitungi foto siia või klõpsa, et valida või pildistada',
'costs.scan.dropActive': 'Lase foto lahti, et see skannida',
'costs.scan.start': 'Skanni',
+17 -16
View File
@@ -2260,9 +2260,9 @@ const help: TranslationStrings = {
'help.guide.place-booking.step.1':
'Ava peatus, millega broneering on seotud. Kaardil on riba, kus on kirjas Kinnitatud või Ootel ja broneeringu nimi.',
'help.guide.place-booking.step.2': 'Ribal on Kuupäev, Aeg ja Broneerimiskood ning broneeringu märkmed, kui neid on.',
'help.guide.place-booking.step.3': 'Klõpsa ribal. Avaneb selle broneeringu vorm.',
'help.guide.place-booking.step.3': 'Klõpsa ribal. Broneering avaneb kaardi kohal.',
'help.guide.place-booking.step.4':
'Väli Seo päevaplaani kirjega seob broneeringu peatusega ja siin on selleks juba see peatus valitud. Sulge vorm uuesti.',
'Broneeringu allosas olev Muuda avab selle oma vormi. Seal seob väli Seo päevaplaani kirjega broneeringu peatusega ja siin on selleks juba see peatus valitud. Sulge vorm uuesti.',
'help.guide.place-booking.step.5':
'Peatuse uus broneering algab päevade veerust: vii kursor peatusele ja klõpsa rea lõpus nuppu +. Vorm avaneb pealkirjaga Uus broneering ja on juba peatusega seotud.',
'help.guide.place-booking.result':
@@ -2463,7 +2463,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'Värv näitab broneeringu olekut: roheline rida on kinnitatud, merevaigukollane veel ootel. Hotelle selles loendis pole, neil on all oma plokk.',
'help.guide.day-bookings.step.4':
'Loend ainult näitab broneeringuid. Broneeringuid luuakse ja muudetakse vahekaardil Broneeringud.',
'Klõpsa real ja broneering avaneb. Selle allosas olev Muuda muudab seda; uued broneeringud luuakse vahekaardil Broneeringud.',
'help.guide.day-bookings.result':
'Kõik, mille kuupäev on sellel päeval, ja kõik, mis on seotud mõne selle päeva peatusega, on selles ühes loendis.',
'help.guide.day-bookings.tip.1':
@@ -2741,19 +2741,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.title': 'Ava ja muuda planeeritud ühendust',
'help.guide.change-transit-route.goal': 'Vaata ühendust peatuste kaupa, nimeta see ümber või otsi marsruut uuesti.',
'help.guide.change-transit-route.step.1':
'Vahekaardil Transport on planeeritud ühendused grupis Automaatne ühistranspordiotsing. Klõpsa kaardil.',
'Vahekaardil Transport on planeeritud ühendused grupis Automaatne ühistranspordiotsing. Klõpsa kaardil; ühendus avaneb broneeringuna.',
'help.guide.change-transit-route.step.2':
'Üleval on Kestus, Ümberistumised ja Jalgsi. Nende all olev Teekond näitab ühendust peatuste kaupa koos platvormide ja liinide vaheliste jalgsikäikudega.',
'help.guide.change-transit-route.step.3':
'Muuda marsruuti käivitab otsingu uuesti, juba täidetuna selle ühenduse otspunktide ja päevaga.',
'Broneeringu allosas olev Muuda marsruuti käivitab otsingu uuesti, juba täidetuna selle ühenduse otspunktide ja päevaga.',
'help.guide.change-transit-route.step.4':
'Vali teine ühendus ja klõpsa Lisa päevale; see asendab vana. Nupu Muuda marsruuti kõrval olev Muuda üksikasju avab hoopis tavalise transpordivormi, kus on Broneerimiskood, Olek, reisijad ja failid.',
'Vali teine ühendus ja klõpsa Lisa päevale; see asendab vana. Sama riba teises otsas olev Muuda avab hoopis tavalise transpordivormi, kus on Broneerimiskood, Olek, reisijad, märkmed ja failid.',
'help.guide.change-transit-route.result':
'Sõidul on nüüd uus teekond ja selle kaart vahekaardil Transport näitab uusi liine ja kellaaegu.',
'help.guide.change-transit-route.tip.1':
'Sõidu pealkiri on lihtsalt tekst: selle kõrval olev pliiats nimetab sõidu ümber marsruuti muutmata. All olevad Märkmed toetavad Markdowni ning neil on vahekaardid Muuda ja Eelvaade.',
'Broneeringu päises olev pealkiri nimetab ühenduse ümber marsruuti muutmata. Selle märkmed kirjutatakse transpordivormis, mis avaneb nupuga Muuda.',
'help.guide.change-transit-route.tip.2':
'Sõidu allosas olev Kustuta eemaldab ühenduse reisist; päeva peatused jäävad alles.',
'Broneeringu allosas olev Kustuta eemaldab ühenduse reisist; päeva peatused jäävad alles.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Muuda ühe teelõigu liikumisviisi',
'help.guide.leg-travel-mode.goal':
@@ -2777,17 +2777,18 @@ const help: TranslationStrings = {
// edit-transport
'help.guide.edit-transport.title': 'Muuda või kustuta transport',
'help.guide.edit-transport.goal': 'Paranda kellaaega, platvormi või broneerimiskoodi või eemalda sõit reisist.',
'help.guide.edit-transport.step.1': 'Päevaplaanis on transport värviline rida peatuste vahel. Klõpsa sellel.',
'help.guide.edit-transport.step.1':
'Päevaplaanis on transport värviline rida peatuste vahel. Klõpsa sellel; avaneb selle broneering koos kellaaegade, marsruudi ja Broneerimiskoodiga.',
'help.guide.edit-transport.step.2':
'See on sama vorm, millega transport loodi, ja selle tiitliribal on Muuda transporti. Muuta saab kõike: tüüpi, marsruuti, päevi ja kellaaegu, Broneerimiskoodi, Olekut.',
'Broneeringu allosas olev Muuda avab sama vormi, millega transport loodi, ja selle tiitliribal on Muuda transporti. Muuta saab kõike: tüüpi, marsruuti, päevi ja kellaaegu, Broneerimiskoodi, Olekut.',
'help.guide.edit-transport.step.3':
'Lennu marsruut on lennujaamade ahel, rongi oma jaamade ahel. Lisa peatus lisab vahele veel ühe ja igal teelõigul on oma kellaajad ning oma lennu- või rongi number.',
'help.guide.edit-transport.step.4':
'Klõpsa Uuenda. Transpordi täielikuks eemaldamiseks kasuta vahekaardil Transport selle kaardil olevat prügikasti ja kinnita.',
'Klõpsa Uuenda. Transpordi täielikuks eemaldamiseks kasuta selle broneeringu allosas olevat nuppu Kustuta või vahekaardil Transport selle kaardil olevat prügikasti ja kinnita.',
'help.guide.edit-transport.result':
'Muudatus on näha kõikjal, kus transport ilmub: vahekaardil Transport, päeval, mil see toimub, ja selle joonel kaardil.',
'help.guide.edit-transport.tip.1':
'Sama vorm avaneb mõlemast kohast: pliiatsiga kaardil vahekaardil Transport ja transpordi enda realt päevaplaanis. Erandiks on planeeritud ühistranspordiühendus: selle rida avab sõiduvaate ja sealne Muuda üksikasju viib selle vormini.',
'Sama vorm avaneb mõlemast kohast: nupuga Muuda broneeringus, mille avab päevaplaani rida, ja pliiatsiga kaardil vahekaardil Transport. Ka planeeritud ühistranspordiühendus avaneb broneeringuna; seal otsib Muuda marsruuti uuesti ja Muuda viib selle vormini.',
'help.guide.edit-transport.tip.2':
'Transpordi teisele päevale viimiseks pole vormi üldse vaja: lohista selle rida ühelt päevakaardilt teisele.',
// transport-on-map
@@ -2857,13 +2858,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Klõpsa vahekaardi paremas ülanurgas nuppu Käsitsi broneering. Avaneb Uus broneering.',
'help.guide.create-booking.step.2':
'Vali Broneeringu tüüp vormi ülaosas olevast loendist, välja Reisijad kõrval. Majutus, Restoran, Üritus, Ekskursioon, Parkimine ja Muu on kuus tüüpi, mida see vahekaart loob, ja vorm muutub vastavalt valikule: ainult Majutus asendab kuupäevad päevade vahemikuga.',
'Klõpsa vormi päises pealkirja all oleval tüübinupul ja vali Broneeringu tüüp. Majutus, Restoran, Üritus, Ekskursioon, Parkimine ja Muu on kuus tüüpi, mida see vahekaart loob, ja vorm muutub vastavalt valikule: ainult Majutus asendab kuupäevad päevade vahemikuga.',
'help.guide.create-booking.step.3':
'Sisesta Pealkiri. See on ainus kohustuslik väli ja Lisa jääb passiivseks, kuni selles midagi on.',
'help.guide.create-booking.step.4':
'Määra Kuupäev ja Algusaeg ning, kui broneeringul on lõpp, Lõppkuupäev ja Lõpuaeg. Kalendrid pakuvad ainult reisi sisse jäävaid päevi ja kui lõpp pole pärast algust, näidatakse seda punasega ning Lisa on blokeeritud.',
'help.guide.create-booking.step.5':
'Sisesta kinnituselt Broneerimiskood ja määra Olek. Ootel või Kinnitatud määrab, kummasse jaotisse kaart satub.',
'Sisesta kinnituselt Broneerimiskood. Tüübi kõrval olev olekunupp näitab Ootel; klõps muudab selle olekuks Kinnitatud ja tagasi ning see määrab, kummasse jaotisse kaart satub.',
'help.guide.create-booking.step.6': 'Klõpsa Lisa.',
'help.guide.create-booking.result':
'Broneering on oma jaotises kaart koos tüübikiibi, kuupäevade ja koodiga ning kõik teised reisil osalejad näevad selle ilmumist.',
@@ -2914,7 +2915,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.goal':
'Märgi reisijad, keda broneering hõlmab, ja vaata seejärel ainult nende broneeringuid.',
'help.guide.booking-travelers.step.1':
'Ava broneering pliiatsiga. Reisijad asub vormi ülaosas, välja Broneeringu tüüp kõrval, ja näitab teksti Määra reisijad, kuni broneeringul pole kedagi.',
'Ava broneering pliiatsiga. Reisijad asub Broneerimiskoodi kõrval ja näitab teksti Määra reisijad, kuni broneeringul pole kedagi.',
'help.guide.booking-travelers.step.2':
'Klõpsa sellel ja vali inimesed, kellele see broneering on; nimega külalised on samuti loendis. Valitud inimene saab linnukese ja tema avatar kuvatakse väljal. Klõpsa nimel uuesti, et see eemaldada.',
'help.guide.booking-travelers.step.3': 'Klõpsa Uuenda.',
@@ -3008,7 +3009,7 @@ const help: TranslationStrings = {
'help.guide.edit-booking.step.1':
'Klõpsa kaardi päises pliiatsit. Avaneb Muuda broneeringut kõigi broneeringu andmetega.',
'help.guide.edit-booking.step.2': 'Muuda seda, mida vaja, siin Broneerimiskoodi, mille teenusepakkuja lõpuks saatis.',
'help.guide.edit-booking.step.3': 'Määra Olek väärtusele Kinnitatud.',
'help.guide.edit-booking.step.3': 'Klõpsa vormi päises nupul Ootel. See muutub olekuks Kinnitatud.',
'help.guide.edit-booking.step.4': 'Klõpsa Uuenda.',
'help.guide.edit-booking.result':
'Kaart liigub: kinnitatud broneering on jaotises Kinnitatud rohelise täpiga ja kõik reisil osalejad näevad seda liikumas.',
+4
View File
@@ -53,6 +53,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Näita kogu reisi',
'places.filterTracks': 'Rajad',
'places.filterByRating': 'Filtreeri hinnangu järgi',
'places.filterShow': 'Näita',
'places.clearSearch': 'Tühjenda otsing',
'places.yourRating': 'Sinu hinnang',
'places.notRated': 'Veel hindamata',
'places.search': 'Otsi kohti...',
@@ -72,6 +74,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Tänav, linn, riik',
'places.formLat': 'Laiuskraad (nt 48.8566)',
'places.formLng': 'Pikkuskraad (nt 2.3522)',
'places.formLatLabel': 'Laiuskraad',
'places.formLngLabel': 'Pikkuskraad',
'places.formCategory': 'Kategooria',
'places.noCategory': 'Kategooriata',
'places.newCategory': 'Uus kategooria',
+57
View File
@@ -66,6 +66,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Jalgratas',
'reservations.type.taxi': 'Takso',
'reservations.type.transit': 'Ühistransport',
'reservations.typeShort.transit': 'Ühistr.',
'reservations.type.transport_other': 'Muu',
'reservations.confirm.delete': 'Kas soovid kindlasti kustutada broneeringu "{name}"?',
'reservations.confirm.deleteTitle': 'Kas kustutada broneering?',
@@ -81,6 +82,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Asukoht / aadress',
'reservations.locationPlaceholder': 'Aadress, lennujaam, hotell...',
'reservations.confirmationCode': 'Broneerimiskood',
'reservations.routeLabel': 'Marsruut',
'reservations.segmentCodes': 'Teelõikude koodid',
'reservations.confirmationPlaceholder': 'Nt ABC12345',
'reservations.day': 'Päev',
'reservations.noDay': 'Päevata',
@@ -95,6 +98,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Kustutamine ebaõnnestus',
'reservations.confirm.remove': 'Kas eemaldada koha "{name}" broneering?',
'reservations.linkAssignment': 'Seo päevaplaani kirjega',
'reservations.linkedTo': 'Seotud',
'reservations.pickAssignment': 'Vali plaanist kirje...',
'reservations.noAssignment': 'Seoseta (eraldiseisev)',
'reservations.price': 'Hind',
@@ -181,5 +185,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Reisijad',
'reservations.travelers.assign': 'Määra reisijad',
'reservations.travelers.none': 'Reisil pole veel liikmeid.',
'reservations.status.switchTo': 'Määra olekuks {status}',
'reservations.view.label': 'Vaade',
'reservations.view.cards': 'Kaardid',
'reservations.view.list': 'Loend',
'reservations.view.timeline': 'Ajajoon',
'reservations.filter': 'Filtreeri',
'reservations.searchPlaceholder': 'Otsi',
'reservations.results': '{shown} {total}-st',
'reservations.resetFilters': 'Lähtesta filtrid',
'reservations.noMatches': 'Nende filtritega ei leitud midagi',
'reservations.viewOptions': 'Vaate valikud',
'reservations.resetView': 'Lähtesta vaade',
'reservations.group.label': 'Rühmita',
'reservations.group.status': 'Olek',
'reservations.group.day': 'Päev',
'reservations.group.type': 'Tüüp',
'reservations.group.none': 'Ära rühmita',
'reservations.transitApart': 'Ühistransport eraldi jaotisena',
'reservations.group.before': 'Enne reisi',
'reservations.group.after': 'Pärast reisi',
'reservations.group.undated': 'Kuupäevata',
'reservations.sort.label': 'Järjesta',
'reservations.sort.date': 'Kuupäev',
'reservations.sort.title': 'Pealkiri',
'reservations.sort.type': 'Tüüp',
'reservations.sort.status': 'Olek',
'reservations.sort.earlyFirst': 'Varasemad eespool',
'reservations.sort.lateFirst': 'Hilisemad eespool',
'reservations.sort.aToZ': 'A-st Z-ni',
'reservations.sort.zToA': 'Z-st A-ni',
'reservations.timeline.dayCount': '{count} päeva',
'reservations.timeline.zoom': 'Suum',
'reservations.timeline.trip': 'Reis',
'reservations.timeline.day': 'Päev',
'reservations.timeline.prevDay': 'Eelmine päev',
'reservations.timeline.nextDay': 'Järgmine päev',
'reservations.timeline.openDay': 'Ava {day} tundide kaupa',
'reservations.timeline.nothingThisDay': 'Sellel päeval pole midagi.',
'reservations.timeline.today': 'Täna',
'reservations.timeline.now': 'praegu',
'reservations.timeline.byType': 'Iga tüüp eraldi real',
'reservations.timeline.context': 'Näita teist vahekaarti',
'reservations.timeline.contextBookings': 'Broneeringud',
'reservations.timeline.contextTransports': 'Transport',
'reservations.timeline.noneDated': 'Ühelgi neist pole veel kuupäeva.',
'reservations.undated': 'Kuupäevata',
'reservations.nights': 'Ööd',
'reservations.start': 'Algus',
'reservations.end': 'Lõpp',
'reservations.rename': 'Nimeta ümber',
'reservations.copyCode': 'Kopeeri broneerimiskood',
'reservations.copyFailed': 'Kopeerimine ebaõnnestus',
'reservations.showInFiles': 'Näita failides',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Muuda transporti',
'transport.title': 'Transport',
'transport.addManual': 'Transport',
'transport.empty': 'Transporti veel pole',
};
export default transport;
+14 -6
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Total seulement — pas encore réglé',
'costs.tapToInclude': 'Toucher pour inclure',
'costs.amount': 'Montant',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Répartition',
'costs.splitEqually': 'À parts égales',
'costs.splitCustom': 'Personnalisé',
'costs.splitTicket': 'Reçu',
'costs.perPerson': '{amount} par personne',
'costs.payersHint': 'Cochez qui a payé et saisissez combien chacun a versé.',
'costs.splitHint.equally': 'Chaque personne cochée paie la même part.',
'costs.splitHint.custom': 'Saisissez la part de chaque personne ; ensemble, elles doivent faire le total.',
'costs.splitHint.ticket': 'Listez ce qui figurait sur le reçu et cochez qui a pris chaque article.',
'costs.filter.allCategories': 'Toutes les catégories',
'costs.filter.allDays': 'Tous les jours',
'costs.expensesCount': '{count} dépenses',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Reçus',
'costs.receiptsTitle': 'Reçus et factures',
'costs.attachReceipt': 'Joindre un reçu / une facture',
'costs.attach': 'Joindre',
'costs.scan.button': 'Scanner un reçu',
'costs.scan.reading': 'Lecture du reçu…',
'costs.scan.review': 'Vérifier la dépense',
'costs.scan.nothingRead': "Aucun reçu n'a pu être lu sur cette photo.",
'costs.scan.failed': 'Impossible de lancer la lecture du reçu.',
'costs.scan.title': 'Scanner un reçu',
'costs.scan.accepted': "Une photo d'un seul reçu (JPG, PNG ou WEBP, 10 Mo max). Le modèle d'IA la lit en arrière-plan, puis vous vérifiez la dépense avant de l'enregistrer.",
'costs.scan.accepted':
"Une photo d'un seul reçu (JPG, PNG ou WEBP, 10 Mo max). Le modèle d'IA la lit en arrière-plan, puis vous vérifiez la dépense avant de l'enregistrer.",
'costs.scan.dropHere': 'Déposez la photo du reçu ici, ou cliquez pour en choisir ou en prendre une',
'costs.scan.dropActive': 'Déposez la photo pour la scanner',
'costs.scan.start': 'Scanner',
@@ -168,6 +175,7 @@ const budget: TranslationStrings = {
'costs.noReceipts': 'Aucun reçu joint',
'costs.deleteReceipt': 'Supprimer le reçu',
'costs.viewReceipt': 'Voir le reçu',
'costs.receiptLeftBehind': 'Échec de la sauvegarde, {count} reçus téléversés sont toujours là. Supprimez-les dans les Fichiers.',
'costs.receiptLeftBehind':
'Échec de la sauvegarde, {count} reçus téléversés sont toujours là. Supprimez-les dans les Fichiers.',
};
export default budget;
+2 -2
View File
@@ -78,8 +78,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Tous les lieux attribués',
'dayplan.mobile.noMatch': 'Aucun résultat',
'dayplan.mobile.createNew': 'Créer un nouveau lieu',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Déplier tous les jours', // en-fallback
'dayplan.collapseAll': 'Replier tous les jours', // en-fallback
'dayplan.reorderDays': 'Réorganiser les jours',
'dayplan.reorderTitle': 'Réorganiser les jours',
'dayplan.reorderHint': "Les lieux, notes et réservations d'un jour le suivent.",
+24 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'fr' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Aide et documentation',
'help.search': 'Rechercher dans la documentation…',
'help.contents': 'Sommaire',
'help.noResults': 'Aucune page correspondante.',
'help.errorTitle': 'Impossible de charger cette page',
'help.errorBody': 'Le contenu de l’aide provient du wiki TREK. Vérifiez votre connexion et réessayez.',
// center
'help.center.button': 'Aide pour cet écran',
@@ -1066,7 +1066,7 @@ const help: TranslationStrings = {
'Travel & map : les itinéraires de réservation toujours sur la carte, la pastille Explorer les lieux, l’optimisation de l’itinéraire depuis votre hébergement, les codes de réservation masqués et les itinéraires de réservation étiquetés.',
'help.ctx.settings-display.bullet.3':
'Démarrage : si TREK s’ouvre sur le tableau de bord ou sur le voyage en cours, et quel onglet d’un voyage vient en premier.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Apparence',
'help.ctx.settings-appearance.summary':
'L’apparence de TREK sur ce compte : clair ou sombre, la couleur d’accent, le verre et le mouvement, la taille du texte, et les widgets que le tableau de bord affiche. Tout s’applique en direct, sur chaque appareil où vous vous connectez.',
'help.ctx.settings-appearance.bullet.1':
@@ -2373,9 +2373,9 @@ const help: TranslationStrings = {
'Ouvrez l’étape à laquelle appartient la réservation. La fiche montre un bandeau avec Confirmée ou En attente et le nom de la réservation.',
'help.guide.place-booking.step.2':
'Le bandeau porte la Date, l’Heure et le Code de réservation, ainsi que les notes de la réservation.',
'help.guide.place-booking.step.3': 'Cliquez sur le bandeau. Le formulaire de la réservation s’ouvre dessus.',
'help.guide.place-booking.step.3': 'Cliquez sur le bandeau. La réservation s’ouvre par-dessus la carte.',
'help.guide.place-booking.step.4':
'Lier à l’affectation du jour est ce qui accroche une réservation à une étape, et ici il nomme déjà celle-ci. Refermez le formulaire.',
'Modifier, au pied de la réservation, ouvre son propre formulaire. Lier à l’affectation du jour y est ce qui accroche une réservation à une étape, et ici il nomme déjà celle-ci. Refermez le formulaire.',
'help.guide.place-booking.step.5':
'Une nouvelle réservation pour une étape commence dans la colonne des jours : survolez l’étape et cliquez sur le + à son bout. Le formulaire s’ouvre en Nouvelle réservation, déjà liée à elle.',
'help.guide.place-booking.result':
@@ -2741,7 +2741,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'La couleur dit où en est une réservation : une ligne verte est confirmée, une ligne ambre est encore en attente. Les hébergements ne sont pas dans cette liste, ils ont leur propre bloc en dessous.',
'help.guide.day-bookings.step.4':
'La liste ne fait que relever les réservations. Une réservation se crée et se modifie dans l’onglet Réservations.',
'Cliquez sur une ligne et la réservation s’ouvre. Modifier, à son pied, la change ; les nouvelles réservations se créent dans l’onglet Réservations.',
'help.guide.day-bookings.result':
'Tout ce qui est daté du jour, et tout ce qui est rattaché à l’une de ses étapes, est dans cette seule liste.',
'help.guide.day-bookings.tip.1':
@@ -3296,13 +3296,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Cliquez sur Réservation manuelle en haut à droite de l’onglet. Nouvelle réservation s’ouvre.',
'help.guide.create-booking.step.2':
'Choisissez le Type de réservation dans la liste en haut du formulaire, à côté de Voyageurs. Hébergement, Restaurant, Événement, Visite, Parking et Autre sont les six que cet onglet crée, et le formulaire change avec le choix : seul Hébergement échange ses dates contre une plage de jours.',
'Cliquez sur la pastille de type sous le titre, dans l’en-tête du formulaire, et choisissez le Type de réservation. Hébergement, Restaurant, Événement, Visite, Parking et Autre sont les six que cet onglet crée, et le formulaire change avec le choix : seul Hébergement échange ses dates contre une plage de jours.',
'help.guide.create-booking.step.3':
'Tapez le Titre. C’est le seul champ sur lequel le formulaire insiste, et Ajouter reste mort tant qu’il est vide.',
'help.guide.create-booking.step.4':
'Réglez Date et Heure de début, puis Date de fin et Heure de fin si la réservation a une fin. Les calendriers ne proposent que les jours à l’intérieur du voyage, et une fin qui n’est pas après le début le dit en rouge et bloque Ajouter.',
'help.guide.create-booking.step.5':
'Entrez le Code de réservation de la confirmation et réglez Statut. En attente ou Confirmée décide dans laquelle des deux sections la carte atterrit.',
'Entrez le Code de réservation de la confirmation. La pastille de statut à côté du type affiche En attente ; un clic la fait passer à Confirmée et inversement, et c’est ce qui décide dans laquelle des deux sections la carte atterrit.',
'help.guide.create-booking.step.6': 'Cliquez sur Ajouter.',
'help.guide.create-booking.result':
'La réservation est une carte dans sa section, avec sa pastille de sorte, ses dates et son code, et tous les autres du voyage la voient apparaître.',
@@ -3353,7 +3353,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Dire pour qui est une réservation',
'help.guide.booking-travelers.goal': 'Marquez les voyageurs que couvre une réservation, puis ne voyez que les leurs.',
'help.guide.booking-travelers.step.1':
'Ouvrez la réservation avec le crayon. Voyageurs se trouve en haut du formulaire, à côté de Type de réservation, et affiche Assigner des voyageurs tant que personne n’est sur la réservation.',
'Ouvrez la réservation avec le crayon. Voyageurs se trouve à côté du Code de réservation, et affiche Assigner des voyageurs tant que personne n’est sur la réservation.',
'help.guide.booking-travelers.step.2':
'Cliquez dessus et choisissez les personnes pour qui est cette réservation ; les invités nommés sont aussi dans la liste. Une personne choisie reçoit une coche et son avatar dans le champ. Cliquez de nouveau sur le nom pour l’enlever.',
'help.guide.booking-travelers.step.3': 'Cliquez sur Mettre à jour.',
@@ -3449,7 +3449,8 @@ const help: TranslationStrings = {
'Cliquez sur le crayon dans l’en-tête de la carte. Modifier la réservation s’ouvre avec tout ce que la réservation sait.',
'help.guide.edit-booking.step.2':
'Changez ce qui doit changer, ici le Code de réservation que le prestataire a fini par envoyer.',
'help.guide.edit-booking.step.3': 'Mettez Statut sur Confirmée.',
'help.guide.edit-booking.step.3':
'Cliquez sur la pastille En attente dans l’en-tête du formulaire. Elle passe à Confirmée.',
'help.guide.edit-booking.step.4': 'Cliquez sur Mettre à jour.',
'help.guide.edit-booking.result':
'La carte se déplace : une réservation confirmée se tient dans la section Confirmée derrière un point vert, et tout le monde dans le voyage la voit bouger.',
@@ -3744,19 +3745,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Lire la liaison arrêt par arrêt, la renommer, ou rechercher de nouveau l’itinéraire.',
'help.guide.change-transit-route.step.1':
'Dans l’onglet Transports, les liaisons planifiées sont sous Transports en commun automatisés. Cliquez sur la carte.',
'Dans l’onglet Transports, les liaisons planifiées sont sous Transports en commun automatisés. Cliquez sur la carte ; la liaison s’ouvre comme une réservation.',
'help.guide.change-transit-route.step.2':
'Durée, Correspondances et Marche sont en haut. Itinéraire en dessous parcourt la liaison arrêt par arrêt, avec les voies et les marches entre les lignes.',
'help.guide.change-transit-route.step.3':
"Modifier l'itinéraire relance la recherche, déjà remplie avec les deux extrémités de cette liaison et son jour.",
"Modifier l'itinéraire, au pied de la réservation, relance la recherche, déjà remplie avec les deux extrémités de cette liaison et son jour.",
'help.guide.change-transit-route.step.4':
"Choisissez une autre liaison et cliquez sur Ajouter au jour ; elle prend la place de l’ancienne. Modifier les détails, à côté de Modifier l'itinéraire, ouvre au contraire le formulaire de transport ordinaire, où vivent le Code de réservation, le Statut, les voyageurs et les fichiers.",
'Choisissez une autre liaison et cliquez sur Ajouter au jour ; elle prend la place de l’ancienne. Modifier, à l’autre bout de la même barre, ouvre au contraire le formulaire de transport ordinaire, où vivent le Code de réservation, le Statut, les voyageurs, les notes et les fichiers.',
'help.guide.change-transit-route.result':
'Le trajet porte le nouvel itinéraire, et sa carte dans l’onglet Transports montre les nouvelles lignes et les nouvelles heures.',
'help.guide.change-transit-route.tip.1':
'Le titre du trajet n’est que du texte : le crayon à côté le renomme sans toucher à l’itinéraire. Notes en dessous accepte le markdown et a un onglet Modifier et un onglet Aperçu.',
'Le titre dans l’en-tête de la réservation renomme la liaison sans toucher à l’itinéraire. Ses notes s’écrivent dans le formulaire de transport, derrière Modifier.',
'help.guide.change-transit-route.tip.2':
'Supprimer au pied du trajet sort la liaison du voyage ; le jour garde ses étapes.',
'Supprimer au pied de la réservation sort la liaison du voyage ; le jour garde ses étapes.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Changer la façon de parcourir un tronçon',
'help.guide.leg-travel-mode.goal':
@@ -3782,17 +3783,17 @@ const help: TranslationStrings = {
'help.guide.edit-transport.goal':
'Corriger une heure, un quai ou un code de réservation, ou sortir le trajet du voyage.',
'help.guide.edit-transport.step.1':
'Dans le plan du jour, un transport est une ligne colorée entre les étapes. Cliquez dessus.',
'Dans le plan du jour, un transport est une ligne colorée entre les étapes. Cliquez dessus ; sa réservation s’ouvre avec les horaires, l’itinéraire et le Code de réservation.',
'help.guide.edit-transport.step.2':
'Le formulaire est celui qui l’a créé, avec Modifier le transport dans sa barre de titre. Tout peut changer : le type, l’itinéraire, les jours et les heures, le Code de réservation, le Statut.',
'Modifier, au pied de la réservation, ouvre le formulaire qui l’a créé, avec Modifier le transport dans sa barre de titre. Tout peut changer : le type, l’itinéraire, les jours et les heures, le Code de réservation, le Statut.',
'help.guide.edit-transport.step.3':
'L’itinéraire d’un vol est une chaîne d’aéroports, celui d’un train une chaîne de gares. Ajouter une escale en met une autre au milieu, et chaque tronçon garde ses propres heures et son propre numéro de vol ou de train.',
'help.guide.edit-transport.step.4':
'Cliquez sur Mettre à jour. Pour retirer complètement le transport, utilisez la corbeille sur sa carte dans l’onglet Transports et confirmez.',
'Cliquez sur Mettre à jour. Pour retirer complètement le transport, utilisez Supprimer au pied de sa réservation, ou la corbeille sur sa carte dans l’onglet Transports, et confirmez.',
'help.guide.edit-transport.result':
'Le changement se voit partout où le transport apparaît : l’onglet Transports, le jour où il roule, et sa ligne sur la carte.',
'help.guide.edit-transport.tip.1':
'Le même formulaire s’ouvre des deux côtés, par le crayon sur la carte dans l’onglet Transports et par la ligne propre du transport dans le plan du jour. Une liaison en transports en commun planifiée fait exception : sa ligne ouvre la vue du trajet, et Modifier les détails y mène à ce formulaire.',
"Le même formulaire s’ouvre des deux côtés : par Modifier dans la réservation qu’ouvre une ligne du plan du jour, et par le crayon sur la carte dans l’onglet Transports. Une liaison en transports en commun planifiée s’ouvre elle aussi comme une réservation ; Modifier l'itinéraire y relance la recherche, et Modifier mène à ce formulaire.",
'help.guide.edit-transport.tip.2':
'Déplacer un transport vers un autre jour n’a pas besoin du formulaire du tout : glissez sa ligne d’une carte de jour à la suivante.',
// transport-on-map
+9 -4
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Sélectionnez au moins un type.',
'places.selectionCount': '{count} sélectionné(s)',
'places.deleteSelected': 'Supprimer la sélection',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Changer de catégorie',
'places.categoryChanged': '{count} lieux mis à jour',
'places.kmlKmzImported': '{count} lieux importés depuis KMZ/KML',
'places.urlResolved': "Lieu importé depuis l'URL",
'places.importList': 'Import de liste',
@@ -37,7 +37,8 @@ const places: TranslationStrings = {
'places.importGoogleList': 'Liste Google',
'places.importNaverList': 'Liste Naver',
'places.googleListHint': 'Collez un lien de liste Google Maps partagée pour importer tous les lieux.',
'places.googleDirHint': 'Un lien d’itinéraire fonctionne aussi : ses étapes deviennent des lieux, dans l’ordre du trajet.',
'places.googleDirHint':
'Un lien d’itinéraire fonctionne aussi : ses étapes deviennent des lieux, dans l’ordre du trajet.',
'places.googleListImported': '{count} lieux importés depuis "{list}"',
'places.googleListError': "Impossible d'importer la liste Google Maps",
'places.naverListHint': 'Collez un lien de liste Naver Maps partagée pour importer tous les lieux.',
@@ -52,6 +53,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Afficher tout le voyage',
'places.filterTracks': 'Traces',
'places.filterByRating': 'Filtrer par note',
'places.filterShow': 'Afficher',
'places.clearSearch': 'Effacer la recherche',
'places.yourRating': 'Ta note',
'places.notRated': 'Pas encore noté',
'places.search': 'Rechercher des lieux…',
@@ -71,6 +74,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Rue, ville, pays',
'places.formLat': 'Latitude (ex. 48.8566)',
'places.formLng': 'Longitude (ex. 2.3522)',
'places.formLatLabel': 'Latitude',
'places.formLngLabel': 'Longitude',
'places.formCategory': 'Catégorie',
'places.noCategory': 'Sans catégorie',
'places.newCategory': 'Nouvelle catégorie',
@@ -89,7 +94,7 @@ const places: TranslationStrings = {
'places.reservationNotesPlaceholder': 'Notes de réservation, numéro de confirmation…',
'places.mapsSearchPlaceholder': 'Rechercher des lieux…',
'places.mapsSearchError': 'La recherche de lieu a échoué.',
'places.searchGoogleInstead': 'Ce n\'est pas le bon lieu ? Rechercher sur Google',
'places.searchGoogleInstead': "Ce n'est pas le bon lieu ? Rechercher sur Google",
'places.loadingDetails': 'Chargement des détails du lieu…',
'places.osmHint':
'Recherche via OpenStreetMap (pas de photos, horaires ni notes). Ajoutez une clé API Google dans les paramètres pour plus de détails.',
+60 -3
View File
@@ -66,6 +66,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Vélo',
'reservations.type.taxi': 'Taxi',
'reservations.type.transit': 'Transports en commun',
'reservations.typeShort.transit': 'Transp. en commun',
'reservations.type.transport_other': 'Autre',
'reservations.confirm.delete': 'Voulez-vous vraiment supprimer la réservation « {name} » ?',
'reservations.confirm.deleteTitle': 'Supprimer la réservation ?',
@@ -81,6 +82,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Lieu / Adresse',
'reservations.locationPlaceholder': 'Adresse, aéroport, hôtel…',
'reservations.confirmationCode': 'Code de réservation',
'reservations.routeLabel': 'Itinéraire',
'reservations.segmentCodes': 'Codes par tronçon',
'reservations.confirmationPlaceholder': 'ex. ABC12345',
'reservations.day': 'Jour',
'reservations.noDay': 'Aucun jour',
@@ -95,6 +98,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Échec de la suppression',
'reservations.confirm.remove': 'Supprimer la réservation pour « {name} » ?',
'reservations.linkAssignment': "Lier à l'affectation du jour",
'reservations.linkedTo': 'Lié à',
'reservations.pickAssignment': 'Sélectionnez une affectation de votre plan…',
'reservations.noAssignment': 'Aucun lien (autonome)',
'reservations.price': 'Prix',
@@ -137,9 +141,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count} réservation(s) trouvée(s)',
'reservations.import.previewEmpty': "Aucune réservation n'a pu être extraite des fichiers envoyés.",
'reservations.import.removeItem': 'Supprimer',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'À vérifier',
'reservations.import.tryAi': 'Essayer l’analyse par IA',
'reservations.import.aiParsing': 'Analyse par IA…',
'reservations.import.confirm': 'Importer {count} réservation(s)',
'reservations.import.back': 'Retour',
'reservations.import.success': '{count} réservation(s) importée(s)',
@@ -185,5 +189,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Voyageurs',
'reservations.travelers.assign': 'Assigner des voyageurs',
'reservations.travelers.none': 'Aucun participant au voyage pour le moment.',
'reservations.status.switchTo': 'Passer à {status}',
'reservations.view.label': 'Vue',
'reservations.view.cards': 'Cartes',
'reservations.view.list': 'Liste',
'reservations.view.timeline': 'Chronologie',
'reservations.filter': 'Filtrer',
'reservations.searchPlaceholder': 'Rechercher',
'reservations.results': '{shown} sur {total}',
'reservations.resetFilters': 'Réinitialiser les filtres',
'reservations.noMatches': 'Aucun résultat pour ces filtres',
'reservations.viewOptions': "Options d'affichage",
'reservations.resetView': "Réinitialiser l'affichage",
'reservations.group.label': 'Grouper par',
'reservations.group.status': 'Statut',
'reservations.group.day': 'Jour',
'reservations.group.type': 'Type',
'reservations.group.none': 'Sans regroupement',
'reservations.transitApart': 'Transports en commun dans une section à part',
'reservations.group.before': 'Avant le voyage',
'reservations.group.after': 'Après le voyage',
'reservations.group.undated': 'Sans date',
'reservations.sort.label': 'Trier par',
'reservations.sort.date': 'Date',
'reservations.sort.title': 'Titre',
'reservations.sort.type': 'Type',
'reservations.sort.status': 'Statut',
'reservations.sort.earlyFirst': "Plus tôt d'abord",
'reservations.sort.lateFirst': "Plus tard d'abord",
'reservations.sort.aToZ': 'De A à Z',
'reservations.sort.zToA': 'De Z à A',
'reservations.timeline.dayCount': '{count} jours',
'reservations.timeline.zoom': 'Zoom',
'reservations.timeline.trip': 'Voyage',
'reservations.timeline.day': 'Jour',
'reservations.timeline.prevDay': 'Jour précédent',
'reservations.timeline.nextDay': 'Jour suivant',
'reservations.timeline.openDay': 'Ouvrir {day} heure par heure',
'reservations.timeline.nothingThisDay': 'Rien ce jour-là.',
'reservations.timeline.today': "Aujourd'hui",
'reservations.timeline.now': 'maintenant',
'reservations.timeline.byType': 'Une ligne par type',
'reservations.timeline.context': "Afficher l'autre onglet",
'reservations.timeline.contextBookings': 'Réservations',
'reservations.timeline.contextTransports': 'Transports',
'reservations.timeline.noneDated': "Aucune n'a encore de date.",
'reservations.undated': 'Sans date',
'reservations.nights': 'Nuits',
'reservations.start': 'Début',
'reservations.end': 'Fin',
'reservations.rename': 'Renommer',
'reservations.copyCode': 'Copier le code de réservation',
'reservations.copyFailed': 'Impossible de copier',
'reservations.showInFiles': 'Afficher dans les fichiers',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Modifier le transport',
'transport.title': 'Transports',
'transport.addManual': 'Transport',
'transport.empty': 'Aucun transport pour le moment',
};
export default transport;
+14 -6
View File
@@ -136,10 +136,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Μόνο στο σύνολο — δεν έχει διακανονιστεί',
'costs.tapToInclude': 'Πατήστε για προσθήκη',
'costs.amount': 'Ποσό',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Διαμοιρασμός',
'costs.splitEqually': 'Εξίσου',
'costs.splitCustom': 'Προσαρμογή',
'costs.splitTicket': 'Απόδειξη',
'costs.perPerson': '{amount} ανά άτομο',
'costs.payersHint': 'Επιλέξτε ποιος πλήρωσε και γράψτε πόσα έβαλε ο καθένας.',
'costs.splitHint.equally': 'Όλοι οι επιλεγμένοι πληρώνουν το ίδιο μερίδιο.',
'costs.splitHint.custom': 'Γράψτε το μερίδιο κάθε ατόμου· μαζί πρέπει να φτάνουν το σύνολο.',
'costs.splitHint.ticket': 'Καταγράψτε τι είχε η απόδειξη και σημειώστε ποιος πήρε κάθε είδος.',
'costs.filter.allCategories': 'Όλες οι κατηγορίες',
'costs.filter.allDays': 'Όλες οι ημέρες',
'costs.expensesCount': '{count} έξοδα',
@@ -155,13 +160,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Αποδείξεις',
'costs.receiptsTitle': 'Αποδείξεις & Τιμολόγια',
'costs.attachReceipt': 'Επισύναψη απόδειξης / τιμολογίου',
'costs.attach': 'Επισύναψη',
'costs.scan.button': 'Σάρωση απόδειξης',
'costs.scan.reading': 'Ανάγνωση της απόδειξης…',
'costs.scan.review': 'Έλεγχος εξόδου',
'costs.scan.nothingRead': 'Δεν ήταν δυνατή η ανάγνωση απόδειξης από αυτή τη φωτογραφία.',
'costs.scan.failed': 'Δεν ήταν δυνατή η έναρξη ανάγνωσης της απόδειξης.',
'costs.scan.title': 'Σάρωση απόδειξης',
'costs.scan.accepted': 'Φωτογραφία μίας απόδειξης (JPG, PNG ή WEBP, έως 10 MB). Το μοντέλο ΤΝ τη διαβάζει στο παρασκήνιο και μετά ελέγχετε το έξοδο πριν αποθηκευτεί.',
'costs.scan.accepted':
'Φωτογραφία μίας απόδειξης (JPG, PNG ή WEBP, έως 10 MB). Το μοντέλο ΤΝ τη διαβάζει στο παρασκήνιο και μετά ελέγχετε το έξοδο πριν αποθηκευτεί.',
'costs.scan.dropHere': 'Αφήστε εδώ τη φωτογραφία της απόδειξης ή κάντε κλικ για να επιλέξετε ή να τραβήξετε μία',
'costs.scan.dropActive': 'Αφήστε τη φωτογραφία για σάρωση',
'costs.scan.start': 'Σάρωση',
@@ -169,6 +176,7 @@ const budget: TranslationStrings = {
'costs.noReceipts': 'Δεν υπάρχουν συνημμένες αποδείξεις',
'costs.deleteReceipt': 'Αφαίρεση απόδειξης',
'costs.viewReceipt': 'Προβολή απόδειξης',
'costs.receiptLeftBehind': 'Η αποθήκευση απέτυχε και {count} ανεβασμένες αποδείξεις παραμένουν. Διαγράψτε τες στην καρτέλα Αρχεία.',
'costs.receiptLeftBehind':
'Η αποθήκευση απέτυχε και {count} ανεβασμένες αποδείξεις παραμένουν. Διαγράψτε τες στην καρτέλα Αρχεία.',
};
export default budget;
+24 -23
View File
@@ -2,12 +2,13 @@ import type { TranslationStrings } from '../types';
// English fallback until 'gr' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Βοήθεια και τεκμηρίωση',
'help.search': 'Αναζήτηση στην τεκμηρίωση…',
'help.contents': 'Περιεχόμενα',
'help.noResults': 'Δεν βρέθηκαν σελίδες.',
'help.errorTitle': 'Δεν ήταν δυνατή η φόρτωση της σελίδας',
'help.errorBody':
'Το περιεχόμενο της βοήθειας προέρχεται από το wiki του TREK. Ελέγξτε τη σύνδεσή σας και δοκιμάστε ξανά.',
// center
'help.center.button': 'Βοήθεια για αυτή την οθόνη',
@@ -1073,7 +1074,7 @@ const help: TranslationStrings = {
'Travel & map: διαδρομές κρατήσεων πάντα στον χάρτη, το κουμπί Εξερεύνηση μερών, βελτιστοποίηση διαδρομής από το κατάλυμά σας, θολωμένοι κωδικοί κρατήσεων και διαδρομές κρατήσεων με ετικέτες.',
'help.ctx.settings-display.bullet.3':
'Εκκίνηση: αν το TREK ανοίγει στον πίνακα ή στο ενεργό ταξίδι, και ποια καρτέλα ενός ταξιδιού εμφανίζεται πρώτη.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Εμφάνιση',
'help.ctx.settings-appearance.summary':
'Πώς φαίνεται το TREK σε αυτόν τον λογαριασμό: φωτεινό ή σκούρο, το χρώμα έμφασης, γυαλί και κίνηση, μέγεθος κειμένου, και ποια widgets δείχνει ο πίνακας. Όλα εφαρμόζονται ζωντανά, σε κάθε συσκευή όπου συνδέεστε.',
'help.ctx.settings-appearance.bullet.1':
@@ -2380,9 +2381,9 @@ const help: TranslationStrings = {
'Ανοίξτε τη στάση στην οποία ανήκει η κράτηση. Η κάρτα δείχνει μια λωρίδα με Επιβεβαιωμένο ή Εκκρεμές και το όνομα της κράτησης.',
'help.guide.place-booking.step.2':
'Η λωρίδα κουβαλά την Ημερομηνία, την Ώρα και τον Κωδικό Κράτησης, και όποιες σημειώσεις έχει η κράτηση.',
'help.guide.place-booking.step.3': 'Κάντε κλικ στη λωρίδα. Η ίδια η φόρμα της κράτησης ανοίγει πάνω της.',
'help.guide.place-booking.step.3': 'Κάντε κλικ στη λωρίδα. Η κράτηση ανοίγει πάνω από τον χάρτη.',
'help.guide.place-booking.step.4':
'Το Σύνδεση με ανάθεση ημέρας είναι αυτό που καρφιτσώνει μια κράτηση σε μια στάση, και εδώ ονομάζει ήδη αυτήν. Κλείστε ξανά τη φόρμα.',
'Η Επεξεργασία στο κάτω μέρος της κράτησης ανοίγει τη δική της φόρμα. Εκεί, το Σύνδεση με ανάθεση ημέρας είναι αυτό που καρφιτσώνει μια κράτηση σε μια στάση, και εδώ ονομάζει ήδη αυτήν. Κλείστε ξανά τη φόρμα.',
'help.guide.place-booking.step.5':
'Μια νέα κράτηση για μια στάση ξεκινά στη στήλη ημερών: περάστε πάνω από τη στάση και κάντε κλικ στο + στο τέλος της. Η φόρμα ανοίγει ως Νέα Κράτηση, ήδη συνδεδεμένη με αυτήν.',
'help.guide.place-booking.result':
@@ -2749,7 +2750,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'Το χρώμα λέει πού βρίσκεται μια κράτηση: η πράσινη γραμμή είναι επιβεβαιωμένη, η κεχριμπαρένια ακόμη εκκρεμής. Τα ξενοδοχεία δεν είναι σε αυτή τη λίστα, έχουν το δικό τους μπλοκ πιο κάτω.',
'help.guide.day-bookings.step.4':
'Η λίστα απλώς διαβάζει τις κρατήσεις. Μια κράτηση δημιουργείται και αλλάζει στην καρτέλα Κρατήσεις.',
'Κάντε κλικ σε μια γραμμή και η κράτηση ανοίγει. Η Επεξεργασία στο κάτω μέρος της την αλλάζει· οι νέες κρατήσεις δημιουργούνται στην καρτέλα Κρατήσεις.',
'help.guide.day-bookings.result':
'Όλα όσα έχουν ημερομηνία την ημέρα, και όλα όσα κρέμονται από μία από τις στάσεις της, βρίσκονται σε αυτή τη μία λίστα.',
'help.guide.day-bookings.tip.1':
@@ -3309,13 +3310,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Κάντε κλικ στο Χειροκίνητη Κράτηση πάνω δεξιά στην καρτέλα. Ανοίγει η Νέα Κράτηση.',
'help.guide.create-booking.step.2':
'Διαλέξτε τον Τύπο Κράτησης από τη λίστα στο πάνω μέρος της φόρμας, δίπλα στους Ταξιδιώτες. Το Κατάλυμα, το Εστιατόριο, η Εκδήλωση, η Περιήγηση, η Στάθμευση και το Άλλο είναι τα έξι που φτιάχνει αυτή η καρτέλα, και η φόρμα αλλάζει μαζί με την επιλογή: μόνο το Κατάλυμα ανταλλάσσει τις ημερομηνίες του με ένα εύρος ημερών.',
'Κάντε κλικ στην ετικέτα τύπου κάτω από τον τίτλο, στην κεφαλίδα της φόρμας, και διαλέξτε τον Τύπο Κράτησης. Το Κατάλυμα, το Εστιατόριο, η Εκδήλωση, η Περιήγηση, η Στάθμευση και το Άλλο είναι τα έξι που φτιάχνει αυτή η καρτέλα, και η φόρμα αλλάζει μαζί με την επιλογή: μόνο το Κατάλυμα ανταλλάσσει τις ημερομηνίες του με ένα εύρος ημερών.',
'help.guide.create-booking.step.3':
'Γράψτε τον Τίτλο. Είναι το μοναδικό πεδίο στο οποίο επιμένει η φόρμα, και η Προσθήκη μένει νεκρή όσο δεν έχει κάτι μέσα.',
'help.guide.create-booking.step.4':
'Ορίστε την Ημερομηνία και την Ώρα έναρξης, καθώς και την Ημερομηνία λήξης και την Ώρα λήξης αν η κράτηση έχει τέλος. Τα ημερολόγια προσφέρουν μόνο ημέρες μέσα στο ταξίδι, και ένα τέλος που δεν είναι μετά την έναρξη το λέει με κόκκινο και μπλοκάρει την Προσθήκη.',
'help.guide.create-booking.step.5':
'Βάλτε τον Κωδικό Κράτησης από την επιβεβαίωση και ορίστε την Κατάσταση. Το Εκκρεμές ή το Επιβεβαιωμένο αποφασίζει σε ποια από τις δύο ενότητες θα προσγειωθεί η κάρτα.',
'Βάλτε τον Κωδικό Κράτησης από την επιβεβαίωση. Η ετικέτα κατάστασης δίπλα στον τύπο γράφει Εκκρεμές· ένα κλικ την αλλάζει σε Επιβεβαιωμένο και πίσω, και αυτό αποφασίζει σε ποια από τις δύο ενότητες θα προσγειωθεί η κάρτα.',
'help.guide.create-booking.step.6': 'Κάντε κλικ στην Προσθήκη.',
'help.guide.create-booking.result':
'Η κράτηση είναι μια κάρτα στην ενότητά της με την ετικέτα τύπου της, τις ημερομηνίες της και τον κωδικό της, και όλοι οι άλλοι στο ταξίδι τη βλέπουν να εμφανίζεται.',
@@ -3367,7 +3368,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.goal':
'Σημειώστε τους ταξιδιώτες που καλύπτει μια κράτηση, και μετά δείτε μόνο τις δικές τους.',
'help.guide.booking-travelers.step.1':
'Ανοίξτε την κράτηση με το μολύβι. Οι Ταξιδιώτες βρίσκονται στο πάνω μέρος της φόρμας, δίπλα στον Τύπο Κράτησης, και γράφουν Ανάθεση ταξιδιωτών όσο δεν υπάρχει κανείς στην κράτηση.',
'Ανοίξτε την κράτηση με το μολύβι. Οι Ταξιδιώτες βρίσκονται δίπλα στον Κωδικό Κράτησης, και γράφουν Ανάθεση ταξιδιωτών όσο δεν υπάρχει κανείς στην κράτηση.',
'help.guide.booking-travelers.step.2':
'Κάντε κλικ εκεί και διαλέξτε τα άτομα για τα οποία είναι αυτή η κράτηση· οι επώνυμοι επισκέπτες είναι κι αυτοί στη λίστα. Όποιος επιλεγεί παίρνει ένα σημάδι επιλογής και το άβατάρ του μπαίνει στο πεδίο. Κάντε ξανά κλικ στο όνομα για να τον αφαιρέσετε.',
'help.guide.booking-travelers.step.3': 'Κάντε κλικ στην Ενημέρωση.',
@@ -3465,7 +3466,7 @@ const help: TranslationStrings = {
'Κάντε κλικ στο μολύβι στην κεφαλίδα της κάρτας. Η Επεξεργασία Κράτησης ανοίγει με όλα όσα ξέρει η κράτηση.',
'help.guide.edit-booking.step.2':
'Αλλάξτε ό,τι χρειάζεται αλλαγή, εδώ τον Κωδικό Κράτησης που έστειλε επιτέλους ο πάροχος.',
'help.guide.edit-booking.step.3': 'Βάλτε την Κατάσταση σε Επιβεβαιωμένο.',
'help.guide.edit-booking.step.3': 'Κάντε κλικ στην ετικέτα Εκκρεμές στην κεφαλίδα της φόρμας. Γίνεται Επιβεβαιωμένο.',
'help.guide.edit-booking.step.4': 'Κάντε κλικ στην Ενημέρωση.',
'help.guide.edit-booking.result':
'Η κάρτα μετακομίζει: μια επιβεβαιωμένη κράτηση στέκεται στην ενότητα Επιβεβαιωμένο πίσω από μια πράσινη κουκκίδα, και όλοι στο ταξίδι τη βλέπουν να μετακομίζει.',
@@ -3761,19 +3762,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Διαβάστε τη σύνδεση στάση προς στάση, μετονομάστε την, ή αναζητήστε ξανά τη διαδρομή.',
'help.guide.change-transit-route.step.1':
'Στην καρτέλα Μεταφορές οι σχεδιασμένες συνδέσεις κάθονται κάτω από τις Αυτόματες δημόσιες συγκοινωνίες. Κάντε κλικ στην κάρτα.',
'Στην καρτέλα Μεταφορές οι σχεδιασμένες συνδέσεις κάθονται κάτω από τις Αυτόματες δημόσιες συγκοινωνίες. Κάντε κλικ στην κάρτα· η σύνδεση ανοίγει ως κράτηση.',
'help.guide.change-transit-route.step.2':
'Η Διάρκεια, οι Μετεπιβιβάσεις και το Περπάτημα κάθονται στην κορυφή. Το Δρομολόγιο από κάτω περπατά τη σύνδεση στάση προς στάση, με τις αποβάθρες και τα περπατήματα ανάμεσα στις γραμμές.',
'help.guide.change-transit-route.step.3':
'Η Αλλαγή διαδρομής τρέχει ξανά την αναζήτηση, ήδη συμπληρωμένη με τα δύο άκρα αυτής της σύνδεσης και την ημέρα της.',
'Η Αλλαγή διαδρομής στο κάτω μέρος της κράτησης τρέχει ξανά την αναζήτηση, ήδη συμπληρωμένη με τα δύο άκρα αυτής της σύνδεσης και την ημέρα της.',
'help.guide.change-transit-route.step.4':
'Διαλέξτε άλλη σύνδεση και κάντε κλικ στην Προσθήκη στην ημέρα· παίρνει τη θέση της παλιάς. Η Επεξεργασία λεπτομερειών, δίπλα στην Αλλαγή διαδρομής, ανοίγει στη θέση της τη συνηθισμένη φόρμα μεταφοράς, όπου ζουν ο Κωδικός Κράτησης, η Κατάσταση, οι ταξιδιώτες και τα αρχεία.',
'Διαλέξτε άλλη σύνδεση και κάντε κλικ στην Προσθήκη στην ημέρα· παίρνει τη θέση της παλιάς. Η Επεξεργασία, στην άλλη άκρη της ίδιας μπάρας, ανοίγει στη θέση της τη συνηθισμένη φόρμα μεταφοράς, όπου ζουν ο Κωδικός Κράτησης, η Κατάσταση, οι ταξιδιώτες, οι σημειώσεις και τα αρχεία.',
'help.guide.change-transit-route.result':
'Η προβολή Διαδρομή με δημόσιες συγκοινωνίες κουβαλά το νέο Δρομολόγιο, και η κάρτα της στην καρτέλα Μεταφορές δείχνει τις νέες γραμμές και ώρες.',
'help.guide.change-transit-route.tip.1':
'Ο τίτλος στην προβολή Διαδρομή με δημόσιες συγκοινωνίες είναι μόνο κείμενο: το μολύβι δίπλα του τον μετονομάζει χωρίς να αγγίξει τη διαδρομή. Οι Σημειώσεις από κάτω δέχονται markdown και έχουν καρτέλα Επεξεργασία και Προεπισκόπηση.',
'Ο τίτλος στην κεφαλίδα της κράτησης μετονομάζει τη σύνδεση χωρίς να αγγίξει τη διαδρομή. Οι σημειώσεις της γράφονται στη φόρμα μεταφοράς, πίσω από την Επεξεργασία.',
'help.guide.change-transit-route.tip.2':
'Η Διαγραφή στο κάτω μέρος της προβολής Διαδρομή με δημόσιες συγκοινωνίες βγάζει τη σύνδεση από το ταξίδι· η ημέρα κρατά τις στάσεις της.',
'Η Διαγραφή στο κάτω μέρος της κράτησης βγάζει τη σύνδεση από το ταξίδι· η ημέρα κρατά τις στάσεις της.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Αλλάξτε πώς διανύεται ένα σκέλος',
'help.guide.leg-travel-mode.goal':
@@ -3799,17 +3800,17 @@ const help: TranslationStrings = {
'help.guide.edit-transport.goal':
'Διορθώστε μια ώρα, μια αποβάθρα ή έναν κωδικό κράτησης, ή βγάλτε τη μετακίνηση από το ταξίδι.',
'help.guide.edit-transport.step.1':
'Στο πλάνο ημέρας μια μεταφορά είναι μια χρωματιστή σειρά ανάμεσα στις στάσεις. Κάντε κλικ πάνω της.',
'Στο πλάνο ημέρας μια μεταφορά είναι μια χρωματιστή σειρά ανάμεσα στις στάσεις. Κάντε κλικ πάνω της· η κράτησή της ανοίγει με τις ώρες, τη διαδρομή και τον Κωδικό Κράτησης.',
'help.guide.edit-transport.step.2':
'Η φόρμα είναι αυτή που τη δημιούργησε, με την Επεξεργασία μεταφοράς στη γραμμή τίτλου της. Όλα αλλάζουν: ο τύπος, η διαδρομή, οι ημέρες και οι ώρες, ο Κωδικός Κράτησης, η Κατάσταση.',
'Η Επεξεργασία στο κάτω μέρος της κράτησης ανοίγει τη φόρμα που τη δημιούργησε, με την Επεξεργασία μεταφοράς στη γραμμή τίτλου της. Όλα αλλάζουν: ο τύπος, η διαδρομή, οι ημέρες και οι ώρες, ο Κωδικός Κράτησης, η Κατάσταση.',
'help.guide.edit-transport.step.3':
'Η διαδρομή μιας πτήσης είναι αλυσίδα αεροδρομίων, ενός τρένου αλυσίδα σταθμών. Η Προσθήκη στάσης βάζει άλλη μία ανάμεσα, και κάθε σκέλος κρατά τις δικές του ώρες και τον δικό του αριθμό πτήσης ή τρένου.',
'help.guide.edit-transport.step.4':
'Κάντε κλικ στην Ενημέρωση. Για να αφαιρέσετε τελείως τη μεταφορά, χρησιμοποιήστε τον κάδο στην κάρτα της στην καρτέλα Μεταφορές και επιβεβαιώστε.',
'Κάντε κλικ στην Ενημέρωση. Για να αφαιρέσετε τελείως τη μεταφορά, χρησιμοποιήστε τη Διαγραφή στο κάτω μέρος της κράτησής της, ή τον κάδο στην κάρτα της στην καρτέλα Μεταφορές, και επιβεβαιώστε.',
'help.guide.edit-transport.result':
'Η αλλαγή φαίνεται παντού όπου εμφανίζεται η μεταφορά: στην καρτέλα Μεταφορές, στην ημέρα που γίνεται, και στη γραμμή της στον χάρτη.',
'help.guide.edit-transport.tip.1':
'Η ίδια φόρμα ανοίγει και από τις δύο πλευρές, από το μολύβι στην κάρτα στην καρτέλα Μεταφορές και από τη σειρά της ίδιας της μεταφοράς στο πλάνο ημέρας. Η σχεδιασμένη σύνδεση με μέσα μαζικής μεταφοράς είναι η εξαίρεση: η σειρά της ανοίγει την προβολή Διαδρομή με δημόσιες συγκοινωνίες, και η Επεξεργασία λεπτομερειών εκεί οδηγεί σε αυτή τη φόρμα.',
'Η ίδια φόρμα ανοίγει και από τις δύο πλευρές: μέσω της Επεξεργασίας στην κράτηση που ανοίγει μια σειρά του πλάνου ημέρας, και μέσω του μολυβιού στην κάρτα στην καρτέλα Μεταφορές. Μια σχεδιασμένη σύνδεση με μέσα μαζικής μεταφοράς ανοίγει κι αυτή ως κράτηση· εκεί η Αλλαγή διαδρομής αναζητά ξανά, και η Επεξεργασία οδηγεί σε αυτή τη φόρμα.',
'help.guide.edit-transport.tip.2':
'Η μετακίνηση μιας μεταφοράς σε άλλη ημέρα δεν χρειάζεται καθόλου τη φόρμα: σύρετε τη σειρά της από τη μία κάρτα ημέρας στην επόμενη.',
// transport-on-map
+8 -3
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Επιλέξτε τουλάχιστον έναν τύπο για εισαγωγή.',
'places.selectionCount': '{count} επιλεγμένα',
'places.deleteSelected': 'Διαγραφή επιλεγμένων',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Αλλαγή κατηγορίας',
'places.categoryChanged': 'Ενημερώθηκαν {count} τοποθεσίες',
'places.kmlKmzImported': '{count} μέρη εισήχθησαν από KMZ/KML',
'places.urlResolved': 'Το μέρος εισήχθη από URL',
'places.importList': 'Εισαγωγή Λίστας',
@@ -37,7 +37,8 @@ const places: TranslationStrings = {
'places.importGoogleList': 'Λίστα Google',
'places.importNaverList': 'Λίστα Naver',
'places.googleListHint': 'Επικολλήστε έναν κοινοποιημένο σύνδεσμο λίστας Google Maps για να εισάγετε όλα τα μέρη.',
'places.googleDirHint': 'Λειτουργεί και ένας σύνδεσμος διαδρομής: οι στάσεις του γίνονται τοποθεσίες, με τη σειρά οδήγησης.',
'places.googleDirHint':
'Λειτουργεί και ένας σύνδεσμος διαδρομής: οι στάσεις του γίνονται τοποθεσίες, με τη σειρά οδήγησης.',
'places.googleListImported': '{count} μέρη εισήχθησαν από "{list}"',
'places.googleListError': 'Αποτυχία εισαγωγής λίστας Google Maps',
'places.naverListHint': 'Επικολλήστε έναν κοινοποιημένο σύνδεσμο λίστας Naver Maps για να εισάγετε όλα τα μέρη.',
@@ -52,6 +53,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Εμφάνιση όλου του ταξιδιού',
'places.filterTracks': 'Ίχνη',
'places.filterByRating': 'Φιλτράρισμα κατά βαθμολογία',
'places.filterShow': 'Εμφάνιση',
'places.clearSearch': 'Καθαρισμός αναζήτησης',
'places.yourRating': 'Η βαθμολογία σου',
'places.notRated': 'Χωρίς βαθμολογία ακόμη',
'places.search': 'Αναζήτηση μερών...',
@@ -71,6 +74,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Οδός, Πόλη, Χώρα',
'places.formLat': 'Γεωγραφικό Πλάτος (π.χ. 48.8566)',
'places.formLng': 'Γεωγραφικό Μήκος (π.χ. 2.3522)',
'places.formLatLabel': 'Γεωγραφικό Πλάτος',
'places.formLngLabel': 'Γεωγραφικό Μήκος',
'places.formCategory': 'Κατηγορία',
'places.noCategory': 'Χωρίς Κατηγορία',
'places.newCategory': 'Νέα κατηγορία',
+60 -3
View File
@@ -66,6 +66,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Ποδήλατο',
'reservations.type.taxi': 'Ταξί',
'reservations.type.transit': 'Μέσα μαζικής μεταφοράς',
'reservations.typeShort.transit': 'ΜΜΜ',
'reservations.type.transport_other': 'Άλλο',
'reservations.confirm.delete': 'Είστε σίγουροι ότι θέλετε να διαγράψετε την κράτηση "{name}";',
'reservations.confirm.deleteTitle': 'Διαγραφή κράτησης;',
@@ -81,6 +82,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Τοποθεσία / Διεύθυνση',
'reservations.locationPlaceholder': 'Διεύθυνση, Αεροδρόμιο, Ξενοδοχείο...',
'reservations.confirmationCode': 'Κωδικός Κράτησης',
'reservations.routeLabel': 'Διαδρομή',
'reservations.segmentCodes': 'Κωδικοί ανά σκέλος',
'reservations.confirmationPlaceholder': 'π.χ. ABC12345',
'reservations.day': 'Ημέρα',
'reservations.noDay': 'Καμία Ημέρα',
@@ -95,6 +98,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Αποτυχία διαγραφής',
'reservations.confirm.remove': 'Αφαίρεση κράτησης για "{name}";',
'reservations.linkAssignment': 'Σύνδεση με ανάθεση ημέρας',
'reservations.linkedTo': 'Συνδέεται με',
'reservations.pickAssignment': 'Επιλέξτε μια ανάθεση από το πλάνο σας...',
'reservations.noAssignment': 'Χωρίς σύνδεση (ανεξάρτητη)',
'reservations.price': 'Τιμή',
@@ -136,9 +140,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': 'Βρέθηκαν {count} κράτηση/κρατήσεις',
'reservations.import.previewEmpty': 'Δεν ήταν δυνατή η εξαγωγή κρατήσεων από τα μεταφορτωμένα αρχεία.',
'reservations.import.removeItem': 'Αφαίρεση',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Έλεγχος',
'reservations.import.tryAi': 'Δοκιμή ανάλυσης με AI',
'reservations.import.aiParsing': 'Ανάλυση με AI…',
'reservations.import.confirm': 'Εισαγωγή {count} κράτησης/κρατήσεων',
'reservations.import.back': 'Πίσω',
'reservations.import.success': '{count} κράτηση/κρατήσεις εισήχθησαν',
@@ -183,5 +187,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Ταξιδιώτες',
'reservations.travelers.assign': 'Ανάθεση ταξιδιωτών',
'reservations.travelers.none': 'Δεν υπάρχουν ακόμη μέλη στο ταξίδι.',
'reservations.status.switchTo': 'Ορισμός σε {status}',
'reservations.view.label': 'Προβολή',
'reservations.view.cards': 'Κάρτες',
'reservations.view.list': 'Λίστα',
'reservations.view.timeline': 'Χρονολόγιο',
'reservations.filter': 'Φιλτράρισμα',
'reservations.searchPlaceholder': 'Αναζήτηση',
'reservations.results': '{shown} από {total}',
'reservations.resetFilters': 'Επαναφορά φίλτρων',
'reservations.noMatches': 'Τίποτα δεν ταιριάζει με αυτά τα φίλτρα',
'reservations.viewOptions': 'Επιλογές προβολής',
'reservations.resetView': 'Επαναφορά προβολής',
'reservations.group.label': 'Ομαδοποίηση κατά',
'reservations.group.status': 'Κατάσταση',
'reservations.group.day': 'Ημέρα',
'reservations.group.type': 'Τύπος',
'reservations.group.none': 'Χωρίς ομαδοποίηση',
'reservations.transitApart': 'Μέσα μαζικής μεταφοράς σε δική τους ενότητα',
'reservations.group.before': 'Πριν από το ταξίδι',
'reservations.group.after': 'Μετά το ταξίδι',
'reservations.group.undated': 'Χωρίς ημερομηνία',
'reservations.sort.label': 'Ταξινόμηση κατά',
'reservations.sort.date': 'Ημερομηνία',
'reservations.sort.title': 'Τίτλος',
'reservations.sort.type': 'Τύπος',
'reservations.sort.status': 'Κατάσταση',
'reservations.sort.earlyFirst': 'Πρώτα οι νωρίτερες',
'reservations.sort.lateFirst': 'Πρώτα οι αργότερες',
'reservations.sort.aToZ': 'Α έως Ω',
'reservations.sort.zToA': 'Ω έως Α',
'reservations.timeline.dayCount': '{count} ημέρες',
'reservations.timeline.zoom': 'Ζουμ',
'reservations.timeline.trip': 'Ταξίδι',
'reservations.timeline.day': 'Ημέρα',
'reservations.timeline.prevDay': 'Προηγούμενη ημέρα',
'reservations.timeline.nextDay': 'Επόμενη ημέρα',
'reservations.timeline.openDay': 'Άνοιγμα {day} ανά ώρα',
'reservations.timeline.nothingThisDay': 'Τίποτα αυτή την ημέρα.',
'reservations.timeline.today': 'Σήμερα',
'reservations.timeline.now': 'τώρα',
'reservations.timeline.byType': 'Μία λωρίδα ανά τύπο',
'reservations.timeline.context': 'Εμφάνιση της άλλης καρτέλας',
'reservations.timeline.contextBookings': 'Κρατήσεις',
'reservations.timeline.contextTransports': 'Μεταφορές',
'reservations.timeline.noneDated': 'Καμία δεν έχει ακόμη ημερομηνία.',
'reservations.undated': 'Χωρίς ημερομηνία',
'reservations.nights': 'Νύχτες',
'reservations.start': 'Έναρξη',
'reservations.end': 'Λήξη',
'reservations.rename': 'Μετονομασία',
'reservations.copyCode': 'Αντιγραφή κωδικού κράτησης',
'reservations.copyFailed': 'Η αντιγραφή απέτυχε',
'reservations.showInFiles': 'Εμφάνιση στα αρχεία',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Επεξεργασία μεταφοράς',
'transport.title': 'Μεταφορές',
'transport.addManual': 'Μεταφορά',
'transport.empty': 'Δεν υπάρχουν μεταφορές ακόμη',
};
export default transport;
+14 -6
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Csak az összegben — még nincs rendezve',
'costs.tapToInclude': 'Koppintson a hozzáadáshoz',
'costs.amount': 'Összeg',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Felosztás',
'costs.splitEqually': 'Egyenlően',
'costs.splitCustom': 'Egyéni',
'costs.splitTicket': 'Blokk',
'costs.perPerson': '{amount} személyenként',
'costs.payersHint': 'Jelöld be, ki fizetett, és írd be, mennyit adott bele mindegyikük.',
'costs.splitHint.equally': 'Minden bejelölt ugyanakkora részt fizet.',
'costs.splitHint.custom': 'Írd be mindenki részét; együtt ki kell adniuk a teljes összeget.',
'costs.splitHint.ticket': 'Sorold fel, mi szerepelt a nyugtán, és minden tételnél jelöld be, kié volt.',
'costs.filter.allCategories': 'Összes kategória',
'costs.filter.allDays': 'Összes nap',
'costs.expensesCount': '{count} kiadás',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Nyugták',
'costs.receiptsTitle': 'Nyugták és számlák',
'costs.attachReceipt': 'Nyugta / számla csatolása',
'costs.attach': 'Csatolás',
'costs.scan.button': 'Nyugta beolvasása',
'costs.scan.reading': 'Nyugta olvasása…',
'costs.scan.review': 'Kiadás ellenőrzése',
'costs.scan.nothingRead': 'Erről a fotóról nem sikerült nyugtát olvasni.',
'costs.scan.failed': 'Nem sikerült elindítani a nyugta olvasását.',
'costs.scan.title': 'Nyugta beolvasása',
'costs.scan.accepted': 'Egyetlen nyugta fotója (JPG, PNG vagy WEBP, legfeljebb 10 MB). Az MI-modell a háttérben olvassa be, majd mentés előtt ellenőrzöd a kiadást.',
'costs.scan.accepted':
'Egyetlen nyugta fotója (JPG, PNG vagy WEBP, legfeljebb 10 MB). Az MI-modell a háttérben olvassa be, majd mentés előtt ellenőrzöd a kiadást.',
'costs.scan.dropHere': 'Húzd ide a nyugta fotóját, vagy kattints egy kiválasztásához vagy elkészítéséhez',
'costs.scan.dropActive': 'Engedd el a fotót a beolvasáshoz',
'costs.scan.start': 'Beolvasás',
@@ -168,6 +175,7 @@ const budget: TranslationStrings = {
'costs.noReceipts': 'Nincsenek csatolt nyugták',
'costs.deleteReceipt': 'Nyugta eltávolítása',
'costs.viewReceipt': 'Nyugta megtekintése',
'costs.receiptLeftBehind': 'A mentés nem sikerült, és {count} feltöltött blokk még ott van. Törölje őket a Fájlok fülön.',
'costs.receiptLeftBehind':
'A mentés nem sikerült, és {count} feltöltött blokk még ott van. Törölje őket a Fájlok fülön.',
};
export default budget;
+2 -2
View File
@@ -78,8 +78,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Minden helyszín kiosztva',
'dayplan.mobile.noMatch': 'Nincs találat',
'dayplan.mobile.createNew': 'Új helyszín létrehozása',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Minden nap kibontása', // en-fallback
'dayplan.collapseAll': 'Minden nap összecsukása', // en-fallback
'dayplan.reorderDays': 'Napok átrendezése',
'dayplan.reorderTitle': 'Napok átrendezése',
'dayplan.reorderHint': 'A nap helyei, jegyzetei és foglalásai együtt mozognak vele.',
+24 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'hu' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Súgó és dokumentáció',
'help.search': 'Keresés a dokumentációban…',
'help.contents': 'Tartalom',
'help.noResults': 'Nincs találat.',
'help.errorTitle': 'Az oldal nem tölthető be',
'help.errorBody': 'A súgó tartalma a TREK wikiből érkezik. Ellenőrizd a kapcsolatot, és próbáld újra.',
// center
'help.center.button': 'Súgó ehhez a képernyőhöz',
@@ -1045,7 +1045,7 @@ const help: TranslationStrings = {
'Travel & map: foglalási útvonalak mindig a térképen, a Helyek felfedezése pirula, útvonal-optimalizálás a szállástól, elrejtett foglalási kódok és címkézett foglalási útvonalak.',
'help.ctx.settings-display.bullet.3':
'Indítás: a TREK az irányítópulton vagy az aktív utazáson nyíljon-e meg, és egy utazás melyik füle jöjjön fel először.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Megjelenés',
'help.ctx.settings-appearance.summary':
'Hogyan néz ki a TREK ezen a fiókon: világos vagy sötét, a kiemelőszín, üveg és mozgás, szövegméret, és mely widgeteket mutatja az irányítópult. Minden élőben érvényes, minden eszközön, ahol bejelentkezel.',
'help.ctx.settings-appearance.bullet.1':
@@ -2320,9 +2320,9 @@ const help: TranslationStrings = {
'Nyisd meg a megállót, amelyikhez a foglalás tartozik. A kártya egy sávot mutat a Megerősítve vagy Függőben szóval és a foglalás nevével.',
'help.guide.place-booking.step.2':
'A sáv viszi a Dátumot, az Időpontot és a Foglalási kódot, meg bármilyen jegyzetet, ami a foglaláson van.',
'help.guide.place-booking.step.3': 'Kattints a sávra. Megnyílik rajta a foglalás saját űrlapja.',
'help.guide.place-booking.step.3': 'Kattints a sávra. A foglalás a térkép fölött nyílik meg.',
'help.guide.place-booking.step.4':
'Az Összekapcsolás napi tervvel az, ami egy foglalást egy megállóhoz tűz, és itt már ezt nevezi meg. Zárd be újra az űrlapot.',
'A foglalás alján lévő Szerkesztés megnyitja a saját űrlapját. Ott az Összekapcsolás napi tervvel az, ami egy foglalást egy megállóhoz tűz, és itt már ezt nevezi meg. Zárd be újra az űrlapot.',
'help.guide.place-booking.step.5':
'Egy megállóhoz tartozó új foglalás a napok oszlopában kezdődik: vidd a mutatót a megálló fölé, és kattints a végén lévő + jelre. Az űrlap Új foglalás néven nyílik meg, már hozzákapcsolva.',
'help.guide.place-booking.result':
@@ -2681,7 +2681,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'A szín megmondja, hol tart egy foglalás: a zöld sor meg van erősítve, a borostyánsárga még függőben van. A szállodák nincsenek ebben a listában, nekik lent saját blokkjuk van.',
'help.guide.day-bookings.step.4':
'A lista csak kiolvassa a foglalásokat. Foglalást a Foglalások fülön hozol létre és módosítasz.',
'Kattints egy sorra, és megnyílik a foglalás. Az alján lévő Szerkesztés módosítja; új foglalást a Foglalások fülön hozol létre.',
'help.guide.day-bookings.result':
'Minden, aminek a dátuma a napra esik, és minden, ami a megállói valamelyikén lóg, ebben az egy listában van.',
'help.guide.day-bookings.tip.1':
@@ -3231,13 +3231,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Kattints a fül jobb felső sarkában a Kézi foglalás gombra. Megnyílik az Új foglalás.',
'help.guide.create-booking.step.2':
'Válaszd ki a Foglalás típusa értéket az űrlap tetején lévő listából, az Utasok mellett. A Szálloda, az Étterem, az Esemény, a Túra, a Parkolás és az Egyéb az a hat, amit ez a fül készít, és az űrlap a választással együtt változik: csak a Szálloda cseréli a dátumait egy napokból álló tartományra.',
'Kattints az űrlap fejlécében a cím alatti típuscímkére, és válaszd ki a Foglalás típusa értéket. A Szálloda, az Étterem, az Esemény, a Túra, a Parkolás és az Egyéb az a hat, amit ez a fül készít, és az űrlap a választással együtt változik: csak a Szálloda cseréli a dátumait egy napokból álló tartományra.',
'help.guide.create-booking.step.3':
'Írd be a Cím mezőt. Ez az egyetlen mező, amihez az űrlap ragaszkodik, és a Hozzáadás halott marad, amíg nincs benne valami.',
'help.guide.create-booking.step.4':
'Állítsd be a Dátum és a Kezdési idő mezőt, és a Befejezés dátuma meg a Befejezési idő mezőt is, ha a foglalásnak van vége. A naptárak csak az utazáson belüli napokat kínálják, és egy olyan vég, ami nincs a kezdés után, ezt pirossal megmondja, és letiltja a Hozzáadás gombot.',
'help.guide.create-booking.step.5':
'Vidd be a visszaigazolásból a Foglalási kódot, és állítsd be az Állapot mezőt. A Függőben vagy a Megerősítve dönti el, a két szakasz közül melyikbe kerül a kártya.',
'Vidd be a visszaigazolásból a Foglalási kódot. A típus melletti állapotcímkén Függőben áll; egy kattintás Megerősítve értékre állítja és vissza, és ez dönti el, a két szakasz közül melyikbe kerül a kártya.',
'help.guide.create-booking.step.6': 'Kattints a Hozzáadás gombra.',
'help.guide.create-booking.result':
'A foglalás egy kártya a saját szakaszában, a típuscímkéjével, a dátumaival és a kódjával, és az utazásban mindenki más látja megjelenni.',
@@ -3289,7 +3289,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.goal':
'Jelöld meg az utasokat, akikre a foglalás vonatkozik, és utána csak az övéiket nézd.',
'help.guide.booking-travelers.step.1':
'Nyisd meg a foglalást a ceruzával. Az Utasok az űrlap tetején áll, a Foglalás típusa mellett, és amíg senki sincs a foglaláson, az Utasok hozzárendelése felirat látszik rajta.',
'Nyisd meg a foglalást a ceruzával. Az Utasok a Foglalási kód mellett áll, és amíg senki sincs a foglaláson, az Utasok hozzárendelése felirat látszik rajta.',
'help.guide.booking-travelers.step.2':
'Kattints rá, és válaszd ki azokat, akiknek ez a foglalás szól; a megnevezett vendégek is ott vannak a listában. A kiválasztott pipát kap, és az avatarja megjelenik a mezőben. Kattints újra a névre, és leveszed.',
'help.guide.booking-travelers.step.3': 'Kattints a Frissítés gombra.',
@@ -3388,7 +3388,7 @@ const help: TranslationStrings = {
'Kattints a kártya fejlécében a ceruzára. Megnyílik a Foglalás szerkesztése mindennel, amit a foglalás tud.',
'help.guide.edit-booking.step.2':
'Változtasd meg, amit meg kell változtatni, itt a Foglalási kódot, amit a szolgáltató végre elküldött.',
'help.guide.edit-booking.step.3': 'Tedd az Állapot mezőt Megerősítve értékre.',
'help.guide.edit-booking.step.3': 'Kattints az űrlap fejlécében a Függőben címkére. Megerősítve lesz belőle.',
'help.guide.edit-booking.step.4': 'Kattints a Frissítés gombra.',
'help.guide.edit-booking.result':
'A kártya átköltözik: egy megerősített foglalás a Megerősítve szakaszban áll egy zöld pont mögött, és az utazásban mindenki látja átköltözni.',
@@ -3683,19 +3683,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Olvasd a kapcsolatot megállóról megállóra, nevezd át, vagy keresd ki újra az útvonalat.',
'help.guide.change-transit-route.step.1':
'A Közlekedés fülön a tervezett kapcsolatok az Automatikus tömegközlekedés alatt ülnek. Kattints a kártyára.',
'A Közlekedés fülön a tervezett kapcsolatok az Automatikus tömegközlekedés alatt ülnek. Kattints a kártyára; a kapcsolat foglalásként nyílik meg.',
'help.guide.change-transit-route.step.2':
'Az Időtartam, az Átszállások és a Gyaloglás felül ül. Alattuk az Útiterv megállóról megállóra végigjárja a kapcsolatot, a vágányokkal és a vonalak közötti sétákkal.',
'help.guide.change-transit-route.step.3':
'Az Útvonal módosítása újra lefuttatja a keresést, már kitöltve ennek a kapcsolatnak a két végével és a napjával.',
'A foglalás alján lévő Útvonal módosítása újra lefuttatja a keresést, már kitöltve ennek a kapcsolatnak a két végével és a napjával.',
'help.guide.change-transit-route.step.4':
'Válassz másik kapcsolatot, és kattints a Hozzáadás a naphoz gombra; átveszi a régi helyét. Az Útvonal módosítása melletti Részletek szerkesztése helyette a szokásos közlekedési űrlapot nyitja meg, ahol a Foglalási kód, az Állapot, az utasok és a fájlok élnek.',
'Válassz másik kapcsolatot, és kattints a Hozzáadás a naphoz gombra; átveszi a régi helyét. Ugyanennek a sávnak a másik végén a Szerkesztés helyette a szokásos közlekedési űrlapot nyitja meg, ahol a Foglalási kód, az Állapot, az utasok, a jegyzetek és a fájlok élnek.',
'help.guide.change-transit-route.result':
'A Tömegközlekedési útvonal nézet az új Útitervet viszi, a kártyája pedig a Közlekedés fülön az új vonalakat és időpontokat mutatja.',
'help.guide.change-transit-route.tip.1':
'A Tömegközlekedési útvonal nézet címe csak szöveg: a mellette lévő ceruza átnevezi anélkül, hogy az útvonalhoz nyúlna. Az alatta lévő Jegyzetek markdownt fogad, és van egy Szerkesztés és egy Előnézet füle.',
'A foglalás fejlécében lévő cím átnevezi a kapcsolatot anélkül, hogy az útvonalhoz nyúlna. A jegyzeteit a Szerkesztés mögötti közlekedési űrlapon írod.',
'help.guide.change-transit-route.tip.2':
'A Tömegközlekedési útvonal nézet alján lévő Törlés kiveszi a kapcsolatot az utazásból; a nap megtartja a megállóit.',
'A foglalás alján lévő Törlés kiveszi a kapcsolatot az utazásból; a nap megtartja a megállóit.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Módosítsd, hogyan teszel meg egy szakaszt',
'help.guide.leg-travel-mode.goal':
@@ -3720,17 +3720,18 @@ const help: TranslationStrings = {
'help.guide.edit-transport.title': 'Módosíts vagy törölj egy közlekedést',
'help.guide.edit-transport.goal':
'Javíts egy időpontot, egy vágányt vagy egy foglalási kódot, vagy vedd ki az utat az utazásból.',
'help.guide.edit-transport.step.1': 'A napi tervben egy közlekedés színes sor a megállók között. Kattints rá.',
'help.guide.edit-transport.step.1':
'A napi tervben egy közlekedés színes sor a megállók között. Kattints rá; megnyílik a foglalása az időpontokkal, az útvonallal és a Foglalási kóddal.',
'help.guide.edit-transport.step.2':
'Az űrlap ugyanaz, amelyik létrehozta, a címsorában a Közlekedés szerkesztése felirattal. Minden módosítható: a típus, az útvonal, a napok és időpontok, a Foglalási kód, az Állapot.',
'A foglalás alján lévő Szerkesztés azt az űrlapot nyitja meg, amelyik létrehozta, a címsorában a Közlekedés szerkesztése felirattal. Minden módosítható: a típus, az útvonal, a napok és időpontok, a Foglalási kód, az Állapot.',
'help.guide.edit-transport.step.3':
'Egy repülő útvonala repterek lánca, egy vonaté állomások lánca. A Megálló hozzáadása közéjük tesz még egyet, és minden szakasz megtartja a saját időpontjait és a saját járatszámát vagy vonatszámát.',
'help.guide.edit-transport.step.4':
'Kattints a Frissítés gombra. Ha teljesen el akarod távolítani a közlekedést, használd a kukát a Közlekedés fülön lévő kártyáján, és erősítsd meg.',
'Kattints a Frissítés gombra. Ha teljesen el akarod távolítani a közlekedést, használd a foglalása alján lévő Törlés gombot vagy a kukát a Közlekedés fülön lévő kártyáján, és erősítsd meg.',
'help.guide.edit-transport.result':
'A változás mindenhol látszik, ahol a közlekedés megjelenik: a Közlekedés fülön, a napon, amelyiken megy, és a vonalán a térképen.',
'help.guide.edit-transport.tip.1':
'Ugyanez az űrlap mindkét oldalról megnyílik, a Közlekedés fülön lévő kártya ceruzájáról és a közlekedés saját soráról a napi tervben. A tervezett tömegközlekedési kapcsolat a kivétel: a sora a Tömegközlekedési útvonal nézetet nyitja meg, és az ottani Részletek szerkesztése vezet ehhez az űrlaphoz.',
'Ugyanez az űrlap mindkét oldalról megnyílik: a Szerkesztés gombbal abban a foglalásban, amelyet a napi terv egy sora nyit meg, és a Közlekedés fülön lévő kártya ceruzájával. A tervezett tömegközlekedési kapcsolat is foglalásként nyílik meg; ott az Útvonal módosítása újra keres, a Szerkesztés pedig ehhez az űrlaphoz vezet.',
'help.guide.edit-transport.tip.2':
'Egy közlekedés másik napra mozgatásához egyáltalán nem kell az űrlap: húzd a sorát az egyik napkártyáról a másikra.',
// transport-on-map
+6 -2
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Válassz legalább egy típust.',
'places.selectionCount': '{count} kiválasztva',
'places.deleteSelected': 'Kijelöltek törlése',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Kategória módosítása',
'places.categoryChanged': '{count} hely frissítve',
'places.kmlKmzImported': '{count} hely importálva KMZ/KML-ből',
'places.urlResolved': 'Hely importálva URL-ből',
'places.importList': 'Lista importálás',
@@ -52,6 +52,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Teljes utazás megjelenítése',
'places.filterTracks': 'Nyomvonalak',
'places.filterByRating': 'Szűrés értékelés szerint',
'places.filterShow': 'Megjelenítés',
'places.clearSearch': 'Keresés törlése',
'places.yourRating': 'Az értékelésed',
'places.notRated': 'Még nincs értékelve',
'places.search': 'Helyek keresése...',
@@ -71,6 +73,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Utca, Város, Ország',
'places.formLat': 'Szélességi fok (pl. 48.8566)',
'places.formLng': 'Hosszúsági fok (pl. 2.3522)',
'places.formLatLabel': 'Szélességi fok',
'places.formLngLabel': 'Hosszúsági fok',
'places.formCategory': 'Kategória',
'places.noCategory': 'Nincs kategória',
'places.newCategory': 'Új kategória',
+60 -3
View File
@@ -66,6 +66,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Kerékpár',
'reservations.type.taxi': 'Taxi',
'reservations.type.transit': 'Tömegközlekedés',
'reservations.typeShort.transit': 'Tömegközl.',
'reservations.type.transport_other': 'Egyéb',
'reservations.confirm.delete': 'Biztosan törölni szeretnéd a(z) "{name}" foglalást?',
'reservations.confirm.deleteTitle': 'Foglalás törlése?',
@@ -81,6 +82,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Helyszín / Cím',
'reservations.locationPlaceholder': 'Cím, Repülőtér, Szálloda...',
'reservations.confirmationCode': 'Foglalási kód',
'reservations.routeLabel': 'Útvonal',
'reservations.segmentCodes': 'Szakaszkódok',
'reservations.confirmationPlaceholder': 'pl. ABC12345',
'reservations.day': 'Nap',
'reservations.noDay': 'Nincs nap',
@@ -94,6 +97,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Nem sikerült törölni',
'reservations.confirm.remove': '"{name}" foglalás eltávolítása?',
'reservations.linkAssignment': 'Összekapcsolás napi tervvel',
'reservations.linkedTo': 'Kapcsolódik',
'reservations.pickAssignment': 'Válassz hozzárendelést a tervedből...',
'reservations.noAssignment': 'Nincs összekapcsolás (önálló)',
'reservations.price': 'Ár',
@@ -135,9 +139,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count} foglalás találva',
'reservations.import.previewEmpty': 'A feltöltött fájlokból nem sikerült foglalásokat kinyerni.',
'reservations.import.removeItem': 'Eltávolítás',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Ellenőrzés',
'reservations.import.tryAi': 'Próba MI-elemzéssel',
'reservations.import.aiParsing': 'MI-elemzés folyamatban…',
'reservations.import.confirm': '{count} foglalás importálása',
'reservations.import.back': 'Vissza',
'reservations.import.success': '{count} foglalás importálva',
@@ -183,5 +187,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Utasok',
'reservations.travelers.assign': 'Utasok hozzárendelése',
'reservations.travelers.none': 'Még nincsenek utastársak.',
'reservations.status.switchTo': 'Átállítás erre: {status}',
'reservations.view.label': 'Nézet',
'reservations.view.cards': 'Kártyák',
'reservations.view.list': 'Lista',
'reservations.view.timeline': 'Idővonal',
'reservations.filter': 'Szűrés',
'reservations.searchPlaceholder': 'Keresés',
'reservations.results': '{shown} / {total}',
'reservations.resetFilters': 'Szűrők visszaállítása',
'reservations.noMatches': 'Nincs a szűrőknek megfelelő találat',
'reservations.viewOptions': 'Nézet beállításai',
'reservations.resetView': 'Nézet visszaállítása',
'reservations.group.label': 'Csoportosítás',
'reservations.group.status': 'Állapot',
'reservations.group.day': 'Nap',
'reservations.group.type': 'Típus',
'reservations.group.none': 'Nincs csoportosítás',
'reservations.transitApart': 'Tömegközlekedés külön szakaszban',
'reservations.group.before': 'Az utazás előtt',
'reservations.group.after': 'Az utazás után',
'reservations.group.undated': 'Dátum nélkül',
'reservations.sort.label': 'Rendezés',
'reservations.sort.date': 'Dátum',
'reservations.sort.title': 'Cím',
'reservations.sort.type': 'Típus',
'reservations.sort.status': 'Állapot',
'reservations.sort.earlyFirst': 'Legkorábbi elöl',
'reservations.sort.lateFirst': 'Legkésőbbi elöl',
'reservations.sort.aToZ': 'A-tól Z-ig',
'reservations.sort.zToA': 'Z-től A-ig',
'reservations.timeline.dayCount': '{count} nap',
'reservations.timeline.zoom': 'Nagyítás',
'reservations.timeline.trip': 'Utazás',
'reservations.timeline.day': 'Nap',
'reservations.timeline.prevDay': 'Előző nap',
'reservations.timeline.nextDay': 'Következő nap',
'reservations.timeline.openDay': '{day} megnyitása óránkénti nézetben',
'reservations.timeline.nothingThisDay': 'Ezen a napon nincs semmi.',
'reservations.timeline.today': 'Ma',
'reservations.timeline.now': 'most',
'reservations.timeline.byType': 'Típusonként külön sáv',
'reservations.timeline.context': 'A másik fül megjelenítése',
'reservations.timeline.contextBookings': 'Foglalások',
'reservations.timeline.contextTransports': 'Közlekedés',
'reservations.timeline.noneDated': 'Egyiknek sincs még dátuma.',
'reservations.undated': 'Dátum nélkül',
'reservations.nights': 'Éjszakák',
'reservations.start': 'Kezdés',
'reservations.end': 'Vége',
'reservations.rename': 'Átnevezés',
'reservations.copyCode': 'Foglalási kód másolása',
'reservations.copyFailed': 'Nem sikerült másolni',
'reservations.showInFiles': 'Megjelenítés a fájlokban',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Közlekedés szerkesztése',
'transport.title': 'Közlekedés',
'transport.addManual': 'Közlekedés',
'transport.empty': 'Még nincs közlekedés',
};
export default transport;
+12 -5
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Hanya total — belum diselesaikan',
'costs.tapToInclude': 'Ketuk untuk menyertakan',
'costs.amount': 'Jumlah',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Pembagian',
'costs.splitEqually': 'Rata',
'costs.splitCustom': 'Kustom',
'costs.splitTicket': 'Struk',
'costs.perPerson': '{amount} per orang',
'costs.payersHint': 'Centang siapa yang membayar dan ketik berapa yang dibayar masing-masing.',
'costs.splitHint.equally': 'Semua yang dicentang membayar bagian yang sama.',
'costs.splitHint.custom': 'Ketik bagian tiap orang; jika dijumlahkan, semuanya harus sama dengan total.',
'costs.splitHint.ticket': 'Tuliskan isi kuitansi dan centang siapa yang mengambil tiap item.',
'costs.filter.allCategories': 'Semua kategori',
'costs.filter.allDays': 'Semua hari',
'costs.expensesCount': '{count} pengeluaran',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Kuitansi',
'costs.receiptsTitle': 'Kuitansi & Faktur',
'costs.attachReceipt': 'Lampirkan kuitansi / faktur',
'costs.attach': 'Lampirkan',
'costs.scan.button': 'Pindai kuitansi',
'costs.scan.reading': 'Membaca kuitansi…',
'costs.scan.review': 'Tinjau pengeluaran',
'costs.scan.nothingRead': 'Tidak ada kuitansi yang dapat dibaca dari foto ini.',
'costs.scan.failed': 'Tidak dapat mulai membaca kuitansi.',
'costs.scan.title': 'Pindai kuitansi',
'costs.scan.accepted': 'Foto satu kuitansi (JPG, PNG, atau WEBP, maks. 10 MB). Model AI membacanya di latar belakang, lalu kamu memeriksa pengeluaran sebelum disimpan.',
'costs.scan.accepted':
'Foto satu kuitansi (JPG, PNG, atau WEBP, maks. 10 MB). Model AI membacanya di latar belakang, lalu kamu memeriksa pengeluaran sebelum disimpan.',
'costs.scan.dropHere': 'Letakkan foto kuitansi di sini, atau klik untuk memilih atau mengambil foto',
'costs.scan.dropActive': 'Lepaskan foto untuk memindainya',
'costs.scan.start': 'Pindai',
+2 -2
View File
@@ -78,8 +78,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Semua tempat sudah ditugaskan',
'dayplan.mobile.noMatch': 'Tidak ditemukan',
'dayplan.mobile.createNew': 'Buat tempat baru',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Buka semua hari', // en-fallback
'dayplan.collapseAll': 'Tutup semua hari', // en-fallback
'dayplan.reorderDays': 'Atur ulang hari',
'dayplan.reorderTitle': 'Atur ulang hari',
'dayplan.reorderHint': 'Tempat, catatan, dan pesanan pada suatu hari ikut berpindah.',
+23 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'id' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Bantuan & Dokumentasi',
'help.search': 'Cari di dokumentasi…',
'help.contents': 'Daftar isi',
'help.noResults': 'Tidak ada halaman yang cocok.',
'help.errorTitle': 'Halaman ini tidak dapat dimuat',
'help.errorBody': 'Konten bantuan diambil dari wiki TREK. Periksa koneksi Anda lalu coba lagi.',
// center
'help.center.button': 'Bantuan untuk layar ini',
@@ -1042,7 +1042,7 @@ const help: TranslationStrings = {
'“Travel & map”: rute pemesanan selalu di peta, pil Jelajahi tempat, optimalisasi rute dari akomodasi Anda, kode pemesanan yang disamarkan, dan rute pemesanan berlabel.',
'help.ctx.settings-display.bullet.3':
'“Mulai”: apakah TREK membuka dasbor atau perjalanan aktif, dan tab perjalanan mana yang muncul pertama.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Tampilan',
'help.ctx.settings-appearance.summary':
'Tampilan TREK di akun ini: terang atau gelap, warna aksen, kaca dan gerakan, ukuran teks, dan widget mana yang ditampilkan dasbor. Semuanya berlaku langsung, di setiap perangkat tempat Anda masuk.',
'help.ctx.settings-appearance.bullet.1':
@@ -2316,9 +2316,9 @@ const help: TranslationStrings = {
'Buka perhentian yang memiliki pemesanan itu. Kartu menampilkan sebuah bilah dengan “Dikonfirmasi” atau “Tertunda” dan nama pemesanannya.',
'help.guide.place-booking.step.2':
'Bilah itu membawa “Tanggal”, “Waktu” dan “Kode Pemesanan”, serta catatan apa pun yang dimiliki pemesanan itu.',
'help.guide.place-booking.step.3': 'Klik bilahnya. Formulir pemesanan itu sendiri terbuka di atasnya.',
'help.guide.place-booking.step.3': 'Klik bilahnya. Pemesanan itu terbuka di atas peta.',
'help.guide.place-booking.step.4':
'“Hubungkan ke jadwal harian” adalah yang menyematkan sebuah pemesanan ke sebuah perhentian, dan di sini sudah menyebut perhentian ini. Tutup formulirnya lagi.',
'“Sunting” di kaki pemesanan membuka formulirnya sendiri. “Hubungkan ke jadwal harian” di sana adalah yang menyematkan sebuah pemesanan ke sebuah perhentian, dan di sini sudah menyebut perhentian ini. Tutup formulirnya lagi.',
'help.guide.place-booking.step.5':
'Pemesanan baru untuk sebuah perhentian dimulai di kolom hari: arahkan kursor ke perhentian itu dan klik tanda + di ujungnya. Formulir terbuka sebagai “Reservasi Baru”, sudah terhubung dengannya.',
'help.guide.place-booking.result':
@@ -2685,7 +2685,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'Warnanya mengatakan posisi sebuah pemesanan: baris hijau sudah dikonfirmasi, baris amber masih tertunda. Hotel tidak ada dalam daftar ini, mereka punya blok sendiri di bawah.',
'help.guide.day-bookings.step.4':
'Daftar ini hanya membacakan pemesanan. Sebuah pemesanan dibuat dan diubah di tab “Pemesanan”.',
'Klik sebuah baris dan pemesanan itu terbuka. “Sunting” di kakinya mengubahnya; pemesanan baru dibuat di tab “Pemesanan”.',
'help.guide.day-bookings.result':
'Semua yang bertanggal pada hari itu, dan semua yang menggantung pada salah satu perhentiannya, ada dalam satu daftar ini.',
'help.guide.day-bookings.tip.1':
@@ -3237,13 +3237,13 @@ const help: TranslationStrings = {
'Masukkan sebuah restoran, acara, tur, tempat parkir atau apa pun lainnya ke dalam perjalanan dengan tangan.',
'help.guide.create-booking.step.1': 'Klik “Pemesanan Manual” di kanan atas tab. “Reservasi Baru” terbuka.',
'help.guide.create-booking.step.2':
'Pilih “Jenis Pemesanan” dari daftar di bagian atas formulir, di samping “Peserta”. “Akomodasi”, “Restoran”, “Acara”, “Tur”, “Parkir” dan “Lainnya” adalah enam jenis yang dibuat tab ini, dan formulirnya berubah mengikuti pilihan: hanya “Akomodasi” yang menukar tanggalnya dengan rentang hari.',
'Klik pil jenis di bawah judul, di kepala formulir, lalu pilih “Jenis Pemesanan”. “Akomodasi”, “Restoran”, “Acara”, “Tur”, “Parkir” dan “Lainnya” adalah enam jenis yang dibuat tab ini, dan formulirnya berubah mengikuti pilihan: hanya “Akomodasi” yang menukar tanggalnya dengan rentang hari.',
'help.guide.create-booking.step.3':
'Ketik “Judul”. Inilah satu-satunya isian yang diharuskan oleh formulir, dan “Tambah” tetap mati sampai ia terisi.',
'help.guide.create-booking.step.4':
'Atur “Tanggal” dan “Waktu mulai”, serta “Tanggal selesai” dan “Waktu selesai” bila pemesanan itu punya akhir. Kalender hanya menawarkan hari di dalam perjalanan, dan akhir yang tidak sesudah awal dikatakan dengan warna merah lalu menghalangi “Tambah”.',
'help.guide.create-booking.step.5':
'Masukkan “Kode Pemesanan” dari konfirmasi dan atur “Status”. “Tertunda” atau “Dikonfirmasi” menentukan di bagian mana dari keduanya kartu itu mendarat.',
'Masukkan “Kode Pemesanan” dari konfirmasi. Pil status di samping jenis bertuliskan “Tertunda”; satu klik mengubahnya menjadi “Dikonfirmasi” dan kembali lagi, dan itulah yang menentukan di bagian mana dari keduanya kartu itu mendarat.',
'help.guide.create-booking.step.6': 'Klik “Tambah”.',
'help.guide.create-booking.result':
'Pemesanan itu menjadi sebuah kartu di bagiannya dengan chip jenisnya, tanggalnya dan kodenya, dan semua orang lain di perjalanan melihatnya muncul.',
@@ -3293,7 +3293,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Menyebut untuk siapa sebuah pemesanan dibuat',
'help.guide.booking-travelers.goal': 'Tandai peserta yang dicakup sebuah pemesanan, lalu lihat hanya milik mereka.',
'help.guide.booking-travelers.step.1':
'Buka pemesanan itu dengan pensil. “Peserta” ada di bagian atas formulir, di samping “Jenis Pemesanan”, dan bertuliskan “Tetapkan peserta” selama belum ada siapa pun di pemesanan itu.',
'Buka pemesanan itu dengan pensil. “Peserta” ada di samping “Kode Pemesanan”, dan bertuliskan “Tetapkan peserta” selama belum ada siapa pun di pemesanan itu.',
'help.guide.booking-travelers.step.2':
'Klik itu dan pilih orang-orang yang menjadi tujuan pemesanan ini; “Tamu” yang bernama juga ada di daftar. Yang terpilih mendapat centang dan avatarnya muncul di kolom itu. Klik namanya lagi untuk melepasnya.',
'help.guide.booking-travelers.step.3': 'Klik “Perbarui”.',
@@ -3390,7 +3390,7 @@ const help: TranslationStrings = {
'Klik pensil di kepala kartu. “Edit Reservasi” terbuka dengan segala yang diketahui pemesanan itu.',
'help.guide.edit-booking.step.2':
'Ubah apa yang perlu diubah, di sini “Kode Pemesanan” yang akhirnya dikirim operatornya.',
'help.guide.edit-booking.step.3': 'Letakkan “Status” pada “Dikonfirmasi”.',
'help.guide.edit-booking.step.3': 'Klik pil “Tertunda” di kepala formulir. Pil itu berubah menjadi “Dikonfirmasi”.',
'help.guide.edit-booking.step.4': 'Klik “Perbarui”.',
'help.guide.edit-booking.result':
'Kartu itu berpindah: pemesanan yang dikonfirmasi berdiri di bagian “Dikonfirmasi” di belakang sebuah titik hijau, dan semua orang di perjalanan melihatnya berpindah.',
@@ -3684,19 +3684,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Baca koneksi perhentian demi perhentian, ganti namanya, atau cari rutenya lagi.',
'help.guide.change-transit-route.step.1':
'Di tab “Transportasi”, koneksi yang direncanakan berada di bawah “Transportasi umum otomatis”. Klik kartunya.',
'Di tab “Transportasi”, koneksi yang direncanakan berada di bawah “Transportasi umum otomatis”. Klik kartunya; koneksi itu terbuka sebagai pemesanan.',
'help.guide.change-transit-route.step.2':
'“Durasi”, “Transit” dan “Jalan kaki” ada di bagian atas. “Itinerari” di bawahnya menelusuri koneksi perhentian demi perhentian, dengan peron dan jalan kaki di antara jalur.',
'help.guide.change-transit-route.step.3':
'“Ubah rute” menjalankan pencarian lagi, sudah terisi dengan kedua ujung koneksi ini dan harinya.',
'“Ubah rute” di kaki pemesanan menjalankan pencarian lagi, sudah terisi dengan kedua ujung koneksi ini dan harinya.',
'help.guide.change-transit-route.step.4':
'Pilih koneksi lain dan klik “Tambahkan ke hari”; koneksi itu mengambil tempat yang lama. “Sunting detail”, di samping “Ubah rute”, justru membuka formulir transportasi biasa, tempat “Kode Pemesanan”, “Status”, peserta dan file berada.',
'Pilih koneksi lain dan klik “Tambahkan ke hari”; koneksi itu mengambil tempat yang lama. “Sunting”, di ujung lain bilah yang sama, justru membuka formulir transportasi biasa, tempat “Kode Pemesanan”, “Status”, peserta, catatan dan file berada.',
'help.guide.change-transit-route.result':
'Perjalanan itu membawa itinerari baru, dan kartunya di tab “Transportasi” menampilkan jalur dan waktu yang baru.',
'help.guide.change-transit-route.tip.1':
'Judul perjalanan hanyalah teks: pensil di sampingnya mengganti namanya tanpa menyentuh rutenya. “Catatan” di bawahnya menerima markdown dan punya tab “Sunting” dan “Pratinjau”.',
'Judul di kepala pemesanan mengganti nama koneksi tanpa menyentuh rutenya. Catatannya ditulis di formulir transportasi di balik “Sunting”.',
'help.guide.change-transit-route.tip.2':
'“Hapus” di kaki tampilan perjalanan mengeluarkan koneksi itu dari perjalanan; hari itu tetap punya perhentiannya.',
'“Hapus” di kaki pemesanan mengeluarkan koneksi itu dari perjalanan; hari itu tetap punya perhentiannya.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Mengubah cara satu ruas ditempuh',
'help.guide.leg-travel-mode.goal':
@@ -3722,17 +3722,17 @@ const help: TranslationStrings = {
'help.guide.edit-transport.goal':
'Perbaiki waktu, peron atau kode pemesanan, atau keluarkan perjalanan itu dari rencana perjalanan.',
'help.guide.edit-transport.step.1':
'Di rencana hari, sebuah transportasi adalah baris berwarna di antara perhentian. Klik baris itu.',
'Di rencana hari, sebuah transportasi adalah baris berwarna di antara perhentian. Klik baris itu; pemesanannya terbuka dengan waktu, rute dan “Kode Pemesanan”.',
'help.guide.edit-transport.step.2':
'Formulirnya adalah formulir yang membuatnya, dengan “Edit transportasi” di bilah judulnya. Semuanya bisa diubah: jenisnya, rutenya, hari dan waktunya, “Kode Pemesanan”, “Status”.',
'“Sunting” di kaki pemesanan membuka formulir yang membuatnya, dengan “Edit transportasi” di bilah judulnya. Semuanya bisa diubah: jenisnya, rutenya, hari dan waktunya, “Kode Pemesanan”, “Status”.',
'help.guide.edit-transport.step.3':
'Rute sebuah penerbangan adalah rantai bandara, rute kereta rantai stasiun. “Tambah persinggahan” menaruh satu lagi di antaranya, dan setiap ruas menyimpan waktunya sendiri dan nomor penerbangan atau nomor keretanya sendiri.',
'help.guide.edit-transport.step.4':
'Klik “Perbarui”. Untuk menghapus transportasi sama sekali, pakai tempat sampah pada kartunya di tab “Transportasi” dan konfirmasikan.',
'Klik “Perbarui”. Untuk menghapus transportasi sama sekali, pakai “Hapus” di kaki pemesanannya, atau tempat sampah pada kartunya di tab “Transportasi”, lalu konfirmasikan.',
'help.guide.edit-transport.result':
'Perubahan tampak di semua tempat transportasi itu muncul: tab “Transportasi”, hari perjalanannya berlangsung, dan garisnya di peta.',
'help.guide.edit-transport.tip.1':
'Formulir yang sama terbuka dari kedua sisi, pensil pada kartu di tab “Transportasi” dan baris transportasi itu sendiri di rencana hari. Koneksi transportasi umum yang direncanakan adalah pengecualian: barisnya membuka tampilan perjalanan, dan “Sunting detail” di sana menuju formulir ini.',
'Formulir yang sama terbuka dari kedua sisi: lewat “Sunting” di pemesanan yang dibuka oleh sebuah baris di rencana hari, dan lewat pensil pada kartu di tab “Transportasi”. Koneksi transportasi umum yang direncanakan juga terbuka sebagai pemesanan; “Ubah rute” di sana mencari lagi, dan “Sunting” menuju formulir ini.',
'help.guide.edit-transport.tip.2':
'Memindahkan transportasi ke hari lain sama sekali tidak memerlukan formulir: seret barisnya dari satu kartu hari ke kartu berikutnya.',
// transport-on-map
+6 -2
View File
@@ -27,8 +27,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Pilih setidaknya satu jenis.',
'places.selectionCount': '{count} dipilih',
'places.deleteSelected': 'Hapus yang dipilih',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Ubah kategori',
'places.categoryChanged': '{count} tempat diperbarui',
'places.kmlKmzImported': '{count} tempat diimpor dari KMZ/KML',
'places.urlResolved': 'Tempat diimpor dari URL',
'places.importList': 'Impor Daftar',
@@ -51,6 +51,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Tampilkan seluruh perjalanan',
'places.filterTracks': 'Trek',
'places.filterByRating': 'Saring menurut penilaian',
'places.filterShow': 'Tampilkan',
'places.clearSearch': 'Hapus pencarian',
'places.yourRating': 'Rating kamu',
'places.notRated': 'Belum dinilai',
'places.search': 'Cari tempat...',
@@ -70,6 +72,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Jalan, Kota, Negara',
'places.formLat': 'Lintang (mis. 48.8566)',
'places.formLng': 'Bujur (mis. 2.3522)',
'places.formLatLabel': 'Lintang',
'places.formLngLabel': 'Bujur',
'places.formCategory': 'Kategori',
'places.noCategory': 'Tanpa Kategori',
'places.newCategory': 'Kategori baru',
+60 -3
View File
@@ -65,6 +65,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Sepeda',
'reservations.type.taxi': 'Taksi',
'reservations.type.transit': 'Transportasi umum',
'reservations.typeShort.transit': 'Angkutan umum',
'reservations.type.transport_other': 'Lainnya',
'reservations.confirm.delete': 'Yakin ingin menghapus reservasi "{name}"?',
'reservations.confirm.deleteTitle': 'Hapus pemesanan?',
@@ -80,6 +81,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Lokasi / Alamat',
'reservations.locationPlaceholder': 'Alamat, Bandara, Hotel...',
'reservations.confirmationCode': 'Kode Pemesanan',
'reservations.routeLabel': 'Rute',
'reservations.segmentCodes': 'Kode per ruas',
'reservations.confirmationPlaceholder': 'mis. ABC12345',
'reservations.day': 'Hari',
'reservations.noDay': 'Tanpa Hari',
@@ -94,6 +97,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Gagal menghapus',
'reservations.confirm.remove': 'Hapus reservasi untuk "{name}"?',
'reservations.linkAssignment': 'Hubungkan ke jadwal harian',
'reservations.linkedTo': 'Terhubung ke',
'reservations.pickAssignment': 'Pilih jadwal dari rencanamu...',
'reservations.noAssignment': 'Tanpa tautan (mandiri)',
'reservations.price': 'Harga',
@@ -134,9 +138,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count} pemesanan ditemukan',
'reservations.import.previewEmpty': 'Tidak ada pemesanan yang dapat diekstrak dari file yang diunggah.',
'reservations.import.removeItem': 'Hapus',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Tinjau',
'reservations.import.tryAi': 'Coba baca dengan AI',
'reservations.import.aiParsing': 'Membaca dengan AI…',
'reservations.import.confirm': 'Impor {count} pemesanan',
'reservations.import.back': 'Kembali',
'reservations.import.success': '{count} pemesanan berhasil diimpor',
@@ -179,5 +183,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Peserta',
'reservations.travelers.assign': 'Tetapkan peserta',
'reservations.travelers.none': 'Belum ada anggota perjalanan.',
'reservations.status.switchTo': 'Ubah ke {status}',
'reservations.view.label': 'Tampilan',
'reservations.view.cards': 'Kartu',
'reservations.view.list': 'Daftar',
'reservations.view.timeline': 'Linimasa',
'reservations.filter': 'Filter',
'reservations.searchPlaceholder': 'Cari',
'reservations.results': '{shown} dari {total}',
'reservations.resetFilters': 'Atur ulang filter',
'reservations.noMatches': 'Tidak ada yang cocok dengan filter ini',
'reservations.viewOptions': 'Opsi tampilan',
'reservations.resetView': 'Atur ulang tampilan',
'reservations.group.label': 'Kelompokkan menurut',
'reservations.group.status': 'Status',
'reservations.group.day': 'Hari',
'reservations.group.type': 'Jenis',
'reservations.group.none': 'Tanpa pengelompokan',
'reservations.transitApart': 'Transportasi umum di bagian tersendiri',
'reservations.group.before': 'Sebelum perjalanan',
'reservations.group.after': 'Setelah perjalanan',
'reservations.group.undated': 'Tanpa tanggal',
'reservations.sort.label': 'Urutkan menurut',
'reservations.sort.date': 'Tanggal',
'reservations.sort.title': 'Judul',
'reservations.sort.type': 'Jenis',
'reservations.sort.status': 'Status',
'reservations.sort.earlyFirst': 'Paling awal dulu',
'reservations.sort.lateFirst': 'Paling akhir dulu',
'reservations.sort.aToZ': 'A ke Z',
'reservations.sort.zToA': 'Z ke A',
'reservations.timeline.dayCount': '{count} hari',
'reservations.timeline.zoom': 'Zum',
'reservations.timeline.trip': 'Perjalanan',
'reservations.timeline.day': 'Hari',
'reservations.timeline.prevDay': 'Hari sebelumnya',
'reservations.timeline.nextDay': 'Hari berikutnya',
'reservations.timeline.openDay': 'Buka {day} per jam',
'reservations.timeline.nothingThisDay': 'Tidak ada apa-apa pada hari ini.',
'reservations.timeline.today': 'Hari ini',
'reservations.timeline.now': 'sekarang',
'reservations.timeline.byType': 'Satu lajur per jenis',
'reservations.timeline.context': 'Tampilkan tab lainnya',
'reservations.timeline.contextBookings': 'Pemesanan',
'reservations.timeline.contextTransports': 'Transportasi',
'reservations.timeline.noneDated': 'Belum ada satu pun yang bertanggal.',
'reservations.undated': 'Tanpa tanggal',
'reservations.nights': 'Malam',
'reservations.start': 'Mulai',
'reservations.end': 'Selesai',
'reservations.rename': 'Ganti nama',
'reservations.copyCode': 'Salin kode pemesanan',
'reservations.copyFailed': 'Tidak dapat menyalin',
'reservations.showInFiles': 'Tampilkan di File',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Edit transportasi',
'transport.title': 'Transportasi',
'transport.addManual': 'Transportasi',
'transport.empty': 'Belum ada transportasi',
};
export default transport;
+14 -6
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Solo nel totale — non ancora saldato',
'costs.tapToInclude': 'Tocca per includere',
'costs.amount': 'Importo',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Suddivisione',
'costs.splitEqually': 'In parti uguali',
'costs.splitCustom': 'Personalizzato',
'costs.splitTicket': 'Scontrino',
'costs.perPerson': '{amount} a persona',
'costs.payersHint': 'Spunta chi ha pagato e inserisci quanto ha versato ciascuno.',
'costs.splitHint.equally': 'Tutti quelli spuntati pagano la stessa quota.',
'costs.splitHint.custom': 'Inserisci la quota di ogni persona; insieme devono fare il totale.',
'costs.splitHint.ticket': "Elenca cosa c'era sulla ricevuta e spunta chi ha preso ciascun articolo.",
'costs.filter.allCategories': 'Tutte le categorie',
'costs.filter.allDays': 'Tutti i giorni',
'costs.expensesCount': '{count} spese',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Ricevute',
'costs.receiptsTitle': 'Ricevute e fatture',
'costs.attachReceipt': 'Allega ricevuta / fattura',
'costs.attach': 'Allega',
'costs.scan.button': 'Scansiona ricevuta',
'costs.scan.reading': 'Lettura della ricevuta…',
'costs.scan.review': 'Controlla la spesa',
'costs.scan.nothingRead': 'Non è stato possibile leggere una ricevuta da questa foto.',
'costs.scan.failed': 'Impossibile avviare la lettura della ricevuta.',
'costs.scan.title': 'Scansiona ricevuta',
'costs.scan.accepted': 'La foto di una sola ricevuta (JPG, PNG o WEBP, fino a 10 MB). Il modello di IA la legge in background, poi controlli la spesa prima di salvarla.',
'costs.scan.accepted':
'La foto di una sola ricevuta (JPG, PNG o WEBP, fino a 10 MB). Il modello di IA la legge in background, poi controlli la spesa prima di salvarla.',
'costs.scan.dropHere': 'Trascina qui la foto della ricevuta, oppure fai clic per sceglierla o scattarla',
'costs.scan.dropActive': 'Rilascia la foto per scansionarla',
'costs.scan.start': 'Scansiona',
@@ -168,6 +175,7 @@ const budget: TranslationStrings = {
'costs.noReceipts': 'Nessuna ricevuta allegata',
'costs.deleteReceipt': 'Rimuovi ricevuta',
'costs.viewReceipt': 'Visualizza ricevuta',
'costs.receiptLeftBehind': 'Salvataggio non riuscito e {count} ricevute caricate sono ancora lì. Rimuovile nella scheda File.',
'costs.receiptLeftBehind':
'Salvataggio non riuscito e {count} ricevute caricate sono ancora lì. Rimuovile nella scheda File.',
};
export default budget;
+2 -2
View File
@@ -79,8 +79,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Tutti i luoghi assegnati',
'dayplan.mobile.noMatch': 'Nessun risultato',
'dayplan.mobile.createNew': 'Crea nuovo luogo',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Espandi tutti i giorni', // en-fallback
'dayplan.collapseAll': 'Comprimi tutti i giorni', // en-fallback
'dayplan.reorderDays': 'Riordina i giorni',
'dayplan.reorderTitle': 'Riordina i giorni',
'dayplan.reorderHint': 'I luoghi, le note e le prenotazioni di un giorno si spostano insieme a esso.',
+23 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'it' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Guida e documentazione',
'help.search': 'Cerca nella documentazione…',
'help.contents': 'Indice',
'help.noResults': 'Nessuna pagina trovata.',
'help.errorTitle': 'Impossibile caricare questa pagina',
'help.errorBody': 'I contenuti della guida arrivano dal wiki di TREK. Controlla la connessione e riprova.',
// center
'help.center.button': 'Aiuto per questa schermata',
@@ -1042,7 +1042,7 @@ const help: TranslationStrings = {
'Travel & map: i percorsi delle prenotazioni sempre sulla mappa, la pillola Esplora luoghi, l’ottimizzazione del percorso dal tuo alloggio, i codici di prenotazione nascosti e i percorsi delle prenotazioni etichettati.',
'help.ctx.settings-display.bullet.3':
'Avvio: se TREK si apre sulla dashboard o sul viaggio attivo, e quale scheda di un viaggio compare per prima.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Aspetto',
'help.ctx.settings-appearance.summary':
'Come appare TREK su questo account: chiaro o scuro, il colore d’accento, vetro e movimento, dimensione del testo, e quali widget mostra la dashboard. Tutto si applica dal vivo, su ogni dispositivo in cui accedi.',
'help.ctx.settings-appearance.bullet.1':
@@ -2303,9 +2303,9 @@ const help: TranslationStrings = {
'Apri la tappa a cui appartiene la prenotazione. Il riquadro mostra una striscia con Confermata o In attesa e il nome della prenotazione.',
'help.guide.place-booking.step.2':
'La striscia porta la Data, l’Ora e il Codice prenotazione, e tutte le note che la prenotazione ha.',
'help.guide.place-booking.step.3': 'Clicca la striscia. Il modulo della prenotazione si apre sopra.',
'help.guide.place-booking.step.3': 'Clicca la striscia. La prenotazione si apre sopra la mappa.',
'help.guide.place-booking.step.4':
'Collega all’assegnazione del giorno è ciò che appende una prenotazione a una tappa, e qui nomina già questa. Richiudi il modulo.',
'Modifica ai piedi della prenotazione apre il suo modulo. Lì Collega all’assegnazione del giorno è ciò che appende una prenotazione a una tappa, e qui nomina già questa. Richiudi il modulo.',
'help.guide.place-booking.step.5':
'Una nuova prenotazione per una tappa parte dalla colonna dei giorni: passa sulla tappa e clicca il + alla sua estremità. Il modulo si apre come Nuova prenotazione, già collegata a quella tappa.',
'help.guide.place-booking.result':
@@ -2667,7 +2667,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'Il colore dice a che punto è una prenotazione: una riga verde è confermata, una ambra è ancora in attesa. Gli alloggi non sono in questa lista, hanno il loro blocco più sotto.',
'help.guide.day-bookings.step.4':
'La lista si limita a leggere le prenotazioni. Una prenotazione si crea e si cambia nella scheda Prenotazioni.',
'Clicca una riga e la prenotazione si apre. Modifica ai suoi piedi la cambia; le nuove prenotazioni si creano nella scheda Prenotazioni.',
'help.guide.day-bookings.result':
'Tutto ciò che è datato sul giorno, e tutto ciò che è legato a una delle sue tappe, sta in questa sola lista.',
'help.guide.day-bookings.tip.1':
@@ -3217,13 +3217,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Clicca Prenotazione manuale in alto a destra nella scheda. Si apre Nuova prenotazione.',
'help.guide.create-booking.step.2':
'Scegli il Tipo di prenotazione dall’elenco in cima al modulo, accanto a Viaggiatori. Alloggio, Ristorante, Evento, Tour, Parcheggio e Altro sono i sei che questa scheda crea, e il modulo cambia con la scelta: solo Alloggio scambia le sue date con un intervallo di giorni.',
'Clicca la pillola del tipo sotto il titolo, nell’intestazione del modulo, e scegli il Tipo di prenotazione. Alloggio, Ristorante, Evento, Tour, Parcheggio e Altro sono i sei che questa scheda crea, e il modulo cambia con la scelta: solo Alloggio scambia le sue date con un intervallo di giorni.',
'help.guide.create-booking.step.3':
'Digita il Titolo. È l’unico campo su cui il modulo insiste, e Aggiungi resta morto finché non c’è qualcosa.',
'help.guide.create-booking.step.4':
'Imposta Data e Ora di inizio, e Data fine e Ora di fine se la prenotazione ha una fine. I calendari offrono solo i giorni dentro il viaggio, e una fine che non è successiva all’inizio lo dice in rosso e blocca Aggiungi.',
'help.guide.create-booking.step.5':
'Inserisci il Codice prenotazione dalla conferma e imposta Stato. In attesa o Confermata decide in quale delle due sezioni finisce la scheda.',
'Inserisci il Codice prenotazione dalla conferma. La pillola di stato accanto al tipo dice In attesa; un clic la passa a Confermata e viceversa, e questo decide in quale delle due sezioni finisce la scheda.',
'help.guide.create-booking.step.6': 'Clicca Aggiungi.',
'help.guide.create-booking.result':
'La prenotazione è una scheda nella sua sezione, con il suo chip di genere, le sue date e il suo codice, e tutti gli altri nel viaggio la vedono comparire.',
@@ -3273,7 +3273,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Dire per chi è una prenotazione',
'help.guide.booking-travelers.goal': 'Segna i viaggiatori che una prenotazione copre, e poi vedi solo le loro.',
'help.guide.booking-travelers.step.1':
'Apri la prenotazione con la matita. Viaggiatori sta in cima al modulo, accanto a Tipo di prenotazione, e dice Assegna viaggiatori finché nessuno è sulla prenotazione.',
'Apri la prenotazione con la matita. Viaggiatori sta accanto al Codice prenotazione, e dice Assegna viaggiatori finché nessuno è sulla prenotazione.',
'help.guide.booking-travelers.step.2':
'Cliccalo e scegli le persone per cui è questa prenotazione; anche gli ospiti con nome sono nell’elenco. Una scelta riceve una spunta e il suo avatar nel campo. Clicca di nuovo il nome per toglierla.',
'help.guide.booking-travelers.step.3': 'Clicca Aggiorna.',
@@ -3368,7 +3368,7 @@ const help: TranslationStrings = {
'Clicca la matita nell’intestazione della scheda. Modifica prenotazione si apre con tutto ciò che la prenotazione sa.',
'help.guide.edit-booking.step.2':
'Cambia ciò che va cambiato, qui il Codice prenotazione che l’operatore ha finalmente mandato.',
'help.guide.edit-booking.step.3': 'Metti Stato su Confermata.',
'help.guide.edit-booking.step.3': 'Clicca la pillola In attesa nell’intestazione del modulo. Diventa Confermata.',
'help.guide.edit-booking.step.4': 'Clicca Aggiorna.',
'help.guide.edit-booking.result':
'La scheda si sposta: una prenotazione confermata sta nella sezione Confermata dietro un punto verde, e tutti nel viaggio la vedono spostarsi.',
@@ -3663,19 +3663,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Leggere il collegamento fermata per fermata, rinominarlo, oppure cercare di nuovo il percorso.',
'help.guide.change-transit-route.step.1':
'Nella scheda Trasporti i collegamenti pianificati stanno sotto Trasporto pubblico automatico. Clicca la scheda.',
'Nella scheda Trasporti i collegamenti pianificati stanno sotto Trasporto pubblico automatico. Clicca la scheda; il collegamento si apre come prenotazione.',
'help.guide.change-transit-route.step.2':
'Durata, Cambi e A piedi stanno in alto. Itinerario sotto di essi percorre il collegamento fermata per fermata, con i binari e i tratti a piedi tra le linee.',
'help.guide.change-transit-route.step.3':
'Cambia percorso rilancia la ricerca, già compilata con i due estremi di questo collegamento e con il suo giorno.',
'Cambia percorso ai piedi della prenotazione rilancia la ricerca, già compilata con i due estremi di questo collegamento e con il suo giorno.',
'help.guide.change-transit-route.step.4':
'Scegli un altro collegamento e clicca Aggiungi al giorno; prende il posto del vecchio. Modifica dettagli, accanto a Cambia percorso, apre invece il normale modulo di trasporto, dove stanno il Codice prenotazione, lo Stato, i viaggiatori e i file.',
'Scegli un altro collegamento e clicca Aggiungi al giorno; prende il posto del vecchio. Modifica, all’altra estremità della stessa barra, apre invece il normale modulo di trasporto, dove stanno il Codice prenotazione, lo Stato, i viaggiatori, le note e i file.',
'help.guide.change-transit-route.result':
'Il viaggio in trasporto pubblico porta il nuovo itinerario, e la sua scheda nella scheda Trasporti mostra le nuove linee e i nuovi orari.',
'help.guide.change-transit-route.tip.1':
'Il titolo del viaggio in trasporto pubblico è solo testo: la matita accanto lo rinomina senza toccare il percorso. Note sotto accettano il markdown e hanno una linguetta Modifica e una linguetta Anteprima.',
'Il titolo nell’intestazione della prenotazione rinomina il collegamento senza toccare il percorso. Le sue note si scrivono nel modulo di trasporto dietro Modifica.',
'help.guide.change-transit-route.tip.2':
'Elimina ai piedi del viaggio in trasporto pubblico toglie il collegamento dal viaggio; il giorno mantiene le sue tappe.',
'Elimina ai piedi della prenotazione toglie il collegamento dal viaggio; il giorno mantiene le sue tappe.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Cambiare come si percorre una tratta',
'help.guide.leg-travel-mode.goal':
@@ -3701,17 +3701,17 @@ const help: TranslationStrings = {
'help.guide.edit-transport.goal':
'Sistemare un orario, un binario o un codice di prenotazione, oppure togliere il tragitto dal viaggio.',
'help.guide.edit-transport.step.1':
'Nel programma del giorno un trasporto è una riga colorata tra le tappe. Cliccala.',
'Nel programma del giorno un trasporto è una riga colorata tra le tappe. Cliccala; la sua prenotazione si apre con gli orari, l’itinerario e il Codice prenotazione.',
'help.guide.edit-transport.step.2':
'Il modulo è quello che l’ha creato, con Modifica trasporto nella barra del titolo. Tutto si può cambiare: il tipo, l’itinerario, i giorni e gli orari, il Codice prenotazione, lo Stato.',
'Modifica ai piedi della prenotazione apre il modulo che l’ha creato, con Modifica trasporto nella barra del titolo. Tutto si può cambiare: il tipo, l’itinerario, i giorni e gli orari, il Codice prenotazione, lo Stato.',
'help.guide.edit-transport.step.3':
'L’itinerario di un volo è una catena di aeroporti, quello di un treno una catena di stazioni. Aggiungi scalo ne mette un altro in mezzo, e ogni tratta mantiene i propri orari e il proprio numero di volo o di treno.',
'help.guide.edit-transport.step.4':
'Clicca Aggiorna. Per togliere del tutto il trasporto, usa il cestino sulla sua scheda nella scheda Trasporti e conferma.',
'Clicca Aggiorna. Per togliere del tutto il trasporto, usa Elimina ai piedi della sua prenotazione, oppure il cestino sulla sua scheda nella scheda Trasporti, e conferma.',
'help.guide.edit-transport.result':
'La modifica si vede ovunque compaia il trasporto: nella scheda Trasporti, nel giorno in cui avviene, e nella sua linea sulla mappa.',
'help.guide.edit-transport.tip.1':
'Lo stesso modulo si apre da entrambi i lati, dalla matita sulla scheda nella scheda Trasporti e dalla riga propria del trasporto nel programma del giorno. Un collegamento di trasporto pubblico pianificato è l’eccezione: la sua riga apre il viaggio in trasporto pubblico, e Modifica dettagli porta da lì a questo modulo.',
'Lo stesso modulo si apre da entrambi i lati: tramite Modifica nella prenotazione che apre una riga del programma del giorno, e tramite la matita sulla scheda nella scheda Trasporti. Anche un collegamento di trasporto pubblico pianificato si apre come prenotazione; lì Cambia percorso cerca di nuovo, e Modifica porta a questo modulo.',
'help.guide.edit-transport.tip.2':
'Spostare un trasporto a un altro giorno non ha affatto bisogno del modulo: trascina la sua riga da una scheda del giorno a quella dopo.',
// transport-on-map
+6 -2
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Seleziona almeno un tipo.',
'places.selectionCount': '{count} selezionato/i',
'places.deleteSelected': 'Elimina selezionati',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Cambia categoria',
'places.categoryChanged': '{count} luoghi aggiornati',
'places.kmlKmzImported': '{count} luoghi importati da KMZ/KML',
'places.urlResolved': "Luogo importato dall'URL",
'places.importList': 'Importa lista',
@@ -52,6 +52,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Mostra tutto il viaggio',
'places.filterTracks': 'Tracce',
'places.filterByRating': 'Filtra per valutazione',
'places.filterShow': 'Mostra',
'places.clearSearch': 'Cancella ricerca',
'places.yourRating': 'La tua valutazione',
'places.notRated': 'Non ancora valutato',
'places.search': 'Cerca luoghi...',
@@ -71,6 +73,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Via, Città, Paese',
'places.formLat': 'Latitudine (es. 48.8566)',
'places.formLng': 'Longitudine (es. 2.3522)',
'places.formLatLabel': 'Latitudine',
'places.formLngLabel': 'Longitudine',
'places.formCategory': 'Categoria',
'places.noCategory': 'Nessuna categoria',
'places.newCategory': 'Nuova categoria',
+60 -3
View File
@@ -65,6 +65,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Bicicletta',
'reservations.type.taxi': 'Taxi',
'reservations.type.transit': 'Trasporto pubblico',
'reservations.typeShort.transit': 'Mezzi pubblici',
'reservations.type.transport_other': 'Altro',
'reservations.confirm.delete': 'Sei sicuro di voler eliminare la prenotazione "{name}"?',
'reservations.confirm.deleteTitle': 'Eliminare la prenotazione?',
@@ -80,6 +81,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Posizione / Indirizzo',
'reservations.locationPlaceholder': 'Indirizzo, aeroporto, hotel...',
'reservations.confirmationCode': 'Codice prenotazione',
'reservations.routeLabel': 'Itinerario',
'reservations.segmentCodes': 'Codici per tratta',
'reservations.confirmationPlaceholder': 'es. ABC12345',
'reservations.day': 'Giorno',
'reservations.noDay': 'Nessun giorno',
@@ -94,6 +97,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Impossibile eliminare',
'reservations.confirm.remove': 'Rimuovere la prenotazione per "{name}"?',
'reservations.linkAssignment': "Collega all'assegnazione del giorno",
'reservations.linkedTo': 'Collegata a',
'reservations.pickAssignment': "Seleziona un'assegnazione dal tuo programma...",
'reservations.noAssignment': 'Nessun collegamento (autonomo)',
'reservations.price': 'Prezzo',
@@ -134,9 +138,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count} prenotazione/i trovata/e',
'reservations.import.previewEmpty': 'Nessuna prenotazione è stata estratta dai file caricati.',
'reservations.import.removeItem': 'Rimuovi',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Da rivedere',
'reservations.import.tryAi': 'Prova la lettura con l’IA',
'reservations.import.aiParsing': 'Lettura con l’IA…',
'reservations.import.confirm': 'Importa {count} prenotazione/i',
'reservations.import.back': 'Indietro',
'reservations.import.success': '{count} prenotazione/i importata/e',
@@ -180,5 +184,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Viaggiatori',
'reservations.travelers.assign': 'Assegna viaggiatori',
'reservations.travelers.none': 'Ancora nessun partecipante al viaggio.',
'reservations.status.switchTo': 'Imposta su {status}',
'reservations.view.label': 'Vista',
'reservations.view.cards': 'Schede',
'reservations.view.list': 'Elenco',
'reservations.view.timeline': 'Cronologia',
'reservations.filter': 'Filtra',
'reservations.searchPlaceholder': 'Cerca',
'reservations.results': '{shown} di {total}',
'reservations.resetFilters': 'Reimposta filtri',
'reservations.noMatches': 'Nessun risultato con questi filtri',
'reservations.viewOptions': 'Opzioni di visualizzazione',
'reservations.resetView': 'Reimposta vista',
'reservations.group.label': 'Raggruppa per',
'reservations.group.status': 'Stato',
'reservations.group.day': 'Giorno',
'reservations.group.type': 'Tipo',
'reservations.group.none': 'Nessun raggruppamento',
'reservations.transitApart': 'Trasporto pubblico in una sezione a parte',
'reservations.group.before': 'Prima del viaggio',
'reservations.group.after': 'Dopo il viaggio',
'reservations.group.undated': 'Senza data',
'reservations.sort.label': 'Ordina per',
'reservations.sort.date': 'Data',
'reservations.sort.title': 'Titolo',
'reservations.sort.type': 'Tipo',
'reservations.sort.status': 'Stato',
'reservations.sort.earlyFirst': "Dalla prima all'ultima",
'reservations.sort.lateFirst': "Dall'ultima alla prima",
'reservations.sort.aToZ': 'Dalla A alla Z',
'reservations.sort.zToA': 'Dalla Z alla A',
'reservations.timeline.dayCount': '{count} giorni',
'reservations.timeline.zoom': 'Zoom',
'reservations.timeline.trip': 'Viaggio',
'reservations.timeline.day': 'Giorno',
'reservations.timeline.prevDay': 'Giorno precedente',
'reservations.timeline.nextDay': 'Giorno successivo',
'reservations.timeline.openDay': 'Apri {day} ora per ora',
'reservations.timeline.nothingThisDay': 'Niente in questo giorno.',
'reservations.timeline.today': 'Oggi',
'reservations.timeline.now': 'ora',
'reservations.timeline.byType': 'Una corsia per tipo',
'reservations.timeline.context': "Mostra l'altra scheda",
'reservations.timeline.contextBookings': 'Prenotazioni',
'reservations.timeline.contextTransports': 'Trasporti',
'reservations.timeline.noneDated': 'Nessuna di queste ha ancora una data.',
'reservations.undated': 'Senza data',
'reservations.nights': 'Notti',
'reservations.start': 'Inizio',
'reservations.end': 'Fine',
'reservations.rename': 'Rinomina',
'reservations.copyCode': 'Copia codice prenotazione',
'reservations.copyFailed': 'Impossibile copiare',
'reservations.showInFiles': 'Mostra nei file',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Modifica trasporto',
'transport.title': 'Trasporti',
'transport.addManual': 'Trasporto',
'transport.empty': 'Ancora nessun trasporto',
};
export default transport;
+14 -6
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': '合計のみ — 未精算',
'costs.tapToInclude': 'タップして追加',
'costs.amount': '金額',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': '分け方',
'costs.splitEqually': '均等',
'costs.splitCustom': 'カスタム',
'costs.splitTicket': 'レシート',
'costs.perPerson': '1人あたり{amount}',
'costs.payersHint': '支払った人にチェックを入れ、それぞれが出した金額を入力します。',
'costs.splitHint.equally': 'チェックを入れた全員が同じ額を負担します。',
'costs.splitHint.custom': '各人の負担額を入力します。すべて足して合計金額になる必要があります。',
'costs.splitHint.ticket': 'レシートの品目を書き出し、それぞれ誰の分かにチェックを入れます。',
'costs.filter.allCategories': 'すべてのカテゴリー',
'costs.filter.allDays': 'すべての日',
'costs.expensesCount': '{count}件の支出',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'レシート',
'costs.receiptsTitle': 'レシート・請求書',
'costs.attachReceipt': 'レシート・請求書を添付',
'costs.attach': '添付',
'costs.scan.button': 'レシートをスキャン',
'costs.scan.reading': 'レシートを読み取り中…',
'costs.scan.review': '支出を確認',
'costs.scan.nothingRead': 'この写真からレシートを読み取れませんでした。',
'costs.scan.failed': 'レシートの読み取りを開始できませんでした。',
'costs.scan.title': 'レシートをスキャン',
'costs.scan.accepted': 'レシート1枚の写真(JPG、PNG、WEBP、10 MB まで)。AI モデルがバックグラウンドで読み取り、保存前に支出を確認します。',
'costs.scan.accepted':
'レシート1枚の写真(JPG、PNG、WEBP、10 MB まで)。AI モデルがバックグラウンドで読み取り、保存前に支出を確認します。',
'costs.scan.dropHere': 'ここにレシートの写真をドロップするか、クリックして選択または撮影',
'costs.scan.dropActive': 'ドロップしてスキャン',
'costs.scan.start': 'スキャン',
@@ -168,6 +175,7 @@ const budget: TranslationStrings = {
'costs.noReceipts': '添付されたレシートはありません',
'costs.deleteReceipt': 'レシートを削除',
'costs.viewReceipt': 'レシートを表示',
'costs.receiptLeftBehind': '保存に失敗し、アップロード済みの領収書が {count} 件残っています。ファイルタブで削除してください。',
'costs.receiptLeftBehind':
'保存に失敗し、アップロード済みの領収書が {count} 件残っています。ファイルタブで削除してください。',
};
export default budget;
+24 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'ja' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'ヘルプとドキュメント',
'help.search': 'ドキュメントを検索…',
'help.contents': '目次',
'help.noResults': '一致するページはありません。',
'help.errorTitle': 'このページを読み込めませんでした',
'help.errorBody': 'ヘルプの内容は TREK wiki から取得しています。接続を確認して、もう一度お試しください。',
// center
'help.center.button': 'この画面のヘルプ',
@@ -981,7 +981,7 @@ const help: TranslationStrings = {
'「Travel & map」:予約ルートを常に地図に表示、スポットを探すピル、宿泊先を起点にしたルート最適化、予約コードのぼかし、予約ルートのラベル表示。',
'help.ctx.settings-display.bullet.3':
'「起動」:TREKをダッシュボードで開くか進行中の旅行で開くか、そして旅行のどのタブを最初に表示するか。',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': '外観',
'help.ctx.settings-appearance.summary':
'このアカウントでのTREKの見た目:ライトかダークか、アクセントカラー、ガラス効果と動き、文字サイズ、ダッシュボードに表示するウィジェット。すべてその場で反映され、サインインしているどの端末にも及びます。',
'help.ctx.settings-appearance.bullet.1':
@@ -2204,9 +2204,9 @@ const help: TranslationStrings = {
'help.guide.place-booking.step.1':
'予約が属する立ち寄り先を開きます。カードには「確定」または「保留」と予約の名前が入った帯が出ます。',
'help.guide.place-booking.step.2': '帯には「日付」「時間」「予約コード」と、予約が持つメモが載ります。',
'help.guide.place-booking.step.3': '帯をクリックします。その予約自身のフォームが上に開きます。',
'help.guide.place-booking.step.3': '帯をクリックします。予約が地図の上に開きます。',
'help.guide.place-booking.step.4':
'「日への割り当てにリンク」が予約を立ち寄り先に留めるもので、ここではすでにこの立ち寄り先の名前が入っています。フォームをまた閉じます。',
'予約の下部にある「編集」で、その予約自身のフォームが開きます。そこの「日への割り当てにリンク」が予約を立ち寄り先に留めるもので、ここではすでにこの立ち寄り先の名前が入っています。フォームをまた閉じます。',
'help.guide.place-booking.step.5':
'立ち寄り先の新しい予約は日程の列から始めます。立ち寄り先にマウスを乗せ、その末尾の + をクリックします。フォームは「新しい予約」として開き、すでにその立ち寄り先にリンクされています。',
'help.guide.place-booking.result':
@@ -2549,7 +2549,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'色が予約の状態を示します。緑の行は確定、琥珀色はまだ保留です。ホテルはこのリストには出ず、下に自分のブロックを持ちます。',
'help.guide.day-bookings.step.4':
'このリストは予約を読み出すだけです。予約を作ったり変えたりするのは「予約」タブです。',
'行をクリックすると予約が開きます。その下部の「編集」で変更でき、新しい予約は「予約」タブで作ります。',
'help.guide.day-bookings.result':
'その日の日付が付いたものも、その日の立ち寄り先にぶら下がったものも、すべてこの1つのリストに入ります。',
'help.guide.day-bookings.tip.1':
@@ -3077,13 +3077,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.goal': 'レストラン、イベント、ツアー、駐車場など、何でも手入力で旅行に入れます。',
'help.guide.create-booking.step.1': 'タブの右上の「手動予約」をクリックします。「新しい予約」が開きます。',
'help.guide.create-booking.step.2':
'フォーム上部の「同行者」の隣にあるリストから「予約タイプ」を選びます。このタブが作るのは「宿泊」「レストラン」「イベント」「ツアー」「駐車場」「その他」の6種類で、選択に応じてフォームが変わります。日付を日の範囲に取り替えるのは「宿泊」だけです。',
'フォームの見出しで、タイトルの下にある種類のピルをクリックし、「予約タイプ」を選びます。このタブが作るのは「宿泊」「レストラン」「イベント」「ツアー」「駐車場」「その他」の6種類で、選択に応じてフォームが変わります。日付を日の範囲に取り替えるのは「宿泊」だけです。',
'help.guide.create-booking.step.3':
'「タイトル」を入力します。フォームが必ず求めるのはこの項目だけで、何か入るまで「追加」は押せません。',
'help.guide.create-booking.step.4':
'「日付」と「開始時刻」を設定し、終わりのある予約なら「終了日」と「終了時刻」も設定します。カレンダーは旅行期間内の日しか示さず、終わりが始まりより後でなければ赤でそう伝えて「追加」を止めます。',
'help.guide.create-booking.step.5':
'確認書の「予約コード」を入れて「ステータス」を設定します。「保留」か「確定」かで、カードが2つのセクションのどちらに入るかが決まります。',
'確認書の「予約コード」を入れます。種類の隣のステータスピルは「保留」と表示されています。クリックすると「確定」になり、もう一度クリックすると戻ります。これで、カードが2つのセクションのどちらに入るかが決まります。',
'help.guide.create-booking.step.6': '「追加」をクリックします。',
'help.guide.create-booking.result':
'予約は種類のチップと日付と予約コードを持つカードとしてそのセクションに並び、旅行のほかの全員にも現れます。',
@@ -3132,7 +3132,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': '予約が誰のためかを示す',
'help.guide.booking-travelers.goal': '予約が対象とする同行者を指定し、そのうえでその人の分だけを表示します。',
'help.guide.booking-travelers.step.1':
'鉛筆で予約を開きます。「同行者」はフォームの上部、「予約タイプ」の隣にあり、予約に誰もいない間は「同行者を割り当て」と表示されます。',
'鉛筆で予約を開きます。「同行者」は「予約コード」の隣にあり、予約に誰もいない間は「同行者を割り当て」と表示されます。',
'help.guide.booking-travelers.step.2':
'そこをクリックして、この予約の対象となる人を選びます。名前の付いた「ゲスト」もリストに含まれます。選ばれた人にはチェックが付き、フィールドにアバターが表示されます。名前をもう一度クリックすると外れます。',
'help.guide.booking-travelers.step.3': '「更新」をクリックします。',
@@ -3223,7 +3223,7 @@ const help: TranslationStrings = {
'カードの見出しにある鉛筆をクリックします。「予約を編集」が、その予約の持つ情報すべてとともに開きます。',
'help.guide.edit-booking.step.2':
'変える必要のあるところを変えます。ここでは業者がようやく送ってきた「予約コード」です。',
'help.guide.edit-booking.step.3': '「ステータス」を「確定」にします。',
'help.guide.edit-booking.step.3': 'フォームの見出しにある「保留」のピルをクリックします。「確定」に変わります。',
'help.guide.edit-booking.step.4': '「更新」をクリックします。',
'help.guide.edit-booking.result':
'カードが移ります。確定した予約は緑の点の後ろ、「確定」のセクションに並び、旅行の全員にその移動が見えます。',
@@ -3508,19 +3508,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.title': '計画された経路を開いて変える',
'help.guide.change-transit-route.goal': '経路を駅ごとに読み、名前を変え、あるいは経路を調べ直します。',
'help.guide.change-transit-route.step.1':
'「移動」タブでは、計画された経路は「公共交通機関の自動検索」の下にあります。カードをクリックします。',
'「移動」タブでは、計画された経路は「公共交通機関の自動検索」の下にあります。カードをクリックすると、その経路が予約として開きます。',
'help.guide.change-transit-route.step.2':
'上に「所要時間」「乗り換え」「徒歩」があります。その下の「行程」が経路を駅ごとにたどり、ホームと路線間の徒歩も示します。',
'help.guide.change-transit-route.step.3':
'「経路を変更」は検索をもう一度実行します。この経路の両端とその日はすでに入っています。',
'予約の下部にある「経路を変更」は検索をもう一度実行します。この経路の両端とその日はすでに入っています。',
'help.guide.change-transit-route.step.4':
'別の経路を選んで「日程に追加」をクリックすると、古いものに取って代わります。「経路を変更」の隣の「詳細を編集」は代わりに通常の移動手段フォームを開き、そこに「予約コード」「ステータス」、同行者、ファイルがあります。',
'別の経路を選んで「日程に追加」をクリックすると、古いものに取って代わります。同じバーの反対の端にある「編集」は代わりに通常の移動手段フォームを開き、そこに「予約コード」「ステータス」、同行者、メモ、ファイルがあります。',
'help.guide.change-transit-route.result':
'経路は新しい行程を持ち、「移動」タブのそのカードは新しい路線と時刻を示します。',
'help.guide.change-transit-route.tip.1':
'経路のタイトルはただのテキストです。隣の鉛筆は経路に触れずに名前を変えます。下の「メモ」は markdown を受け取り、「編集」と「プレビュー」のタブがあります。',
'予約の見出しにあるタイトルで、経路に触れずに名前を変えられます。メモは「編集」の先にある移動手段フォームで書きます。',
'help.guide.change-transit-route.tip.2':
'経路の下部の「削除」はその経路を旅行から外します。日は立ち寄り先をそのまま保ちます。',
'予約の下部の「削除」はその経路を旅行から外します。日は立ち寄り先をそのまま保ちます。',
// leg-travel-mode
'help.guide.leg-travel-mode.title': '一区間の移動方法を変える',
'help.guide.leg-travel-mode.goal': 'ほかは車で進む日の一区間だけを歩くか、その区間を公共交通機関の検索に任せます。',
@@ -3542,17 +3542,18 @@ const help: TranslationStrings = {
// edit-transport
'help.guide.edit-transport.title': '移動手段を変える、または削除する',
'help.guide.edit-transport.goal': '時刻、ホーム、予約コードを直すか、その移動を旅行から外します。',
'help.guide.edit-transport.step.1': '日程では移動手段は立ち寄り先の間の色付きの行です。それをクリックします。',
'help.guide.edit-transport.step.1':
'日程では移動手段は立ち寄り先の間の色付きの行です。それをクリックすると、時刻、経路、「予約コード」とともにその予約が開きます。',
'help.guide.edit-transport.step.2':
'フォームはそれを作ったものと同じで、タイトルバーに「移動手段を編集」と出ます。すべて変えられます。種類、経路、日と時刻、「予約コード」、「ステータス」です。',
'予約の下部にある「編集」で、それを作ったフォームが開き、タイトルバーに「移動手段を編集」と出ます。すべて変えられます。種類、経路、日と時刻、「予約コード」、「ステータス」です。',
'help.guide.edit-transport.step.3':
'航空便の経路は空港の連なり、列車の経路は駅の連なりです。「経由地を追加」は間にもう一つ置き、各区間は自分の時刻と自分の便名または列車番号を保ちます。',
'help.guide.edit-transport.step.4':
'「更新」をクリックします。移動手段をすっかり取り除くには、「移動」タブのそのカードのごみ箱を使って確認します。',
'「更新」をクリックします。移動手段をすっかり取り除くには、その予約の下部にある「削除」か、「移動」タブのそのカードのごみ箱を使って確認します。',
'help.guide.edit-transport.result':
'変更は移動手段が現れるすべての場所に出ます。「移動」タブ、それが動く日、そして地図上のその線です。',
'help.guide.edit-transport.tip.1':
'同じフォームは両側から開きます。「移動」タブのカードの鉛筆と、日程にある移動手段自身の行です。計画された公共交通機関の経路だけは例外で、その行は経路の画面を開き、そこの「詳細を編集」がこのフォームへ導きます。',
'同じフォームは両側から開きます。日程の行が開く予約の「編集」からと、「移動」タブのカードの鉛筆からです。計画された公共交通機関の経路も予約として開きます。そこでは「経路を変更」で検索し直し、「編集」でこのフォームへ進みます。',
'help.guide.edit-transport.tip.2':
'移動手段を別の日へ動かすのにフォームは要りません。行をある日のカードから次のカードへドラッグします。',
// transport-on-map
+6 -2
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': '少なくとも1つ選択してください。',
'places.selectionCount': '{count} 件選択中',
'places.deleteSelected': '選択を削除',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'カテゴリを変更',
'places.categoryChanged': '{count} 件の場所を更新しました',
'places.kmlKmzImported': 'KMZ/KMLから {count} 件の場所をインポートしました',
'places.urlResolved': 'URLから場所をインポートしました',
'places.importList': 'リストをインポート',
@@ -52,6 +52,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': '旅行全体を表示',
'places.filterTracks': 'トラック',
'places.filterByRating': '評価で絞り込む',
'places.filterShow': '表示',
'places.clearSearch': '検索をクリア',
'places.yourRating': 'あなたの評価',
'places.notRated': '未評価',
'places.search': '場所を検索…',
@@ -71,6 +73,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': '通り、都市、国',
'places.formLat': '緯度(例:48.8566)',
'places.formLng': '経度(例:2.3522)',
'places.formLatLabel': '緯度',
'places.formLngLabel': '経度',
'places.formCategory': 'カテゴリ',
'places.noCategory': 'カテゴリなし',
'places.newCategory': '新しいカテゴリ',
+60 -3
View File
@@ -64,6 +64,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': '自転車',
'reservations.type.taxi': 'タクシー',
'reservations.type.transit': '公共交通機関',
'reservations.typeShort.transit': '公共交通',
'reservations.type.transport_other': 'その他',
'reservations.confirm.delete': '予約「{name}」を削除しますか?',
'reservations.confirm.deleteTitle': '予約を削除しますか?',
@@ -79,6 +80,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': '場所/住所',
'reservations.locationPlaceholder': '住所、空港、ホテル...',
'reservations.confirmationCode': '予約コード',
'reservations.routeLabel': '経路',
'reservations.segmentCodes': '区間ごとのコード',
'reservations.confirmationPlaceholder': '例:ABC12345',
'reservations.day': '日',
'reservations.noDay': '日なし',
@@ -93,6 +96,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': '削除に失敗しました',
'reservations.confirm.remove': '「{name}」の予約を削除しますか?',
'reservations.linkAssignment': '日への割り当てにリンク',
'reservations.linkedTo': 'リンク先',
'reservations.pickAssignment': '計画から割り当てを選択...',
'reservations.noAssignment': 'リンクなし(単独)',
'reservations.price': '価格',
@@ -133,9 +137,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count} 件の予約が見つかりました',
'reservations.import.previewEmpty': 'アップロードされたファイルから予約を抽出できませんでした。',
'reservations.import.removeItem': '削除',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': '要確認',
'reservations.import.tryAi': 'AI で読み取る',
'reservations.import.aiParsing': 'AI で読み取り中…',
'reservations.import.confirm': '{count} 件の予約をインポート',
'reservations.import.back': '戻る',
'reservations.import.success': '{count} 件の予約をインポートしました',
@@ -179,5 +183,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': '同行者',
'reservations.travelers.assign': '同行者を割り当て',
'reservations.travelers.none': 'まだ旅行メンバーがいません。',
'reservations.status.switchTo': '{status}に変更',
'reservations.view.label': '表示',
'reservations.view.cards': 'カード',
'reservations.view.list': 'リスト',
'reservations.view.timeline': 'タイムライン',
'reservations.filter': 'フィルター',
'reservations.searchPlaceholder': '検索',
'reservations.results': '{total}件中{shown}件',
'reservations.resetFilters': 'フィルターをリセット',
'reservations.noMatches': 'このフィルターに一致するものはありません',
'reservations.viewOptions': '表示オプション',
'reservations.resetView': '表示をリセット',
'reservations.group.label': 'グループ化',
'reservations.group.status': 'ステータス',
'reservations.group.day': '日',
'reservations.group.type': '種類',
'reservations.group.none': 'グループ化しない',
'reservations.transitApart': '公共交通機関を別セクションにする',
'reservations.group.before': '旅行前',
'reservations.group.after': '旅行後',
'reservations.group.undated': '日付なし',
'reservations.sort.label': '並び替え',
'reservations.sort.date': '日付',
'reservations.sort.title': 'タイトル',
'reservations.sort.type': '種類',
'reservations.sort.status': 'ステータス',
'reservations.sort.earlyFirst': '早い順',
'reservations.sort.lateFirst': '遅い順',
'reservations.sort.aToZ': 'A→Z',
'reservations.sort.zToA': 'Z→A',
'reservations.timeline.dayCount': '{count}日間',
'reservations.timeline.zoom': 'ズーム',
'reservations.timeline.trip': '旅行',
'reservations.timeline.day': '日',
'reservations.timeline.prevDay': '前の日',
'reservations.timeline.nextDay': '次の日',
'reservations.timeline.openDay': '{day}を時間単位で開く',
'reservations.timeline.nothingThisDay': 'この日には何もありません。',
'reservations.timeline.today': '今日',
'reservations.timeline.now': '現在',
'reservations.timeline.byType': '種類ごとに1レーン',
'reservations.timeline.context': 'もう一方のタブも表示',
'reservations.timeline.contextBookings': '予約',
'reservations.timeline.contextTransports': '移動',
'reservations.timeline.noneDated': 'どれにもまだ日付がありません。',
'reservations.undated': '日付なし',
'reservations.nights': '泊',
'reservations.start': '開始',
'reservations.end': '終了',
'reservations.rename': '名前を変更',
'reservations.copyCode': '予約コードをコピー',
'reservations.copyFailed': 'コピーできませんでした',
'reservations.showInFiles': 'ファイルで表示',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': '移動手段を編集',
'transport.title': '移動手段',
'transport.addManual': '交通',
'transport.empty': '移動手段はまだありません',
};
export default transport;
+12 -5
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': '합계에만 반영 — 아직 미정산',
'costs.tapToInclude': '탭하여 포함',
'costs.amount': '금액',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': '나누기',
'costs.splitEqually': '균등하게',
'costs.splitCustom': '직접 설정',
'costs.splitTicket': '영수증',
'costs.perPerson': '1인당 {amount}',
'costs.payersHint': '결제한 사람을 체크하고 각자 낸 금액을 입력하세요.',
'costs.splitHint.equally': '체크한 모든 사람이 같은 몫을 냅니다.',
'costs.splitHint.custom': '각자의 몫을 입력하세요. 모두 합쳐 총액이 되어야 합니다.',
'costs.splitHint.ticket': '영수증에 있던 항목을 적고, 항목마다 누구 몫인지 체크하세요.',
'costs.filter.allCategories': '모든 카테고리',
'costs.filter.allDays': '모든 날짜',
'costs.expensesCount': '지출 {count}건',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': '영수증',
'costs.receiptsTitle': '영수증 및 청구서',
'costs.attachReceipt': '영수증 / 청구서 첨부',
'costs.attach': '첨부',
'costs.scan.button': '영수증 스캔',
'costs.scan.reading': '영수증 읽는 중…',
'costs.scan.review': '지출 검토',
'costs.scan.nothingRead': '이 사진에서 영수증을 읽지 못했습니다.',
'costs.scan.failed': '영수증 읽기를 시작하지 못했습니다.',
'costs.scan.title': '영수증 스캔',
'costs.scan.accepted': '영수증 한 장의 사진(JPG, PNG, WEBP, 최대 10MB). AI 모델이 백그라운드에서 읽은 뒤, 저장하기 전에 지출을 확인합니다.',
'costs.scan.accepted':
'영수증 한 장의 사진(JPG, PNG, WEBP, 최대 10MB). AI 모델이 백그라운드에서 읽은 뒤, 저장하기 전에 지출을 확인합니다.',
'costs.scan.dropHere': '영수증 사진을 여기에 놓거나, 클릭해서 선택하거나 촬영하세요',
'costs.scan.dropActive': '놓아서 사진 스캔',
'costs.scan.start': '스캔',
+25 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'ko' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': '도움말 및 문서',
'help.search': '문서 검색…',
'help.contents': '목차',
'help.noResults': '일치하는 페이지가 없습니다.',
'help.errorTitle': '이 페이지를 불러올 수 없습니다',
'help.errorBody': '도움말 내용은 TREK 위키에서 가져옵니다. 연결을 확인하고 다시 시도하세요.',
// center
'help.center.button': '이 화면의 도움말',
@@ -961,7 +961,7 @@ const help: TranslationStrings = {
'“Travel & map”: 예약 경로를 항상 지도에 표시, 장소 탐색 알약 버튼, 숙소 기준 경로 최적화, 예약 코드 흐리게, 예약 경로에 이름 표시.',
'help.ctx.settings-display.bullet.3':
'“시작”: TREK이 대시보드에서 열릴지 진행 중인 여행에서 열릴지, 그리고 여행의 어느 탭이 먼저 나올지.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': '모양',
'help.ctx.settings-appearance.summary':
'이 계정에서 TREK이 보이는 방식: 라이트 또는 다크, 강조 색상, 유리 효과와 움직임, 글자 크기, 대시보드에 보일 위젯. 모두 즉시 적용되며 로그인한 모든 기기에 반영됩니다.',
'help.ctx.settings-appearance.bullet.1':
@@ -2122,9 +2122,9 @@ const help: TranslationStrings = {
'help.guide.place-booking.step.1':
'예약이 속한 정차지를 엽니다. 카드에 “확정됨” 또는 “대기 중”과 예약 이름이 담긴 띠가 보입니다.',
'help.guide.place-booking.step.2': '그 띠에는 “날짜”, “시간”, “예약 코드”와 예약이 가진 메모가 담깁니다.',
'help.guide.place-booking.step.3': '띠를 클릭합니다. 그 예약 자체의 양식이 그 위에 열립니다.',
'help.guide.place-booking.step.3': '띠를 클릭합니다. 예약이 지도 위에 열립니다.',
'help.guide.place-booking.step.4':
'“날 배정에 연결”이 예약을 정차지에 붙이는 항목이고, 여기서는 이미 이 정차지를 가리키고 있습니다. 양식을 다시 닫습니다.',
'예약 맨 아래의 “편집”이 그 예약 자체의 양식을 엽니다. 거기서 “날 배정에 연결”이 예약을 정차지에 붙이는 항목이고, 여기서는 이미 이 정차지를 가리키고 있습니다. 양식을 다시 닫습니다.',
'help.guide.place-booking.step.5':
'정차지의 새 예약은 일자 열에서 시작합니다. 정차지에 마우스를 올리고 그 끝의 +를 클릭하세요. 양식이 “새 예약”으로 열리고, 이미 그 정차지에 연결되어 있습니다.',
'help.guide.place-booking.result':
@@ -2455,7 +2455,8 @@ const help: TranslationStrings = {
'한 행에는 예약의 종류와 이름이 나오고, 경유지에 속하면 가운뎃점 뒤에 그 경유지가 붙습니다. 시간은 오른쪽 끝에 있습니다.',
'help.guide.day-bookings.step.3':
'색이 예약의 상태를 말해 줍니다. 초록 행은 확정됨, 호박색 행은 아직 대기 중입니다. 호텔은 이 목록에 없고 아래에 자기 블록을 가집니다.',
'help.guide.day-bookings.step.4': '이 목록은 예약을 읽어 주기만 합니다. 예약을 만들고 바꾸는 곳은 “예약” 탭입니다.',
'help.guide.day-bookings.step.4':
'행을 클릭하면 예약이 열립니다. 맨 아래의 “편집”으로 바꿀 수 있고, 새 예약은 “예약” 탭에서 만듭니다.',
'help.guide.day-bookings.result':
'그 날로 날짜가 잡힌 것도, 그 날의 경유지에 달린 것도 모두 이 하나의 목록에 있습니다.',
'help.guide.day-bookings.tip.1':
@@ -2974,13 +2975,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.goal': '식당, 이벤트, 투어, 주차 자리, 그 밖의 무엇이든 손으로 여행에 넣습니다.',
'help.guide.create-booking.step.1': '탭 오른쪽 위의 “직접 예약”을 클릭합니다. “새 예약”이 열립니다.',
'help.guide.create-booking.step.2':
'양식 위쪽의 “동행자” 옆에 있는 목록에서 “예약 유형”을 고릅니다. 이 탭이 만드는 여섯 가지는 “숙박”, “레스토랑”, “이벤트”, “투어”, “주차”, “기타”이고, 고른 것에 따라 양식이 바뀝니다. 날짜를 날의 범위로 바꾸는 것은 “숙박”뿐입니다.',
'양식 머리에서 제목 아래의 유형 알약을 클릭하고 “예약 유형”을 고릅니다. 이 탭이 만드는 여섯 가지는 “숙박”, “레스토랑”, “이벤트”, “투어”, “주차”, “기타”이고, 고른 것에 따라 양식이 바뀝니다. 날짜를 날의 범위로 바꾸는 것은 “숙박”뿐입니다.',
'help.guide.create-booking.step.3':
'“제목”을 입력합니다. 양식이 꼭 요구하는 항목은 이 하나뿐이고, 무언가 들어가기 전까지 “추가”는 눌리지 않습니다.',
'help.guide.create-booking.step.4':
'“날짜”와 “시작 시간”을 정하고, 끝이 있는 예약이라면 “종료 날짜”와 “종료 시간”도 정합니다. 달력은 여행 안의 날만 내어 주고, 끝이 시작보다 뒤가 아니면 빨간색으로 그렇게 알리며 “추가”를 막습니다.',
'help.guide.create-booking.step.5':
'확인서의 “예약 코드”를 넣고 “상태”를 정합니다. “대기 중”이냐 “확정됨”이냐가 카드가 두 구역 가운데 어디에 놓일지를 결정합니다.',
'확인서의 “예약 코드”를 넣습니다. 유형 옆의 상태 알약에는 “대기 중”이라고 적혀 있고, 클릭하면 “확정됨”으로 바뀌었다가 다시 돌아옵니다. 이것이 카드가 두 구역 가운데 어디에 놓일지를 결정합니다.',
'help.guide.create-booking.step.6': '“추가”를 클릭합니다.',
'help.guide.create-booking.result':
'예약은 유형 칩과 날짜와 코드를 단 카드로 제 구역에 서고, 여행의 다른 모두에게도 나타납니다.',
@@ -3026,7 +3027,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': '예약이 누구를 위한 것인지 밝히기',
'help.guide.booking-travelers.goal': '예약이 포함하는 동행자를 표시하고, 그런 다음 그 사람의 것만 봅니다.',
'help.guide.booking-travelers.step.1':
'연필로 예약을 엽니다. “동행자”는 양식 위쪽, “예약 유형” 옆에 있고, 예약에 아무도 없는 동안에는 “동행자 지정”이라고 표시됩니다.',
'연필로 예약을 엽니다. “동행자”는 “예약 코드” 옆에 있고, 예약에 아무도 없는 동안에는 “동행자 지정”이라고 표시됩니다.',
'help.guide.booking-travelers.step.2':
'그곳을 클릭하고 이 예약이 해당하는 사람을 고릅니다. 이름이 있는 “게스트”도 목록에 있습니다. 고른 사람에게는 체크가 붙고 필드에 그 사람의 아바타가 나타납니다. 이름을 다시 클릭하면 풀립니다.',
'help.guide.booking-travelers.step.3': '“업데이트”를 클릭합니다.',
@@ -3116,7 +3117,7 @@ const help: TranslationStrings = {
'help.guide.edit-booking.step.1':
'카드 머리의 연필을 클릭합니다. “예약 편집”이 그 예약이 아는 모든 것과 함께 열립니다.',
'help.guide.edit-booking.step.2': '바꿀 것을 바꿉니다. 여기서는 업체가 마침내 보내온 “예약 코드”입니다.',
'help.guide.edit-booking.step.3': '“상태”를 “확정됨”으로 둡니다.',
'help.guide.edit-booking.step.3': '양식 머리의 “대기 중” 알약을 클릭합니다. “확정됨”으로 바뀝니다.',
'help.guide.edit-booking.step.4': '“업데이트”를 클릭합니다.',
'help.guide.edit-booking.result':
'카드가 옮겨 갑니다. 확정된 예약은 초록 점 뒤, “확정됨” 구역에 서고, 여행의 모두가 그 이동을 봅니다.',
@@ -3398,19 +3399,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.title': '계획된 연결편 열고 바꾸기',
'help.guide.change-transit-route.goal': '연결편을 정류장 하나하나로 읽고, 이름을 바꾸거나, 경로를 다시 찾습니다.',
'help.guide.change-transit-route.step.1':
'“교통” 탭에서 계획된 연결편은 “자동 대중교통” 아래에 있습니다. 카드를 클릭합니다.',
'“교통” 탭에서 계획된 연결편은 “자동 대중교통” 아래에 있습니다. 카드를 클릭하면 연결편이 예약으로 열립니다.',
'help.guide.change-transit-route.step.2':
'위에 “소요 시간”, “환승”, “도보”가 있습니다. 그 아래의 “여정”이 연결편을 정류장 하나하나로 훑고, 승강장과 노선 사이의 도보도 보여 줍니다.',
'help.guide.change-transit-route.step.3':
'“경로 변경”은 검색을 다시 실행합니다. 이 연결편의 양쪽 끝과 날짜는 이미 채워져 있습니다.',
'예약 맨 아래의 “경로 변경”은 검색을 다시 실행합니다. 이 연결편의 양쪽 끝과 날짜는 이미 채워져 있습니다.',
'help.guide.change-transit-route.step.4':
'다른 연결편을 골라 “일정에 추가”를 클릭하면 옛것의 자리를 대신합니다. “경로 변경” 옆의 “세부 정보 편집”은 대신 보통의 교통 양식을 열고, 거기에 “예약 코드”, “상태”, 동행자, 파일이 있습니다.',
'다른 연결편을 골라 “일정에 추가”를 클릭하면 옛것의 자리를 대신합니다. 같은 막대의 반대쪽 끝에 있는 “편집”은 대신 보통의 교통 양식을 열고, 거기에 “예약 코드”, “상태”, 동행자, 메모, 파일이 있습니다.',
'help.guide.change-transit-route.result':
'그 경로는 새 여정을 담고, “교통” 탭의 카드는 새 노선과 시간을 보여 줍니다.',
'help.guide.change-transit-route.tip.1':
'경로의 제목은 글자일 뿐입니다. 옆의 연필은 경로를 건드리지 않고 이름만 바꿉니다. 아래의 “메모”는 markdown을 받고 “편집”과 “미리보기” 탭이 있습니다.',
'예약 머리의 제목은 경로를 건드리지 않고 연결편의 이름을 바꿉니다. 메모는 “편집” 뒤의 교통 양식에서 적습니다.',
'help.guide.change-transit-route.tip.2':
'경로 맨 아래의 “삭제”는 그 연결편을 여행에서 빼냅니다. 날짜는 장소들을 그대로 지킵니다.',
'예약 맨 아래의 “삭제”는 그 연결편을 여행에서 빼냅니다. 날짜는 장소들을 그대로 지킵니다.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': '한 구간의 이동 방법 바꾸기',
'help.guide.leg-travel-mode.goal':
@@ -3433,17 +3434,18 @@ const help: TranslationStrings = {
// edit-transport
'help.guide.edit-transport.title': '교통 바꾸기 또는 삭제하기',
'help.guide.edit-transport.goal': '시간, 플랫폼, 예약 코드를 고치거나, 그 이동을 여행에서 빼냅니다.',
'help.guide.edit-transport.step.1': '일정에서 교통은 장소들 사이의 색 있는 행입니다. 그 행을 클릭합니다.',
'help.guide.edit-transport.step.1':
'일정에서 교통은 장소들 사이의 색 있는 행입니다. 그 행을 클릭하면 시간, 경로, “예약 코드”와 함께 그 예약이 열립니다.',
'help.guide.edit-transport.step.2':
'양식은 그것을 만든 바로 그 양식이며, 제목 표시줄에 “교통 편집”이 나옵니다. 모두 바꿀 수 있습니다. 유형, 경로, 날짜와 시간, “예약 코드”, “상태”입니다.',
'예약 맨 아래의 “편집”이 그것을 만든 양식을 열고, 제목 표시줄에 “교통 편집”이 나옵니다. 모두 바꿀 수 있습니다. 유형, 경로, 날짜와 시간, “예약 코드”, “상태”입니다.',
'help.guide.edit-transport.step.3':
'항공의 경로는 공항의 연쇄이고, 기차의 경로는 역의 연쇄입니다. “경유지 추가”가 그 사이에 하나를 더 넣고, 각 구간은 자기 시간과 자기 항공편 번호 또는 열차 번호를 지킵니다.',
'help.guide.edit-transport.step.4':
'“업데이트”를 클릭합니다. 교통을 아주 없애려면 “교통” 탭의 그 카드에 있는 휴지통을 쓰고 확인합니다.',
'“업데이트”를 클릭합니다. 교통을 아주 없애려면 그 예약 맨 아래의 “삭제”나 “교통” 탭의 그 카드에 있는 휴지통을 쓰고 확인합니다.',
'help.guide.edit-transport.result':
'변경은 교통이 나타나는 모든 곳에 보입니다. “교통” 탭, 그것이 운행하는 날짜, 그리고 지도 위의 선입니다.',
'help.guide.edit-transport.tip.1':
'같은 양식이 양쪽에서 열립니다. “교통” 탭 카드의 연필과, 일정에 있는 교통 자신의 행입니다. 계획된 대중교통 연결편만 예외로, 그 행은 경로 화면을 열고 거기의 “세부 정보 편집”이 이 양식으로 이어집니다.',
'같은 양식이 양쪽에서 열립니다. 일정의 행이 여는 예약의 “편집”을 통해서, 그리고 “교통” 탭 카드의 연필을 통해서입니다. 계획된 대중교통 연결편도 예약으로 열립니다. 거기서 “경로 변경”은 다시 검색하고, “편집”은 이 양식으로 이어집니다.',
'help.guide.edit-transport.tip.2':
'교통을 다른 날짜로 옮기는 데에는 양식이 전혀 필요 없습니다. 행을 한 날짜 카드에서 다음 카드로 끕니다.',
// transport-on-map
+6 -2
View File
@@ -27,8 +27,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': '가져올 유형을 하나 이상 선택하세요.',
'places.selectionCount': '{count}개 선택됨',
'places.deleteSelected': '선택 항목 삭제',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': '카테고리 변경',
'places.categoryChanged': '장소 {count}곳을 업데이트했습니다',
'places.kmlKmzImported': 'KMZ/KML에서 {count}개 장소를 가져왔습니다',
'places.urlResolved': 'URL에서 장소를 가져왔습니다',
'places.importList': '목록 가져오기',
@@ -51,6 +51,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': '전체 여행 보기',
'places.filterTracks': '트랙',
'places.filterByRating': '평점으로 필터링',
'places.filterShow': '표시',
'places.clearSearch': '검색 지우기',
'places.yourRating': '내 평점',
'places.notRated': '아직 평점 없음',
'places.search': '장소 검색...',
@@ -70,6 +72,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': '도로, 도시, 국가',
'places.formLat': '위도 (예: 48.8566)',
'places.formLng': '경도 (예: 2.3522)',
'places.formLatLabel': '위도',
'places.formLngLabel': '경도',
'places.formCategory': '카테고리',
'places.noCategory': '카테고리 없음',
'places.newCategory': '새 카테고리',
+60 -3
View File
@@ -64,6 +64,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': '자전거',
'reservations.type.taxi': '택시',
'reservations.type.transit': '대중교통',
'reservations.typeShort.transit': '대중교통',
'reservations.type.transport_other': '기타',
'reservations.confirm.delete': '예약 "{name}"을(를) 삭제할까요?',
'reservations.confirm.deleteTitle': '예약을 삭제할까요?',
@@ -79,6 +80,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': '위치 / 주소',
'reservations.locationPlaceholder': '주소, 공항, 호텔...',
'reservations.confirmationCode': '예약 코드',
'reservations.routeLabel': '경로',
'reservations.segmentCodes': '구간별 코드',
'reservations.confirmationPlaceholder': '예: ABC12345',
'reservations.day': '날',
'reservations.noDay': '날 없음',
@@ -93,6 +96,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': '삭제 실패',
'reservations.confirm.remove': '"{name}"의 예약을 제거할까요?',
'reservations.linkAssignment': '날 배정에 연결',
'reservations.linkedTo': '연결 대상',
'reservations.pickAssignment': '계획에서 배정을 선택하세요...',
'reservations.noAssignment': '연결 없음 (독립)',
'reservations.price': '가격',
@@ -133,9 +137,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count}개 예약 발견',
'reservations.import.previewEmpty': '업로드된 파일에서 예약을 추출할 수 없었습니다.',
'reservations.import.removeItem': '제거',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': '검토 필요',
'reservations.import.tryAi': 'AI로 읽어 보기',
'reservations.import.aiParsing': 'AI로 읽는 중…',
'reservations.import.confirm': '{count}개 예약 가져오기',
'reservations.import.back': '뒤로',
'reservations.import.success': '{count}개 예약을 가져왔습니다',
@@ -179,5 +183,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': '동행자',
'reservations.travelers.assign': '동행자 지정',
'reservations.travelers.none': '아직 여행 멤버가 없습니다.',
'reservations.status.switchTo': '{status}(으)로 변경',
'reservations.view.label': '보기',
'reservations.view.cards': '카드',
'reservations.view.list': '목록',
'reservations.view.timeline': '타임라인',
'reservations.filter': '필터',
'reservations.searchPlaceholder': '검색',
'reservations.results': '{total}개 중 {shown}개',
'reservations.resetFilters': '필터 초기화',
'reservations.noMatches': '이 필터에 맞는 항목이 없습니다',
'reservations.viewOptions': '보기 옵션',
'reservations.resetView': '보기 초기화',
'reservations.group.label': '그룹 기준',
'reservations.group.status': '상태',
'reservations.group.day': '일자',
'reservations.group.type': '유형',
'reservations.group.none': '그룹 없음',
'reservations.transitApart': '대중교통을 별도 구역으로',
'reservations.group.before': '여행 전',
'reservations.group.after': '여행 후',
'reservations.group.undated': '날짜 없음',
'reservations.sort.label': '정렬 기준',
'reservations.sort.date': '날짜',
'reservations.sort.title': '제목',
'reservations.sort.type': '유형',
'reservations.sort.status': '상태',
'reservations.sort.earlyFirst': '이른 순',
'reservations.sort.lateFirst': '늦은 순',
'reservations.sort.aToZ': 'A→Z',
'reservations.sort.zToA': 'Z→A',
'reservations.timeline.dayCount': '{count}일',
'reservations.timeline.zoom': '확대',
'reservations.timeline.trip': '여행',
'reservations.timeline.day': '하루',
'reservations.timeline.prevDay': '이전 날',
'reservations.timeline.nextDay': '다음 날',
'reservations.timeline.openDay': '{day} 시간별로 보기',
'reservations.timeline.nothingThisDay': '이 날에는 아무것도 없습니다.',
'reservations.timeline.today': '오늘',
'reservations.timeline.now': '지금',
'reservations.timeline.byType': '유형별로 한 줄씩',
'reservations.timeline.context': '다른 탭도 표시',
'reservations.timeline.contextBookings': '예약',
'reservations.timeline.contextTransports': '교통',
'reservations.timeline.noneDated': '아직 날짜가 있는 항목이 없습니다.',
'reservations.undated': '날짜 없음',
'reservations.nights': '박',
'reservations.start': '시작',
'reservations.end': '종료',
'reservations.rename': '이름 변경',
'reservations.copyCode': '예약 코드 복사',
'reservations.copyFailed': '복사하지 못했습니다',
'reservations.showInFiles': '파일에서 보기',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': '교통 편집',
'transport.title': '교통',
'transport.addManual': '교통',
'transport.empty': '아직 교통편이 없습니다',
};
export default transport;
+14 -6
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Alleen in totaal — nog niet verrekend',
'costs.tapToInclude': 'Tik om toe te voegen',
'costs.amount': 'Bedrag',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Verdelen',
'costs.splitEqually': 'Gelijk',
'costs.splitCustom': 'Aangepast',
'costs.splitTicket': 'Bon',
'costs.perPerson': '{amount} per persoon',
'costs.payersHint': 'Vink aan wie heeft betaald en typ hoeveel ieder heeft bijgedragen.',
'costs.splitHint.equally': 'Iedereen die is aangevinkt betaalt hetzelfde deel.',
'costs.splitHint.custom': 'Typ het deel van elke persoon; samen moeten ze op het totaal uitkomen.',
'costs.splitHint.ticket': 'Zet op een rij wat er op de bon stond en vink aan wie welk item had.',
'costs.filter.allCategories': 'Alle categorieën',
'costs.filter.allDays': 'Alle dagen',
'costs.expensesCount': '{count} uitgaven',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Bonnetjes',
'costs.receiptsTitle': 'Bonnetjes & facturen',
'costs.attachReceipt': 'Bon / factuur bijvoegen',
'costs.attach': 'Bijvoegen',
'costs.scan.button': 'Bon scannen',
'costs.scan.reading': 'Bon wordt gelezen…',
'costs.scan.review': 'Uitgave controleren',
'costs.scan.nothingRead': 'Uit deze foto kon geen bon worden gelezen.',
'costs.scan.failed': 'Het lezen van de bon kon niet worden gestart.',
'costs.scan.title': 'Bon scannen',
'costs.scan.accepted': 'Een foto van één bon (JPG, PNG of WEBP, max. 10 MB). Het AI-model leest hem op de achtergrond; daarna controleer je de uitgave voordat die wordt opgeslagen.',
'costs.scan.accepted':
'Een foto van één bon (JPG, PNG of WEBP, max. 10 MB). Het AI-model leest hem op de achtergrond; daarna controleer je de uitgave voordat die wordt opgeslagen.',
'costs.scan.dropHere': 'Zet de foto van de bon hier neer, of klik om er een te kiezen of te maken',
'costs.scan.dropActive': 'Laat de foto los om te scannen',
'costs.scan.start': 'Scannen',
@@ -168,6 +175,7 @@ const budget: TranslationStrings = {
'costs.noReceipts': 'Geen bonnetjes bijgevoegd',
'costs.deleteReceipt': 'Bonnetje verwijderen',
'costs.viewReceipt': 'Bonnetje bekijken',
'costs.receiptLeftBehind': 'Opslaan mislukt en er staan nog {count} geüploade bonnen. Verwijder ze op het tabblad Bestanden.',
'costs.receiptLeftBehind':
'Opslaan mislukt en er staan nog {count} geüploade bonnen. Verwijder ze op het tabblad Bestanden.',
};
export default budget;
+2 -2
View File
@@ -78,8 +78,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Alle plaatsen toegewezen',
'dayplan.mobile.noMatch': 'Geen resultaat',
'dayplan.mobile.createNew': 'Nieuwe plaats aanmaken',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Alle dagen uitklappen', // en-fallback
'dayplan.collapseAll': 'Alle dagen inklappen', // en-fallback
'dayplan.reorderDays': 'Dagen herordenen',
'dayplan.reorderTitle': 'Dagen herordenen',
'dayplan.reorderHint': 'De plaatsen, notities en boekingen van een dag gaan mee.',
+25 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'nl' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Hulp en documentatie',
'help.search': 'Zoeken in documentatie…',
'help.contents': 'Inhoud',
'help.noResults': 'Geen overeenkomende pagina’s.',
'help.errorTitle': 'Deze pagina kan niet worden geladen',
'help.errorBody': 'De help-inhoud komt van de TREK-wiki. Controleer je verbinding en probeer het opnieuw.',
// center
'help.center.button': 'Hulp bij dit scherm',
@@ -1047,7 +1047,7 @@ const help: TranslationStrings = {
'Travel & map: boekingsroutes altijd op de kaart, de pil Plaatsen ontdekken, routeoptimalisatie vanaf je accommodatie, vervaagde boekingscodes en boekingsroutes met label.',
'help.ctx.settings-display.bullet.3':
'Opstarten: of TREK opent op het dashboard of op de actieve reis, en welk tabblad van een reis als eerste verschijnt.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Weergave',
'help.ctx.settings-appearance.summary':
'Hoe TREK eruitziet op dit account: licht of donker, de accentkleur, glas en beweging, tekstgrootte, en welke widgets het dashboard toont. Alles geldt live, op elk apparaat waarop je inlogt.',
'help.ctx.settings-appearance.bullet.1':
@@ -2321,9 +2321,9 @@ const help: TranslationStrings = {
'Open de stop waar de boeking bij hoort. De details tonen een strook met Bevestigd of In behandeling en de naam van de boeking.',
'help.guide.place-booking.step.2':
'De strook draagt de Datum, de Tijd en de Boekingscode, en de notities die de boeking heeft.',
'help.guide.place-booking.step.3': 'Klik op de strook. Het eigen formulier van de boeking gaat erop open.',
'help.guide.place-booking.step.3': 'Klik op de strook. De boeking gaat boven de kaart open.',
'help.guide.place-booking.step.4':
'Koppelen aan dagtoewijzing is wat een boeking aan een stop hangt, en hier noemt het deze al. Sluit het formulier weer.',
'Bewerken onderaan de boeking opent zijn eigen formulier. Koppelen aan dagtoewijzing is daar wat een boeking aan een stop hangt, en hier noemt het deze al. Sluit het formulier weer.',
'help.guide.place-booking.step.5':
'Een nieuwe boeking voor een stop begint in de dagenkolom: zweef over de stop en klik op de + aan het eind. Het formulier gaat open als Nieuwe reservering, al eraan gekoppeld.',
'help.guide.place-booking.result':
@@ -2687,7 +2687,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'De kleur zegt hoe een boeking ervoor staat: een groene rij is bevestigd, een amberkleurige is nog in behandeling. Accommodaties staan niet in deze lijst, die hebben hun eigen blok eronder.',
'help.guide.day-bookings.step.4':
'De lijst leest de boekingen alleen uit. Een boeking maak en wijzig je onder Boekingen.',
'Klik op een rij en de boeking gaat open. Bewerken onderaan wijzigt hem; nieuwe boekingen maak je onder Boekingen.',
'help.guide.day-bookings.result':
'Alles wat op de dag gedateerd is, en alles wat aan een van zijn stops hangt, staat in deze ene lijst.',
'help.guide.day-bookings.tip.1':
@@ -3235,13 +3235,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Klik rechtsboven op het tabblad op Handmatige boeking. Nieuwe reservering gaat open.',
'help.guide.create-booking.step.2':
'Kies het Boekingstype uit de lijst bovenaan het formulier, naast Reizigers. Accommodatie, Restaurant, Evenement, Rondleiding, Parkeren en Overig zijn de zes die dit tabblad maakt, en het formulier verandert met de keuze: alleen Accommodatie ruilt haar data in voor een reeks dagen.',
'Klik op de typepil onder de titel, in de kop van het formulier, en kies het Boekingstype. Accommodatie, Restaurant, Evenement, Rondleiding, Parkeren en Overig zijn de zes die dit tabblad maakt, en het formulier verandert met de keuze: alleen Accommodatie ruilt haar data in voor een reeks dagen.',
'help.guide.create-booking.step.3':
'Typ de Titel. Het is het enige veld waar het formulier op staat, en Toevoegen blijft dood tot er iets in staat.',
'help.guide.create-booking.step.4':
'Zet Datum en Starttijd, en Einddatum en Eindtijd als de boeking een eind heeft. De kalenders bieden alleen dagen binnen de reis, en een eind dat niet na het begin ligt zegt dat in rood en blokkeert Toevoegen.',
'help.guide.create-booking.step.5':
'Vul de Boekingscode uit de bevestiging in en zet Status. In behandeling of Bevestigd bepaalt in welke van de twee secties de kaart landt.',
'Vul de Boekingscode uit de bevestiging in. De statuspil naast het type toont In behandeling; een klik zet hem op Bevestigd en weer terug, en dat bepaalt in welke van de twee secties de kaart landt.',
'help.guide.create-booking.step.6': 'Klik op Toevoegen.',
'help.guide.create-booking.result':
'De boeking is een kaart in haar sectie, met haar chip voor de soort, haar data en haar code, en alle anderen in de reis zien hem verschijnen.',
@@ -3292,7 +3292,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.title': 'Zeggen voor wie een boeking is',
'help.guide.booking-travelers.goal': 'Markeer de reizigers die een boeking dekt, en zie daarna alleen die van hen.',
'help.guide.booking-travelers.step.1':
'Open de boeking met het potlood. Reizigers staat bovenaan het formulier, naast Boekingstype, en toont Reizigers toewijzen zolang er niemand op de boeking staat.',
'Open de boeking met het potlood. Reizigers staat naast de Boekingscode en toont Reizigers toewijzen zolang er niemand op de boeking staat.',
'help.guide.booking-travelers.step.2':
'Klik erop en kies de mensen voor wie deze boeking is; genoemde gasten staan ook in de lijst. Een gekozen persoon krijgt een vinkje en zijn avatar in het veld. Klik nog eens op de naam om hem eraf te halen.',
'help.guide.booking-travelers.step.3': 'Klik op Bijwerken.',
@@ -3388,7 +3388,8 @@ const help: TranslationStrings = {
'Klik op het potlood in de kop van de kaart. Reservering bewerken gaat open met alles wat de boeking weet.',
'help.guide.edit-booking.step.2':
'Wijzig wat gewijzigd moet worden, hier de Boekingscode die de aanbieder eindelijk stuurde.',
'help.guide.edit-booking.step.3': 'Zet Status op Bevestigd.',
'help.guide.edit-booking.step.3':
'Klik op de pil In behandeling in de kop van het formulier. Hij springt op Bevestigd.',
'help.guide.edit-booking.step.4': 'Klik op Bijwerken.',
'help.guide.edit-booking.result':
'De kaart verhuist: een bevestigde boeking staat in de sectie Bevestigd achter een groene stip, en iedereen in de reis ziet haar verhuizen.',
@@ -3682,19 +3683,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'De verbinding halte voor halte lezen, hernoemen, of de route opnieuw laten opzoeken.',
'help.guide.change-transit-route.step.1':
'In het tabblad Transport zitten de geplande verbindingen onder Automatisch openbaar vervoer. Klik op de kaart.',
'In het tabblad Transport zitten de geplande verbindingen onder Automatisch openbaar vervoer. Klik op de kaart; de verbinding gaat open als boeking.',
'help.guide.change-transit-route.step.2':
'Duur, Overstappen en Lopen staan bovenaan. Reisplan daaronder loopt de verbinding halte voor halte door, met de perrons en de stukken lopen tussen de lijnen.',
'help.guide.change-transit-route.step.3':
'Route wijzigen draait het zoeken opnieuw, al gevuld met de twee uiteinden van deze verbinding en met haar dag.',
'Route wijzigen onderaan de boeking draait het zoeken opnieuw, al gevuld met de twee uiteinden van deze verbinding en met haar dag.',
'help.guide.change-transit-route.step.4':
'Kies een andere verbinding en klik op Toevoegen aan dag; die neemt de plaats van de oude in. Details bewerken, naast Route wijzigen, opent in plaats daarvan het gewone vervoersformulier, waar de Boekingscode, de Status, de reizigers en de bestanden wonen.',
'Kies een andere verbinding en klik op Toevoegen aan dag; die neemt de plaats van de oude in. Bewerken, aan het andere eind van dezelfde balk, opent in plaats daarvan het gewone vervoersformulier, waar de Boekingscode, de Status, de reizigers, de notities en de bestanden wonen.',
'help.guide.change-transit-route.result':
'De ov-reis draagt het nieuwe reisplan, en haar kaart in het tabblad Transport toont de nieuwe lijnen en tijden.',
'help.guide.change-transit-route.tip.1':
'De titel van de ov-reis is alleen tekst: het potlood ernaast hernoemt hem zonder de route aan te raken. Notities eronder nemen markdown en hebben een tabblad Bewerken en een tabblad Voorbeeld.',
'De titel in de kop van de boeking hernoemt de verbinding zonder de route aan te raken. Haar notities schrijf je in het vervoersformulier achter Bewerken.',
'help.guide.change-transit-route.tip.2':
'Verwijderen onderaan de ov-reis haalt de verbinding uit de reis; de dag houdt zijn stops.',
'Verwijderen onderaan de boeking haalt de verbinding uit de reis; de dag houdt zijn stops.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Wijzigen hoe één traject wordt afgelegd',
'help.guide.leg-travel-mode.goal':
@@ -3719,17 +3720,18 @@ const help: TranslationStrings = {
'help.guide.edit-transport.title': 'Vervoer wijzigen of verwijderen',
'help.guide.edit-transport.goal':
'Een tijd, een perron of een boekingscode rechtzetten, of de rit uit de reis halen.',
'help.guide.edit-transport.step.1': 'In het dagplan is een transport een gekleurde rij tussen de stops. Klik erop.',
'help.guide.edit-transport.step.1':
'In het dagplan is een transport een gekleurde rij tussen de stops. Klik erop; zijn boeking gaat open met de tijden, de route en de Boekingscode.',
'help.guide.edit-transport.step.2':
'Het formulier is hetzelfde dat het aanmaakte, met Vervoer bewerken in de titelbalk. Alles kan veranderen: het type, de route, de dagen en tijden, de Boekingscode, de Status.',
'Bewerken onderaan de boeking opent het formulier dat hem aanmaakte, met Vervoer bewerken in de titelbalk. Alles kan veranderen: het type, de route, de dagen en tijden, de Boekingscode, de Status.',
'help.guide.edit-transport.step.3':
'De route van een vlucht is een keten van luchthavens, die van een trein een keten van stations. Tussenstop toevoegen zet er nog een tussenin, en elk traject houdt zijn eigen tijden en zijn eigen vlucht- of treinnummer.',
'help.guide.edit-transport.step.4':
'Klik op Bijwerken. Om het transport helemaal weg te halen, gebruik je de prullenbak op zijn kaart in het tabblad Transport en bevestig je.',
'Klik op Bijwerken. Om het transport helemaal weg te halen, gebruik je Verwijderen onderaan zijn boeking, of de prullenbak op zijn kaart in het tabblad Transport, en bevestig je.',
'help.guide.edit-transport.result':
'De wijziging is overal te zien waar het transport voorkomt: het tabblad Transport, de dag waarop het rijdt, en zijn lijn op de kaart.',
'help.guide.edit-transport.tip.1':
'Hetzelfde formulier gaat van twee kanten open, via het potlood op de kaart in het tabblad Transport en via de eigen rij van het transport in het dagplan. Een geplande ov-verbinding is de uitzondering: haar rij opent de ov-reis, en Details bewerken leidt daar naar dit formulier.',
'Hetzelfde formulier gaat van twee kanten open: via Bewerken in de boeking die een rij van het dagplan opent, en via het potlood op de kaart in het tabblad Transport. Een geplande ov-verbinding gaat ook als boeking open; Route wijzigen zoekt daar opnieuw, en Bewerken leidt naar dit formulier.',
'help.guide.edit-transport.tip.2':
'Een transport naar een andere dag verplaatsen heeft het formulier helemaal niet nodig: sleep zijn rij van de ene dagkaart naar de volgende.',
// transport-on-map
+6 -2
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Selecteer minstens één type.',
'places.selectionCount': '{count} geselecteerd',
'places.deleteSelected': 'Selectie verwijderen',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Categorie wijzigen',
'places.categoryChanged': '{count} plaatsen bijgewerkt',
'places.kmlKmzImported': '{count} plaatsen geïmporteerd uit KMZ/KML',
'places.urlResolved': 'Plaats geïmporteerd van URL',
'places.importList': 'Lijst importeren',
@@ -52,6 +52,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Hele reis tonen',
'places.filterTracks': 'Tracks',
'places.filterByRating': 'Filteren op beoordeling',
'places.filterShow': 'Tonen',
'places.clearSearch': 'Zoekopdracht wissen',
'places.yourRating': 'Jouw beoordeling',
'places.notRated': 'Nog niet beoordeeld',
'places.search': 'Plaatsen zoeken...',
@@ -71,6 +73,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Straat, stad, land',
'places.formLat': 'Breedtegraad (bijv. 48.8566)',
'places.formLng': 'Lengtegraad (bijv. 2.3522)',
'places.formLatLabel': 'Breedtegraad',
'places.formLngLabel': 'Lengtegraad',
'places.formCategory': 'Categorie',
'places.noCategory': 'Geen categorie',
'places.newCategory': 'Nieuwe categorie',
+60 -3
View File
@@ -65,6 +65,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Fiets',
'reservations.type.taxi': 'Taxi',
'reservations.type.transit': 'Openbaar vervoer',
'reservations.typeShort.transit': 'OV',
'reservations.type.transport_other': 'Overig',
'reservations.confirm.delete': 'Weet je zeker dat je de reservering "{name}" wilt verwijderen?',
'reservations.confirm.deleteTitle': 'Boeking verwijderen?',
@@ -80,6 +81,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Locatie / Adres',
'reservations.locationPlaceholder': 'Adres, luchthaven, hotel...',
'reservations.confirmationCode': 'Boekingscode',
'reservations.routeLabel': 'Route',
'reservations.segmentCodes': 'Codes per traject',
'reservations.confirmationPlaceholder': 'bijv. ABC12345',
'reservations.day': 'Dag',
'reservations.noDay': 'Geen dag',
@@ -94,6 +97,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Verwijderen mislukt',
'reservations.confirm.remove': 'Reservering voor "{name}" verwijderen?',
'reservations.linkAssignment': 'Koppelen aan dagtoewijzing',
'reservations.linkedTo': 'Gekoppeld aan',
'reservations.pickAssignment': 'Selecteer een toewijzing uit je plan...',
'reservations.noAssignment': 'Geen koppeling (zelfstandig)',
'reservations.price': 'Prijs',
@@ -135,9 +139,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': '{count} reservering(en) gevonden',
'reservations.import.previewEmpty': 'Er konden geen reserveringen worden geëxtraheerd uit de geüploade bestanden.',
'reservations.import.removeItem': 'Verwijderen',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Controleren',
'reservations.import.tryAi': 'Uitlezen met AI proberen',
'reservations.import.aiParsing': 'Uitlezen met AI…',
'reservations.import.confirm': '{count} reservering(en) importeren',
'reservations.import.back': 'Terug',
'reservations.import.success': '{count} reservering(en) geïmporteerd',
@@ -181,5 +185,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Reizigers',
'reservations.travelers.assign': 'Reizigers toewijzen',
'reservations.travelers.none': 'Nog geen reisgenoten in deze reis.',
'reservations.status.switchTo': 'Op {status} zetten',
'reservations.view.label': 'Weergave',
'reservations.view.cards': 'Kaarten',
'reservations.view.list': 'Lijst',
'reservations.view.timeline': 'Tijdlijn',
'reservations.filter': 'Filteren',
'reservations.searchPlaceholder': 'Zoeken',
'reservations.results': '{shown} van {total}',
'reservations.resetFilters': 'Filters resetten',
'reservations.noMatches': 'Niets voldoet aan deze filters',
'reservations.viewOptions': 'Weergaveopties',
'reservations.resetView': 'Weergave resetten',
'reservations.group.label': 'Groeperen op',
'reservations.group.status': 'Status',
'reservations.group.day': 'Dag',
'reservations.group.type': 'Type',
'reservations.group.none': 'Niet groeperen',
'reservations.transitApart': 'Openbaar vervoer als eigen sectie',
'reservations.group.before': 'Vóór de reis',
'reservations.group.after': 'Na de reis',
'reservations.group.undated': 'Zonder datum',
'reservations.sort.label': 'Sorteren op',
'reservations.sort.date': 'Datum',
'reservations.sort.title': 'Titel',
'reservations.sort.type': 'Type',
'reservations.sort.status': 'Status',
'reservations.sort.earlyFirst': 'Vroegste eerst',
'reservations.sort.lateFirst': 'Laatste eerst',
'reservations.sort.aToZ': 'A tot Z',
'reservations.sort.zToA': 'Z tot A',
'reservations.timeline.dayCount': '{count} dagen',
'reservations.timeline.zoom': 'Zoom',
'reservations.timeline.trip': 'Reis',
'reservations.timeline.day': 'Dag',
'reservations.timeline.prevDay': 'Vorige dag',
'reservations.timeline.nextDay': 'Volgende dag',
'reservations.timeline.openDay': '{day} per uur openen',
'reservations.timeline.nothingThisDay': 'Niets op deze dag.',
'reservations.timeline.today': 'Vandaag',
'reservations.timeline.now': 'nu',
'reservations.timeline.byType': 'Eén baan per type',
'reservations.timeline.context': 'Het andere tabblad tonen',
'reservations.timeline.contextBookings': 'Boekingen',
'reservations.timeline.contextTransports': 'Transport',
'reservations.timeline.noneDated': 'Hiervan heeft nog niets een datum.',
'reservations.undated': 'Zonder datum',
'reservations.nights': 'Nachten',
'reservations.start': 'Begin',
'reservations.end': 'Einde',
'reservations.rename': 'Hernoemen',
'reservations.copyCode': 'Boekingscode kopiëren',
'reservations.copyFailed': 'Kopiëren is mislukt',
'reservations.showInFiles': 'Tonen in bestanden',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Vervoer bewerken',
'transport.title': 'Transport',
'transport.addManual': 'Vervoer',
'transport.empty': 'Nog geen vervoer',
};
export default transport;
+14 -6
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Tylko w sumie — jeszcze nierozliczone',
'costs.tapToInclude': 'Dotknij, aby dodać',
'costs.amount': 'Kwota',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Podział',
'costs.splitEqually': 'Po równo',
'costs.splitCustom': 'Własny',
'costs.splitTicket': 'Paragon',
'costs.perPerson': '{amount} na osobę',
'costs.payersHint': 'Zaznacz, kto zapłacił, i wpisz, ile każda z tych osób wyłożyła.',
'costs.splitHint.equally': 'Wszyscy zaznaczeni płacą taką samą część.',
'costs.splitHint.custom': 'Wpisz udział każdej osoby; razem muszą dać całą kwotę.',
'costs.splitHint.ticket': 'Wypisz, co było na paragonie, i zaznacz, kto miał którą pozycję.',
'costs.filter.allCategories': 'Wszystkie kategorie',
'costs.filter.allDays': 'Wszystkie dni',
'costs.expensesCount': '{count} wydatków',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Paragony',
'costs.receiptsTitle': 'Paragony i faktury',
'costs.attachReceipt': 'Załącz paragon / fakturę',
'costs.attach': 'Załącz',
'costs.scan.button': 'Zeskanuj paragon',
'costs.scan.reading': 'Odczytywanie paragonu…',
'costs.scan.review': 'Sprawdź wydatek',
'costs.scan.nothingRead': 'Z tego zdjęcia nie udało się odczytać paragonu.',
'costs.scan.failed': 'Nie udało się rozpocząć odczytu paragonu.',
'costs.scan.title': 'Zeskanuj paragon',
'costs.scan.accepted': 'Zdjęcie jednego paragonu (JPG, PNG lub WEBP, do 10 MB). Model AI odczyta je w tle, a potem sprawdzisz wydatek przed zapisaniem.',
'costs.scan.accepted':
'Zdjęcie jednego paragonu (JPG, PNG lub WEBP, do 10 MB). Model AI odczyta je w tle, a potem sprawdzisz wydatek przed zapisaniem.',
'costs.scan.dropHere': 'Upuść tu zdjęcie paragonu albo kliknij, aby je wybrać lub zrobić',
'costs.scan.dropActive': 'Upuść zdjęcie, aby je zeskanować',
'costs.scan.start': 'Skanuj',
@@ -168,6 +175,7 @@ const budget: TranslationStrings = {
'costs.noReceipts': 'Brak załączonych paragonów',
'costs.deleteReceipt': 'Usuń paragon',
'costs.viewReceipt': 'Zobacz paragon',
'costs.receiptLeftBehind': 'Zapis nie powiódł się, a {count} przesłanych paragonów wciąż tam jest. Usuń je w zakładce Pliki.',
'costs.receiptLeftBehind':
'Zapis nie powiódł się, a {count} przesłanych paragonów wciąż tam jest. Usuń je w zakładce Pliki.',
};
export default budget;
+2 -2
View File
@@ -79,8 +79,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Wszystkie miejsca przypisane',
'dayplan.mobile.noMatch': 'Brak wyników',
'dayplan.mobile.createNew': 'Utwórz nowe miejsce',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Rozwiń wszystkie dni', // en-fallback
'dayplan.collapseAll': 'Zwiń wszystkie dni', // en-fallback
'dayplan.reorderDays': 'Zmień kolejność dni',
'dayplan.reorderTitle': 'Zmień kolejność dni',
'dayplan.reorderHint': 'Miejsca, notatki i rezerwacje danego dnia przenoszą się razem z nim.',
+24 -23
View File
@@ -2,12 +2,12 @@ import type { TranslationStrings } from '../types';
// English fallback until 'pl' is translated.
const help: TranslationStrings = {
'help.title': 'Help & Docs',
'help.search': 'Search docs…',
'help.contents': 'Contents',
'help.noResults': 'No matching pages.',
'help.errorTitle': "Couldn't load this page",
'help.errorBody': 'The help content is fetched from the TREK wiki. Check your connection and try again.',
'help.title': 'Pomoc i dokumentacja',
'help.search': 'Szukaj w dokumentacji…',
'help.contents': 'Spis treści',
'help.noResults': 'Brak pasujących stron.',
'help.errorTitle': 'Nie udało się wczytać tej strony',
'help.errorBody': 'Treść pomocy pochodzi z wiki TREK. Sprawdź połączenie i spróbuj ponownie.',
// center
'help.center.button': 'Pomoc do tego ekranu',
@@ -1019,7 +1019,7 @@ const help: TranslationStrings = {
'Travel & map: trasy rezerwacji zawsze na mapie, pigułka Odkrywaj miejsca, optymalizacja trasy od zakwaterowania, rozmyte kody rezerwacji i etykiety tras rezerwacji.',
'help.ctx.settings-display.bullet.3':
'Uruchamianie: czy TREK otwiera się na pulpicie, czy na aktywnej podróży, i która karta podróży pojawia się pierwsza.',
'help.ctx.settings-appearance.title': 'Appearance',
'help.ctx.settings-appearance.title': 'Wygląd',
'help.ctx.settings-appearance.summary':
'Jak TREK wygląda na tym koncie: jasny lub ciemny, kolor akcentu, szkło i ruch, rozmiar tekstu oraz które widżety pokazuje pulpit. Wszystko działa na żywo, na każdym urządzeniu, na którym się logujesz.',
'help.ctx.settings-appearance.bullet.1':
@@ -2262,9 +2262,9 @@ const help: TranslationStrings = {
'Otwórz przystanek, do którego należy rezerwacja. Karta pokazuje pasek z Potwierdzona albo Oczekująca i z nazwą rezerwacji.',
'help.guide.place-booking.step.2':
'Na pasku są Data, Godzina i Kod rezerwacji oraz wszelkie notatki, które rezerwacja ma.',
'help.guide.place-booking.step.3': 'Kliknij pasek. Otwiera się na nim własny formularz rezerwacji.',
'help.guide.place-booking.step.3': 'Kliknij pasek. Rezerwacja otwiera się nad mapą.',
'help.guide.place-booking.step.4':
'To Przypisz do miejsca przypina rezerwację do przystanku, a tutaj już wskazuje ten jeden. Zamknij formularz z powrotem.',
'Edytuj u dołu rezerwacji otwiera jej własny formularz. To tam Przypisz do miejsca przypina rezerwację do przystanku, a tutaj już wskazuje ten jeden. Zamknij formularz z powrotem.',
'help.guide.place-booking.step.5':
'Nowa rezerwacja dla przystanku zaczyna się w kolumnie dni: najedź na przystanek i kliknij + na jego końcu. Formularz otwiera się jako Nowa rezerwacja, już z nim powiązany.',
'help.guide.place-booking.result':
@@ -2620,7 +2620,7 @@ const help: TranslationStrings = {
'help.guide.day-bookings.step.3':
'Kolor mówi, jak stoi rezerwacja: zielony wiersz jest potwierdzony, bursztynowy wciąż oczekuje. Hoteli nie ma na tej liście, mają własny blok niżej.',
'help.guide.day-bookings.step.4':
'Lista tylko odczytuje rezerwacje. Rezerwację tworzy się i zmienia w zakładce Rezerwacje.',
'Kliknij wiersz, a rezerwacja się otworzy. Edytuj u jej dołu ją zmienia; nowe rezerwacje tworzy się w zakładce Rezerwacje.',
'help.guide.day-bookings.result':
'Wszystko datowane na ten dzień i wszystko wiszące na którymś z jego przystanków jest na tej jednej liście.',
'help.guide.day-bookings.tip.1':
@@ -3159,13 +3159,13 @@ const help: TranslationStrings = {
'help.guide.create-booking.step.1':
'Kliknij Rezerwacja ręczna u góry po prawej stronie zakładki. Otwiera się Nowa rezerwacja.',
'help.guide.create-booking.step.2':
'Wybierz Rodzaj rezerwacji z listy u góry formularza, obok pola Podróżni. Zakwaterowanie, Restauracja, Wydarzenie, Wycieczka, Parking i Inne to te sześć, które ta zakładka tworzy, a formularz zmienia się razem z wyborem: tylko Zakwaterowanie wymienia swoje daty na zakres dni.',
'Kliknij plakietkę rodzaju pod tytułem, w nagłówku formularza, i wybierz Rodzaj rezerwacji. Zakwaterowanie, Restauracja, Wydarzenie, Wycieczka, Parking i Inne to te sześć, które ta zakładka tworzy, a formularz zmienia się razem z wyborem: tylko Zakwaterowanie wymienia swoje daty na zakres dni.',
'help.guide.create-booking.step.3':
'Wpisz Tytuł. To jedyne pole, przy którym formularz się upiera, a Dodaj pozostaje martwy, dopóki nic w nim nie ma.',
'help.guide.create-booking.step.4':
'Ustaw Datę i Godzinę rozpoczęcia, a także Datę końca i Godzinę zakończenia, jeśli rezerwacja ma koniec. Kalendarze oferują tylko dni wewnątrz podróży, a koniec, który nie jest po początku, mówi to na czerwono i blokuje Dodaj.',
'help.guide.create-booking.step.5':
'Wstaw Kod rezerwacji z potwierdzenia i ustaw Status. Oczekująca albo Potwierdzona decyduje, w której z dwóch sekcji wyląduje karta.',
'Wpisz Kod rezerwacji z potwierdzenia. Plakietka statusu obok rodzaju pokazuje Oczekująca; kliknięcie przełącza ją na Potwierdzona i z powrotem, a to decyduje, w której z dwóch sekcji wyląduje karta.',
'help.guide.create-booking.step.6': 'Kliknij Dodaj.',
'help.guide.create-booking.result':
'Rezerwacja jest kartą w swojej sekcji, ze swoją plakietką rodzaju, swoimi datami i swoim kodem, a wszyscy pozostali w podróży widzą, jak się pojawia.',
@@ -3216,7 +3216,7 @@ const help: TranslationStrings = {
'help.guide.booking-travelers.goal':
'Zaznacz podróżnych, których rezerwacja obejmuje, a potem oglądaj tylko ich rezerwacje.',
'help.guide.booking-travelers.step.1':
'Otwórz rezerwację ołówkiem. Pole Podróżni jest u góry formularza, obok pola Rodzaj rezerwacji, i dopóki nikogo nie ma w rezerwacji, pokazuje Przypisz podróżnych.',
'Otwórz rezerwację ołówkiem. Pole Podróżni jest obok Kodu rezerwacji i dopóki nikogo nie ma w rezerwacji, pokazuje Przypisz podróżnych.',
'help.guide.booking-travelers.step.2':
'Kliknij je i wybierz ludzi, dla których ta rezerwacja jest; nazwani goście też są na liście. Wybrany dostaje ptaszka i swój awatar w polu. Kliknij imię jeszcze raz, żeby go zdjąć.',
'help.guide.booking-travelers.step.3': 'Kliknij Aktualizuj.',
@@ -3310,7 +3310,7 @@ const help: TranslationStrings = {
'Kliknij ołówek w nagłówku karty. Otwiera się Edytuj rezerwację ze wszystkim, co rezerwacja wie.',
'help.guide.edit-booking.step.2':
'Zmień to, co trzeba zmienić, tutaj Kod rezerwacji, który operator w końcu przysłał.',
'help.guide.edit-booking.step.3': 'Ustaw Status na Potwierdzona.',
'help.guide.edit-booking.step.3': 'Kliknij plakietkę Oczekująca w nagłówku formularza. Zmienia się na Potwierdzona.',
'help.guide.edit-booking.step.4': 'Kliknij Aktualizuj.',
'help.guide.edit-booking.result':
'Karta się przenosi: potwierdzona rezerwacja stoi w sekcji Potwierdzona za zieloną kropką, a wszyscy w podróży widzą, jak się przenosi.',
@@ -3602,19 +3602,19 @@ const help: TranslationStrings = {
'help.guide.change-transit-route.goal':
'Przeczytaj połączenie przystanek po przystanku, zmień jego nazwę albo wyszukaj trasę jeszcze raz.',
'help.guide.change-transit-route.step.1':
'W zakładce Transport zaplanowane połączenia siedzą pod Automatyczny transport publiczny. Kliknij kartę.',
'W zakładce Transport zaplanowane połączenia siedzą pod Automatyczny transport publiczny. Kliknij kartę; połączenie otwiera się jako rezerwacja.',
'help.guide.change-transit-route.step.2':
'Czas trwania, Przesiadki i Pieszo siedzą u góry. Plan podróży pod nimi przechodzi połączenie przystanek po przystanku, z peronami i odcinkami pieszo między liniami.',
'help.guide.change-transit-route.step.3':
'Zmień trasę uruchamia wyszukiwanie jeszcze raz, już wypełnione obydwoma końcami tego połączenia i jego dniem.',
'Zmień trasę u dołu rezerwacji uruchamia wyszukiwanie jeszcze raz, już wypełnione obydwoma końcami tego połączenia i jego dniem.',
'help.guide.change-transit-route.step.4':
'Wybierz inne połączenie i kliknij Dodaj do dnia; zajmuje miejsce starego. Edytuj szczegóły, obok Zmień trasę, otwiera zamiast tego zwykły formularz transportu, gdzie mieszkają Kod rezerwacji, Status, podróżni i pliki.',
'Wybierz inne połączenie i kliknij Dodaj do dnia; zajmuje miejsce starego. Edytuj, na drugim końcu tego samego paska, otwiera zamiast tego zwykły formularz transportu, gdzie mieszkają Kod rezerwacji, Status, podróżni, notatki i pliki.',
'help.guide.change-transit-route.result':
'Widok Podróż transportem publicznym niesie nowy Plan podróży, a jego karta w zakładce Transport pokazuje nowe linie i godziny.',
'help.guide.change-transit-route.tip.1':
'Tytuł w widoku Podróż transportem publicznym to tylko tekst: ołówek obok niego zmienia nazwę, nie ruszając trasy. Notatki pod spodem przyjmują markdown i mają zakładkę Edytuj i Podgląd.',
'Tytuł w nagłówku rezerwacji zmienia nazwę połączenia, nie ruszając trasy. Jego notatki pisze się w formularzu transportu, do którego prowadzi Edytuj.',
'help.guide.change-transit-route.tip.2':
'Usuń u dołu widoku Podróż transportem publicznym wyjmuje połączenie z podróży; dzień zachowuje swoje przystanki.',
'Usuń u dołu rezerwacji wyjmuje połączenie z podróży; dzień zachowuje swoje przystanki.',
// leg-travel-mode
'help.guide.leg-travel-mode.title': 'Zmień, jak pokonujesz jeden odcinek',
'help.guide.leg-travel-mode.goal':
@@ -3638,17 +3638,18 @@ const help: TranslationStrings = {
// edit-transport
'help.guide.edit-transport.title': 'Zmień albo usuń transport',
'help.guide.edit-transport.goal': 'Popraw godzinę, peron albo kod rezerwacji, albo wyjmij przejazd z podróży.',
'help.guide.edit-transport.step.1': 'W planie dnia transport to kolorowy wiersz między przystankami. Kliknij go.',
'help.guide.edit-transport.step.1':
'W planie dnia transport to kolorowy wiersz między przystankami. Kliknij go; otwiera się jego rezerwacja z godzinami, trasą i Kodem rezerwacji.',
'help.guide.edit-transport.step.2':
'Formularz jest ten sam, który go utworzył, z Edytuj transport na pasku tytułu. Zmienić można wszystko: rodzaj, trasę, dni i godziny, Kod rezerwacji, Status.',
'Edytuj u dołu rezerwacji otwiera formularz, który go utworzył, z Edytuj transport na pasku tytułu. Zmienić można wszystko: rodzaj, trasę, dni i godziny, Kod rezerwacji, Status.',
'help.guide.edit-transport.step.3':
'Trasa lotu to łańcuch lotnisk, trasa pociągu łańcuch stacji. Dodaj przystanek wstawia kolejny pomiędzy, a każdy odcinek zachowuje własne godziny i własny numer lotu albo pociągu.',
'help.guide.edit-transport.step.4':
'Kliknij Aktualizuj. Aby usunąć transport całkiem, użyj kosza na jego karcie w zakładce Transport i potwierdź.',
'Kliknij Aktualizuj. Aby usunąć transport całkiem, użyj Usuń u dołu jego rezerwacji albo kosza na jego karcie w zakładce Transport i potwierdź.',
'help.guide.edit-transport.result':
'Zmiana pokazuje się wszędzie, gdzie transport się pojawia: w zakładce Transport, w dniu, w którym jedzie, i na jego linii na mapie.',
'help.guide.edit-transport.tip.1':
'Ten sam formularz otwiera się z obu stron, ołówkiem na karcie w zakładce Transport i własnym wierszem transportu w planie dnia. Wyjątkiem jest zaplanowane połączenie transportu publicznego: jego wiersz otwiera widok Podróż transportem publicznym, a Edytuj szczegóły prowadzi stamtąd do tego formularza.',
'Ten sam formularz otwiera się z obu stron: przez Edytuj w rezerwacji, którą otwiera wiersz planu dnia, i przez ołówek na karcie w zakładce Transport. Zaplanowane połączenie transportu publicznego też otwiera się jako rezerwacja; Zmień trasę szuka tam od nowa, a Edytuj prowadzi do tego formularza.',
'help.guide.edit-transport.tip.2':
'Przeniesienie transportu na inny dzień w ogóle nie potrzebuje formularza: przeciągnij jego wiersz z jednej karty dnia na następną.',
// transport-on-map
+6 -2
View File
@@ -28,8 +28,8 @@ const places: TranslationStrings = {
'places.kmlImportNoneSelected': 'Wybierz co najmniej jeden typ.',
'places.selectionCount': '{count} zaznaczono',
'places.deleteSelected': 'Usuń wybrane',
'places.changeCategory': 'Change category',
'places.categoryChanged': '{count} places updated',
'places.changeCategory': 'Zmień kategorię',
'places.categoryChanged': 'Zaktualizowano miejsca: {count}',
'places.kmlKmzImported': 'Zaimportowano {count} miejsc z KMZ/KML',
'places.urlResolved': 'Miejsce zaimportowane z URL',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Zaimportowano: {created} • Pominięto: {skipped}',
@@ -42,6 +42,8 @@ const places: TranslationStrings = {
'places.dayScopedClear': 'Pokaż całą podróż',
'places.filterTracks': 'Trasy',
'places.filterByRating': 'Filtruj według oceny',
'places.filterShow': 'Pokaż',
'places.clearSearch': 'Wyczyść wyszukiwanie',
'places.yourRating': 'Twoja ocena',
'places.notRated': 'Jeszcze nie oceniono',
'places.search': 'Szukaj miejsc...',
@@ -61,6 +63,8 @@ const places: TranslationStrings = {
'places.formAddressPlaceholder': 'Ulica, miasto, kraj',
'places.formLat': 'Szerokość (np. 48.8566)',
'places.formLng': 'Długość (np. 2.3522)',
'places.formLatLabel': 'Szerokość',
'places.formLngLabel': 'Długość',
'places.formCategory': 'Kategoria',
'places.noCategory': 'Brak kategorii',
'places.newCategory': 'Nowa kategoria',
+60 -3
View File
@@ -65,6 +65,7 @@ const reservations: TranslationStrings = {
'reservations.type.bicycle': 'Rower',
'reservations.type.taxi': 'Taksówka',
'reservations.type.transit': 'Transport publiczny',
'reservations.typeShort.transit': 'Komunikacja',
'reservations.type.transport_other': 'Inne',
'reservations.confirm.delete': 'Czy na pewno chcesz usunąć rezerwację "{name}"?',
'reservations.confirm.deleteTitle': 'Usunąć rezerwację?',
@@ -80,6 +81,8 @@ const reservations: TranslationStrings = {
'reservations.locationAddress': 'Lokalizacja / Adres',
'reservations.locationPlaceholder': 'Adres, Lotnisko, Hotel...',
'reservations.confirmationCode': 'Kod rezerwacji',
'reservations.routeLabel': 'Trasa',
'reservations.segmentCodes': 'Kody odcinków',
'reservations.confirmationPlaceholder': 'np. ABC12345',
'reservations.day': 'Dzień',
'reservations.noDay': 'Brak dnia',
@@ -94,6 +97,7 @@ const reservations: TranslationStrings = {
'reservations.toast.deleteError': 'Nie udało się usunąć',
'reservations.confirm.remove': 'Usunąć rezerwację "{name}"?',
'reservations.linkAssignment': 'Przypisz do miejsca',
'reservations.linkedTo': 'Powiązano z',
'reservations.pickAssignment': 'Wybierz miejsce z planu...',
'reservations.noAssignment': 'Brak przypisania (samodzielna)',
'reservations.price': 'Cena',
@@ -134,9 +138,9 @@ const reservations: TranslationStrings = {
'reservations.import.previewHeading': 'Znaleziono {count} rezerwację/rezerwacje',
'reservations.import.previewEmpty': 'Nie udało się wyodrębnić rezerwacji z przesłanych plików.',
'reservations.import.removeItem': 'Usuń',
'reservations.import.needsReview': 'Review',
'reservations.import.tryAi': 'Try AI parsing',
'reservations.import.aiParsing': 'Parsing with AI…',
'reservations.import.needsReview': 'Do sprawdzenia',
'reservations.import.tryAi': 'Spróbuj odczytać przez AI',
'reservations.import.aiParsing': 'Odczytywanie przez AI…',
'reservations.import.confirm': 'Importuj {count} rezerwację/rezerwacje',
'reservations.import.back': 'Wstecz',
'reservations.import.success': 'Zaimportowano {count} rezerwację/rezerwacje',
@@ -180,5 +184,58 @@ const reservations: TranslationStrings = {
'reservations.travelers.label': 'Podróżni',
'reservations.travelers.assign': 'Przypisz podróżnych',
'reservations.travelers.none': 'Brak podróżnych w wyprawie.',
'reservations.status.switchTo': 'Ustaw na {status}',
'reservations.view.label': 'Widok',
'reservations.view.cards': 'Karty',
'reservations.view.list': 'Lista',
'reservations.view.timeline': 'Oś czasu',
'reservations.filter': 'Filtruj',
'reservations.searchPlaceholder': 'Szukaj',
'reservations.results': '{shown} z {total}',
'reservations.resetFilters': 'Wyczyść filtry',
'reservations.noMatches': 'Nic nie pasuje do tych filtrów',
'reservations.viewOptions': 'Opcje widoku',
'reservations.resetView': 'Resetuj widok',
'reservations.group.label': 'Grupuj według',
'reservations.group.status': 'Status',
'reservations.group.day': 'Dzień',
'reservations.group.type': 'Rodzaj',
'reservations.group.none': 'Bez grupowania',
'reservations.transitApart': 'Transport publiczny jako osobna sekcja',
'reservations.group.before': 'Przed podróżą',
'reservations.group.after': 'Po podróży',
'reservations.group.undated': 'Bez daty',
'reservations.sort.label': 'Sortuj według',
'reservations.sort.date': 'Data',
'reservations.sort.title': 'Tytuł',
'reservations.sort.type': 'Rodzaj',
'reservations.sort.status': 'Status',
'reservations.sort.earlyFirst': 'Od najwcześniejszych',
'reservations.sort.lateFirst': 'Od najpóźniejszych',
'reservations.sort.aToZ': 'Od A do Z',
'reservations.sort.zToA': 'Od Z do A',
'reservations.timeline.dayCount': 'Dni: {count}',
'reservations.timeline.zoom': 'Skala',
'reservations.timeline.trip': 'Podróż',
'reservations.timeline.day': 'Dzień',
'reservations.timeline.prevDay': 'Poprzedni dzień',
'reservations.timeline.nextDay': 'Następny dzień',
'reservations.timeline.openDay': 'Otwórz {day} w widoku godzinowym',
'reservations.timeline.nothingThisDay': 'Tego dnia nic nie ma.',
'reservations.timeline.today': 'Dziś',
'reservations.timeline.now': 'teraz',
'reservations.timeline.byType': 'Osobny pas dla każdego rodzaju',
'reservations.timeline.context': 'Pokaż drugą zakładkę',
'reservations.timeline.contextBookings': 'Rezerwacje',
'reservations.timeline.contextTransports': 'Transport',
'reservations.timeline.noneDated': 'Żadna z tych pozycji nie ma jeszcze daty.',
'reservations.undated': 'Bez daty',
'reservations.nights': 'Noce',
'reservations.start': 'Początek',
'reservations.end': 'Koniec',
'reservations.rename': 'Zmień nazwę',
'reservations.copyCode': 'Kopiuj kod rezerwacji',
'reservations.copyFailed': 'Nie udało się skopiować',
'reservations.showInFiles': 'Pokaż w plikach',
};
export default reservations;
+1
View File
@@ -6,5 +6,6 @@ const transport: TranslationStrings = {
'transport.modalTitle.edit': 'Edytuj transport',
'transport.title': 'Transport',
'transport.addManual': 'Transport',
'transport.empty': 'Brak transportów',
};
export default transport;
+12 -5
View File
@@ -135,10 +135,15 @@ const budget: TranslationStrings = {
'costs.unfinishedHint': 'Только в сумме — ещё не урегулировано',
'costs.tapToInclude': 'Нажмите, чтобы добавить',
'costs.amount': 'Сумма',
'costs.split': 'Split',
'costs.splitEqually': 'Equally',
'costs.splitCustom': 'Custom',
'costs.splitTicket': 'Ticket',
'costs.split': 'Разделение',
'costs.splitEqually': 'Поровну',
'costs.splitCustom': 'Вручную',
'costs.splitTicket': 'Чек',
'costs.perPerson': '{amount} на человека',
'costs.payersHint': 'Отметьте, кто платил, и впишите, сколько внёс каждый.',
'costs.splitHint.equally': 'Все отмеченные платят одинаковую долю.',
'costs.splitHint.custom': 'Впишите долю каждого; вместе они должны составить всю сумму.',
'costs.splitHint.ticket': 'Перечислите, что было в чеке, и отметьте, кто что брал.',
'costs.filter.allCategories': 'Все категории',
'costs.filter.allDays': 'Все дни',
'costs.expensesCount': 'Расходов: {count}',
@@ -154,13 +159,15 @@ const budget: TranslationStrings = {
'costs.receipts': 'Чеки',
'costs.receiptsTitle': 'Чеки и счета',
'costs.attachReceipt': 'Прикрепить чек / счет',
'costs.attach': 'Прикрепить',
'costs.scan.button': 'Сканировать чек',
'costs.scan.reading': 'Чтение чека…',
'costs.scan.review': 'Проверить расход',
'costs.scan.nothingRead': 'Не удалось прочитать чек с этой фотографии.',
'costs.scan.failed': 'Не удалось начать чтение чека.',
'costs.scan.title': 'Сканировать чек',
'costs.scan.accepted': 'Фото одного чека (JPG, PNG или WEBP, до 10 МБ). Модель ИИ прочитает его в фоне, а затем вы проверите расход перед сохранением.',
'costs.scan.accepted':
'Фото одного чека (JPG, PNG или WEBP, до 10 МБ). Модель ИИ прочитает его в фоне, а затем вы проверите расход перед сохранением.',
'costs.scan.dropHere': 'Перетащите сюда фото чека или нажмите, чтобы выбрать или сделать снимок',
'costs.scan.dropActive': 'Отпустите фото, чтобы отсканировать его',
'costs.scan.start': 'Сканировать',
+2 -2
View File
@@ -78,8 +78,8 @@ const dayplan: TranslationStrings = {
'dayplan.mobile.allAssigned': 'Все места распределены',
'dayplan.mobile.noMatch': 'Нет совпадений',
'dayplan.mobile.createNew': 'Создать новое место',
'dayplan.expandAll': 'Expand all days', // en-fallback
'dayplan.collapseAll': 'Collapse all days', // en-fallback
'dayplan.expandAll': 'Развернуть все дни', // en-fallback
'dayplan.collapseAll': 'Свернуть все дни', // en-fallback
'dayplan.reorderDays': 'Изменить порядок дней',
'dayplan.reorderTitle': 'Изменить порядок дней',
'dayplan.reorderHint': 'Места, заметки и бронирования дня перемещаются вместе с ним.',

Some files were not shown because too many files have changed in this diff Show More