diff --git a/client/src/i18n/translations/ar.ts b/client/src/i18n/translations/ar.ts index 4cb9001..c4016ca 100644 --- a/client/src/i18n/translations/ar.ts +++ b/client/src/i18n/translations/ar.ts @@ -107,6 +107,8 @@ const ar: Record = { 'dashboard.noDateHint': 'لا يوجد تاريخ محدد. سيتم إنشاء 7 أيام افتراضية ويمكنك تغيير ذلك لاحقًا.', 'dashboard.coverImage': 'صورة الغلاف', 'dashboard.addCoverImage': 'إضافة صورة غلاف', + 'dashboard.addMembers': 'رفاق السفر', + 'dashboard.addMember': 'إضافة عضو', 'dashboard.coverSaved': 'تم حفظ صورة الغلاف', 'dashboard.coverUploadError': 'فشل الرفع', 'dashboard.coverRemoveError': 'فشل الإزالة', @@ -272,6 +274,8 @@ const ar: Record = { 'admin.tabs.categories': 'الفئات', 'admin.tabs.backup': 'النسخ الاحتياطي', 'admin.tabs.settings': 'الإعدادات', + 'admin.tabs.config': 'الإعدادات', + 'admin.tabs.templates': 'قوالب التعبئة', 'admin.tabs.addons': 'الإضافات', 'admin.tabs.github': 'GitHub', 'admin.stats.users': 'المستخدمون', @@ -322,6 +326,25 @@ const ar: Record = { 'admin.keyValid': 'متصل', 'admin.keyInvalid': 'غير صالح', 'admin.keySaved': 'تم حفظ مفاتيح API', + 'admin.bagTracking.title': 'تتبع الأمتعة', + 'admin.bagTracking.subtitle': 'تفعيل الوزن وتعيين الأمتعة للعناصر', + 'admin.packingTemplates.title': 'قوالب التعبئة', + 'admin.packingTemplates.subtitle': 'إنشاء قوائم تعبئة قابلة لإعادة الاستخدام', + 'admin.packingTemplates.create': 'قالب جديد', + 'admin.packingTemplates.namePlaceholder': 'اسم القالب (مثال: عطلة شاطئية)', + 'admin.packingTemplates.empty': 'لم يتم إنشاء قوالب بعد', + 'admin.packingTemplates.items': 'عناصر', + 'admin.packingTemplates.categories': 'فئات', + 'admin.packingTemplates.itemName': 'اسم العنصر', + 'admin.packingTemplates.itemCategory': 'الفئة', + 'admin.packingTemplates.categoryName': 'اسم الفئة (مثال: ملابس)', + 'admin.packingTemplates.addCategory': 'إضافة فئة', + 'admin.packingTemplates.created': 'تم إنشاء القالب', + 'admin.packingTemplates.deleted': 'تم حذف القالب', + 'admin.packingTemplates.loadError': 'فشل تحميل القوالب', + 'admin.packingTemplates.createError': 'فشل إنشاء القالب', + 'admin.packingTemplates.deleteError': 'فشل حذف القالب', + 'admin.packingTemplates.saveError': 'فشل الحفظ', 'admin.addons.title': 'الإضافات', 'admin.addons.subtitle': 'فعّل أو عطّل الميزات لتخصيص تجربة TREK.', 'admin.addons.enabled': 'مفعّل', @@ -344,7 +367,7 @@ const ar: Record = { 'admin.github.loading': 'جارٍ التحميل...', 'admin.github.error': 'فشل تحميل الإصدارات', 'admin.github.by': 'بواسطة', - 'admin.github.support': 'يساعدني على مواصلة تطوير TREK', + 'admin.github.support': 'يساعدني في تطوير TREK', 'admin.update.available': 'يتوفر تحديث', 'admin.update.button': 'عرض على GitHub', 'admin.update.install': 'تثبيت التحديث', @@ -615,9 +638,9 @@ const ar: Record = { 'vacay.selectCountry': 'اختر الدولة', 'vacay.selectRegion': 'اختر المنطقة (اختياري)', 'vacay.addCalendar': 'إضافة تقويم', - 'vacay.calendarLabel': 'الاسم (اختياري)', - 'vacay.calendarColor': 'لون التقويم', - 'vacay.noCalendars': 'لم تتم إضافة تقاويم عطلات بعد', + 'vacay.calendarLabel': 'التسمية', + 'vacay.calendarColor': 'اللون', + 'vacay.noCalendars': 'لا توجد تقويمات', 'vacay.companyHolidays': 'عطل الشركة', 'vacay.companyHolidaysHint': 'السماح بوضع علامة على أيام عطلات الشركة', 'vacay.companyHolidaysNoDeduct': 'لا تُخصم عطل الشركة من أيام الإجازة.', @@ -673,6 +696,38 @@ const ar: Record = { 'atlas.placesVisited': 'أماكن تمت زيارتها', 'atlas.firstVisit': 'أول رحلة', 'atlas.lastVisitLabel': 'آخر رحلة', + 'atlas.unmark': 'إزالة', + 'atlas.confirmMark': 'تعيين هذا البلد كمُزار؟', + 'atlas.confirmUnmark': 'إزالة هذا البلد من قائمة المُزارة؟', + 'atlas.markVisited': 'تعيين كمُزار', + 'atlas.markVisitedHint': 'إضافة هذا البلد إلى قائمة المُزارة', + 'atlas.addToBucket': 'إضافة إلى قائمة الأمنيات', + 'atlas.addToBucketHint': 'حفظ كمكان تريد زيارته', + 'atlas.bucketWhen': 'متى تخطط للزيارة؟', + 'atlas.statsTab': 'الإحصائيات', + 'atlas.bucketTab': 'قائمة الأمنيات', + 'atlas.addBucket': 'إضافة إلى قائمة الأمنيات', + 'atlas.bucketNamePlaceholder': 'مكان أو وجهة...', + 'atlas.bucketNotesPlaceholder': 'ملاحظات (اختياري)', + 'atlas.bucketEmpty': 'قائمة أمنياتك فارغة', + 'atlas.bucketEmptyHint': 'أضف أماكن تحلم بزيارتها', + + // Packing + 'packing.addItem': 'إضافة عنصر', + 'packing.addItemPlaceholder': 'اسم العنصر...', + 'packing.addCategory': 'إضافة فئة', + 'packing.newCategoryPlaceholder': 'اسم الفئة (مثال: ملابس)', + 'packing.applyTemplate': 'تطبيق قالب', + 'packing.template': 'قالب', + 'packing.templateApplied': 'تمت إضافة {count} عنصر من القالب', + 'packing.templateError': 'فشل تطبيق القالب', + 'packing.assignUser': 'تعيين مستخدم', + 'packing.noMembers': 'لا أعضاء', + 'packing.bags': 'أمتعة', + 'packing.noBag': 'غير معيّن', + 'packing.totalWeight': 'الوزن الإجمالي', + 'packing.bagName': 'الاسم...', + 'packing.addBag': 'إضافة أمتعة', // Collab 'collab.tabs.chat': 'الدردشة', diff --git a/client/src/i18n/translations/es.ts b/client/src/i18n/translations/es.ts index 2db412b..16e39d2 100644 --- a/client/src/i18n/translations/es.ts +++ b/client/src/i18n/translations/es.ts @@ -103,6 +103,8 @@ const es: Record = { 'dashboard.noDateHint': 'Sin fecha definida: se crearán 7 días por defecto. Puedes cambiarlo cuando quieras.', 'dashboard.coverImage': 'Imagen de portada', 'dashboard.addCoverImage': 'Añadir imagen de portada', + 'dashboard.addMembers': 'Compañeros de viaje', + 'dashboard.addMember': 'Añadir miembro', 'dashboard.coverSaved': 'Imagen de portada guardada', 'dashboard.coverUploadError': 'Error al subir la imagen', 'dashboard.coverRemoveError': 'Error al eliminar la imagen', @@ -341,6 +343,28 @@ const es: Record = { 'admin.fileTypesFormat': 'Extensiones separadas por comas (p. ej. jpg,png,pdf,doc). Usa * para permitir todos los tipos.', 'admin.fileTypesSaved': 'Ajustes de tipos de archivo guardados', + 'admin.bagTracking.title': 'Seguimiento de equipaje', + 'admin.bagTracking.subtitle': 'Activar peso y asignación de equipaje para artículos de la lista', + 'admin.tabs.config': 'Configuración', + 'admin.tabs.templates': 'Plantillas de equipaje', + 'admin.packingTemplates.title': 'Plantillas de equipaje', + 'admin.packingTemplates.subtitle': 'Crear listas de equipaje reutilizables para tus viajes', + 'admin.packingTemplates.create': 'Nueva plantilla', + 'admin.packingTemplates.namePlaceholder': 'Nombre de la plantilla (ej. Vacaciones en la playa)', + 'admin.packingTemplates.empty': 'No se han creado plantillas aún', + 'admin.packingTemplates.items': 'artículos', + 'admin.packingTemplates.categories': 'categorías', + 'admin.packingTemplates.itemName': 'Nombre del artículo', + 'admin.packingTemplates.itemCategory': 'Categoría', + 'admin.packingTemplates.categoryName': 'Nombre de categoría (ej. Ropa)', + 'admin.packingTemplates.addCategory': 'Añadir categoría', + 'admin.packingTemplates.created': 'Plantilla creada', + 'admin.packingTemplates.deleted': 'Plantilla eliminada', + 'admin.packingTemplates.loadError': 'Error al cargar plantillas', + 'admin.packingTemplates.createError': 'Error al crear plantilla', + 'admin.packingTemplates.deleteError': 'Error al eliminar plantilla', + 'admin.packingTemplates.saveError': 'Error al guardar', + // Addons 'admin.tabs.addons': 'Complementos', 'admin.addons.title': 'Complementos', @@ -377,6 +401,7 @@ const es: Record = { 'admin.github.hideDetails': 'Ocultar detalles', 'admin.github.loadMore': 'Cargar más', 'admin.github.loading': 'Cargando...', + 'admin.github.support': 'Ayuda a seguir desarrollando TREK', 'admin.github.error': 'No se pudieron cargar las versiones', 'admin.github.by': 'por', 'admin.update.available': 'Actualización disponible', @@ -471,6 +496,10 @@ const es: Record = { 'vacay.fuseInfo3': 'Ambas partes pueden borrar entradas y cambiar el número de días de vacaciones disponibles.', 'vacay.fuseInfo4': 'Ajustes como festivos y festivos de empresa se comparten.', 'vacay.fuseInfo5': 'La fusión puede disolverse en cualquier momento por cualquiera de las partes. Tus entradas se conservarán.', + 'vacay.addCalendar': 'Añadir calendario', + 'vacay.calendarColor': 'Color', + 'vacay.calendarLabel': 'Etiqueta', + 'vacay.noCalendars': 'Sin calendarios', // Atlas addon 'atlas.subtitle': 'Tu huella viajera por el mundo', @@ -506,6 +535,21 @@ const es: Record = { 'atlas.tripPlural': 'Viajes', 'atlas.placeVisited': 'Lugar visitado', 'atlas.placesVisited': 'Lugares visitados', + 'atlas.statsTab': 'Estadísticas', + 'atlas.bucketTab': 'Lista de deseos', + 'atlas.addBucket': 'Añadir a lista de deseos', + 'atlas.bucketNamePlaceholder': 'Lugar o destino...', + 'atlas.bucketNotesPlaceholder': 'Notas (opcional)', + 'atlas.bucketEmpty': 'Tu lista de deseos está vacía', + 'atlas.bucketEmptyHint': 'Añade lugares que sueñas con visitar', + 'atlas.unmark': 'Eliminar', + 'atlas.confirmMark': '¿Marcar este país como visitado?', + 'atlas.confirmUnmark': '¿Eliminar este país de tu lista de visitados?', + 'atlas.markVisited': 'Marcar como visitado', + 'atlas.markVisitedHint': 'Añadir este país a tu lista de visitados', + 'atlas.addToBucket': 'Añadir a lista de deseos', + 'atlas.addToBucketHint': 'Guardar como lugar que quieres visitar', + 'atlas.bucketWhen': '¿Cuándo planeas visitarlo?', // Trip Planner 'trip.tabs.plan': 'Plan', @@ -750,6 +794,21 @@ const es: Record = { 'packing.menuCheckAll': 'Marcar todo', 'packing.menuUncheckAll': 'Desmarcar todo', 'packing.menuDeleteCat': 'Eliminar categoría', + 'packing.addItem': 'Añadir artículo', + 'packing.addItemPlaceholder': 'Nombre del artículo...', + 'packing.addCategory': 'Añadir categoría', + 'packing.newCategoryPlaceholder': 'Nombre de categoría (ej. Ropa)', + 'packing.applyTemplate': 'Aplicar plantilla', + 'packing.template': 'Plantilla', + 'packing.templateApplied': '{count} artículos añadidos desde plantilla', + 'packing.templateError': 'Error al aplicar plantilla', + 'packing.assignUser': 'Asignar usuario', + 'packing.noMembers': 'Sin miembros', + 'packing.bags': 'Equipaje', + 'packing.noBag': 'Sin asignar', + 'packing.totalWeight': 'Peso total', + 'packing.bagName': 'Nombre...', + 'packing.addBag': 'Añadir equipaje', 'packing.changeCategory': 'Cambiar categoría', 'packing.confirm.clearChecked': '¿Seguro que quieres eliminar {count} elementos marcados?', 'packing.confirm.deleteCat': '¿Seguro que quieres eliminar la categoría "{name}" con {count} elementos?', diff --git a/client/src/i18n/translations/fr.ts b/client/src/i18n/translations/fr.ts index e20bb6c..6b695c8 100644 --- a/client/src/i18n/translations/fr.ts +++ b/client/src/i18n/translations/fr.ts @@ -102,6 +102,8 @@ const fr: Record = { 'dashboard.noDateHint': 'Aucune date définie — 7 jours par défaut seront créés. Vous pouvez modifier cela à tout moment.', 'dashboard.coverImage': 'Image de couverture', 'dashboard.addCoverImage': 'Ajouter une image de couverture', + 'dashboard.addMembers': 'Compagnons de voyage', + 'dashboard.addMember': 'Ajouter un membre', 'dashboard.coverSaved': 'Image de couverture enregistrée', 'dashboard.coverUploadError': 'Échec du téléversement', 'dashboard.coverRemoveError': 'Échec de la suppression', @@ -345,6 +347,28 @@ const fr: Record = { 'admin.fileTypesFormat': 'Extensions séparées par des virgules (ex. jpg,png,pdf,doc). Utilisez * pour autoriser tous les types.', 'admin.fileTypesSaved': 'Paramètres des types de fichiers enregistrés', + 'admin.bagTracking.title': 'Suivi des bagages', + 'admin.bagTracking.subtitle': 'Activer le poids et l\'attribution de bagages pour les articles', + 'admin.tabs.config': 'Configuration', + 'admin.tabs.templates': 'Modèles de bagages', + 'admin.packingTemplates.title': 'Modèles de bagages', + 'admin.packingTemplates.subtitle': 'Créer des listes de bagages réutilisables pour vos voyages', + 'admin.packingTemplates.create': 'Nouveau modèle', + 'admin.packingTemplates.namePlaceholder': 'Nom du modèle (ex. Vacances à la plage)', + 'admin.packingTemplates.empty': 'Aucun modèle créé', + 'admin.packingTemplates.items': 'articles', + 'admin.packingTemplates.categories': 'catégories', + 'admin.packingTemplates.itemName': 'Nom de l\'article', + 'admin.packingTemplates.itemCategory': 'Catégorie', + 'admin.packingTemplates.categoryName': 'Nom de catégorie (ex. Vêtements)', + 'admin.packingTemplates.addCategory': 'Ajouter une catégorie', + 'admin.packingTemplates.created': 'Modèle créé', + 'admin.packingTemplates.deleted': 'Modèle supprimé', + 'admin.packingTemplates.loadError': 'Erreur de chargement des modèles', + 'admin.packingTemplates.createError': 'Erreur de création du modèle', + 'admin.packingTemplates.deleteError': 'Erreur de suppression du modèle', + 'admin.packingTemplates.saveError': 'Erreur de sauvegarde', + // Addons 'admin.tabs.addons': 'Extensions', 'admin.addons.title': 'Extensions', @@ -396,6 +420,7 @@ const fr: Record = { 'admin.github.hideDetails': 'Masquer les détails', 'admin.github.loadMore': 'Charger plus', 'admin.github.loading': 'Chargement...', + 'admin.github.support': 'Aide à continuer le développement de TREK', 'admin.github.error': 'Impossible de charger les versions', 'admin.github.by': 'par', @@ -491,6 +516,10 @@ const fr: Record = { 'vacay.fuseInfo3': 'Les deux parties peuvent supprimer des entrées et modifier les droits aux vacances.', 'vacay.fuseInfo4': 'Les paramètres comme les jours fériés et les jours d\'entreprise sont partagés.', 'vacay.fuseInfo5': 'La fusion peut être dissoute à tout moment par l\'une ou l\'autre partie. Vos entrées seront préservées.', + 'vacay.addCalendar': 'Ajouter un calendrier', + 'vacay.calendarColor': 'Couleur', + 'vacay.calendarLabel': 'Libellé', + 'vacay.noCalendars': 'Aucun calendrier', 'nav.myTrips': 'Mes voyages', // Atlas addon @@ -527,6 +556,21 @@ const fr: Record = { 'atlas.tripPlural': 'Voyages', 'atlas.placeVisited': 'Lieu visité', 'atlas.placesVisited': 'Lieux visités', + 'atlas.statsTab': 'Statistiques', + 'atlas.bucketTab': 'Bucket List', + 'atlas.addBucket': 'Ajouter à la bucket list', + 'atlas.bucketNamePlaceholder': 'Lieu ou destination...', + 'atlas.bucketNotesPlaceholder': 'Notes (optionnel)', + 'atlas.bucketEmpty': 'Votre bucket list est vide', + 'atlas.bucketEmptyHint': 'Ajoutez des lieux que vous rêvez de visiter', + 'atlas.unmark': 'Retirer', + 'atlas.confirmMark': 'Marquer ce pays comme visité ?', + 'atlas.confirmUnmark': 'Retirer ce pays de votre liste ?', + 'atlas.markVisited': 'Marquer comme visité', + 'atlas.markVisitedHint': 'Ajouter ce pays à votre liste de visités', + 'atlas.addToBucket': 'Ajouter à la bucket list', + 'atlas.addToBucketHint': 'Sauvegarder comme lieu à visiter', + 'atlas.bucketWhen': 'Quand prévoyez-vous d\'y aller ?', // Trip Planner 'trip.tabs.plan': 'Plan', @@ -808,6 +852,21 @@ const fr: Record = { 'packing.menuCheckAll': 'Tout cocher', 'packing.menuUncheckAll': 'Tout décocher', 'packing.menuDeleteCat': 'Supprimer la catégorie', + 'packing.addItem': 'Ajouter un article', + 'packing.addItemPlaceholder': 'Nom de l\'article...', + 'packing.addCategory': 'Ajouter une catégorie', + 'packing.newCategoryPlaceholder': 'Nom de catégorie (ex. Vêtements)', + 'packing.applyTemplate': 'Appliquer un modèle', + 'packing.template': 'Modèle', + 'packing.templateApplied': '{count} articles ajoutés depuis le modèle', + 'packing.templateError': 'Erreur lors de l\'application du modèle', + 'packing.assignUser': 'Assigner un utilisateur', + 'packing.noMembers': 'Aucun membre', + 'packing.bags': 'Bagages', + 'packing.noBag': 'Non assigné', + 'packing.totalWeight': 'Poids total', + 'packing.bagName': 'Nom...', + 'packing.addBag': 'Ajouter un bagage', 'packing.changeCategory': 'Changer de catégorie', 'packing.confirm.clearChecked': 'Voulez-vous vraiment supprimer {count} articles cochés ?', 'packing.confirm.deleteCat': 'Voulez-vous vraiment supprimer la catégorie « {name} » avec {count} articles ?', diff --git a/client/src/i18n/translations/nl.ts b/client/src/i18n/translations/nl.ts index 83d0987..cc4042d 100644 --- a/client/src/i18n/translations/nl.ts +++ b/client/src/i18n/translations/nl.ts @@ -102,6 +102,8 @@ const nl: Record = { 'dashboard.noDateHint': 'Geen datum ingesteld — er worden standaard 7 dagen aangemaakt. Je kunt dit altijd wijzigen.', 'dashboard.coverImage': 'Omslagafbeelding', 'dashboard.addCoverImage': 'Omslagafbeelding toevoegen', + 'dashboard.addMembers': 'Reisgenoten', + 'dashboard.addMember': 'Lid toevoegen', 'dashboard.coverSaved': 'Omslagafbeelding opgeslagen', 'dashboard.coverUploadError': 'Uploaden mislukt', 'dashboard.coverRemoveError': 'Verwijderen mislukt', @@ -345,6 +347,28 @@ const nl: Record = { 'admin.fileTypesFormat': 'Kommagescheiden extensies (bijv. jpg,png,pdf,doc). Gebruik * om alle typen toe te staan.', 'admin.fileTypesSaved': 'Bestandstype-instellingen opgeslagen', + 'admin.bagTracking.title': 'Bagagetracking', + 'admin.bagTracking.subtitle': 'Gewicht en bagagetoewijzing inschakelen voor paklijstitems', + 'admin.tabs.config': 'Configuratie', + 'admin.tabs.templates': 'Paksjablonen', + 'admin.packingTemplates.title': 'Paksjablonen', + 'admin.packingTemplates.subtitle': 'Herbruikbare paklijsten maken voor je reizen', + 'admin.packingTemplates.create': 'Nieuw sjabloon', + 'admin.packingTemplates.namePlaceholder': 'Sjabloonnaam (bijv. Strandvakantie)', + 'admin.packingTemplates.empty': 'Nog geen sjablonen aangemaakt', + 'admin.packingTemplates.items': 'items', + 'admin.packingTemplates.categories': 'categorieën', + 'admin.packingTemplates.itemName': 'Itemnaam', + 'admin.packingTemplates.itemCategory': 'Categorie', + 'admin.packingTemplates.categoryName': 'Categorienaam (bijv. Kleding)', + 'admin.packingTemplates.addCategory': 'Categorie toevoegen', + 'admin.packingTemplates.created': 'Sjabloon aangemaakt', + 'admin.packingTemplates.deleted': 'Sjabloon verwijderd', + 'admin.packingTemplates.loadError': 'Fout bij laden van sjablonen', + 'admin.packingTemplates.createError': 'Fout bij aanmaken van sjabloon', + 'admin.packingTemplates.deleteError': 'Fout bij verwijderen van sjabloon', + 'admin.packingTemplates.saveError': 'Fout bij opslaan', + // Addons 'admin.tabs.addons': 'Add-ons', 'admin.addons.title': 'Add-ons', @@ -396,6 +420,7 @@ const nl: Record = { 'admin.github.hideDetails': 'Details verbergen', 'admin.github.loadMore': 'Meer laden', 'admin.github.loading': 'Laden...', + 'admin.github.support': 'Helpt mij TREK verder te ontwikkelen', 'admin.github.error': 'Releases laden mislukt', 'admin.github.by': 'door', @@ -491,6 +516,10 @@ const nl: Record = { 'vacay.fuseInfo3': 'Beide partijen kunnen invoeren verwijderen en vakantierechten wijzigen.', 'vacay.fuseInfo4': 'Instellingen zoals feestdagen en bedrijfsvakanties worden gedeeld.', 'vacay.fuseInfo5': 'De fusie kan op elk moment door beide partijen worden opgeheven. Je invoeren blijven behouden.', + 'vacay.addCalendar': 'Kalender toevoegen', + 'vacay.calendarColor': 'Kleur', + 'vacay.calendarLabel': 'Label', + 'vacay.noCalendars': 'Geen kalenders', 'nav.myTrips': 'Mijn reizen', // Atlas addon @@ -527,6 +556,21 @@ const nl: Record = { 'atlas.tripPlural': 'Reizen', 'atlas.placeVisited': 'Bezochte plaats', 'atlas.placesVisited': 'Bezochte plaatsen', + 'atlas.statsTab': 'Statistieken', + 'atlas.bucketTab': 'Bucket List', + 'atlas.addBucket': 'Toevoegen aan bucket list', + 'atlas.bucketNamePlaceholder': 'Plaats of bestemming...', + 'atlas.bucketNotesPlaceholder': 'Notities (optioneel)', + 'atlas.bucketEmpty': 'Je bucket list is leeg', + 'atlas.bucketEmptyHint': 'Voeg plekken toe die je wilt bezoeken', + 'atlas.unmark': 'Verwijderen', + 'atlas.confirmMark': 'Dit land als bezocht markeren?', + 'atlas.confirmUnmark': 'Dit land van je bezochte lijst verwijderen?', + 'atlas.markVisited': 'Markeren als bezocht', + 'atlas.markVisitedHint': 'Dit land toevoegen aan je bezochte lijst', + 'atlas.addToBucket': 'Aan bucket list toevoegen', + 'atlas.addToBucketHint': 'Opslaan als plek die je wilt bezoeken', + 'atlas.bucketWhen': 'Wanneer ben je van plan te gaan?', // Trip Planner 'trip.tabs.plan': 'Plan', @@ -808,6 +852,21 @@ const nl: Record = { 'packing.menuCheckAll': 'Alles aanvinken', 'packing.menuUncheckAll': 'Alles uitvinken', 'packing.menuDeleteCat': 'Categorie verwijderen', + 'packing.addItem': 'Item toevoegen', + 'packing.addItemPlaceholder': 'Itemnaam...', + 'packing.addCategory': 'Categorie toevoegen', + 'packing.newCategoryPlaceholder': 'Categorienaam (bijv. Kleding)', + 'packing.applyTemplate': 'Sjabloon toepassen', + 'packing.template': 'Sjabloon', + 'packing.templateApplied': '{count} items toegevoegd vanuit sjabloon', + 'packing.templateError': 'Fout bij toepassen van sjabloon', + 'packing.assignUser': 'Gebruiker toewijzen', + 'packing.noMembers': 'Geen leden', + 'packing.bags': 'Bagage', + 'packing.noBag': 'Niet toegewezen', + 'packing.totalWeight': 'Totaalgewicht', + 'packing.bagName': 'Naam...', + 'packing.addBag': 'Bagage toevoegen', 'packing.changeCategory': 'Categorie wijzigen', 'packing.confirm.clearChecked': 'Weet je zeker dat je {count} aangevinkte items wilt verwijderen?', 'packing.confirm.deleteCat': 'Weet je zeker dat je de categorie "{name}" met {count} items wilt verwijderen?', diff --git a/client/src/i18n/translations/ru.ts b/client/src/i18n/translations/ru.ts index 9e385a3..ce89810 100644 --- a/client/src/i18n/translations/ru.ts +++ b/client/src/i18n/translations/ru.ts @@ -102,6 +102,8 @@ const ru: Record = { 'dashboard.noDateHint': 'Дата не указана — будет создано 7 дней по умолчанию. Вы можете изменить это в любое время.', 'dashboard.coverImage': 'Обложка', 'dashboard.addCoverImage': 'Добавить обложку', + 'dashboard.addMembers': 'Попутчики', + 'dashboard.addMember': 'Добавить участника', 'dashboard.coverSaved': 'Обложка сохранена', 'dashboard.coverUploadError': 'Ошибка загрузки', 'dashboard.coverRemoveError': 'Ошибка удаления', @@ -345,6 +347,28 @@ const ru: Record = { 'admin.fileTypesFormat': 'Расширения через запятую (напр. jpg,png,pdf,doc). Используйте * для разрешения всех типов.', 'admin.fileTypesSaved': 'Настройки типов файлов сохранены', + 'admin.bagTracking.title': 'Отслеживание багажа', + 'admin.bagTracking.subtitle': 'Включить вес и привязку к багажу для вещей', + 'admin.tabs.config': 'Конфигурация', + 'admin.tabs.templates': 'Шаблоны упаковки', + 'admin.packingTemplates.title': 'Шаблоны упаковки', + 'admin.packingTemplates.subtitle': 'Создавайте многоразовые списки вещей для поездок', + 'admin.packingTemplates.create': 'Новый шаблон', + 'admin.packingTemplates.namePlaceholder': 'Название шаблона (напр. Пляжный отдых)', + 'admin.packingTemplates.empty': 'Шаблоны ещё не созданы', + 'admin.packingTemplates.items': 'вещей', + 'admin.packingTemplates.categories': 'категорий', + 'admin.packingTemplates.itemName': 'Название вещи', + 'admin.packingTemplates.itemCategory': 'Категория', + 'admin.packingTemplates.categoryName': 'Название категории (напр. Одежда)', + 'admin.packingTemplates.addCategory': 'Добавить категорию', + 'admin.packingTemplates.created': 'Шаблон создан', + 'admin.packingTemplates.deleted': 'Шаблон удалён', + 'admin.packingTemplates.loadError': 'Ошибка загрузки шаблонов', + 'admin.packingTemplates.createError': 'Ошибка создания шаблона', + 'admin.packingTemplates.deleteError': 'Ошибка удаления шаблона', + 'admin.packingTemplates.saveError': 'Ошибка сохранения', + // Addons 'admin.tabs.addons': 'Дополнения', 'admin.addons.title': 'Дополнения', @@ -396,6 +420,7 @@ const ru: Record = { 'admin.github.hideDetails': 'Скрыть подробности', 'admin.github.loadMore': 'Загрузить ещё', 'admin.github.loading': 'Загрузка...', + 'admin.github.support': 'Помогает продолжать разработку TREK', 'admin.github.error': 'Не удалось загрузить релизы', 'admin.github.by': 'от', @@ -491,6 +516,10 @@ const ru: Record = { 'vacay.fuseInfo3': 'Обе стороны могут удалять записи и изменять право на отпуск.', 'vacay.fuseInfo4': 'Настройки, такие как праздники и корпоративные выходные, становятся общими.', 'vacay.fuseInfo5': 'Объединение можно отменить в любое время любой из сторон. Ваши записи будут сохранены.', + 'vacay.addCalendar': 'Добавить календарь', + 'vacay.calendarColor': 'Цвет', + 'vacay.calendarLabel': 'Название', + 'vacay.noCalendars': 'Нет календарей', 'nav.myTrips': 'Мои поездки', // Atlas addon @@ -527,6 +556,21 @@ const ru: Record = { 'atlas.tripPlural': 'Поездки', 'atlas.placeVisited': 'Посещённое место', 'atlas.placesVisited': 'Посещённые места', + 'atlas.statsTab': 'Статистика', + 'atlas.bucketTab': 'Список желаний', + 'atlas.addBucket': 'Добавить в список желаний', + 'atlas.bucketNamePlaceholder': 'Место или направление...', + 'atlas.bucketNotesPlaceholder': 'Заметки (необязательно)', + 'atlas.bucketEmpty': 'Ваш список желаний пуст', + 'atlas.bucketEmptyHint': 'Добавьте места, которые мечтаете посетить', + 'atlas.unmark': 'Удалить', + 'atlas.confirmMark': 'Отметить эту страну как посещённую?', + 'atlas.confirmUnmark': 'Удалить эту страну из списка посещённых?', + 'atlas.markVisited': 'Отметить как посещённую', + 'atlas.markVisitedHint': 'Добавить эту страну в список посещённых', + 'atlas.addToBucket': 'В список желаний', + 'atlas.addToBucketHint': 'Сохранить как место для посещения', + 'atlas.bucketWhen': 'Когда вы планируете поехать?', // Trip Planner 'trip.tabs.plan': 'План', @@ -808,6 +852,21 @@ const ru: Record = { 'packing.menuCheckAll': 'Отметить все', 'packing.menuUncheckAll': 'Снять отметки', 'packing.menuDeleteCat': 'Удалить категорию', + 'packing.addItem': 'Добавить вещь', + 'packing.addItemPlaceholder': 'Название...', + 'packing.addCategory': 'Добавить категорию', + 'packing.newCategoryPlaceholder': 'Название категории (напр. Одежда)', + 'packing.applyTemplate': 'Применить шаблон', + 'packing.template': 'Шаблон', + 'packing.templateApplied': '{count} вещей добавлено из шаблона', + 'packing.templateError': 'Ошибка применения шаблона', + 'packing.assignUser': 'Назначить пользователя', + 'packing.noMembers': 'Нет участников', + 'packing.bags': 'Багаж', + 'packing.noBag': 'Не назначено', + 'packing.totalWeight': 'Общий вес', + 'packing.bagName': 'Название...', + 'packing.addBag': 'Добавить багаж', 'packing.changeCategory': 'Изменить категорию', 'packing.confirm.clearChecked': 'Вы уверены, что хотите удалить {count} отмеченных вещей?', 'packing.confirm.deleteCat': 'Вы уверены, что хотите удалить категорию «{name}» с {count} вещами?', diff --git a/client/src/i18n/translations/zh.ts b/client/src/i18n/translations/zh.ts index f603aba..d5b006c 100644 --- a/client/src/i18n/translations/zh.ts +++ b/client/src/i18n/translations/zh.ts @@ -102,6 +102,8 @@ const zh: Record = { 'dashboard.noDateHint': '未设置日期——将默认创建 7 天。你可以随时修改。', 'dashboard.coverImage': '封面图片', 'dashboard.addCoverImage': '添加封面图片', + 'dashboard.addMembers': '旅伴', + 'dashboard.addMember': '添加成员', 'dashboard.coverSaved': '封面图片已保存', 'dashboard.coverUploadError': '上传失败', 'dashboard.coverRemoveError': '移除失败', @@ -345,6 +347,28 @@ const zh: Record = { 'admin.fileTypesFormat': '以逗号分隔的扩展名(如 jpg,png,pdf,doc)。使用 * 允许所有类型。', 'admin.fileTypesSaved': '文件类型设置已保存', + 'admin.bagTracking.title': '行李追踪', + 'admin.bagTracking.subtitle': '为打包物品启用重量和行李分配', + 'admin.tabs.config': '配置', + 'admin.tabs.templates': '打包模板', + 'admin.packingTemplates.title': '打包模板', + 'admin.packingTemplates.subtitle': '创建可复用的旅行打包清单', + 'admin.packingTemplates.create': '新建模板', + 'admin.packingTemplates.namePlaceholder': '模板名称(如:海滩度假)', + 'admin.packingTemplates.empty': '尚未创建模板', + 'admin.packingTemplates.items': '物品', + 'admin.packingTemplates.categories': '分类', + 'admin.packingTemplates.itemName': '物品名称', + 'admin.packingTemplates.itemCategory': '分类', + 'admin.packingTemplates.categoryName': '分类名称(如:衣物)', + 'admin.packingTemplates.addCategory': '添加分类', + 'admin.packingTemplates.created': '模板已创建', + 'admin.packingTemplates.deleted': '模板已删除', + 'admin.packingTemplates.loadError': '加载模板失败', + 'admin.packingTemplates.createError': '创建模板失败', + 'admin.packingTemplates.deleteError': '删除模板失败', + 'admin.packingTemplates.saveError': '保存失败', + // Addons 'admin.tabs.addons': '扩展', 'admin.addons.title': '扩展', @@ -396,6 +420,7 @@ const zh: Record = { 'admin.github.hideDetails': '隐藏详情', 'admin.github.loadMore': '加载更多', 'admin.github.loading': '加载中...', + 'admin.github.support': '帮助我继续开发 TREK', 'admin.github.error': '加载版本失败', 'admin.github.by': '作者', @@ -491,6 +516,10 @@ const zh: Record = { 'vacay.fuseInfo3': '双方都可以删除记录和修改年假额度。', 'vacay.fuseInfo4': '公共假日和公司假日等设置将共享。', 'vacay.fuseInfo5': '任何一方都可以随时解除合并。你的记录将被保留。', + 'vacay.addCalendar': '添加日历', + 'vacay.calendarColor': '颜色', + 'vacay.calendarLabel': '标签', + 'vacay.noCalendars': '无日历', 'nav.myTrips': '我的旅行', // Atlas addon @@ -527,6 +556,21 @@ const zh: Record = { 'atlas.tripPlural': '次旅行', 'atlas.placeVisited': '个地点已访问', 'atlas.placesVisited': '个地点已访问', + 'atlas.statsTab': '统计', + 'atlas.bucketTab': '心愿单', + 'atlas.addBucket': '添加到心愿单', + 'atlas.bucketNamePlaceholder': '地点或目的地...', + 'atlas.bucketNotesPlaceholder': '备注(可选)', + 'atlas.bucketEmpty': '你的心愿单是空的', + 'atlas.bucketEmptyHint': '添加你梦想去的地方', + 'atlas.unmark': '移除', + 'atlas.confirmMark': '将此国家标记为已访问?', + 'atlas.confirmUnmark': '从已访问列表中移除此国家?', + 'atlas.markVisited': '标记为已访问', + 'atlas.markVisitedHint': '将此国家添加到已访问列表', + 'atlas.addToBucket': '添加到心愿单', + 'atlas.addToBucketHint': '保存为想去的地方', + 'atlas.bucketWhen': '你计划什么时候去?', // Trip Planner 'trip.tabs.plan': '计划', @@ -808,6 +852,21 @@ const zh: Record = { 'packing.menuCheckAll': '全部勾选', 'packing.menuUncheckAll': '取消全部勾选', 'packing.menuDeleteCat': '删除分类', + 'packing.addItem': '添加物品', + 'packing.addItemPlaceholder': '物品名称...', + 'packing.addCategory': '添加分类', + 'packing.newCategoryPlaceholder': '分类名称(如:衣物)', + 'packing.applyTemplate': '应用模板', + 'packing.template': '模板', + 'packing.templateApplied': '已从模板添加 {count} 个物品', + 'packing.templateError': '应用模板失败', + 'packing.assignUser': '分配用户', + 'packing.noMembers': '无成员', + 'packing.bags': '行李', + 'packing.noBag': '未分配', + 'packing.totalWeight': '总重量', + 'packing.bagName': '名称...', + 'packing.addBag': '添加行李', 'packing.changeCategory': '更改分类', 'packing.confirm.clearChecked': '确定移除 {count} 个已勾选的物品?', 'packing.confirm.deleteCat': '确定删除分类「{name}」及其 {count} 个物品?',