diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json
index 8ff6f13..33529e6 100644
--- a/frontend/src/locales/de.json
+++ b/frontend/src/locales/de.json
@@ -273,7 +273,8 @@
"all_linked_items": "Alle verknüpften Elemente",
"itinerary": "Route",
"joined": "Verbunden",
- "view_profile": "Profil anzeigen"
+ "view_profile": "Profil anzeigen",
+ "share_collection": "Teilen Sie diese Sammlung!"
},
"home": {
"desc_1": "Entdecken, planen und erkunden Sie mühelos",
@@ -513,7 +514,8 @@
"social_auth_setup": "Social Authentication Setup",
"staff_status": "Personalstatus",
"staff_user": "Personalbenutzer",
- "profile_info_desc": "Aktualisieren Sie Ihre persönlichen Daten und Ihr Profilbild"
+ "profile_info_desc": "Aktualisieren Sie Ihre persönlichen Daten und Ihr Profilbild",
+ "email_verified_error_desc": "Ihre E -Mail konnte nicht überprüft werden. \nBitte versuchen Sie es erneut."
},
"checklist": {
"add_item": "Eintrag hinzufügen",
@@ -540,7 +542,8 @@
"error_creating_collection": "Fehler beim Erstellen der Sammlung",
"error_editing_collection": "Fehler beim Bearbeiten der Sammlung",
"new_collection": "Neue Sammlung",
- "public_collection": "Öffentliche Sammlung"
+ "public_collection": "Öffentliche Sammlung",
+ "manage_collections": "Sammlungen verwalten"
},
"notes": {
"add_a_link": "Fügen Sie einen Link hinzu",
diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json
index c32e947..63eaec0 100644
--- a/frontend/src/locales/en.json
+++ b/frontend/src/locales/en.json
@@ -124,6 +124,7 @@
"distance": "Distance",
"upload_images_here": "Upload images here",
"share_adventure": "Share this Adventure!",
+ "share_collection": "Share this Collection!",
"copy_link": "Copy Link",
"sun_times": "Sun Times",
"sunrise": "Sunrise",
@@ -404,6 +405,7 @@
"token_required": "Token and UID are required for password reset.",
"reset_password": "Reset Password",
"possible_reset": "If the email address you provided is associated with an account, you will receive an email with instructions to reset your password!",
+ "email_verified_error_desc": "Your email could not be verified. Please try again.",
"missing_email": "Please enter an email address",
"submit": "Submit",
"password_does_not_match": "Passwords do not match",
diff --git a/frontend/src/locales/es.json b/frontend/src/locales/es.json
index b029ae8..2c033ab 100644
--- a/frontend/src/locales/es.json
+++ b/frontend/src/locales/es.json
@@ -321,7 +321,8 @@
"all_linked_items": "Todos los artículos vinculados",
"itinerary": "Itinerario",
"joined": "Unido",
- "view_profile": "Ver perfil"
+ "view_profile": "Ver perfil",
+ "share_collection": "¡Comparte esta colección!"
},
"worldtravel": {
"all": "Todo",
@@ -413,7 +414,6 @@
"email_set_primary": "¡El correo electrónico se configuró como principal correctamente!",
"email_set_primary_error": "Error al configurar el correo electrónico como principal",
"make_primary": "Hacer primario",
- "no_email_set": "No hay correo electrónico configurado",
"not_verified": "No verificado",
"primary": "Principal",
"verified": "Verificado",
@@ -433,7 +433,6 @@
"reset_session_error": "Por favor cierre sesión y vuelva a iniciarla para actualizar su sesión e inténtelo nuevamente.",
"authenticator_code": "Código de autenticación",
"email_verified": "¡Correo electrónico verificado exitosamente!",
- "email_verified_error_desc": "Su correo electrónico no pudo ser verificado. \nPor favor, inténtalo de nuevo.",
"email_verified_error": "Error al verificar el correo electrónico",
"email_verified_success": "Su correo electrónico ha sido verificado. \nAhora puedes iniciar sesión.",
"invalid_code": "Código MFA no válido",
@@ -513,7 +512,10 @@
"staff_status": "Estado del personal",
"staff_user": "Usuario de personal",
"license": "Licencia",
- "all_rights_reserved": "Reservados todos los derechos."
+ "all_rights_reserved": "Reservados todos los derechos.",
+ "email_verified_erorr_desc": "Su correo electrónico no pudo ser verificado. \nPor favor intente de nuevo.",
+ "email_verified_error_desc": "Su correo electrónico no pudo ser verificado. \nPor favor intente de nuevo.",
+ "no_emai_set": "Sin conjunto de correo electrónico"
},
"checklist": {
"add_item": "Añadir elemento",
@@ -540,7 +542,8 @@
"error_creating_collection": "Error al crear la colección",
"error_editing_collection": "Error al editar la colección",
"new_collection": "Nueva colección",
- "public_collection": "Colección pública"
+ "public_collection": "Colección pública",
+ "manage_collections": "Gestionar colecciones"
},
"notes": {
"add_a_link": "Agregar un enlace",
diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json
index d2a1aa5..cb84a12 100644
--- a/frontend/src/locales/fr.json
+++ b/frontend/src/locales/fr.json
@@ -273,7 +273,8 @@
"all_linked_items": "Tous les éléments liés",
"itinerary": "Itinéraire",
"joined": "Joint",
- "view_profile": "Afficher le profil"
+ "view_profile": "Afficher le profil",
+ "share_collection": "Partagez cette collection!"
},
"home": {
"desc_1": "Découvrez, planifiez et explorez en toute simplicité",
@@ -513,7 +514,8 @@
"disabled": "Désactivé",
"disconnected": "Déconnecté",
"email_management": "Gestion des e-mails",
- "enter_last_name": "Entrez votre nom de famille"
+ "enter_last_name": "Entrez votre nom de famille",
+ "email_verified_error_desc": "Votre e-mail n'a pas pu être vérifié. \nVeuillez réessayer."
},
"checklist": {
"add_item": "Ajouter un élément",
@@ -540,7 +542,8 @@
"error_creating_collection": "Erreur lors de la création de la collection",
"error_editing_collection": "Erreur lors de la modification de la collection",
"new_collection": "Nouvelle collection",
- "public_collection": "Collection publique"
+ "public_collection": "Collection publique",
+ "manage_collections": "Gérer les collections"
},
"notes": {
"add_a_link": "Ajouter un lien",
diff --git a/frontend/src/locales/it.json b/frontend/src/locales/it.json
index 7e876c0..0dfedc8 100644
--- a/frontend/src/locales/it.json
+++ b/frontend/src/locales/it.json
@@ -273,7 +273,8 @@
"all_linked_items": "Tutti gli elementi collegati",
"itinerary": "Itinerario",
"joined": "Partecipato",
- "view_profile": "Visualizza il profilo"
+ "view_profile": "Visualizza il profilo",
+ "share_collection": "Condividi questa collezione!"
},
"home": {
"desc_1": "Scopri, pianifica ed esplora con facilità",
@@ -513,7 +514,8 @@
"social_auth_setup": "Setup di autenticazione sociale",
"staff_status": "Stato del personale",
"staff_user": "Utente del personale",
- "password_auth": "Autenticazione della password"
+ "password_auth": "Autenticazione della password",
+ "email_verified_error_desc": "La tua email non poteva essere verificata. \nPer favore riprova."
},
"checklist": {
"add_item": "Aggiungi elemento",
@@ -540,7 +542,8 @@
"collection_created": "Collezione creata con successo!",
"collection_edit_success": "Collezione modificata con successo!",
"create": "Creare",
- "public_collection": "Collezione pubblica"
+ "public_collection": "Collezione pubblica",
+ "manage_collections": "Gestisci collezioni"
},
"notes": {
"add_a_link": "Aggiungi un collegamento",
diff --git a/frontend/src/locales/ko.json b/frontend/src/locales/ko.json
index 47bcf4c..f18acb8 100644
--- a/frontend/src/locales/ko.json
+++ b/frontend/src/locales/ko.json
@@ -273,7 +273,8 @@
"all_linked_items": "모든 링크 된 항목",
"itinerary": "여정",
"joined": "가입",
- "view_profile": "프로필을 봅니다"
+ "view_profile": "프로필을 봅니다",
+ "share_collection": "이 컬렉션을 공유하십시오!"
},
"auth": {
"both_passwords_required": "두 암호 모두 필요합니다",
@@ -336,7 +337,8 @@
"error_creating_collection": "컬렉션 생성 오류",
"error_editing_collection": "컬렉션 편집 오류",
"new_collection": "새로운 컬렉션",
- "public_collection": "공개 컬렉션"
+ "public_collection": "공개 컬렉션",
+ "manage_collections": "컬렉션을 관리합니다"
},
"dashboard": {
"add_some": "다음 모험을 계획해 보는게 어떨까요? 아래 버튼을 클릭하여 새로운 모험을 추가할 수 있습니다.",
@@ -618,7 +620,8 @@
"social_auth_desc_1": "소셜 로그인 옵션 및 비밀번호 설정을 관리합니다",
"social_auth_setup": "소셜 인증 설정",
"staff_status": "직원 상태",
- "staff_user": "직원 사용자"
+ "staff_user": "직원 사용자",
+ "email_verified_error_desc": "귀하의 이메일을 확인할 수 없습니다. \n다시 시도하십시오."
},
"share": {
"go_to_settings": "설정으로 이동",
diff --git a/frontend/src/locales/nl.json b/frontend/src/locales/nl.json
index cf690ad..fa9e5b3 100644
--- a/frontend/src/locales/nl.json
+++ b/frontend/src/locales/nl.json
@@ -273,7 +273,8 @@
"all_linked_items": "Alle gekoppelde items",
"itinerary": "Routebeschrijving",
"joined": "Samengevoegd",
- "view_profile": "Bekijk profiel"
+ "view_profile": "Bekijk profiel",
+ "share_collection": "Deel deze collectie!"
},
"home": {
"desc_1": "Ontdek, plan en verken met gemak",
@@ -513,7 +514,8 @@
"social_auth_setup": "Sociale authenticatie -opstelling",
"staff_status": "Status",
"staff_user": "Personeelsgebruiker",
- "connected": "Aangesloten"
+ "connected": "Aangesloten",
+ "email_verified_error_desc": "Uw e -mail kan niet worden geverifieerd. \nProbeer het opnieuw."
},
"checklist": {
"add_item": "Artikel toevoegen",
@@ -540,7 +542,8 @@
"error_creating_collection": "Fout bij aanmaken collectie",
"error_editing_collection": "Fout bij het bewerken van de collectie",
"new_collection": "Nieuwe collectie",
- "public_collection": "Openbare collectie"
+ "public_collection": "Openbare collectie",
+ "manage_collections": "Beheer collecties"
},
"notes": {
"add_a_link": "Voeg een link toe",
diff --git a/frontend/src/locales/no.json b/frontend/src/locales/no.json
index 0806321..4243d96 100644
--- a/frontend/src/locales/no.json
+++ b/frontend/src/locales/no.json
@@ -321,7 +321,8 @@
"all_linked_items": "Alle koblede varer",
"itinerary": "Reiserute",
"joined": "Ble med",
- "view_profile": "Vis profil"
+ "view_profile": "Vis profil",
+ "share_collection": "Del denne samlingen!"
},
"worldtravel": {
"country_list": "Liste over land",
@@ -513,7 +514,8 @@
"social_auth_desc_1": "Administrer sosiale påloggingsalternativer og passordinnstillinger",
"social_auth_setup": "Sosial autentiseringsoppsett",
"staff_status": "Personalstatus",
- "staff_user": "Personalbruker"
+ "staff_user": "Personalbruker",
+ "email_verified_error_desc": "E -posten din kunne ikke bekreftes. \nVennligst prøv igjen."
},
"collection": {
"collection_created": "Samling opprettet!",
@@ -523,7 +525,8 @@
"collection_edit_success": "Samling redigert!",
"error_editing_collection": "Feil ved redigering av samling",
"edit_collection": "Rediger samling",
- "public_collection": "Offentlig samling"
+ "public_collection": "Offentlig samling",
+ "manage_collections": "Administrer samlinger"
},
"notes": {
"note_deleted": "Notat slettet!",
diff --git a/frontend/src/locales/pl.json b/frontend/src/locales/pl.json
index d5e0eeb..d428f8d 100644
--- a/frontend/src/locales/pl.json
+++ b/frontend/src/locales/pl.json
@@ -321,7 +321,8 @@
"all_linked_items": "Wszystkie połączone elementy",
"itinerary": "Trasa",
"joined": "Dołączył",
- "view_profile": "Zobacz profil"
+ "view_profile": "Zobacz profil",
+ "share_collection": "Udostępnij tę kolekcję!"
},
"worldtravel": {
"country_list": "Lista krajów",
@@ -513,7 +514,8 @@
"social_auth_desc_1": "Zarządzaj opcjami logowania społecznościowego i ustawieniami haseł",
"social_auth_setup": "Konfiguracja uwierzytelniania społecznego",
"staff_status": "Status personelu",
- "staff_user": "Użytkownik personelu"
+ "staff_user": "Użytkownik personelu",
+ "email_verified_error_desc": "Twój e -mail nie można zweryfikować. \nSpróbuj ponownie."
},
"collection": {
"collection_created": "Kolekcja została pomyślnie utworzona!",
@@ -523,7 +525,8 @@
"collection_edit_success": "Kolekcja została pomyślnie edytowana!",
"error_editing_collection": "Błąd podczas edytowania kolekcji",
"edit_collection": "Edytuj kolekcję",
- "public_collection": "Kolekcja publiczna"
+ "public_collection": "Kolekcja publiczna",
+ "manage_collections": "Zarządzaj kolekcjami"
},
"notes": {
"note_deleted": "Notatka została pomyślnie usunięta!",
diff --git a/frontend/src/locales/ru.json b/frontend/src/locales/ru.json
index eec8bed..ace3ecb 100644
--- a/frontend/src/locales/ru.json
+++ b/frontend/src/locales/ru.json
@@ -1,729 +1,732 @@
{
- "navbar": {
- "adventures": "Приключения",
- "collections": "Коллекции",
- "worldtravel": "Мировые путешествия",
- "map": "Карта",
- "users": "Пользователи",
- "search": "Поиск",
- "profile": "Профиль",
- "greeting": "Привет",
- "my_adventures": "Мои приключения",
- "my_tags": "Мои теги",
- "tag": "Тег",
- "shared_with_me": "Поделились со мной",
- "settings": "Настройки",
- "logout": "Выйти",
- "about": "О AdventureLog",
- "documentation": "Документация",
- "discord": "Discord",
- "language_selection": "Язык",
- "support": "Поддержка",
- "calendar": "Календарь",
- "theme_selection": "Выбор темы",
- "admin_panel": "Панель администратора",
- "themes": {
- "light": "Светлая",
- "dark": "Тёмная",
- "night": "Ночная",
- "forest": "Лесная",
- "aestheticLight": "Эстетическая светлая",
- "aestheticDark": "Эстетическая тёмная",
- "aqua": "Аква",
- "northernLights": "Северное сияние"
- }
- },
- "about": {
- "about": "О программе",
- "license": "Лицензировано под лицензией GPL-3.0.",
- "source_code": "Исходный код",
- "message": "Сделано с ❤️ в США.",
- "oss_attributions": "Атрибуции открытого исходного кода",
- "nominatim_1": "Поиск местоположений и геокодирование предоставляется",
- "nominatim_2": "Их данные лицензированы под лицензией ODbL.",
- "other_attributions": "Дополнительные атрибуции можно найти в файле README.",
- "generic_attributions": "Войдите в AdventureLog, чтобы просмотреть атрибуции для включённых интеграций и сервисов.",
- "close": "Закрыть"
- },
- "home": {
- "hero_1": "Откройте для себя самые захватывающие приключения мира",
- "hero_2": "Открывайте и планируйте своё следующее приключение с AdventureLog. Исследуйте захватывающие дух места, создавайте персональные маршруты и оставайтесь на связи в пути.",
- "go_to": "Перейти к AdventureLog",
- "key_features": "Ключевые особенности",
- "desc_1": "Открывайте, планируйте и исследуйте с лёгкостью",
- "desc_2": "AdventureLog создан для упрощения вашего путешествия, предоставляя вам инструменты и ресурсы для планирования, сборов и навигации в вашем следующем незабываемом приключении.",
- "feature_1": "Журнал путешествий",
- "feature_1_desc": "Ведите учёт своих приключений с персональным журналом путешествий и делитесь своими впечатлениями с друзьями и семьёй.",
- "feature_2": "Планирование поездок",
- "feature_2_desc": "Легко создавайте персональные маршруты и получайте подробную разбивку поездки по дням.",
- "feature_3": "Карта путешествий",
- "feature_3_desc": "Просматривайте свои путешествия по всему миру с интерактивной картой и открывайте новые направления."
- },
- "adventures": {
- "collection_remove_success": "Приключение успешно удалено из коллекции!",
- "collection_remove_error": "Ошибка удаления приключения из коллекции",
- "collection_link_success": "Приключение успешно связано с коллекцией!",
- "invalid_date_range": "Недопустимый диапазон дат",
- "timezone": "Часовой пояс",
- "no_visits": "Нет посещений",
- "departure_timezone": "Часовой пояс отправления",
- "arrival_timezone": "Часовой пояс прибытия",
- "departure_date": "Дата отправления",
- "arrival_date": "Дата прибытия",
- "no_image_found": "Изображение не найдено",
- "collection_link_error": "Ошибка связывания приключения с коллекцией",
- "adventure_delete_confirm": "Вы уверены, что хотите удалить это приключение? Это действие нельзя отменить.",
- "checklist_delete_confirm": "Вы уверены, что хотите удалить этот контрольный список? Это действие нельзя отменить.",
- "note_delete_confirm": "Вы уверены, что хотите удалить эту заметку? Это действие нельзя отменить.",
- "transportation_delete_confirm": "Вы уверены, что хотите удалить этот транспорт? Это действие нельзя отменить.",
- "lodging_delete_confirm": "Вы уверены, что хотите удалить это место проживания? Это действие нельзя отменить.",
- "delete_checklist": "Удалить контрольный список",
- "delete_note": "Удалить заметку",
- "delete_transportation": "Удалить транспорт",
- "delete_lodging": "Удалить жильё",
- "open_details": "Открыть детали",
- "edit_adventure": "Редактировать приключение",
- "remove_from_collection": "Убрать из коллекции",
- "add_to_collection": "Добавить в коллекцию",
- "delete": "Удалить",
- "not_found": "Приключение не найдено",
- "not_found_desc": "Приключение, которое вы искали, не найдено. Попробуйте другое приключение или проверьте позже.",
- "homepage": "Главная страница",
- "adventure_details": "Детали приключения",
- "collection": "Коллекция",
- "adventure_type": "Тип приключения",
- "longitude": "Долгота",
- "latitude": "Широта",
- "visit": "Посещение",
- "timed": "По времени",
- "coordinates": "Координаты",
- "copy_coordinates": "Копировать координаты",
- "visits": "Посещения",
- "create_new": "Создать новое...",
- "adventure": "Приключение",
- "additional_info": "Дополнительная информация",
- "sunrise_sunset": "Восход и закат",
- "count_txt": "результатов соответствуют вашему поиску",
- "sort": "Сортировка",
- "order_by": "Сортировать по",
- "order_direction": "Направление сортировки",
- "ascending": "По возрастанию",
- "descending": "По убыванию",
- "updated": "Обновлено",
- "name": "Название",
- "date": "Дата",
- "activity_types": "Типы активности",
- "tags": "Теги",
- "add_a_tag": "Добавить тег",
- "date_constrain": "Ограничить датами коллекции",
- "rating": "Рейтинг",
- "my_images": "Мои изображения",
- "add_an_activity": "Добавить активность",
- "show_region_labels": "Показать названия регионов",
- "no_images": "Нет изображений",
- "distance": "Расстояние",
- "upload_images_here": "Загрузите изображения сюда",
- "share_adventure": "Поделиться этим приключением!",
- "copy_link": "Копировать ссылку",
- "sun_times": "Время солнца",
- "sunrise": "Восход",
- "sunset": "Закат",
- "image": "Изображение",
- "upload_image": "Загрузить изображение",
- "open_in_maps": "Открыть в картах",
- "url": "URL",
- "fetch_image": "Получить изображение",
- "wikipedia": "Википедия",
- "add_notes": "Добавить заметки",
- "warning": "Предупреждение",
- "my_adventures": "Мои приключения",
- "no_linkable_adventures": "Не найдено приключений, которые можно связать с этой коллекцией.",
- "add": "Добавить",
- "save_next": "Сохранить и далее",
- "end_date": "Дата окончания",
- "my_visits": "Мои посещения",
- "start_date": "Дата начала",
- "remove": "Удалить",
- "location": "Местоположение",
- "search_for_location": "Поиск местоположения",
- "clear_map": "Очистить карту",
- "search_results": "Результаты поиска",
- "collection_no_start_end_date": "Добавление дат начала и окончания коллекции разблокирует функции планирования маршрута на странице коллекции.",
- "no_results": "Результаты не найдены",
- "wiki_desc": "Извлекает отрывок из статьи Википедии, соответствующей названию приключения.",
- "attachments": "Вложения",
- "attachment": "Вложение",
- "images": "Изображения",
- "primary": "Основное",
- "view_attachment": "Просмотреть вложение",
- "generate_desc": "Сгенерировать описание",
- "public_adventure": "Публичное приключение",
- "location_information": "Информация о местоположении",
- "link": "Ссылка",
- "links": "Ссылки",
- "description": "Описание",
- "sources": "Источники",
- "collection_adventures": "Включить приключения коллекции",
- "filter": "Фильтр",
- "category_filter": "Фильтр категории",
- "category": "Категория",
- "select_adventure_category": "Выберите категорию приключения",
- "clear": "Очистить",
- "my_collections": "Мои коллекции",
- "open_filters": "Открыть фильтры",
- "close_filters": "Закрыть фильтры",
- "archived_collections": "Архивные коллекции",
- "share": "Поделиться",
- "private": "Приватное",
- "public": "Публичное",
- "archived": "Архивное",
- "edit_collection": "Редактировать коллекцию",
- "unarchive": "Разархивировать",
- "archive": "Архивировать",
- "no_collections_found": "Не найдено коллекций для добавления этого приключения.",
- "not_visited": "Не посещено",
- "archived_collection_message": "Коллекция успешно архивирована!",
- "unarchived_collection_message": "Коллекция успешно разархивирована!",
- "delete_collection_success": "Коллекция успешно удалена!",
- "delete_collection_warning": "Вы уверены, что хотите удалить эту коллекцию? Это также удалит все связанные приключения. Это действие нельзя отменить.",
- "cancel": "Отмена",
- "of": "из",
- "delete_collection": "Удалить коллекцию",
- "delete_adventure": "Удалить приключение",
- "adventure_delete_success": "Приключение успешно удалено!",
- "visited": "Посещено",
- "planned": "Запланировано",
- "duration": "Продолжительность",
- "all": "Все",
- "image_removed_success": "Изображение успешно удалено!",
- "image_removed_error": "Ошибка удаления изображения",
- "no_image_url": "Изображение по этому URL не найдено.",
- "image_upload_success": "Изображение успешно загружено!",
- "image_upload_error": "Ошибка загрузки изображения",
- "dates": "Даты",
- "wiki_image_error": "Ошибка получения изображения из Википедии",
- "start_before_end_error": "Дата начала должна быть раньше даты окончания",
- "activity": "Активность",
- "actions": "Действия",
- "no_end_date": "Пожалуйста, введите дату окончания",
- "see_adventures": "Посмотреть приключения",
- "image_fetch_failed": "Не удалось получить изображение",
- "no_location": "Пожалуйста, введите местоположение",
- "no_start_date": "Пожалуйста, введите дату начала",
- "no_description_found": "Описание не найдено",
- "adventure_created": "Приключение создано",
- "adventure_create_error": "Не удалось создать приключение",
- "lodging": "Жильё",
- "create_adventure": "Создать приключение",
- "adventure_updated": "Приключение обновлено",
- "adventure_update_error": "Не удалось обновить приключение",
- "set_to_pin": "Установить как булавку",
- "category_fetch_error": "Ошибка получения категорий",
- "new_adventure": "Новое приключение",
- "basic_information": "Основная информация",
- "no_adventures_to_recommendations": "Приключения не найдены. Добавьте хотя бы одно приключение, чтобы получить рекомендации.",
- "display_name": "Отображаемое имя",
- "adventure_not_found": "Нет приключений для отображения. Добавьте их, используя кнопку плюс в правом нижнем углу, или попробуйте изменить фильтры!",
- "no_adventures_found": "Приключения не найдены",
- "mark_region_as_visited": "Отметить регион {region}, {country} как посещённый?",
- "mark_visited": "Отметить как посещённое",
- "error_updating_regions": "Ошибка обновления регионов",
- "regions_updated": "регионов обновлено",
- "cities_updated": "городов обновлено",
- "visited_region_check": "Проверка посещённых регионов",
- "visited_region_check_desc": "Выбрав это, сервер проверит все ваши посещённые приключения и отметит регионы, в которых они находятся, как посещённые в мировых путешествиях.",
- "update_visited_regions": "Обновить посещённые регионы",
- "update_visited_regions_disclaimer": "Это может занять некоторое время в зависимости от количества ваших посещённых приключений.",
- "link_new": "Связать новое...",
- "add_new": "Добавить новое...",
- "transportation": "Транспорт",
- "note": "Заметка",
- "checklist": "Контрольный список",
- "collection_archived": "Эта коллекция была архивирована.",
- "visit_link": "Перейти по ссылке",
- "collection_completed": "Вы завершили эту коллекцию!",
- "collection_stats": "Статистика коллекции",
- "keep_exploring": "Продолжайте исследовать!",
- "linked_adventures": "Связанные приключения",
- "notes": "Заметки",
- "checklists": "Контрольные списки",
- "transportations": "Транспорт",
- "adventure_calendar": "Календарь приключений",
- "day": "День",
- "itineary_by_date": "Маршрут по дате",
- "nothing_planned": "На этот день ничего не запланировано. Наслаждайтесь путешествием!",
- "copied_to_clipboard": "Скопировано в буфер обмена!",
- "copy_failed": "Копирование не удалось",
- "show": "Показать",
- "hide": "Скрыть",
- "clear_location": "Очистить местоположение",
- "starting_airport": "Аэропорт отправления",
- "view_profile": "Просмотреть профиль",
- "joined": "Присоединился",
- "ending_airport": "Аэропорт прибытия",
- "no_location_found": "Местоположение не найдено",
- "from": "От",
- "to": "До",
- "will_be_marked": "будет отмечено как посещённое после сохранения приключения.",
- "start": "Начало",
- "end": "Конец",
- "show_map": "Показать карту",
- "emoji_picker": "Выбор эмодзи",
- "download_calendar": "Скачать календарь",
- "all_day": "Весь день",
- "ordered_itinerary": "Упорядоченный маршрут",
- "itinerary": "Маршрут",
- "all_linked_items": "Все связанные элементы",
- "date_itinerary": "Маршрут по дате",
- "no_ordered_items": "Добавьте элементы с датами в коллекцию, чтобы увидеть их здесь.",
- "date_information": "Информация о дате",
- "flight_information": "Информация о рейсе",
- "out_of_range": "Не в диапазоне дат маршрута",
- "preview": "Предварительный просмотр",
- "finding_recommendations": "Поиск скрытых жемчужин для вашего следующего приключения",
- "location_details": "Детали местоположения",
- "city": "Город",
- "region": "Регион",
- "md_instructions": "Напишите ваш markdown здесь...",
- "days": "дней",
- "attachment_upload_success": "Вложение успешно загружено!",
- "attachment_upload_error": "Ошибка загрузки вложения",
- "upload": "Загрузить",
- "attachment_delete_success": "Вложение успешно удалено!",
- "attachment_update_success": "Вложение успешно обновлено!",
- "attachment_name": "Название вложения",
- "gpx_tip": "Загрузите GPX-файлы во вложения, чтобы просматривать их на карте!",
- "welcome_map_info": "Публичные приключения на этом сервере",
- "attachment_update_error": "Ошибка обновления вложения",
- "activities": {
- "general": "Общее 🌍",
- "outdoor": "На открытом воздухе 🏞️",
- "lodging": "Проживание 🛌",
- "dining": "Питание 🍽️",
- "activity": "Активность 🏄",
- "attraction": "Достопримечательность 🎢",
- "shopping": "Покупки 🛍️",
- "nightlife": "Ночная жизнь 🌃",
- "event": "Мероприятие 🎉",
- "transportation": "Транспорт 🚗",
- "culture": "Культура 🎭",
- "water_sports": "Водные виды спорта 🚤",
- "hiking": "Пешие походы 🥾",
- "wildlife": "Дикая природа 🦒",
- "historical_sites": "Исторические места 🏛️",
- "music_concerts": "Музыка и концерты 🎶",
- "fitness": "Фитнес 🏋️",
- "art_museums": "Искусство и музеи 🎨",
- "festivals": "Фестивали 🎪",
- "spiritual_journeys": "Духовные путешествия 🧘♀️",
- "volunteer_work": "Волонтёрская работа 🤝",
- "other": "Другое"
- },
- "lodging_information": "Информация о жилье",
- "price": "Цена",
- "reservation_number": "Номер бронирования"
- },
- "worldtravel": {
- "country_list": "Список стран",
- "num_countries": "стран найдено",
- "all": "Все",
- "partially_visited": "Частично посещённые",
- "not_visited": "Не посещённые",
- "completely_visited": "Полностью посещённые",
- "all_subregions": "Все субрегионы",
- "clear_search": "Очистить поиск",
- "no_countries_found": "Страны не найдены",
- "view_cities": "Просмотреть города",
- "no_cities_found": "Города не найдены",
- "visit_to": "Посещение",
- "region_failed_visited": "Не удалось отметить регион как посещённый",
- "failed_to_mark_visit": "Не удалось отметить посещение",
- "visit_remove_failed": "Не удалось удалить посещение",
- "removed": "удалено",
- "failed_to_remove_visit": "Не удалось удалить посещение",
- "marked_visited": "отмечено как посещённое",
- "regions_in": "Регионы в",
- "region_stats": "Статистика регионов",
- "all_visited": "Вы посетили все регионы в",
- "cities": "городов"
- },
- "auth": {
- "username": "Имя пользователя",
- "password": "Пароль",
- "forgot_password": "Забыли пароль?",
- "signup": "Регистрация",
- "login_error": "Не удалось войти с предоставленными учётными данными.",
- "login": "Вход",
- "email": "Email",
- "first_name": "Имя",
- "last_name": "Фамилия",
- "confirm_password": "Подтвердите пароль",
- "registration_disabled": "Регистрация в настоящее время отключена.",
- "profile_picture": "Фото профиля",
- "public_profile": "Публичный профиль",
- "public_tooltip": "С публичным профилем пользователи могут делиться с вами коллекциями и просматривать ваш профиль на странице пользователей.",
- "email_required": "Email обязателен",
- "new_password": "Новый пароль (6+ символов)",
- "both_passwords_required": "Оба пароля обязательны",
- "reset_failed": "Не удалось сбросить пароль",
- "or_3rd_party": "Или войти через сторонний сервис",
- "no_public_adventures": "Публичные приключения не найдены",
- "no_public_collections": "Публичные коллекции не найдены",
- "user_adventures": "Приключения пользователя",
- "user_collections": "Коллекции пользователя"
- },
- "users": {
- "no_users_found": "Пользователи с публичными профилями не найдены."
- },
- "settings": {
- "update_error": "Ошибка обновления настроек",
- "update_success": "Настройки успешно обновлены!",
- "settings_page": "Страница настроек",
- "account_settings": "Настройки учётной записи пользователя",
- "update": "Обновить",
- "no_verified_email_warning": "У вас должен быть подтверждённый адрес электронной почты для включения двухфакторной аутентификации.",
- "social_auth": "Социальная аутентификация",
- "social_auth_desc_1": "Управление опциями социального входа и настройками пароля",
- "password_auth": "Аутентификация по паролю",
- "password_login_enabled": "Вход по паролю включён",
- "password_login_disabled": "Вход по паролю отключён",
- "password_change": "Изменить пароль",
- "new_password": "Новый пароль",
- "confirm_new_password": "Подтвердите новый пароль",
- "email_change": "Изменить email",
- "current_email": "Текущий email",
- "no_email_set": "Email не установлен",
- "email_management": "Управление email",
- "email_management_desc": "Управление вашими адресами электронной почты и статусом подтверждения",
- "add_new_email": "Добавить новый email",
- "add_new_email_address": "Добавить новый адрес электронной почты",
- "enter_new_email": "Введите новый адрес электронной почты",
- "new_email": "Новый email",
- "change_password": "Изменить пароль",
- "login_redir": "Затем вы будете перенаправлены на страницу входа.",
- "token_required": "Токен и UID необходимы для сброса пароля.",
- "reset_password": "Сбросить пароль",
- "possible_reset": "Если адрес электронной почты, который вы указали, связан с учётной записью, вы получите письмо с инструкциями по сбросу пароля!",
- "missing_email": "Пожалуйста, введите адрес электронной почты",
- "submit": "Отправить",
- "password_does_not_match": "Пароли не совпадают",
- "password_is_required": "Пароль обязателен",
- "invalid_token": "Токен недействителен или истёк",
- "about_this_background": "Об этом фоне",
- "photo_by": "Фото",
- "join_discord": "Присоединиться к Discord",
- "join_discord_desc": "чтобы поделиться своими фотографиями. Размещайте их в канале #travel-share.",
- "current_password": "Текущий пароль",
- "change_password_error": "Не удалось изменить пароль. Неверный текущий пароль или недопустимый новый пароль.",
- "password_change_lopout_warning": "Вы будете вылогинены после изменения пароля.",
- "generic_error": "Произошла ошибка при обработке вашего запроса.",
- "email_removed": "Email успешно удалён!",
- "email_removed_error": "Ошибка удаления email",
- "verify_email_success": "Подтверждение email успешно отправлено!",
- "verify_email_error": "Ошибка подтверждения email. Попробуйте снова через несколько минут.",
- "email_added": "Email успешно добавлен!",
- "email_added_error": "Ошибка добавления email",
- "email_set_primary": "Email успешно установлен как основной!",
- "email_set_primary_error": "Ошибка установки email как основного",
- "verified": "Подтверждён",
- "primary": "Основной",
- "not_verified": "Не подтверждён",
- "make_primary": "Сделать основным",
- "verify": "Подтвердить",
- "no_emai_set": "Email не установлен",
- "error_change_password": "Ошибка изменения пароля. Пожалуйста, проверьте ваш текущий пароль и попробуйте снова.",
- "mfa_disabled": "Многофакторная аутентификация успешно отключена!",
- "mfa_page_title": "Многофакторная аутентификация",
- "mfa_desc": "Добавьте дополнительный уровень безопасности к вашему аккаунту",
- "enable_mfa": "Включить MFA",
- "disable_mfa": "Отключить MFA",
- "enabled": "Включено",
- "disabled": "Отключено",
- "mfa_not_enabled": "MFA не включен",
- "mfa_is_enabled": "MFA включен",
- "mfa_enabled": "Многофакторная аутентификация успешно включена!",
- "copy": "Копировать",
- "recovery_codes": "Коды восстановления",
- "recovery_codes_desc": "Это ваши коды восстановления. Сохраните их в безопасном месте. Вы не сможете увидеть их снова.",
- "reset_session_error": "Пожалуйста, выйдите из системы и войдите снова, чтобы обновить сессию и повторите попытку.",
- "authenticator_code": "Код аутентификатора",
- "email_verified": "Email успешно подтвержден!",
- "email_verified_success": "Ваш email был подтвержден. Теперь вы можете войти в систему.",
- "email_verified_error": "Ошибка подтверждения email",
- "email_verified_erorr_desc": "Ваш email не может быть подтвержден. Пожалуйста, попробуйте еще раз.",
- "invalid_code": "Неверный MFA код",
- "invalid_credentials": "Неверное имя пользователя или пароль",
- "mfa_required": "Требуется многофакторная аутентификация",
- "required": "Это поле обязательно",
- "add_email_blocked": "Вы не можете добавить email адрес к аккаунту, защищенному двухфакторной аутентификацией.",
- "duplicate_email": "Этот email адрес уже используется.",
- "csrf_failed": "Не удалось получить CSRF токен",
- "email_taken": "Этот email адрес уже используется.",
- "username_taken": "Это имя пользователя уже используется.",
- "administration_settings": "Настройки администрирования",
- "launch_administration_panel": "Запустить панель администрирования",
- "administration": "Администрирование",
- "admin_panel_desc": "Доступ к полному интерфейсу администрирования",
- "region_updates": "Обновления регионов",
- "debug_information": "Отладочная информация",
- "staff_status": "Статус персонала",
- "staff_user": "Сотрудник",
- "regular_user": "Обычный пользователь",
- "app_version": "Версия приложения",
- "quick_actions": "Быстрые действия",
- "license": "Лицензия",
- "all_rights_reserved": "Все права защищены.",
- "region_updates_desc": "Обновить посещенные регионы и города",
- "access_restricted": "Доступ ограничен",
- "access_restricted_desc": "Административные функции доступны только сотрудникам.",
- "advanced_settings": "Расширенные настройки",
- "advanced_settings_desc": "Расширенная конфигурация и инструменты разработчика",
- "social_auth_setup": "Настройка социальной аутентификации",
- "administration_desc": "Административные инструменты и настройки",
- "social_oidc_auth": "Социальная и OIDC аутентификация",
- "social_auth_desc": "Включите или отключите социальные и OIDC провайдеры аутентификации для вашего аккаунта. Эти подключения позволяют вам входить в систему с помощью самостоятельно размещенных провайдеров идентификации, таких как Authentik, или сторонних провайдеров, таких как GitHub.",
- "social_auth_desc_2": "Эти настройки управляются на сервере AdventureLog и должны быть вручную включены администратором.",
- "documentation_link": "Ссылка на документацию",
- "launch_account_connections": "Запустить подключения аккаунта",
- "password_too_short": "Пароль должен содержать не менее 6 символов",
- "add_email": "Добавить Email",
- "password_disable": "Отключить аутентификацию по паролю",
- "password_disable_desc": "Отключение аутентификации по паролю не позволит вам входить в систему с паролем. Вам нужно будет использовать социального или OIDC провайдера для входа. Если ваш социальный провайдер будет отключен, аутентификация по паролю будет автоматически включена, даже если эта настройка отключена.",
- "disable_password": "Отключить пароль",
- "password_enabled": "Аутентификация по паролю включена",
- "password_disabled": "Аутентификация по паролю отключена",
- "password_disable_warning": "В настоящее время аутентификация по паролю отключена. Требуется вход через социального или OIDC провайдера.",
- "password_disabled_error": "Ошибка отключения аутентификации по паролю. Убедитесь, что к вашему аккаунту привязан социальный или OIDC провайдер.",
- "password_enabled_error": "Ошибка включения аутентификации по паролю.",
- "settings_menu": "Меню настроек",
- "security": "Безопасность",
- "emails": "Email адреса",
- "integrations": "Интеграции",
- "integrations_desc": "Подключите внешние сервисы для улучшения вашего опыта",
- "admin": "Админ",
- "advanced": "Расширенные",
- "profile_info": "Информация профиля",
- "profile_info_desc": "Обновите ваши личные данные и фотографию профиля",
- "public_profile_desc": "Сделать ваш профиль видимым для других пользователей",
- "pass_change_desc": "Обновите пароль вашего аккаунта для лучшей безопасности",
- "enter_first_name": "Введите ваше имя",
- "enter_last_name": "Введите вашу фамилию",
- "enter_username": "Введите ваше имя пользователя",
- "enter_current_password": "Введите текущий пароль",
- "enter_new_password": "Введите новый пароль",
- "connected": "Подключено",
- "disconnected": "Отключено",
- "confirm_new_password_desc": "Подтвердите новый пароль"
- },
- "collection": {
- "collection_created": "Коллекция успешно создана!",
- "error_creating_collection": "Ошибка создания коллекции",
- "new_collection": "Новая коллекция",
- "create": "Создать",
- "collection_edit_success": "Коллекция успешно отредактирована!",
- "error_editing_collection": "Ошибка редактирования коллекции",
- "edit_collection": "Редактировать коллекцию",
- "public_collection": "Публичная коллекция"
- },
- "notes": {
- "note_deleted": "Заметка успешно удалена!",
- "note_delete_error": "Ошибка удаления заметки",
- "open": "Открыть",
- "failed_to_save": "Не удалось сохранить заметку",
- "note_editor": "Редактор заметок",
- "note_viewer": "Просмотр заметки",
- "editing_note": "Редактирование заметки",
- "content": "Содержание",
- "save": "Сохранить",
- "note_public": "Эта заметка публична, потому что находится в публичной коллекции.",
- "add_a_link": "Добавить ссылку",
- "invalid_url": "Неверный URL"
- },
- "checklist": {
- "checklist_deleted": "Чек-лист успешно удален!",
- "checklist_delete_error": "Ошибка удаления чек-листа",
- "failed_to_save": "Не удалось сохранить чек-лист",
- "checklist_editor": "Редактор чек-листа",
- "checklist_viewer": "Просмотр чек-листа",
- "editing_checklist": "Редактирование чек-листа",
- "new_checklist": "Новый чек-лист",
- "item": "Элемент",
- "items": "Элементы",
- "add_item": "Добавить элемент",
- "new_item": "Новый элемент",
- "save": "Сохранить",
- "checklist_public": "Этот чек-лист публичен, потому что находится в публичной коллекции.",
- "item_cannot_be_empty": "Элемент не может быть пустым",
- "item_already_exists": "Элемент уже существует"
- },
- "transportation": {
- "transportation_deleted": "Транспорт успешно удален!",
- "transportation_delete_error": "Ошибка удаления транспорта",
- "provide_start_date": "Пожалуйста, укажите дату начала",
- "transport_type": "Тип транспорта",
- "type": "Тип",
- "transportation_added": "Транспорт успешно добавлен!",
- "error_editing_transportation": "Ошибка редактирования транспорта",
- "new_transportation": "Новый транспорт",
- "date_time": "Дата и время начала",
- "end_date_time": "Дата и время окончания",
- "flight_number": "Номер рейса",
- "from_location": "Откуда",
- "to_location": "Куда",
- "fetch_location_information": "Получить информацию о местоположении",
- "starting_airport_desc": "Введите код аэропорта отправления (например, SVO)",
- "ending_airport_desc": "Введите код аэропорта прибытия (например, LED)",
- "edit": "Редактировать",
- "modes": {
- "car": "Автомобиль",
- "plane": "Самолет",
- "train": "Поезд",
- "bus": "Автобус",
- "boat": "Лодка",
- "bike": "Велосипед",
- "walking": "Пешком",
- "other": "Другое"
- },
- "transportation_edit_success": "Транспорт успешно отредактирован!",
- "edit_transportation": "Редактировать транспорт",
- "start": "Начало",
- "date_and_time": "Дата и время"
- },
- "lodging": {
- "lodging_deleted": "Жилье успешно удалено!",
- "lodging_delete_error": "Ошибка удаления жилья",
- "provide_start_date": "Пожалуйста, укажите дату начала",
- "lodging_type": "Тип жилья",
- "type": "Тип",
- "lodging_added": "Жилье успешно добавлено!",
- "error_editing_lodging": "Ошибка редактирования жилья",
- "new_lodging": "Новое жилье",
- "check_in": "Заезд",
- "check_out": "Выезд",
- "edit": "Редактировать",
- "lodging_edit_success": "Жилье успешно отредактировано!",
- "edit_lodging": "Редактировать жилье",
- "start": "Начало",
- "date_and_time": "Дата и время",
- "hotel": "Отель",
- "hostel": "Хостел",
- "resort": "Курорт",
- "bnb": "Гостевой дом",
- "campground": "Кемпинг",
- "cabin": "Домик",
- "apartment": "Квартира",
- "house": "Дом",
- "villa": "Вилла",
- "motel": "Мотель",
- "other": "Другое",
- "reservation_number": "Номер бронирования",
- "current_timezone": "Текущий часовой пояс"
- },
- "search": {
- "adventurelog_results": "Результаты AdventureLog",
- "public_adventures": "Публичные приключения",
- "online_results": "Онлайн результаты"
- },
- "map": {
- "view_details": "Подробности",
- "adventure_map": "Карта приключений",
- "map_options": "Настройки карты",
- "show_visited_regions": "Показать посещенные регионы",
- "add_adventure_at_marker": "Добавить новое приключение в отмеченном месте",
- "clear_marker": "Очистить маркер",
- "add_adventure": "Добавить новое приключение"
- },
- "share": {
- "shared": "Поделено",
- "with": "с",
- "unshared": "Не поделено",
- "share_desc": "Поделитесь этой коллекцией с другими пользователями.",
- "shared_with": "Поделено с",
- "no_users_shared": "Ни с кем не поделено",
- "not_shared_with": "Не поделено с",
- "no_shared_found": "Не найдено коллекций, которыми с вами поделились.",
- "set_public": "Чтобы пользователи могли делиться с вами, вам нужно сделать ваш профиль публичным.",
- "go_to_settings": "Перейти к настройкам"
- },
- "languages": {},
- "profile": {
- "member_since": "Участник с",
- "user_stats": "Статистика пользователя",
- "visited_countries": "Посещенные страны",
- "visited_regions": "Посещенные регионы",
- "visited_cities": "Посещенные города"
- },
- "categories": {
- "manage_categories": "Управление категориями",
- "no_categories_found": "Категории не найдены.",
- "edit_category": "Редактировать категорию",
- "icon": "Иконка",
- "update_after_refresh": "Карточки приключений будут обновлены после обновления страницы.",
- "select_category": "Выбрать категорию",
- "category_name": "Название категории",
- "add_category": "Добавить категорию",
- "add_new_category": "Добавить новую категорию"
- },
- "dashboard": {
- "welcome_back": "Добро пожаловать обратно",
- "countries_visited": "Посещенные страны",
- "total_adventures": "Всего приключений",
- "total_visited_regions": "Всего посещенных регионов",
- "total_visited_cities": "Всего посещенных городов",
- "recent_adventures": "Недавние приключения",
- "no_recent_adventures": "Нет недавних приключений?",
- "add_some": "Почему бы не начать планировать ваше следующее приключение? Вы можете добавить новое приключение, нажав на кнопку ниже."
- },
- "immich": {
- "immich": "Immich",
- "integration_fetch_error": "Ошибка получения данных из интеграции Immich",
- "integration_missing": "Интеграция Immich отсутствует в бэкенде",
- "query_required": "Запрос обязателен",
- "server_down": "Сервер Immich в настоящее время недоступен",
- "no_items_found": "Элементы не найдены",
- "imageid_required": "ID изображения обязателен",
- "load_more": "Загрузить еще",
- "immich_updated": "Настройки Immich успешно обновлены!",
- "immich_enabled": "Интеграция Immich успешно включена!",
- "immich_error": "Ошибка обновления интеграции Immich",
- "immich_disabled": "Интеграция Immich успешно отключена!",
- "immich_desc": "Интегрируйте ваш аккаунт Immich с AdventureLog, чтобы искать в вашей библиотеке фотографий и импортировать фото для ваших приключений.",
- "integration_enabled": "Интеграция включена",
- "disable": "Отключить",
- "server_url": "URL сервера Immich",
- "api_note": "Примечание: это должен быть URL к API серверу Immich, поэтому он, вероятно, заканчивается на /api, если у вас нет пользовательской конфигурации.",
- "api_key": "API ключ Immich",
- "enable_immich": "Включить Immich",
- "enable_integration": "Включить интеграцию",
- "update_integration": "Обновить интеграцию",
- "immich_integration": "Интеграция Immich",
- "immich_integration_desc": "Подключите ваш сервер управления фотографиями Immich",
- "localhost_note": "Примечание: localhost, скорее всего, не будет работать, если вы не настроили сети Docker соответствующим образом. Рекомендуется использовать IP-адрес сервера или доменное имя.",
- "documentation": "Документация интеграции Immich",
- "api_key_placeholder": "Введите ваш API ключ Immich",
- "need_help": "Нужна помощь с настройкой? Посмотрите",
- "copy_locally": "Копировать изображения локально",
- "copy_locally_desc": "Копировать изображения на сервер для офлайн доступа. Использует больше дискового пространства.",
- "error_saving_image": "Ошибка сохранения изображения",
- "connection_error": "Ошибка подключения к серверу Immich",
- "integration_already_exists": "Интеграция Immich уже существует. Вы можете иметь только одну интеграцию одновременно.",
- "integration_not_found": "Интеграция Immich не найдена. Пожалуйста, создайте новую интеграцию.",
- "validation_error": "Произошла ошибка при проверке интеграции Immich. Пожалуйста, проверьте URL сервера и API ключ.",
- "network_error": "Сетевая ошибка при подключении к серверу Immich. Пожалуйста, проверьте ваше соединение и попробуйте еще раз."
- },
- "google_maps": {
- "google_maps_integration_desc": "Подключите ваш аккаунт Google Maps для получения высококачественных результатов поиска местоположений и рекомендаций."
- },
- "recomendations": {
- "address": "Адрес",
- "phone": "Телефон",
- "contact": "Контакт",
- "website": "Веб-сайт",
- "recommendation": "Рекомендация",
- "recommendations": "Рекомендации",
- "adventure_recommendations": "Рекомендации приключений",
- "miles": "Мили",
- "food": "Еда",
- "tourism": "Туризм"
- }
+ "navbar": {
+ "adventures": "Приключения",
+ "collections": "Коллекции",
+ "worldtravel": "Мировые путешествия",
+ "map": "Карта",
+ "users": "Пользователи",
+ "search": "Поиск",
+ "profile": "Профиль",
+ "greeting": "Привет",
+ "my_adventures": "Мои приключения",
+ "my_tags": "Мои теги",
+ "tag": "Тег",
+ "shared_with_me": "Поделились со мной",
+ "settings": "Настройки",
+ "logout": "Выйти",
+ "about": "О AdventureLog",
+ "documentation": "Документация",
+ "discord": "Discord",
+ "language_selection": "Язык",
+ "support": "Поддержка",
+ "calendar": "Календарь",
+ "theme_selection": "Выбор темы",
+ "admin_panel": "Панель администратора",
+ "themes": {
+ "light": "Светлая",
+ "dark": "Тёмная",
+ "night": "Ночная",
+ "forest": "Лесная",
+ "aestheticLight": "Эстетическая светлая",
+ "aestheticDark": "Эстетическая тёмная",
+ "aqua": "Аква",
+ "northernLights": "Северное сияние"
+ }
+ },
+ "about": {
+ "about": "О программе",
+ "license": "Лицензировано под лицензией GPL-3.0.",
+ "source_code": "Исходный код",
+ "message": "Сделано с ❤️ в США.",
+ "oss_attributions": "Атрибуции открытого исходного кода",
+ "nominatim_1": "Поиск местоположений и геокодирование предоставляется",
+ "nominatim_2": "Их данные лицензированы под лицензией ODbL.",
+ "other_attributions": "Дополнительные атрибуции можно найти в файле README.",
+ "generic_attributions": "Войдите в AdventureLog, чтобы просмотреть атрибуции для включённых интеграций и сервисов.",
+ "close": "Закрыть"
+ },
+ "home": {
+ "hero_1": "Откройте для себя самые захватывающие приключения мира",
+ "hero_2": "Открывайте и планируйте своё следующее приключение с AdventureLog. Исследуйте захватывающие дух места, создавайте персональные маршруты и оставайтесь на связи в пути.",
+ "go_to": "Перейти к AdventureLog",
+ "key_features": "Ключевые особенности",
+ "desc_1": "Открывайте, планируйте и исследуйте с лёгкостью",
+ "desc_2": "AdventureLog создан для упрощения вашего путешествия, предоставляя вам инструменты и ресурсы для планирования, сборов и навигации в вашем следующем незабываемом приключении.",
+ "feature_1": "Журнал путешествий",
+ "feature_1_desc": "Ведите учёт своих приключений с персональным журналом путешествий и делитесь своими впечатлениями с друзьями и семьёй.",
+ "feature_2": "Планирование поездок",
+ "feature_2_desc": "Легко создавайте персональные маршруты и получайте подробную разбивку поездки по дням.",
+ "feature_3": "Карта путешествий",
+ "feature_3_desc": "Просматривайте свои путешествия по всему миру с интерактивной картой и открывайте новые направления."
+ },
+ "adventures": {
+ "collection_remove_success": "Приключение успешно удалено из коллекции!",
+ "collection_remove_error": "Ошибка удаления приключения из коллекции",
+ "collection_link_success": "Приключение успешно связано с коллекцией!",
+ "invalid_date_range": "Недопустимый диапазон дат",
+ "timezone": "Часовой пояс",
+ "no_visits": "Нет посещений",
+ "departure_timezone": "Часовой пояс отправления",
+ "arrival_timezone": "Часовой пояс прибытия",
+ "departure_date": "Дата отправления",
+ "arrival_date": "Дата прибытия",
+ "no_image_found": "Изображение не найдено",
+ "collection_link_error": "Ошибка связывания приключения с коллекцией",
+ "adventure_delete_confirm": "Вы уверены, что хотите удалить это приключение? Это действие нельзя отменить.",
+ "checklist_delete_confirm": "Вы уверены, что хотите удалить этот контрольный список? Это действие нельзя отменить.",
+ "note_delete_confirm": "Вы уверены, что хотите удалить эту заметку? Это действие нельзя отменить.",
+ "transportation_delete_confirm": "Вы уверены, что хотите удалить этот транспорт? Это действие нельзя отменить.",
+ "lodging_delete_confirm": "Вы уверены, что хотите удалить это место проживания? Это действие нельзя отменить.",
+ "delete_checklist": "Удалить контрольный список",
+ "delete_note": "Удалить заметку",
+ "delete_transportation": "Удалить транспорт",
+ "delete_lodging": "Удалить жильё",
+ "open_details": "Открыть детали",
+ "edit_adventure": "Редактировать приключение",
+ "remove_from_collection": "Убрать из коллекции",
+ "add_to_collection": "Добавить в коллекцию",
+ "delete": "Удалить",
+ "not_found": "Приключение не найдено",
+ "not_found_desc": "Приключение, которое вы искали, не найдено. Попробуйте другое приключение или проверьте позже.",
+ "homepage": "Главная страница",
+ "adventure_details": "Детали приключения",
+ "collection": "Коллекция",
+ "adventure_type": "Тип приключения",
+ "longitude": "Долгота",
+ "latitude": "Широта",
+ "visit": "Посещение",
+ "timed": "По времени",
+ "coordinates": "Координаты",
+ "copy_coordinates": "Копировать координаты",
+ "visits": "Посещения",
+ "create_new": "Создать новое...",
+ "adventure": "Приключение",
+ "additional_info": "Дополнительная информация",
+ "sunrise_sunset": "Восход и закат",
+ "count_txt": "результатов соответствуют вашему поиску",
+ "sort": "Сортировка",
+ "order_by": "Сортировать по",
+ "order_direction": "Направление сортировки",
+ "ascending": "По возрастанию",
+ "descending": "По убыванию",
+ "updated": "Обновлено",
+ "name": "Название",
+ "date": "Дата",
+ "activity_types": "Типы активности",
+ "tags": "Теги",
+ "add_a_tag": "Добавить тег",
+ "date_constrain": "Ограничить датами коллекции",
+ "rating": "Рейтинг",
+ "my_images": "Мои изображения",
+ "add_an_activity": "Добавить активность",
+ "show_region_labels": "Показать названия регионов",
+ "no_images": "Нет изображений",
+ "distance": "Расстояние",
+ "upload_images_here": "Загрузите изображения сюда",
+ "share_adventure": "Поделиться этим приключением!",
+ "copy_link": "Копировать ссылку",
+ "sun_times": "Время солнца",
+ "sunrise": "Восход",
+ "sunset": "Закат",
+ "image": "Изображение",
+ "upload_image": "Загрузить изображение",
+ "open_in_maps": "Открыть в картах",
+ "url": "URL",
+ "fetch_image": "Получить изображение",
+ "wikipedia": "Википедия",
+ "add_notes": "Добавить заметки",
+ "warning": "Предупреждение",
+ "my_adventures": "Мои приключения",
+ "no_linkable_adventures": "Не найдено приключений, которые можно связать с этой коллекцией.",
+ "add": "Добавить",
+ "save_next": "Сохранить и далее",
+ "end_date": "Дата окончания",
+ "my_visits": "Мои посещения",
+ "start_date": "Дата начала",
+ "remove": "Удалить",
+ "location": "Местоположение",
+ "search_for_location": "Поиск местоположения",
+ "clear_map": "Очистить карту",
+ "search_results": "Результаты поиска",
+ "collection_no_start_end_date": "Добавление дат начала и окончания коллекции разблокирует функции планирования маршрута на странице коллекции.",
+ "no_results": "Результаты не найдены",
+ "wiki_desc": "Извлекает отрывок из статьи Википедии, соответствующей названию приключения.",
+ "attachments": "Вложения",
+ "attachment": "Вложение",
+ "images": "Изображения",
+ "primary": "Основное",
+ "view_attachment": "Просмотреть вложение",
+ "generate_desc": "Сгенерировать описание",
+ "public_adventure": "Публичное приключение",
+ "location_information": "Информация о местоположении",
+ "link": "Ссылка",
+ "links": "Ссылки",
+ "description": "Описание",
+ "sources": "Источники",
+ "collection_adventures": "Включить приключения коллекции",
+ "filter": "Фильтр",
+ "category_filter": "Фильтр категории",
+ "category": "Категория",
+ "select_adventure_category": "Выберите категорию приключения",
+ "clear": "Очистить",
+ "my_collections": "Мои коллекции",
+ "open_filters": "Открыть фильтры",
+ "close_filters": "Закрыть фильтры",
+ "archived_collections": "Архивные коллекции",
+ "share": "Поделиться",
+ "private": "Приватное",
+ "public": "Публичное",
+ "archived": "Архивное",
+ "edit_collection": "Редактировать коллекцию",
+ "unarchive": "Разархивировать",
+ "archive": "Архивировать",
+ "no_collections_found": "Не найдено коллекций для добавления этого приключения.",
+ "not_visited": "Не посещено",
+ "archived_collection_message": "Коллекция успешно архивирована!",
+ "unarchived_collection_message": "Коллекция успешно разархивирована!",
+ "delete_collection_success": "Коллекция успешно удалена!",
+ "delete_collection_warning": "Вы уверены, что хотите удалить эту коллекцию? Это также удалит все связанные приключения. Это действие нельзя отменить.",
+ "cancel": "Отмена",
+ "of": "из",
+ "delete_collection": "Удалить коллекцию",
+ "delete_adventure": "Удалить приключение",
+ "adventure_delete_success": "Приключение успешно удалено!",
+ "visited": "Посещено",
+ "planned": "Запланировано",
+ "duration": "Продолжительность",
+ "all": "Все",
+ "image_removed_success": "Изображение успешно удалено!",
+ "image_removed_error": "Ошибка удаления изображения",
+ "no_image_url": "Изображение по этому URL не найдено.",
+ "image_upload_success": "Изображение успешно загружено!",
+ "image_upload_error": "Ошибка загрузки изображения",
+ "dates": "Даты",
+ "wiki_image_error": "Ошибка получения изображения из Википедии",
+ "start_before_end_error": "Дата начала должна быть раньше даты окончания",
+ "activity": "Активность",
+ "actions": "Действия",
+ "no_end_date": "Пожалуйста, введите дату окончания",
+ "see_adventures": "Посмотреть приключения",
+ "image_fetch_failed": "Не удалось получить изображение",
+ "no_location": "Пожалуйста, введите местоположение",
+ "no_start_date": "Пожалуйста, введите дату начала",
+ "no_description_found": "Описание не найдено",
+ "adventure_created": "Приключение создано",
+ "adventure_create_error": "Не удалось создать приключение",
+ "lodging": "Жильё",
+ "create_adventure": "Создать приключение",
+ "adventure_updated": "Приключение обновлено",
+ "adventure_update_error": "Не удалось обновить приключение",
+ "set_to_pin": "Установить как булавку",
+ "category_fetch_error": "Ошибка получения категорий",
+ "new_adventure": "Новое приключение",
+ "basic_information": "Основная информация",
+ "no_adventures_to_recommendations": "Приключения не найдены. Добавьте хотя бы одно приключение, чтобы получить рекомендации.",
+ "display_name": "Отображаемое имя",
+ "adventure_not_found": "Нет приключений для отображения. Добавьте их, используя кнопку плюс в правом нижнем углу, или попробуйте изменить фильтры!",
+ "no_adventures_found": "Приключения не найдены",
+ "mark_region_as_visited": "Отметить регион {region}, {country} как посещённый?",
+ "mark_visited": "Отметить как посещённое",
+ "error_updating_regions": "Ошибка обновления регионов",
+ "regions_updated": "регионов обновлено",
+ "cities_updated": "городов обновлено",
+ "visited_region_check": "Проверка посещённых регионов",
+ "visited_region_check_desc": "Выбрав это, сервер проверит все ваши посещённые приключения и отметит регионы, в которых они находятся, как посещённые в мировых путешествиях.",
+ "update_visited_regions": "Обновить посещённые регионы",
+ "update_visited_regions_disclaimer": "Это может занять некоторое время в зависимости от количества ваших посещённых приключений.",
+ "link_new": "Связать новое...",
+ "add_new": "Добавить новое...",
+ "transportation": "Транспорт",
+ "note": "Заметка",
+ "checklist": "Контрольный список",
+ "collection_archived": "Эта коллекция была архивирована.",
+ "visit_link": "Перейти по ссылке",
+ "collection_completed": "Вы завершили эту коллекцию!",
+ "collection_stats": "Статистика коллекции",
+ "keep_exploring": "Продолжайте исследовать!",
+ "linked_adventures": "Связанные приключения",
+ "notes": "Заметки",
+ "checklists": "Контрольные списки",
+ "transportations": "Транспорт",
+ "adventure_calendar": "Календарь приключений",
+ "day": "День",
+ "itineary_by_date": "Маршрут по дате",
+ "nothing_planned": "На этот день ничего не запланировано. Наслаждайтесь путешествием!",
+ "copied_to_clipboard": "Скопировано в буфер обмена!",
+ "copy_failed": "Копирование не удалось",
+ "show": "Показать",
+ "hide": "Скрыть",
+ "clear_location": "Очистить местоположение",
+ "starting_airport": "Аэропорт отправления",
+ "view_profile": "Просмотреть профиль",
+ "joined": "Присоединился",
+ "ending_airport": "Аэропорт прибытия",
+ "no_location_found": "Местоположение не найдено",
+ "from": "От",
+ "to": "До",
+ "will_be_marked": "будет отмечено как посещённое после сохранения приключения.",
+ "start": "Начало",
+ "end": "Конец",
+ "show_map": "Показать карту",
+ "emoji_picker": "Выбор эмодзи",
+ "download_calendar": "Скачать календарь",
+ "all_day": "Весь день",
+ "ordered_itinerary": "Упорядоченный маршрут",
+ "itinerary": "Маршрут",
+ "all_linked_items": "Все связанные элементы",
+ "date_itinerary": "Маршрут по дате",
+ "no_ordered_items": "Добавьте элементы с датами в коллекцию, чтобы увидеть их здесь.",
+ "date_information": "Информация о дате",
+ "flight_information": "Информация о рейсе",
+ "out_of_range": "Не в диапазоне дат маршрута",
+ "preview": "Предварительный просмотр",
+ "finding_recommendations": "Поиск скрытых жемчужин для вашего следующего приключения",
+ "location_details": "Детали местоположения",
+ "city": "Город",
+ "region": "Регион",
+ "md_instructions": "Напишите ваш markdown здесь...",
+ "days": "дней",
+ "attachment_upload_success": "Вложение успешно загружено!",
+ "attachment_upload_error": "Ошибка загрузки вложения",
+ "upload": "Загрузить",
+ "attachment_delete_success": "Вложение успешно удалено!",
+ "attachment_update_success": "Вложение успешно обновлено!",
+ "attachment_name": "Название вложения",
+ "gpx_tip": "Загрузите GPX-файлы во вложения, чтобы просматривать их на карте!",
+ "welcome_map_info": "Публичные приключения на этом сервере",
+ "attachment_update_error": "Ошибка обновления вложения",
+ "activities": {
+ "general": "Общее 🌍",
+ "outdoor": "На открытом воздухе 🏞️",
+ "lodging": "Проживание 🛌",
+ "dining": "Питание 🍽️",
+ "activity": "Активность 🏄",
+ "attraction": "Достопримечательность 🎢",
+ "shopping": "Покупки 🛍️",
+ "nightlife": "Ночная жизнь 🌃",
+ "event": "Мероприятие 🎉",
+ "transportation": "Транспорт 🚗",
+ "culture": "Культура 🎭",
+ "water_sports": "Водные виды спорта 🚤",
+ "hiking": "Пешие походы 🥾",
+ "wildlife": "Дикая природа 🦒",
+ "historical_sites": "Исторические места 🏛️",
+ "music_concerts": "Музыка и концерты 🎶",
+ "fitness": "Фитнес 🏋️",
+ "art_museums": "Искусство и музеи 🎨",
+ "festivals": "Фестивали 🎪",
+ "spiritual_journeys": "Духовные путешествия 🧘♀️",
+ "volunteer_work": "Волонтёрская работа 🤝",
+ "other": "Другое"
+ },
+ "lodging_information": "Информация о жилье",
+ "price": "Цена",
+ "reservation_number": "Номер бронирования",
+ "share_collection": "Поделитесь этой коллекцией!"
+ },
+ "worldtravel": {
+ "country_list": "Список стран",
+ "num_countries": "стран найдено",
+ "all": "Все",
+ "partially_visited": "Частично посещённые",
+ "not_visited": "Не посещённые",
+ "completely_visited": "Полностью посещённые",
+ "all_subregions": "Все субрегионы",
+ "clear_search": "Очистить поиск",
+ "no_countries_found": "Страны не найдены",
+ "view_cities": "Просмотреть города",
+ "no_cities_found": "Города не найдены",
+ "visit_to": "Посещение",
+ "region_failed_visited": "Не удалось отметить регион как посещённый",
+ "failed_to_mark_visit": "Не удалось отметить посещение",
+ "visit_remove_failed": "Не удалось удалить посещение",
+ "removed": "удалено",
+ "failed_to_remove_visit": "Не удалось удалить посещение",
+ "marked_visited": "отмечено как посещённое",
+ "regions_in": "Регионы в",
+ "region_stats": "Статистика регионов",
+ "all_visited": "Вы посетили все регионы в",
+ "cities": "городов"
+ },
+ "auth": {
+ "username": "Имя пользователя",
+ "password": "Пароль",
+ "forgot_password": "Забыли пароль?",
+ "signup": "Регистрация",
+ "login_error": "Не удалось войти с предоставленными учётными данными.",
+ "login": "Вход",
+ "email": "Email",
+ "first_name": "Имя",
+ "last_name": "Фамилия",
+ "confirm_password": "Подтвердите пароль",
+ "registration_disabled": "Регистрация в настоящее время отключена.",
+ "profile_picture": "Фото профиля",
+ "public_profile": "Публичный профиль",
+ "public_tooltip": "С публичным профилем пользователи могут делиться с вами коллекциями и просматривать ваш профиль на странице пользователей.",
+ "email_required": "Email обязателен",
+ "new_password": "Новый пароль (6+ символов)",
+ "both_passwords_required": "Оба пароля обязательны",
+ "reset_failed": "Не удалось сбросить пароль",
+ "or_3rd_party": "Или войти через сторонний сервис",
+ "no_public_adventures": "Публичные приключения не найдены",
+ "no_public_collections": "Публичные коллекции не найдены",
+ "user_adventures": "Приключения пользователя",
+ "user_collections": "Коллекции пользователя"
+ },
+ "users": {
+ "no_users_found": "Пользователи с публичными профилями не найдены."
+ },
+ "settings": {
+ "update_error": "Ошибка обновления настроек",
+ "update_success": "Настройки успешно обновлены!",
+ "settings_page": "Страница настроек",
+ "account_settings": "Настройки учётной записи пользователя",
+ "update": "Обновить",
+ "no_verified_email_warning": "У вас должен быть подтверждённый адрес электронной почты для включения двухфакторной аутентификации.",
+ "social_auth": "Социальная аутентификация",
+ "social_auth_desc_1": "Управление опциями социального входа и настройками пароля",
+ "password_auth": "Аутентификация по паролю",
+ "password_login_enabled": "Вход по паролю включён",
+ "password_login_disabled": "Вход по паролю отключён",
+ "password_change": "Изменить пароль",
+ "new_password": "Новый пароль",
+ "confirm_new_password": "Подтвердите новый пароль",
+ "email_change": "Изменить email",
+ "current_email": "Текущий email",
+ "no_email_set": "Email не установлен",
+ "email_management": "Управление email",
+ "email_management_desc": "Управление вашими адресами электронной почты и статусом подтверждения",
+ "add_new_email": "Добавить новый email",
+ "add_new_email_address": "Добавить новый адрес электронной почты",
+ "enter_new_email": "Введите новый адрес электронной почты",
+ "new_email": "Новый email",
+ "change_password": "Изменить пароль",
+ "login_redir": "Затем вы будете перенаправлены на страницу входа.",
+ "token_required": "Токен и UID необходимы для сброса пароля.",
+ "reset_password": "Сбросить пароль",
+ "possible_reset": "Если адрес электронной почты, который вы указали, связан с учётной записью, вы получите письмо с инструкциями по сбросу пароля!",
+ "missing_email": "Пожалуйста, введите адрес электронной почты",
+ "submit": "Отправить",
+ "password_does_not_match": "Пароли не совпадают",
+ "password_is_required": "Пароль обязателен",
+ "invalid_token": "Токен недействителен или истёк",
+ "about_this_background": "Об этом фоне",
+ "photo_by": "Фото",
+ "join_discord": "Присоединиться к Discord",
+ "join_discord_desc": "чтобы поделиться своими фотографиями. Размещайте их в канале #travel-share.",
+ "current_password": "Текущий пароль",
+ "change_password_error": "Не удалось изменить пароль. Неверный текущий пароль или недопустимый новый пароль.",
+ "password_change_lopout_warning": "Вы будете вылогинены после изменения пароля.",
+ "generic_error": "Произошла ошибка при обработке вашего запроса.",
+ "email_removed": "Email успешно удалён!",
+ "email_removed_error": "Ошибка удаления email",
+ "verify_email_success": "Подтверждение email успешно отправлено!",
+ "verify_email_error": "Ошибка подтверждения email. Попробуйте снова через несколько минут.",
+ "email_added": "Email успешно добавлен!",
+ "email_added_error": "Ошибка добавления email",
+ "email_set_primary": "Email успешно установлен как основной!",
+ "email_set_primary_error": "Ошибка установки email как основного",
+ "verified": "Подтверждён",
+ "primary": "Основной",
+ "not_verified": "Не подтверждён",
+ "make_primary": "Сделать основным",
+ "verify": "Подтвердить",
+ "no_emai_set": "Email не установлен",
+ "error_change_password": "Ошибка изменения пароля. Пожалуйста, проверьте ваш текущий пароль и попробуйте снова.",
+ "mfa_disabled": "Многофакторная аутентификация успешно отключена!",
+ "mfa_page_title": "Многофакторная аутентификация",
+ "mfa_desc": "Добавьте дополнительный уровень безопасности к вашему аккаунту",
+ "enable_mfa": "Включить MFA",
+ "disable_mfa": "Отключить MFA",
+ "enabled": "Включено",
+ "disabled": "Отключено",
+ "mfa_not_enabled": "MFA не включен",
+ "mfa_is_enabled": "MFA включен",
+ "mfa_enabled": "Многофакторная аутентификация успешно включена!",
+ "copy": "Копировать",
+ "recovery_codes": "Коды восстановления",
+ "recovery_codes_desc": "Это ваши коды восстановления. Сохраните их в безопасном месте. Вы не сможете увидеть их снова.",
+ "reset_session_error": "Пожалуйста, выйдите из системы и войдите снова, чтобы обновить сессию и повторите попытку.",
+ "authenticator_code": "Код аутентификатора",
+ "email_verified": "Email успешно подтвержден!",
+ "email_verified_success": "Ваш email был подтвержден. Теперь вы можете войти в систему.",
+ "email_verified_error": "Ошибка подтверждения email",
+ "email_verified_erorr_desc": "Ваш email не может быть подтвержден. Пожалуйста, попробуйте еще раз.",
+ "invalid_code": "Неверный MFA код",
+ "invalid_credentials": "Неверное имя пользователя или пароль",
+ "mfa_required": "Требуется многофакторная аутентификация",
+ "required": "Это поле обязательно",
+ "add_email_blocked": "Вы не можете добавить email адрес к аккаунту, защищенному двухфакторной аутентификацией.",
+ "duplicate_email": "Этот email адрес уже используется.",
+ "csrf_failed": "Не удалось получить CSRF токен",
+ "email_taken": "Этот email адрес уже используется.",
+ "username_taken": "Это имя пользователя уже используется.",
+ "administration_settings": "Настройки администрирования",
+ "launch_administration_panel": "Запустить панель администрирования",
+ "administration": "Администрирование",
+ "admin_panel_desc": "Доступ к полному интерфейсу администрирования",
+ "region_updates": "Обновления регионов",
+ "debug_information": "Отладочная информация",
+ "staff_status": "Статус персонала",
+ "staff_user": "Сотрудник",
+ "regular_user": "Обычный пользователь",
+ "app_version": "Версия приложения",
+ "quick_actions": "Быстрые действия",
+ "license": "Лицензия",
+ "all_rights_reserved": "Все права защищены.",
+ "region_updates_desc": "Обновить посещенные регионы и города",
+ "access_restricted": "Доступ ограничен",
+ "access_restricted_desc": "Административные функции доступны только сотрудникам.",
+ "advanced_settings": "Расширенные настройки",
+ "advanced_settings_desc": "Расширенная конфигурация и инструменты разработчика",
+ "social_auth_setup": "Настройка социальной аутентификации",
+ "administration_desc": "Административные инструменты и настройки",
+ "social_oidc_auth": "Социальная и OIDC аутентификация",
+ "social_auth_desc": "Включите или отключите социальные и OIDC провайдеры аутентификации для вашего аккаунта. Эти подключения позволяют вам входить в систему с помощью самостоятельно размещенных провайдеров идентификации, таких как Authentik, или сторонних провайдеров, таких как GitHub.",
+ "social_auth_desc_2": "Эти настройки управляются на сервере AdventureLog и должны быть вручную включены администратором.",
+ "documentation_link": "Ссылка на документацию",
+ "launch_account_connections": "Запустить подключения аккаунта",
+ "password_too_short": "Пароль должен содержать не менее 6 символов",
+ "add_email": "Добавить Email",
+ "password_disable": "Отключить аутентификацию по паролю",
+ "password_disable_desc": "Отключение аутентификации по паролю не позволит вам входить в систему с паролем. Вам нужно будет использовать социального или OIDC провайдера для входа. Если ваш социальный провайдер будет отключен, аутентификация по паролю будет автоматически включена, даже если эта настройка отключена.",
+ "disable_password": "Отключить пароль",
+ "password_enabled": "Аутентификация по паролю включена",
+ "password_disabled": "Аутентификация по паролю отключена",
+ "password_disable_warning": "В настоящее время аутентификация по паролю отключена. Требуется вход через социального или OIDC провайдера.",
+ "password_disabled_error": "Ошибка отключения аутентификации по паролю. Убедитесь, что к вашему аккаунту привязан социальный или OIDC провайдер.",
+ "password_enabled_error": "Ошибка включения аутентификации по паролю.",
+ "settings_menu": "Меню настроек",
+ "security": "Безопасность",
+ "emails": "Email адреса",
+ "integrations": "Интеграции",
+ "integrations_desc": "Подключите внешние сервисы для улучшения вашего опыта",
+ "admin": "Админ",
+ "advanced": "Расширенные",
+ "profile_info": "Информация профиля",
+ "profile_info_desc": "Обновите ваши личные данные и фотографию профиля",
+ "public_profile_desc": "Сделать ваш профиль видимым для других пользователей",
+ "pass_change_desc": "Обновите пароль вашего аккаунта для лучшей безопасности",
+ "enter_first_name": "Введите ваше имя",
+ "enter_last_name": "Введите вашу фамилию",
+ "enter_username": "Введите ваше имя пользователя",
+ "enter_current_password": "Введите текущий пароль",
+ "enter_new_password": "Введите новый пароль",
+ "connected": "Подключено",
+ "disconnected": "Отключено",
+ "confirm_new_password_desc": "Подтвердите новый пароль",
+ "email_verified_error_desc": "Ваше письмо не может быть проверено. \nПожалуйста, попробуйте еще раз."
+ },
+ "collection": {
+ "collection_created": "Коллекция успешно создана!",
+ "error_creating_collection": "Ошибка создания коллекции",
+ "new_collection": "Новая коллекция",
+ "create": "Создать",
+ "collection_edit_success": "Коллекция успешно отредактирована!",
+ "error_editing_collection": "Ошибка редактирования коллекции",
+ "edit_collection": "Редактировать коллекцию",
+ "public_collection": "Публичная коллекция",
+ "manage_collections": "Управлять коллекциями"
+ },
+ "notes": {
+ "note_deleted": "Заметка успешно удалена!",
+ "note_delete_error": "Ошибка удаления заметки",
+ "open": "Открыть",
+ "failed_to_save": "Не удалось сохранить заметку",
+ "note_editor": "Редактор заметок",
+ "note_viewer": "Просмотр заметки",
+ "editing_note": "Редактирование заметки",
+ "content": "Содержание",
+ "save": "Сохранить",
+ "note_public": "Эта заметка публична, потому что находится в публичной коллекции.",
+ "add_a_link": "Добавить ссылку",
+ "invalid_url": "Неверный URL"
+ },
+ "checklist": {
+ "checklist_deleted": "Чек-лист успешно удален!",
+ "checklist_delete_error": "Ошибка удаления чек-листа",
+ "failed_to_save": "Не удалось сохранить чек-лист",
+ "checklist_editor": "Редактор чек-листа",
+ "checklist_viewer": "Просмотр чек-листа",
+ "editing_checklist": "Редактирование чек-листа",
+ "new_checklist": "Новый чек-лист",
+ "item": "Элемент",
+ "items": "Элементы",
+ "add_item": "Добавить элемент",
+ "new_item": "Новый элемент",
+ "save": "Сохранить",
+ "checklist_public": "Этот чек-лист публичен, потому что находится в публичной коллекции.",
+ "item_cannot_be_empty": "Элемент не может быть пустым",
+ "item_already_exists": "Элемент уже существует"
+ },
+ "transportation": {
+ "transportation_deleted": "Транспорт успешно удален!",
+ "transportation_delete_error": "Ошибка удаления транспорта",
+ "provide_start_date": "Пожалуйста, укажите дату начала",
+ "transport_type": "Тип транспорта",
+ "type": "Тип",
+ "transportation_added": "Транспорт успешно добавлен!",
+ "error_editing_transportation": "Ошибка редактирования транспорта",
+ "new_transportation": "Новый транспорт",
+ "date_time": "Дата и время начала",
+ "end_date_time": "Дата и время окончания",
+ "flight_number": "Номер рейса",
+ "from_location": "Откуда",
+ "to_location": "Куда",
+ "fetch_location_information": "Получить информацию о местоположении",
+ "starting_airport_desc": "Введите код аэропорта отправления (например, SVO)",
+ "ending_airport_desc": "Введите код аэропорта прибытия (например, LED)",
+ "edit": "Редактировать",
+ "modes": {
+ "car": "Автомобиль",
+ "plane": "Самолет",
+ "train": "Поезд",
+ "bus": "Автобус",
+ "boat": "Лодка",
+ "bike": "Велосипед",
+ "walking": "Пешком",
+ "other": "Другое"
+ },
+ "transportation_edit_success": "Транспорт успешно отредактирован!",
+ "edit_transportation": "Редактировать транспорт",
+ "start": "Начало",
+ "date_and_time": "Дата и время"
+ },
+ "lodging": {
+ "lodging_deleted": "Жилье успешно удалено!",
+ "lodging_delete_error": "Ошибка удаления жилья",
+ "provide_start_date": "Пожалуйста, укажите дату начала",
+ "lodging_type": "Тип жилья",
+ "type": "Тип",
+ "lodging_added": "Жилье успешно добавлено!",
+ "error_editing_lodging": "Ошибка редактирования жилья",
+ "new_lodging": "Новое жилье",
+ "check_in": "Заезд",
+ "check_out": "Выезд",
+ "edit": "Редактировать",
+ "lodging_edit_success": "Жилье успешно отредактировано!",
+ "edit_lodging": "Редактировать жилье",
+ "start": "Начало",
+ "date_and_time": "Дата и время",
+ "hotel": "Отель",
+ "hostel": "Хостел",
+ "resort": "Курорт",
+ "bnb": "Гостевой дом",
+ "campground": "Кемпинг",
+ "cabin": "Домик",
+ "apartment": "Квартира",
+ "house": "Дом",
+ "villa": "Вилла",
+ "motel": "Мотель",
+ "other": "Другое",
+ "reservation_number": "Номер бронирования",
+ "current_timezone": "Текущий часовой пояс"
+ },
+ "search": {
+ "adventurelog_results": "Результаты AdventureLog",
+ "public_adventures": "Публичные приключения",
+ "online_results": "Онлайн результаты"
+ },
+ "map": {
+ "view_details": "Подробности",
+ "adventure_map": "Карта приключений",
+ "map_options": "Настройки карты",
+ "show_visited_regions": "Показать посещенные регионы",
+ "add_adventure_at_marker": "Добавить новое приключение в отмеченном месте",
+ "clear_marker": "Очистить маркер",
+ "add_adventure": "Добавить новое приключение"
+ },
+ "share": {
+ "shared": "Поделено",
+ "with": "с",
+ "unshared": "Не поделено",
+ "share_desc": "Поделитесь этой коллекцией с другими пользователями.",
+ "shared_with": "Поделено с",
+ "no_users_shared": "Ни с кем не поделено",
+ "not_shared_with": "Не поделено с",
+ "no_shared_found": "Не найдено коллекций, которыми с вами поделились.",
+ "set_public": "Чтобы пользователи могли делиться с вами, вам нужно сделать ваш профиль публичным.",
+ "go_to_settings": "Перейти к настройкам"
+ },
+ "languages": {},
+ "profile": {
+ "member_since": "Участник с",
+ "user_stats": "Статистика пользователя",
+ "visited_countries": "Посещенные страны",
+ "visited_regions": "Посещенные регионы",
+ "visited_cities": "Посещенные города"
+ },
+ "categories": {
+ "manage_categories": "Управление категориями",
+ "no_categories_found": "Категории не найдены.",
+ "edit_category": "Редактировать категорию",
+ "icon": "Иконка",
+ "update_after_refresh": "Карточки приключений будут обновлены после обновления страницы.",
+ "select_category": "Выбрать категорию",
+ "category_name": "Название категории",
+ "add_category": "Добавить категорию",
+ "add_new_category": "Добавить новую категорию"
+ },
+ "dashboard": {
+ "welcome_back": "Добро пожаловать обратно",
+ "countries_visited": "Посещенные страны",
+ "total_adventures": "Всего приключений",
+ "total_visited_regions": "Всего посещенных регионов",
+ "total_visited_cities": "Всего посещенных городов",
+ "recent_adventures": "Недавние приключения",
+ "no_recent_adventures": "Нет недавних приключений?",
+ "add_some": "Почему бы не начать планировать ваше следующее приключение? Вы можете добавить новое приключение, нажав на кнопку ниже."
+ },
+ "immich": {
+ "immich": "Immich",
+ "integration_fetch_error": "Ошибка получения данных из интеграции Immich",
+ "integration_missing": "Интеграция Immich отсутствует в бэкенде",
+ "query_required": "Запрос обязателен",
+ "server_down": "Сервер Immich в настоящее время недоступен",
+ "no_items_found": "Элементы не найдены",
+ "imageid_required": "ID изображения обязателен",
+ "load_more": "Загрузить еще",
+ "immich_updated": "Настройки Immich успешно обновлены!",
+ "immich_enabled": "Интеграция Immich успешно включена!",
+ "immich_error": "Ошибка обновления интеграции Immich",
+ "immich_disabled": "Интеграция Immich успешно отключена!",
+ "immich_desc": "Интегрируйте ваш аккаунт Immich с AdventureLog, чтобы искать в вашей библиотеке фотографий и импортировать фото для ваших приключений.",
+ "integration_enabled": "Интеграция включена",
+ "disable": "Отключить",
+ "server_url": "URL сервера Immich",
+ "api_note": "Примечание: это должен быть URL к API серверу Immich, поэтому он, вероятно, заканчивается на /api, если у вас нет пользовательской конфигурации.",
+ "api_key": "API ключ Immich",
+ "enable_immich": "Включить Immich",
+ "enable_integration": "Включить интеграцию",
+ "update_integration": "Обновить интеграцию",
+ "immich_integration": "Интеграция Immich",
+ "immich_integration_desc": "Подключите ваш сервер управления фотографиями Immich",
+ "localhost_note": "Примечание: localhost, скорее всего, не будет работать, если вы не настроили сети Docker соответствующим образом. Рекомендуется использовать IP-адрес сервера или доменное имя.",
+ "documentation": "Документация интеграции Immich",
+ "api_key_placeholder": "Введите ваш API ключ Immich",
+ "need_help": "Нужна помощь с настройкой? Посмотрите",
+ "copy_locally": "Копировать изображения локально",
+ "copy_locally_desc": "Копировать изображения на сервер для офлайн доступа. Использует больше дискового пространства.",
+ "error_saving_image": "Ошибка сохранения изображения",
+ "connection_error": "Ошибка подключения к серверу Immich",
+ "integration_already_exists": "Интеграция Immich уже существует. Вы можете иметь только одну интеграцию одновременно.",
+ "integration_not_found": "Интеграция Immich не найдена. Пожалуйста, создайте новую интеграцию.",
+ "validation_error": "Произошла ошибка при проверке интеграции Immich. Пожалуйста, проверьте URL сервера и API ключ.",
+ "network_error": "Сетевая ошибка при подключении к серверу Immich. Пожалуйста, проверьте ваше соединение и попробуйте еще раз."
+ },
+ "google_maps": {
+ "google_maps_integration_desc": "Подключите ваш аккаунт Google Maps для получения высококачественных результатов поиска местоположений и рекомендаций."
+ },
+ "recomendations": {
+ "address": "Адрес",
+ "phone": "Телефон",
+ "contact": "Контакт",
+ "website": "Веб-сайт",
+ "recommendation": "Рекомендация",
+ "recommendations": "Рекомендации",
+ "adventure_recommendations": "Рекомендации приключений",
+ "miles": "Мили",
+ "food": "Еда",
+ "tourism": "Туризм"
+ }
}
diff --git a/frontend/src/locales/sv.json b/frontend/src/locales/sv.json
index d3388e8..e92feed 100644
--- a/frontend/src/locales/sv.json
+++ b/frontend/src/locales/sv.json
@@ -273,7 +273,8 @@
"all_linked_items": "Alla länkade objekt",
"itinerary": "Resväg",
"joined": "Gick med i",
- "view_profile": "Visa profil"
+ "view_profile": "Visa profil",
+ "share_collection": "Dela denna samling!"
},
"home": {
"desc_1": "Upptäck, planera och utforska med lätthet",
@@ -513,7 +514,8 @@
"social_auth_desc_1": "Hantera sociala inloggningsalternativ och lösenordsinställningar",
"social_auth_setup": "Social autentiseringsinställning",
"staff_status": "Personalstatus",
- "staff_user": "Personalanvändare"
+ "staff_user": "Personalanvändare",
+ "email_verified_error_desc": "Ditt e -postmeddelande kunde inte verifieras. \nFörsök igen."
},
"checklist": {
"add_item": "Lägg till objekt",
@@ -540,7 +542,8 @@
"error_creating_collection": "Det gick inte att skapa samlingen",
"error_editing_collection": "Ett fel uppstod vid redigering av samling",
"new_collection": "Ny samling",
- "public_collection": "Offentlig samling"
+ "public_collection": "Offentlig samling",
+ "manage_collections": "Hantera samlingar"
},
"notes": {
"add_a_link": "Lägg till en länk",
diff --git a/frontend/src/locales/zh.json b/frontend/src/locales/zh.json
index 8da865c..0e27fd2 100644
--- a/frontend/src/locales/zh.json
+++ b/frontend/src/locales/zh.json
@@ -321,7 +321,8 @@
"all_linked_items": "所有链接的项目",
"itinerary": "行程",
"joined": "加入",
- "view_profile": "查看个人资料"
+ "view_profile": "查看个人资料",
+ "share_collection": "分享这个收藏!"
},
"auth": {
"forgot_password": "忘记密码?",
@@ -513,7 +514,8 @@
"staff_user": "员工用户",
"quick_actions": "快速动作",
"region_updates": "区域更新",
- "region_updates_desc": "更新访问了地区和城市"
+ "region_updates_desc": "更新访问了地区和城市",
+ "email_verified_error_desc": "无法验证您的电子邮件。\n请重试。"
},
"checklist": {
"add_item": "添加项目",
@@ -540,7 +542,8 @@
"error_creating_collection": "创建合集时出错",
"error_editing_collection": "编辑合集时出错",
"new_collection": "新建合集",
- "public_collection": "公开合集"
+ "public_collection": "公开合集",
+ "manage_collections": "管理收藏"
},
"notes": {
"add_a_link": "添加链接",
diff --git a/frontend/src/routes/adventures/+page.svelte b/frontend/src/routes/adventures/+page.svelte
index 8bbb260..d65f78c 100644
--- a/frontend/src/routes/adventures/+page.svelte
+++ b/frontend/src/routes/adventures/+page.svelte
@@ -11,9 +11,17 @@
import { t } from 'svelte-i18n';
import Plus from '~icons/mdi/plus';
+ import Filter from '~icons/mdi/filter-variant';
+ import Sort from '~icons/mdi/sort';
+ import MapMarker from '~icons/mdi/map-marker';
+ import Eye from '~icons/mdi/eye';
+ import EyeOff from '~icons/mdi/eye-off';
+ import Calendar from '~icons/mdi/calendar';
+ import Star from '~icons/mdi/star';
+ import Tag from '~icons/mdi/tag';
+ import Compass from '~icons/mdi/compass';
export let data: any;
- console.log(data);
let adventures: Adventure[] = data.props.adventures || [];
@@ -27,16 +35,17 @@
};
let resultsPerPage: number = 25;
-
let count = data.props.count || 0;
-
let totalPages = Math.ceil(count / resultsPerPage);
let currentPage: number = 1;
let is_category_modal_open: boolean = false;
-
let typeString: string = '';
+ let adventureToEdit: Adventure | null = null;
+ let isAdventureModalOpen: boolean = false;
+ let sidebarOpen = false;
+ // Reactive statements
$: {
if (typeof window !== 'undefined') {
let url = new URL(window.location.href);
@@ -49,9 +58,7 @@
}
}
- // sets typeString if present in the URL
$: {
- // check to make sure its running on the client side
if (typeof window !== 'undefined') {
let url = new URL(window.location.href);
let types = url.searchParams.get('types');
@@ -61,24 +68,6 @@
}
}
- function handleChangePage(pageNumber: number) {
- // let query = new URLSearchParams($page.url.searchParams.toString());
-
- // query.set('page', pageNumber.toString());
-
- // console.log(query.toString());
- currentPage = pageNumber;
-
- let url = new URL(window.location.href);
- url.searchParams.set('page', pageNumber.toString());
- adventures = [];
- adventures = data.props.adventures;
-
- goto(url.toString(), { invalidateAll: true, replaceState: true });
-
- // goto(`?${query.toString()}`, { invalidateAll: true });
- }
-
$: {
let url = new URL($page.url);
let page = url.searchParams.get('page');
@@ -128,14 +117,19 @@
}
}
- let adventureToEdit: Adventure | null = null;
- let isAdventureModalOpen: boolean = false;
+ function handleChangePage(pageNumber: number) {
+ currentPage = pageNumber;
+ let url = new URL(window.location.href);
+ url.searchParams.set('page', pageNumber.toString());
+ adventures = [];
+ adventures = data.props.adventures;
+ goto(url.toString(), { invalidateAll: true, replaceState: true });
+ }
function deleteAdventure(event: CustomEvent
) {
adventures = adventures.filter((adventure) => adventure.id !== event.detail);
}
- // function that save changes to an existing adventure or creates a new one if it doesn't exist
function saveOrCreate(event: CustomEvent) {
if (adventures.find((adventure) => adventure.id === event.detail.id)) {
adventures = adventures.map((adventure) => {
@@ -155,13 +149,24 @@
isAdventureModalOpen = true;
}
- let sidebarOpen = false;
-
function toggleSidebar() {
sidebarOpen = !sidebarOpen;
}
+
+ function getVisitedCount() {
+ return adventures.filter((a) => a.is_visited).length;
+ }
+
+ function getPlannedCount() {
+ return adventures.filter((a) => !a.is_visited).length;
+ }
+
+ {$t('navbar.adventures')}
+
+
+
{#if isAdventureModalOpen}
(is_category_modal_open = false)} />
{/if}
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {$t('navbar.my_adventures')}
+
+
+ {count} adventures • {getVisitedCount()} visited • {getPlannedCount()} planned
+
+
+
+
+
+
+
+
+
+
+
+
+
Visited
+
{getVisitedCount()}
+
+
+
+
+
+
Planned
+
{getPlannedCount()}
+
+
+
+
+
+
+
+
+
+ {#if adventures.length === 0}
+
+
+
+
+
No adventures yet
+
+ Start documenting your adventures and planning new ones. Every journey has a story
+ worth telling.
+
+
{
+ adventureToEdit = null;
+ isAdventureModalOpen = true;
+ }}
+ >
+
+ Create Adventure
+
+
+ {:else}
+
+
+ {#each adventures as adventure}
+
+ {/each}
+
+
+
+ {#if totalPages > 1}
+
+
+ {#each Array.from({ length: totalPages }, (_, i) => i + 1) as page}
+ handleChangePage(page)}
+ >
+ {page}
+
+ {/each}
+
+
+ {/if}
+ {/if}
+
+
+
+
+
+
+
+
+
-
+
-
- {$t('adventures.create_new')}
+
+
{$t('adventures.create_new')}
+
Document your journey
+
{
isAdventureModalOpen = true;
adventureToEdit = null;
}}
>
- {$t('adventures.adventure')}
-
-
+
+ {$t('adventures.adventure')}
+
-
-
-
-
-
-
{$t('navbar.my_adventures')}
-
{count} {$t('adventures.count_txt')}
- {#if adventures.length === 0}
-
- {/if}
-
-
- {sidebarOpen ? $t(`adventures.close_filters`) : $t(`adventures.open_filters`)}
-
-
-
- {#each adventures as adventure}
-
- {/each}
-
-
-
- {#if totalPages > 1}
-
- {#each Array.from({ length: totalPages }, (_, i) => i + 1) as page}
- {#if currentPage != page}
- handleChangePage(page)}
- >{page}
- {:else}
- {page}
- {/if}
- {/each}
-
- {/if}
-
-
-
-
-
-
-
-
-
-
-
- {$t('navbar.adventures')}
-
-
diff --git a/frontend/src/routes/collections/+page.server.ts b/frontend/src/routes/collections/+page.server.ts
index 7c5812a..a8433ed 100644
--- a/frontend/src/routes/collections/+page.server.ts
+++ b/frontend/src/routes/collections/+page.server.ts
@@ -3,7 +3,7 @@ import type { PageServerLoad } from './$types';
const PUBLIC_SERVER_URL = process.env['PUBLIC_SERVER_URL'];
import type { Adventure, Collection } from '$lib/types';
-import type { Actions, RequestEvent } from '@sveltejs/kit';
+import type { Actions } from '@sveltejs/kit';
import { fetchCSRFToken } from '$lib/index.server';
import { checkLink } from '$lib';
@@ -16,16 +16,27 @@ export const load = (async (event) => {
let next = null;
let previous = null;
let count = 0;
- let adventures: Adventure[] = [];
+ let collections: Adventure[] = [];
let sessionId = event.cookies.get('sessionid');
- let initialFetch = await fetch(`${serverEndpoint}/api/collections/?order_by=updated_at`, {
+
+ // Get sorting parameters from URL
+ const order_by = event.url.searchParams.get('order_by') || 'updated_at';
+ const order_direction = event.url.searchParams.get('order_direction') || 'desc';
+ const page = event.url.searchParams.get('page') || '1';
+
+ // Build API URL with parameters
+ let apiUrl = `${serverEndpoint}/api/collections/?order_by=${order_by}&order_direction=${order_direction}&page=${page}`;
+
+ console.log('Fetching collections from:', apiUrl);
+
+ let initialFetch = await fetch(apiUrl, {
headers: {
Cookie: `sessionid=${sessionId}`
},
credentials: 'include'
});
if (!initialFetch.ok) {
- console.error('Failed to fetch visited adventures');
+ console.error('Failed to fetch collections');
return redirect(302, '/login');
} else {
let res = await initialFetch.json();
@@ -33,15 +44,45 @@ export const load = (async (event) => {
next = res.next;
previous = res.previous;
count = res.count;
- adventures = [...adventures, ...visited];
+ collections = [...collections, ...visited];
}
+ let sharedRes = await fetch(`${serverEndpoint}/api/collections/shared/`, {
+ headers: {
+ Cookie: `sessionid=${sessionId}`
+ }
+ });
+ if (!sharedRes.ok) {
+ console.error('Failed to fetch shared collections');
+ return redirect(302, '/login');
+ }
+ let sharedCollections = (await sharedRes.json()) as Collection[];
+
+ let archivedRes = await fetch(`${serverEndpoint}/api/collections/archived/`, {
+ headers: {
+ Cookie: `sessionid=${sessionId}`
+ }
+ });
+ if (!archivedRes.ok) {
+ console.error('Failed to fetch archived collections');
+ return redirect(302, '/login');
+ }
+ let archivedCollections = (await archivedRes.json()) as Collection[];
+
+ // Calculate current page from URL
+ const currentPage = parseInt(page);
+
return {
props: {
- adventures,
+ adventures: collections,
next,
previous,
- count
+ count,
+ sharedCollections,
+ currentPage,
+ order_by,
+ order_direction,
+ archivedCollections
}
};
}
diff --git a/frontend/src/routes/collections/+page.svelte b/frontend/src/routes/collections/+page.svelte
index 6eddc70..1d1680c 100644
--- a/frontend/src/routes/collections/+page.svelte
+++ b/frontend/src/routes/collections/+page.svelte
@@ -1,6 +1,6 @@
+
+ Collections
+
+
+
{#if isShowingCollectionModal}
{/if}
-
-
-
-
-
-
- {$t(`adventures.create_new`)}
- {
- collectionToEdit = null;
- isShowingCollectionModal = true;
- newType = 'visited';
- }}
- >
- {$t(`adventures.collection`)}
-
-
-
-
-
-
-
-
-
{$t(`adventures.my_collections`)}
-
{count} {$t(`adventures.count_txt`)}
- {#if collections.length === 0}
-
- {/if}
-
-
- {sidebarOpen ? $t(`adventures.close_filters`) : $t(`adventures.open_filters`)}
-
+
+
+
-
- {#each collections as collection}
-
- {/each}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {$t(`adventures.my_collections`)}
+
+
+ {currentCount}
+ {activeView === 'owned'
+ ? 'collections'
+ : activeView === 'shared'
+ ? 'shared collections'
+ : 'archived collections'}
+
+
+
+
+
+
+
+
switchView('owned')}
+ >
+
+ My Collections
+
+ {collections.length}
+
+
+
switchView('shared')}
+ >
+
+ Shared
+
+ {sharedCollections.length}
+
+
+
switchView('archived')}
+ >
+
+ Archived
+
+ {archivedCollections.length}
+
+
+
+
+
-
- {#if next || previous}
-
- {#each Array.from({ length: totalPages }, (_, i) => i + 1) as page}
-
+
+
+ {#if currentCollections.length === 0}
+
+
+ {#if activeView === 'owned'}
+
+ {:else if activeView === 'shared'}
+
+ {:else}
+
+ {/if}
+
+
+ {activeView === 'owned'
+ ? 'No collections yet'
+ : activeView === 'shared'
+ ? 'No shared collections'
+ : 'No archived collections'}
+
+
+ {activeView === 'owned'
+ ? 'Create your first collection to organize your adventures and memories.'
+ : activeView === 'shared'
+ ? 'Collections shared with you will appear here.'
+ : 'Archived collections will appear here.'}
+
+ {#if activeView === 'owned'}
+
{
+ collectionToEdit = null;
+ isShowingCollectionModal = true;
+ newType = 'visited';
+ }}
+ >
+
+ Create Collection
+
+ {/if}
+
+ {:else}
+
+
+ {#each currentCollections as collection}
+
{/each}
+
+
+ {#if activeView === 'owned' && (next || previous)}
+
+
+ {#each Array.from({ length: totalPages }, (_, i) => i + 1) as page}
+ goToPage(page)}
+ >
+ {page}
+
+ {/each}
+
+
+ {/if}
{/if}
-
-
-
-
-
- Collections
-
-
+
+ {#if activeView === 'owned'}
+
+
+
+
+
+
{$t(`adventures.create_new`)}
+
Choose what to create
+
+ {
+ collectionToEdit = null;
+ isShowingCollectionModal = true;
+ newType = 'visited';
+ }}
+ >
+
+ {$t(`adventures.collection`)}
+
+
+
+
+ {/if}
+
diff --git a/frontend/src/routes/collections/[id]/+page.svelte b/frontend/src/routes/collections/[id]/+page.svelte
index 3a866c3..03e2762 100644
--- a/frontend/src/routes/collections/[id]/+page.svelte
+++ b/frontend/src/routes/collections/[id]/+page.svelte
@@ -5,6 +5,7 @@
import { marked } from 'marked'; // Import the markdown parser
import { t } from 'svelte-i18n';
+ import Lost from '$lib/assets/undraw_lost.svg';
// @ts-ignore
import Calendar from '@event-calendar/core';
@@ -320,6 +321,10 @@
notFound = true;
}
+ if (!collection) {
+ return;
+ }
+
if (collection.start_date && collection.end_date) {
numberOfDays =
Math.floor(
@@ -327,7 +332,7 @@
(1000 * 60 * 60 * 24)
) + 1;
- // Update `options.evdateents` when `collection.start_date` changes
+ // Update `options.events` when `collection.start_date` changes
// @ts-ignore
options = { ...options, date: collection.start_date };
}
@@ -641,7 +646,7 @@
{/if}
-{#if collection}
+{#if collection && collection.id}
{#if data.user && data.user.uuid && (data.user.uuid == collection.user_id || (collection.shared_with && collection.shared_with.includes(data.user.uuid))) && !collection.is_archived}
{/if}
+{:else}
+
+
+
+
+
{$t('adventures.not_found')}
+
{$t('adventures.not_found_desc')}
+
goto('/')}>
+ {$t('adventures.homepage')}
+
+
+
+
{/if}