mirror of
https://github.com/immich-app/immich
synced 2025-10-17 18:19:27 +00:00
Merge branch 'main' of https://github.com/immich-app/immich into feat/sidecar-asset-files
This commit is contained in:
commit
21ad6442df
63 changed files with 2801 additions and 558 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.95",
|
||||
"version": "2.2.96",
|
||||
"description": "Command Line Interface (CLI) for Immich",
|
||||
"type": "module",
|
||||
"exports": "./dist/index.js",
|
||||
|
|
|
|||
4
docs/static/archived-versions.json
vendored
4
docs/static/archived-versions.json
vendored
|
|
@ -1,4 +1,8 @@
|
|||
[
|
||||
{
|
||||
"label": "v2.0.1",
|
||||
"url": "https://docs.v2.0.1.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v2.0.0",
|
||||
"url": "https://docs.v2.0.0.archive.immich.app"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "immich-e2e",
|
||||
"version": "2.0.0",
|
||||
"version": "2.0.1",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
"add_to_album": "إضافة إلى ألبوم",
|
||||
"add_to_album_bottom_sheet_added": "تمت الاضافة الى {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "موجود مسبقا في {album}",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "لا يمكن إضافة بعض الأصول المحلية إلى الألبوم",
|
||||
"add_to_album_toggle": "تبديل التحديد لـ{album}",
|
||||
"add_to_albums": "إضافة الى البومات",
|
||||
"add_to_albums_count": "إضافه إلى البومات ({count})",
|
||||
|
|
@ -598,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "قم بتشغيل النسخ الاحتياطي المقدمة",
|
||||
"backup_controller_page_uploading_file_info": "تحميل معلومات الملف",
|
||||
"backup_err_only_album": "لا يمكن إزالة الألبوم الوحيد",
|
||||
"backup_error_sync_failed": "فشل المزامنة. لا يمكن معالجة النسخ الاحتياطي.",
|
||||
"backup_info_card_assets": "أصول",
|
||||
"backup_manual_cancelled": "ملغي",
|
||||
"backup_manual_in_progress": "قيد التحميل حاول مره اخرى",
|
||||
|
|
|
|||
19
i18n/az.json
19
i18n/az.json
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"about": "Haqqında",
|
||||
"account": "Hesab",
|
||||
"account_settings": "Hesab parametrləri",
|
||||
"acknowledge": "Aydındır",
|
||||
"account_settings": "Hesab Parametrləri",
|
||||
"acknowledge": "Təsdiq et",
|
||||
"action": "Əməliyyat",
|
||||
"action_common_update": "Yenilə",
|
||||
"actions": "Əməliyyatlar",
|
||||
|
|
@ -16,8 +16,8 @@
|
|||
"add_a_title": "Başlıq əlavə et",
|
||||
"add_birthday": "Doğum günü əlavə et",
|
||||
"add_endpoint": "Son nöqtə əlavə et",
|
||||
"add_exclusion_pattern": "İstisna nümunəsi əlavə et",
|
||||
"add_import_path": "Import yolunu əlavə et",
|
||||
"add_exclusion_pattern": "Çıxarma nümunəsi əlavə et",
|
||||
"add_import_path": "İdxal yolu əlavə et",
|
||||
"add_location": "Məkan əlavə et",
|
||||
"add_more_users": "Daha çox istifadəçi əlavə et",
|
||||
"add_partner": "Partnyor əlavə et",
|
||||
|
|
@ -25,20 +25,21 @@
|
|||
"add_photos": "Şəkillər əlavə et",
|
||||
"add_tag": "Etiket əlavə et",
|
||||
"add_to": "Bura əlavə et…",
|
||||
"add_to_album": "Albom əlavə et",
|
||||
"add_to_album": "Alboma əlavə et",
|
||||
"add_to_album_bottom_sheet_added": "{album} albomuna əlavə edildi",
|
||||
"add_to_album_bottom_sheet_already_exists": "Artıq {album} albomunda var",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "Bəzi lokal resurslar alboma əlavə edilə bilmədi",
|
||||
"add_to_album_toggle": "{album} üçün seçimi dəyişin",
|
||||
"add_to_albums": "Albomlara əlavə et",
|
||||
"add_to_albums_count": "Albomlara əlavə et ({count})",
|
||||
"add_to_albums_count": "({count}) albomlarına əlavə et",
|
||||
"add_to_shared_album": "Paylaşılan alboma əlavə et",
|
||||
"add_url": "URL əlavə et",
|
||||
"added_to_archive": "Arxivə əlavə edildi",
|
||||
"added_to_favorites": "Sevimlilələrə əlavə edildi",
|
||||
"added_to_favorites_count": "{count, number} şəkil sevimlilələrə əlavə edildi",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "İstisna şablonlarını əlavə edin. *, ** və ? ilə Globbing dəstəklənir. Məs.: \"Raw\" adlanan hər hansısa bir qovluqda bütün faylları saymamaq üçün \"**/Raw/**\"-dan istifadə edin. \".tif\" ilə bitən bütün faylları saymamaq üçün \"**/*.tif\"-dən istifadə edin. Faylı mütləq yoldan istifadə etməklə saymamaq istəyirsinizsə \"/path/to/ignore/**\"-dan istifadə edin.",
|
||||
"admin_user": "Admin İstifadəçi",
|
||||
"add_exclusion_pattern_description": "Çıxarma nümunələri əlavə et. *, ** və ? istifadə edilərək globbing dəstəklənir. Hər hansı bir \"Raw\" adlı qovluqdakı bütün faylları görməməzlikdən gəlmək üçün **/Raw/** istifadə et. “.tif” ilə bitən bütün faylları görməməzlikdən gəlmək üçün **/*.tif istifadə et. Tam yolu görməməzlikdən gəlmək üçün /path/to/ignore/** istifadə et.",
|
||||
"admin_user": "İdarəçi İstifadəçi",
|
||||
"asset_offline_description": "Bu xarici kitabxana varlığı diskdə artıq tapılmadı və zibil qutusuna köçürüldü. Əgər fayl kitabxana içərisində köçürülübsə, zaman şkalanızı yeni uyğun gələn varlıq üçün yoxlayın. Varlığı yenidən qaytarmaq üçün aşağıda verilmiş fayl yolunun Immich tərəfindən əlçatan olduğundan əmin olduqdan sonra kitabxananı skan edin.",
|
||||
"authentication_settings": "Səlahiyyətləndirmə parametrləri",
|
||||
"authentication_settings_description": "Şifrə, OAuth və digər səlahiyyətləndirmə parametrləri",
|
||||
|
|
@ -76,7 +77,7 @@
|
|||
"image_thumbnail_title": "Önizləmə parametrləri",
|
||||
"job_concurrency": "{job}paralellik",
|
||||
"job_created": "Tapşırıq yaradıldı",
|
||||
"job_not_concurrency_safe": "Bu tapşırıq parallel fəaliyyət üçün uyğun deyil",
|
||||
"job_not_concurrency_safe": "Bu iş eyni vaxtda icra üçün təhlükəsiz deyil.",
|
||||
"job_settings": "Tapşırıq parametrləri",
|
||||
"job_settings_description": "Parallel şəkildə fəaliyyət göstərən tapşırıqları idarə et",
|
||||
"job_status": "Tapşırıq statusu",
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
"add_to_album": "Добави към албум",
|
||||
"add_to_album_bottom_sheet_added": "Добавено в {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Вече е в {album}",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "Някои локални файлове не успяха да се добавят към албума",
|
||||
"add_to_album_toggle": "Сменете избора за {album}",
|
||||
"add_to_albums": "Добавяне в албуми",
|
||||
"add_to_albums_count": "Добавяне в албуми ({count})",
|
||||
|
|
@ -598,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Включи архивиране в активен режим",
|
||||
"backup_controller_page_uploading_file_info": "Инфо за архивирания файл",
|
||||
"backup_err_only_album": "Не може да се премахне единствения албум",
|
||||
"backup_error_sync_failed": "Синхронизацията е неуспешна. Резервното копие не може да се обработи.",
|
||||
"backup_info_card_assets": "обекта",
|
||||
"backup_manual_cancelled": "Отменено",
|
||||
"backup_manual_in_progress": "Върви архивиране. Опитай след малко",
|
||||
|
|
@ -1235,7 +1237,7 @@
|
|||
"local": "Локално",
|
||||
"local_asset_cast_failed": "Не може да се предава обект, който още не е качен на сървъра",
|
||||
"local_assets": "Локални обекти",
|
||||
"local_media_summary": "Обобщение на локалните медийни файлове",
|
||||
"local_media_summary": "Обобщение на локалните файлове",
|
||||
"local_network": "Локална мрежа",
|
||||
"local_network_sheet_info": "Приложението ще се свърже със сървъра на този URL, когато устройството е свързано към зададената Wi-Fi мрежа",
|
||||
"location_permission": "Разрешение за местоположение",
|
||||
|
|
@ -1344,7 +1346,7 @@
|
|||
"missing": "Липсващи",
|
||||
"model": "Модел",
|
||||
"month": "Месец",
|
||||
"monthly_title_text_date_format": "MMMM y",
|
||||
"monthly_title_text_date_format": "MMMM г",
|
||||
"more": "Още",
|
||||
"move": "Премести",
|
||||
"move_off_locked_folder": "Извади от заключената папка",
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
"add_to_albums_count": "Afegir als àlbums ({count})",
|
||||
"add_to_shared_album": "Afegir a un àlbum compartit",
|
||||
"add_url": "Afegir URL",
|
||||
"added_to_archive": "Afegit als arxivats",
|
||||
"added_to_archive": "Afegir a l'arxiu",
|
||||
"added_to_favorites": "Afegit als preferits",
|
||||
"added_to_favorites_count": "{count, number} afegits als preferits",
|
||||
"admin": {
|
||||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Activa la còpia de seguretat",
|
||||
"backup_controller_page_uploading_file_info": "S'està pujant la informació del fitxer",
|
||||
"backup_err_only_album": "No es pot eliminar l'únic àlbum",
|
||||
"backup_error_sync_failed": "Sincronització malament, No es pot fer backup.",
|
||||
"backup_info_card_assets": "elements",
|
||||
"backup_manual_cancelled": "Cancel·lat",
|
||||
"backup_manual_in_progress": "La pujada ja està en curs. Torneu-ho a provar més tard",
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Povolit zálohování na popředí",
|
||||
"backup_controller_page_uploading_file_info": "Informace o nahraném souboru",
|
||||
"backup_err_only_album": "Nelze odstranit jediné vybrané album",
|
||||
"backup_error_sync_failed": "Synchronizace selhala. Nelze zpracovat zálohu.",
|
||||
"backup_info_card_assets": "položek",
|
||||
"backup_manual_cancelled": "Zrušeno",
|
||||
"backup_manual_in_progress": "Nahrávání již probíhá. Zkuste to znovu později",
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
"add_to_album": "Tilføj til album",
|
||||
"add_to_album_bottom_sheet_added": "Tilføjet til {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Allerede i {album}",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "Nogle lokale elementer kunne ikke føjes til albummet",
|
||||
"add_to_album_toggle": "Skift selektion for {album}",
|
||||
"add_to_albums": "Tilføj til albummer",
|
||||
"add_to_albums_count": "Tilføj til albummer({count})",
|
||||
|
|
@ -598,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Slå sikkerhedskopiering til",
|
||||
"backup_controller_page_uploading_file_info": "Uploader filinformation",
|
||||
"backup_err_only_album": "Kan ikke slette det eneste album",
|
||||
"backup_error_sync_failed": "Synkroniseringen mislykkedes. Sikkerhedskopieringen kunne ikke behandles.",
|
||||
"backup_info_card_assets": "objekter",
|
||||
"backup_manual_cancelled": "Annulleret",
|
||||
"backup_manual_in_progress": "Upload er allerede undervejs. Prøv igen efter noget tid",
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Sicherung im Vordergrund einschalten",
|
||||
"backup_controller_page_uploading_file_info": "Informationen",
|
||||
"backup_err_only_album": "Das einzige Album kann nicht entfernt werden",
|
||||
"backup_error_sync_failed": "Synchronisierung fehlgeschlagen. Backup kann nicht verarbeitet werden.",
|
||||
"backup_info_card_assets": "Elemente",
|
||||
"backup_manual_cancelled": "Abgebrochen",
|
||||
"backup_manual_in_progress": "Sicherung läuft bereits. Bitte versuche es später erneut",
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
"add_to_album": "Προσθήκη σε άλμπουμ",
|
||||
"add_to_album_bottom_sheet_added": "Προστέθηκε στο {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Ήδη στο {album}",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "Ορισμένοι τοπικά στοιχεία δεν μπόρεσαν να προστεθούν στο άλμπουμ",
|
||||
"add_to_album_toggle": "Εναλλαγή επιλογής για το {album}",
|
||||
"add_to_albums": "Προσθήκη στα άλμπουμ",
|
||||
"add_to_albums_count": "Προσθήκη στα άλμπουμ ({count})",
|
||||
|
|
@ -598,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Ενεργοποίηση δημιουργίας αντιγράφου ασφαλείας στο προσκήνιο",
|
||||
"backup_controller_page_uploading_file_info": "Μεταφόρτωση πληροφοριών αρχείου",
|
||||
"backup_err_only_album": "Δεν είναι δυνατή η αφαίρεση του μοναδικού άλμπουμ",
|
||||
"backup_error_sync_failed": "Ο συγχρονισμός απέτυχε. Δεν είναι δυνατή η επεξεργασία του αντιγράφου ασφαλείας.",
|
||||
"backup_info_card_assets": "στοιχεία",
|
||||
"backup_manual_cancelled": "Ακυρώθηκε",
|
||||
"backup_manual_in_progress": "Μεταφόρτωση σε εξέλιξη. Δοκιμάστε αργότερα",
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Activar la copia de seguridad",
|
||||
"backup_controller_page_uploading_file_info": "Subiendo información del archivo",
|
||||
"backup_err_only_album": "No se puede eliminar el único álbum",
|
||||
"backup_error_sync_failed": "Sincronización falló. No es posible procesar la copia de seguridad.",
|
||||
"backup_info_card_assets": "elementos",
|
||||
"backup_manual_cancelled": "Cancelado",
|
||||
"backup_manual_in_progress": "Subida ya en progreso. Vuelve a intentarlo más tarde",
|
||||
|
|
@ -1088,7 +1089,7 @@
|
|||
"folders": "Carpetas",
|
||||
"folders_feature_description": "Explorar la vista de carpetas para las fotos y los videos en el sistema de archivos",
|
||||
"forgot_pin_code_question": "¿Olvidaste tu código PIN?",
|
||||
"forward": "Reenviar",
|
||||
"forward": "Avanzar",
|
||||
"gcast_enabled": "Google Cast",
|
||||
"gcast_enabled_description": "Esta funcionalidad carga recursos externos desde Google para poder funcionar.",
|
||||
"general": "General",
|
||||
|
|
@ -1905,7 +1906,7 @@
|
|||
"skip_to_content": "Saltar al contenido",
|
||||
"skip_to_folders": "Ir a las carpetas",
|
||||
"skip_to_tags": "Ir a las etiquetas",
|
||||
"slideshow": "Diapositivas",
|
||||
"slideshow": "Pase de diapositivas",
|
||||
"slideshow_settings": "Ajustes de diapositivas",
|
||||
"sort_albums_by": "Ordenar álbumes por…",
|
||||
"sort_created": "Fecha de creación",
|
||||
|
|
|
|||
|
|
@ -599,7 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Activer la sauvegarde au premier plan",
|
||||
"backup_controller_page_uploading_file_info": "Envoi des informations du fichier",
|
||||
"backup_err_only_album": "Impossible de retirer le seul album",
|
||||
"backup_error_sync_failed": "Échec de la synchronisation. Impossible de démarrer la sauvegarde.",
|
||||
"backup_error_sync_failed": "Échec de la synchronisation. Impossible d'exécuter la sauvegarde.",
|
||||
"backup_info_card_assets": "éléments",
|
||||
"backup_manual_cancelled": "Annulé",
|
||||
"backup_manual_in_progress": "Envoi déjà en cours. Réessayez plus tard",
|
||||
|
|
|
|||
|
|
@ -28,9 +28,10 @@
|
|||
"add_to_album": "הוספה לאלבום",
|
||||
"add_to_album_bottom_sheet_added": "נוסף ל {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "כבר ב {album}",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "לא ניתן היה להוסיף חלק מהקבצים המקומיים לאלבום",
|
||||
"add_to_album_toggle": "החלפת מצב בחירה עבור {album}",
|
||||
"add_to_albums": "הוספה לאלבומים",
|
||||
"add_to_albums_count": "Add to albums ({count})",
|
||||
"add_to_albums_count": "הוסף ({count}) לאלבום",
|
||||
"add_to_shared_album": "הוספה לאלבום משותף",
|
||||
"add_url": "הוספת קישור",
|
||||
"added_to_archive": "נוסף לארכיון",
|
||||
|
|
@ -598,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "הפעל גיבוי חזית",
|
||||
"backup_controller_page_uploading_file_info": "מעלה מידע על הקובץ",
|
||||
"backup_err_only_album": "לא ניתן להסיר את האלבום היחיד",
|
||||
"backup_error_sync_failed": "הסינכרון נכשל. לא ניתן להשלים את הגיבוי.",
|
||||
"backup_info_card_assets": "תמונות",
|
||||
"backup_manual_cancelled": "בוטל",
|
||||
"backup_manual_in_progress": "העלאה כבר בתהליך. נסה אחרי זמן מה",
|
||||
|
|
@ -753,6 +755,7 @@
|
|||
"create_user": "צור משתמש",
|
||||
"created": "נוצר",
|
||||
"created_at": "נוצר",
|
||||
"creating_linked_albums": "יוצר אלבומים מקושרים...",
|
||||
"crop": "חתוך",
|
||||
"curated_object_page_title": "דברים",
|
||||
"current_device": "מכשיר נוכחי",
|
||||
|
|
@ -1500,7 +1503,7 @@
|
|||
"permission_onboarding_permission_limited": "הרשאה מוגבלת. כדי לתת ליישום לגבות ולנהל את כל אוסף הגלריה שלך, הענק הרשאה לתמונות וסרטונים בהגדרות.",
|
||||
"permission_onboarding_request": "היישום דורש הרשאה כדי לראות את התמונות והסרטונים שלך.",
|
||||
"person": "אדם",
|
||||
"person_age_months": "בגיל {months, plural, one {חודש #} other {# חודשים}}",
|
||||
"person_age_months": "{months, plural, one {חודש #} other {# חודשים}}",
|
||||
"person_age_year_months": "בגיל שנה ו{months, plural, one {חודש #} other {# חודשים}}",
|
||||
"person_age_years": "בגיל {years, plural, other {# שנים}}",
|
||||
"person_birthdate": "נולד בתאריך {date}",
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
"add_to_album": "Felvétel albumba",
|
||||
"add_to_album_bottom_sheet_added": "Hozzáadva a(z) \"{album}\" albumhoz",
|
||||
"add_to_album_bottom_sheet_already_exists": "Már benne van a(z) \"{album}\" albumban",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "Néhány helyi elem nem adható hozzá az albumhoz",
|
||||
"add_to_album_toggle": "{album} kijelölésének váltása",
|
||||
"add_to_albums": "Hozzáadás albumokhoz",
|
||||
"add_to_albums_count": "Hozzáadás albumokhoz ({count})",
|
||||
|
|
@ -175,7 +176,7 @@
|
|||
"map_settings_description": "Térkép beállítások kezelése",
|
||||
"map_style_description": "Egy style.json térképtémára mutató URL cím",
|
||||
"memory_cleanup_job": "Memória takarítás",
|
||||
"memory_generate_job": "Emlék generálása",
|
||||
"memory_generate_job": "Emlékek generálása",
|
||||
"metadata_extraction_job": "Metaadatok kinyerése",
|
||||
"metadata_extraction_job_description": "Metaadat információk (pl. GPS, arcok és felbontás) kinyerése minden elemből",
|
||||
"metadata_faces_import_setting": "Arc importálás engedélyezése",
|
||||
|
|
@ -598,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Előtérben mentés bekapcsolása",
|
||||
"backup_controller_page_uploading_file_info": "Fájl információk feltöltése",
|
||||
"backup_err_only_album": "Az utolsó albumot nem tudod törölni",
|
||||
"backup_error_sync_failed": "A szinkronizálás nem sikerült. A biztonsági mentés nem elkészíthető.",
|
||||
"backup_info_card_assets": "elemek",
|
||||
"backup_manual_cancelled": "Megszakítva",
|
||||
"backup_manual_in_progress": "Feltöltés már folyamatban. Próbáld meg később",
|
||||
|
|
|
|||
19
i18n/it.json
19
i18n/it.json
|
|
@ -177,7 +177,7 @@
|
|||
"map_style_description": "URL per un tema della mappa style.json",
|
||||
"memory_cleanup_job": "Pulizia dei vecchi Ricordi",
|
||||
"memory_generate_job": "Generazione dei Ricordi",
|
||||
"metadata_extraction_job": "Estrazione Metadata",
|
||||
"metadata_extraction_job": "Estrazione Metadati",
|
||||
"metadata_extraction_job_description": "Estrai informazioni dai metadati di ciascuna risorsa, come coordinate GPS, volti e risoluzione",
|
||||
"metadata_faces_import_setting": "Abilita l'importazione dei volti",
|
||||
"metadata_faces_import_setting_description": "Importa i volti dai dati EXIF dell'immagine e dai file sidecar",
|
||||
|
|
@ -308,11 +308,11 @@
|
|||
"transcoding_acceleration_rkmpp": "RKMPP (Solo per SOC Rockchip)",
|
||||
"transcoding_acceleration_vaapi": "VAAPI",
|
||||
"transcoding_accepted_audio_codecs": "Codifiche audio accettate",
|
||||
"transcoding_accepted_audio_codecs_description": "Seleziona quali codifiche audio non devono essere trascodificate. Solo usato per alcune politiche di trascodifica.",
|
||||
"transcoding_accepted_audio_codecs_description": "Seleziona quali codifiche audio non devono essere transcodificate. Solo usato per alcune politiche di transcodifica.",
|
||||
"transcoding_accepted_containers": "Contenitori accettati",
|
||||
"transcoding_accepted_containers_description": "Seleziona quali formati non hanno bisogno di essere remuxati in MP4. Usato solo per certe politiche di transcodifica.",
|
||||
"transcoding_accepted_video_codecs": "Codifiche video accettate",
|
||||
"transcoding_accepted_video_codecs_description": "Seleziona quali codifiche video non devono essere trascodificate. Usato solo per alcune politiche di trascodifica.",
|
||||
"transcoding_accepted_video_codecs_description": "Seleziona quali codifiche video non devono essere transcodificate. Usato solo per alcune politiche di transcodifica.",
|
||||
"transcoding_advanced_options_description": "Impostazioni che la maggior parte degli utenti non dovrebbero cambiare",
|
||||
"transcoding_audio_codec": "Codifica Audio",
|
||||
"transcoding_audio_codec_description": "Opus è l'opzione con la qualità più alta, ma è meno compatibile con dispositivi o software vecchi.",
|
||||
|
|
@ -345,7 +345,7 @@
|
|||
"transcoding_reference_frames": "Frame di riferimento",
|
||||
"transcoding_reference_frames_description": "Il numero di frame da prendere in considerazione nel comprimere un determinato frame. Valori più alti migliorano l'efficienza di compressione, ma rallentano la codifica. 0 imposta questo valore automaticamente.",
|
||||
"transcoding_required_description": "Solo video che non sono in un formato accettato",
|
||||
"transcoding_settings": "Impostazioni Trascodifica Video",
|
||||
"transcoding_settings": "Impostazioni Transcodifica Video",
|
||||
"transcoding_settings_description": "Gestisci quali video transcodificare e come processarli",
|
||||
"transcoding_target_resolution": "Risoluzione desiderata",
|
||||
"transcoding_target_resolution_description": "Risoluzioni più elevate possono preservare più dettagli ma richiedono più tempo per la codifica, producono file di dimensioni maggiori e possono ridurre la reattività dell'applicazione.",
|
||||
|
|
@ -356,11 +356,11 @@
|
|||
"transcoding_tone_mapping": "Mappatura della tonalità",
|
||||
"transcoding_tone_mapping_description": "Tenta di preservare l'aspetto dei video HDR quando convertiti in SDR. Ciascun algoritmo fa diversi compromessi per colore, dettaglio e luminosità. Hable conserva il dettaglio, Mobius conserva il colore e Reinhard conserva la luminosità.",
|
||||
"transcoding_transcode_policy": "Politica di transcodifica",
|
||||
"transcoding_transcode_policy_description": "Politica che determina quando un video deve essere trascodificato. I video HDR verranno sempre trascodificati (eccetto quando la trascodifica è disabilitata).",
|
||||
"transcoding_transcode_policy_description": "Politica che determina quando un video deve essere transcodificato. I video HDR verranno sempre transcodificati (eccetto quando la transcodifica è disabilitata).",
|
||||
"transcoding_two_pass_encoding": "Codifica a due passaggi",
|
||||
"transcoding_two_pass_encoding_setting_description": "Trascodifica in due passaggi per produrre video codificati migliori. Quando il bitrate massimo è abilitato (necessario affinché funzioni con H.264 e HEVC), questa modalità utilizza un intervallo di bitrate basato sul bitrate massimo e ignora CRF. Per VP9, CRF può essere utilizzato se il bitrate massimo è disabilitato.",
|
||||
"transcoding_two_pass_encoding_setting_description": "Transcodifica in due passaggi per produrre video codificati migliori. Quando il bitrate massimo è abilitato (necessario affinché funzioni con H.264 e HEVC), questa modalità utilizza un intervallo di bitrate basato sul bitrate massimo e ignora CRF. Per VP9, CRF può essere utilizzato se il bitrate massimo è disabilitato.",
|
||||
"transcoding_video_codec": "Codec video",
|
||||
"transcoding_video_codec_description": "VP9 ha alta efficienza e compatibilità web, ma richiede più tempo per la trascodifica. HEVC ha prestazioni simili, ma una minore compatibilità web. H.264 è ampiamente compatibile e veloce da transcodificare, ma produce file molto più grandi. AV1 è il codec più efficiente, ma non è supportato sui dispositivi più vecchi.",
|
||||
"transcoding_video_codec_description": "VP9 ha alta efficienza e compatibilità web, ma richiede più tempo per la transcodifica. HEVC ha prestazioni simili, ma una minore compatibilità web. H.264 è ampiamente compatibile e veloce da transcodificare, ma produce file molto più grandi. AV1 è il codec più efficiente, ma non è supportato sui dispositivi più vecchi.",
|
||||
"trash_enabled_description": "Abilita Funzionalità Cestino",
|
||||
"trash_number_of_days": "Numero di giorni",
|
||||
"trash_number_of_days_description": "Numero di giorni per cui mantenere gli asset nel cestino prima di rimuoverli definitivamente",
|
||||
|
|
@ -388,8 +388,8 @@
|
|||
"version_check_implications": "La funzione di controllo della versione fa uso di una comunicazione periodica con github.com",
|
||||
"version_check_settings": "Controllo Versione",
|
||||
"version_check_settings_description": "Abilita/disabilita la notifica per nuove versioni",
|
||||
"video_conversion_job": "Trascodifica video",
|
||||
"video_conversion_job_description": "Trascodifica video per maggiore compatibilità con browser e dispositivi"
|
||||
"video_conversion_job": "Transcodifica video",
|
||||
"video_conversion_job_description": "Transcodifica video per maggiore compatibilità con browser e dispositivi"
|
||||
},
|
||||
"admin_email": "Email Amministratore",
|
||||
"admin_password": "Password Amministratore",
|
||||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Attiva backup",
|
||||
"backup_controller_page_uploading_file_info": "Caricamento informazioni file",
|
||||
"backup_err_only_album": "Non è possibile rimuovere l'unico album",
|
||||
"backup_error_sync_failed": "Sincronizzazione non riuscita. Impossibile elaborare il backup.",
|
||||
"backup_info_card_assets": "risorse",
|
||||
"backup_manual_cancelled": "Annullato",
|
||||
"backup_manual_in_progress": "Caricamento già in corso. Riprova più tardi",
|
||||
|
|
|
|||
|
|
@ -8,11 +8,13 @@
|
|||
"actions": "ಕ್ರಿಯೆಗಳು",
|
||||
"active": "ಸಕ್ರಿಯ",
|
||||
"activity": "ಚಟುವಟಿಕೆ",
|
||||
"activity_changed": "ಚಟುವಟಿಕೆ {enabled, select, true{ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ} other {ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ}}",
|
||||
"add": "ಸೇರಿಸಿ",
|
||||
"add_a_description": "ವಿವರಣೆಯನ್ನು ಸೇರಿಸಿ",
|
||||
"add_a_location": "ಸ್ಥಳವನ್ನು ಸೇರಿಸಿ",
|
||||
"add_a_name": "ಹೆಸರನ್ನು ಸೇರಿಸಿ",
|
||||
"add_a_title": "ಶೀರ್ಷಿಕೆಯನ್ನು ಸೇರಿಸಿ",
|
||||
"add_birthday": "ಜನ್ಮದಿನ ಸೇರಿಸಿ",
|
||||
"add_endpoint": "ಎಂಡ್ಪಾಯಿಂಟ್ ಸೇರಿಸಿ",
|
||||
"add_exclusion_pattern": "ಹೊರಗಿಡುವಿಕೆ ಮಾದರಿಯನ್ನು ಸೇರಿಸಿ",
|
||||
"add_import_path": "ಆಮದು ಮಾರ್ಗವನ್ನು ಸೇರಿಸಿ",
|
||||
|
|
@ -22,5 +24,6 @@
|
|||
"add_path": "ಹಾದಿಯನ್ನು ಸೇರಿಸಿ",
|
||||
"add_photos": "ಫೋಟೋಗಳನ್ನು ಸೇರಿಸಿ",
|
||||
"add_to": "ಸೇರಿಸಿ…",
|
||||
"add_to_album": "ಆಲ್ಬಮ್ಗೆ ಸೇರಿಸಿ"
|
||||
"add_to_album": "ಆಲ್ಬಮ್ಗೆ ಸೇರಿಸಿ",
|
||||
"add_to_album_bottom_sheet_added": "{album}ಗೆ ಸೇರಿಸಿದೆ"
|
||||
}
|
||||
|
|
|
|||
28
i18n/ko.json
28
i18n/ko.json
|
|
@ -8,7 +8,7 @@
|
|||
"actions": "작업",
|
||||
"active": "활성",
|
||||
"activity": "활동",
|
||||
"activity_changed": "활동이 {enabled, select, true {활성화} other {비활성화}}되었습니다.",
|
||||
"activity_changed": "활동이 {enabled, select, true {활성화} other {비활성화}}되었습니다",
|
||||
"add": "추가",
|
||||
"add_a_description": "설명 추가",
|
||||
"add_a_location": "위치 추가",
|
||||
|
|
@ -34,15 +34,15 @@
|
|||
"add_to_albums_count": "여러 앨범에 추가 ({count})",
|
||||
"add_to_shared_album": "공유 앨범에 추가",
|
||||
"add_url": "URL 추가",
|
||||
"added_to_archive": "보관함으로 이동되었습니다.",
|
||||
"added_to_favorites": "즐겨찾기에 추가되었습니다.",
|
||||
"added_to_archive": "보관함으로 이동되었습니다",
|
||||
"added_to_favorites": "즐겨찾기에 추가되었습니다",
|
||||
"added_to_favorites_count": "즐겨찾기에 항목 {count, number}개 추가됨",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "*, **, ? 등의 glob 패턴을 사용할 수 있습니다. 예를 들어 \"Raw\" 폴더 내 모든 파일을 제외하려면 \"**/Raw/**\"를, .tif 파일을 제외하려면 \"**/*.tif\", 특정한 절대 경로를 제외하려면 \"/path/to/ignore/**\" 처럼 사용합니다.",
|
||||
"admin_user": "관리자",
|
||||
"asset_offline_description": "이 항목은 외부 라이브러리에 등록되었으나 디스크에서 찾을 수 없어 휴지통으로 이동했습니다. 파일이 라이브러리 경로 내에서 이동된 경우 타임라인에서 새로 인식된 항목이 있는지 확인해보세요. 이 항목을 복원하려면 아래 경로에 Immich가 접근할 수 있는지 확인하고 라이브러리를 다시 스캔하세요.",
|
||||
"authentication_settings": "인증 설정",
|
||||
"authentication_settings_description": "비밀번호, OAuth 및 기타 인증 설정을 관리합니다.",
|
||||
"authentication_settings_description": "비밀번호, OAuth 및 기타 인증 설정을 관리합니다",
|
||||
"authentication_settings_disable_all": "모든 로그인 수단을 비활성화하시겠습니까? 더이상 로그인할 수 없습니다.",
|
||||
"authentication_settings_reenable": "다시 활성화하려면 <link>서버 명령어</link>를 사용하세요.",
|
||||
"background_task_job": "백그라운드 작업",
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
"backup_database_enable_description": "데이터베이스 덤프 활성화",
|
||||
"backup_keep_last_amount": "보관할 이전 덤프 수",
|
||||
"backup_onboarding_1_description": "개는 클라우드나 다른 물리적 위치에 보관합니다.",
|
||||
"backup_onboarding_2_description": "개는 서로 다른 로컬 장치에 보관하고,",
|
||||
"backup_onboarding_2_description": "다른 기기의 로컬 사본. 메인 파일과 로컬 백업을 포함합니다.",
|
||||
"backup_onboarding_3_description": "개의 데이터 사본을 만듭니다.",
|
||||
"backup_onboarding_description": "소중한 데이터를 안전하게 보호하기 위해 <backblaze-link>3-2-1 백업 전략</backblaze-link> 사용을 권장합니다. Immich를 백업할 때 업로드한 사진 및 동영상뿐 아니라 데이터베이스도 함께 보관해야 한다는 점을 잊지 마세요.",
|
||||
"backup_onboarding_footer": "Immich 백업에 대한 자세한 내용은 <link>공식 문서</link>를 참조하세요.",
|
||||
|
|
@ -59,10 +59,10 @@
|
|||
"backup_settings": "데이터베이스 덤프 설정",
|
||||
"backup_settings_description": "데이터베이스 덤프 주기와 보관 기간을 설정합니다.",
|
||||
"cleared_jobs": "작업 중단: {job}",
|
||||
"config_set_by_file": "설정이 구성 파일을 통해 관리되고 있습니다.",
|
||||
"config_set_by_file": "설정이 구성 파일을 통해 관리되고 있습니다",
|
||||
"confirm_delete_library": "{library} 라이브러리를 삭제하시겠습니까?",
|
||||
"confirm_delete_library_assets": "이 라이브러리를 삭제하시겠습니까? Immich에서 {count, plural, one {항목 #개가} other {항목 #개가}} 삭제되며 되돌릴 수 없습니다. 원본 파일은 디스크에 남아 있습니다.",
|
||||
"confirm_email_below": "계속하려면 아래에 \"{email}\"을(를) 입력하세요.",
|
||||
"confirm_email_below": "계속하려면 아래에 \"{email}\"을(를) 입력하세요",
|
||||
"confirm_reprocess_all_faces": "모든 얼굴을 다시 처리하시겠습니까? 이름이 지정된 인물도 초기화됩니다.",
|
||||
"confirm_user_password_reset": "{user}님의 비밀번호를 초기화하시겠습니까?",
|
||||
"confirm_user_pin_code_reset": "{user}님의 PIN 코드를 초기화하시겠습니까?",
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
"cron_expression_description": "Cron 표현식으로 스캔 주기를 설정합니다. 자세한 내용은 다음을 참조하세요, <link>Crontab Guru</link>",
|
||||
"cron_expression_presets": "Cron 표현식 프리셋",
|
||||
"disable_login": "로그인 비활성화",
|
||||
"duplicate_detection_job_description": "기계 학습으로 유사한 이미지를 감지합니다. 스마트 검색이 활성화되어 있어야 합니다.",
|
||||
"duplicate_detection_job_description": "기계 학습으로 유사한 이미지를 감지합니다. 스마트 검색이 활성화되어 있어야 합니다",
|
||||
"exclusion_pattern_description": "라이브러리 스캔에서 제외할 파일이나 폴더 규칙을 설정합니다. 폴더에 원하지 않는 파일(RAW 파일 등)이 함께 존재하는 경우 유용합니다.",
|
||||
"external_library_management": "외부 라이브러리 관리",
|
||||
"face_detection": "얼굴 감지",
|
||||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "활성화",
|
||||
"backup_controller_page_uploading_file_info": "파일 정보 업로드 중",
|
||||
"backup_err_only_album": "유일한 앨범은 삭제할 수 없습니다.",
|
||||
"backup_error_sync_failed": "동기화에 실패했습니다. 백업을 진행할 수 없습니다.",
|
||||
"backup_info_card_assets": "항목",
|
||||
"backup_manual_cancelled": "취소됨",
|
||||
"backup_manual_in_progress": "업로드가 이미 진행 중입니다. 잠시 후 다시 시도하세요",
|
||||
|
|
@ -1092,6 +1093,7 @@
|
|||
"gcast_enabled": "구글 캐스트",
|
||||
"gcast_enabled_description": "이 기능은 Google의 외부 리소스를 사용하여 실행됩니다.",
|
||||
"general": "일반",
|
||||
"geolocation_instruction_location": "GPS 좌표가 포함된 항목을 클릭해 위치를 사용하거나, 지도에서 직접 위치를 선택하세요",
|
||||
"get_help": "도움 얻기",
|
||||
"get_wifiname_error": "Wi-Fi 이름을 가져올 수 없습니다. 필수 권한이 부여되었는지, Wi-Fi 네트워크에 연결되어 있는지 확인하세요.",
|
||||
"getting_started": "시작하기",
|
||||
|
|
@ -1387,20 +1389,25 @@
|
|||
"no_assets_message": "여기를 클릭해 첫 사진을 업로드하세요.",
|
||||
"no_assets_to_show": "표시할 항목 없음",
|
||||
"no_cast_devices_found": "캐스트 기기 없음",
|
||||
"no_checksum_local": "체크섬이 없습니다. 로컬 항목을 불러올 수 없습니다",
|
||||
"no_checksum_remote": "체크섬이 없습니다. 외부 항목을 불러올 수 없습니다",
|
||||
"no_duplicates_found": "비슷한 항목이 없습니다.",
|
||||
"no_exif_info_available": "EXIF 정보 없음",
|
||||
"no_explore_results_message": "더 많은 사진을 업로드하여 탐색 기능을 사용하세요.",
|
||||
"no_favorites_message": "즐겨찾기에서 사진과 동영상을 빠르게 찾기",
|
||||
"no_libraries_message": "외부 라이브러리로 다른 경로의 사진과 동영상을 확인하세요.",
|
||||
"no_local_assets_found": "체크섬에 맞는 로컬 항목을 찾을 수 없습니다",
|
||||
"no_locked_photos_message": "잠금 폴더의 사진 및 동영상은 숨겨지며 라이브러리를 탐색할 때 표시되지 않습니다.",
|
||||
"no_name": "이름 없음",
|
||||
"no_notifications": "알림 없음",
|
||||
"no_people_found": "일치하는 인물 없음",
|
||||
"no_places": "장소 없음",
|
||||
"no_remote_assets_found": "체크섬에 맞는 외부 항목을 찾을 수 없습니다",
|
||||
"no_results": "결과 없음",
|
||||
"no_results_description": "동의어 또는 더 일반적인 단어를 사용해 보세요.",
|
||||
"no_shared_albums_message": "앨범을 만들어 주변 사람들과 사진 및 동영상을 공유하세요.",
|
||||
"no_uploads_in_progress": "진행 중인 업로드 없음",
|
||||
"not_available": "없음",
|
||||
"not_in_any_album": "앨범에 없음",
|
||||
"not_selected": "선택되지 않음",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "참고: 이전에 업로드한 항목에도 스토리지 레이블을 적용하려면 다음을 실행합니다,",
|
||||
|
|
@ -1435,6 +1442,8 @@
|
|||
"open_the_search_filters": "검색 필터 열기",
|
||||
"options": "옵션",
|
||||
"or": "또는",
|
||||
"organize_into_albums": "앨범으로 정리하기",
|
||||
"organize_into_albums_description": "현재 동기화 설정을 사용하여 기존 사진을 앨범으로 정리합니다",
|
||||
"organize_your_library": "라이브러리 정리",
|
||||
"original": "원본",
|
||||
"other": "기타",
|
||||
|
|
@ -1576,6 +1585,7 @@
|
|||
"purchase_server_description_2": "서포터 배지",
|
||||
"purchase_server_title": "서버",
|
||||
"purchase_settings_server_activated": "서버 제품 키는 관리자가 제어합니다.",
|
||||
"query_asset_id": "쿼리 항목 ID",
|
||||
"queue_status": "전체 {total}, {count} 대기 중",
|
||||
"rating": "등급",
|
||||
"rating_clear": "등급 초기화",
|
||||
|
|
@ -1663,6 +1673,7 @@
|
|||
"restore_user": "사용자 복원",
|
||||
"restored_asset": "항목이 복원되었습니다.",
|
||||
"resume": "재개",
|
||||
"resume_paused_jobs": "재개 {count, plural, one {# 일시 중지된 작업} other {# 일시 중지된 작업}}",
|
||||
"retry_upload": "다시 시도",
|
||||
"review_duplicates": "비슷한 항목 확인",
|
||||
"review_large_files": "용량이 큰 파일 확인",
|
||||
|
|
@ -1756,6 +1767,7 @@
|
|||
"select_user_for_sharing_page_err_album": "앨범을 생성하지 못했습니다.",
|
||||
"selected": "선택됨",
|
||||
"selected_count": "{count, plural, other {#개 선택됨}}",
|
||||
"selected_gps_coordinates": "선택한 GPS 좌표",
|
||||
"send_message": "메시지 전송",
|
||||
"send_welcome_email": "환영 이메일 전송",
|
||||
"server_endpoint": "서버 엔드포인트",
|
||||
|
|
|
|||
81
i18n/lv.json
81
i18n/lv.json
|
|
@ -65,9 +65,13 @@
|
|||
"duplicate_detection_job_description": "Analizēt failus ar mašīnmācīšanos, lai noteiktu līdzīgus attēlus. Šī funkcija izmanto viedo meklēšanu",
|
||||
"external_library_management": "Ārējo bibliotēku pārvaldība",
|
||||
"face_detection": "Seju noteikšana",
|
||||
"face_detection_description": "Atpazīt attēlos sejas, izmantojot mašīnmācīšanos. Video gadījumā tiek ņemta vērā tikai sīktēls. \"Atsvaidzināt\" atkārtoti apstrādā visus attēlus. \"Atiestatīt\" izdzēš visus pašreizējos seju datus. \"Trūkstošie\" ierindo attēlus, kas vēl nav apstrādāti. Pēc seju noteikšanas pabeigšanas atrastās sejas tiek ierindotas seju atpazīšanai, grupējot tās pēc esošas vai jauns personas.",
|
||||
"facial_recognition_job_description": "Grupēt atpazītās sejas pēc cilvēkiem. Šis solis tiek veikts pēc seju noteikšanas pabeigšanas. \"Atiestatīt\" atkārtoti sagrupē visas sejas. \"Trūkstošie\" ierindo sejas, kurām nav piešķirta persona.",
|
||||
"image_format": "Formāts",
|
||||
"image_format_description": "WebP veido mazākus failus nekā JPEG, taču to kodēšana ir lēnāka.",
|
||||
"image_fullsize_enabled_description": "Ģenerēt pilna izmēra attēlu formātiem, kas nav piemēroti izmantošanai tīmeklī. Ja ir iespējota opcija \"Priekšroka iegultajam priekšskatījumam\", tiks izmantoti iegultie priekšskatījumi bez konvertēšanas. Neietekmē tīmeklim draudzīgus formātus, piemēram, JPEG.",
|
||||
"image_fullsize_description": "Pilnizmēra attēls ar noņemtiem metadatiem, ko izmanto, kad attēls ir tuvināts",
|
||||
"image_fullsize_enabled": "Iespējot pilnizmēra attēlu ģenerēšanu",
|
||||
"image_fullsize_enabled_description": "Ģenerēt pilnizmēra attēlu formātiem, kas nav piemēroti izmantošanai tīmeklī. Ja ir iespējota opcija \"Priekšroka iegultajam priekšskatījumam\", tiks izmantoti iegultie priekšskatījumi bez konvertēšanas. Neietekmē tīmeklim draudzīgus formātus, piemēram, JPEG.",
|
||||
"image_fullsize_quality_description": "Pilnizmēra attēlu kvalitāte no 1-100. Augstāka vērtība dos labāku kvalitāti, taču faili būs lielāka izmēra.",
|
||||
"image_fullsize_title": "Pilnizmēra attēlu iestatījumi",
|
||||
"image_prefer_embedded_preview": "Priekšroka iegultajam priekšskatījumam",
|
||||
|
|
@ -92,15 +96,24 @@
|
|||
"library_scanning_enable_description": "Iespējot periodisku bibliotēku skenēšanu",
|
||||
"library_settings": "Ārējā bibliotēka",
|
||||
"library_settings_description": "Ārējo bibliotēku iestatījumu pārvaldība",
|
||||
"library_tasks_description": "Pārbaudīt ārējās bibliotēkas, lai atrastu jaunus un/vai mainītus failus",
|
||||
"library_watching_settings": "Bibliotēku uzraudzīšana (EKSPERIMENTĀLA)",
|
||||
"library_watching_settings_description": "Automātiski uzraudzīt, vai ir mainīti faili",
|
||||
"machine_learning_availability_checks_enabled": "Iespējot pieejamības pārbaudes",
|
||||
"machine_learning_clip_model": "CLIP modelis",
|
||||
"machine_learning_duplicate_detection": "Dublikātu noteikšana",
|
||||
"machine_learning_duplicate_detection_enabled": "Iespējot dublikātu noteikšanu",
|
||||
"machine_learning_duplicate_detection_enabled_description": "Ja šī funkcija ir atspējota, joprojām tiks izlaisti identiski faili.",
|
||||
"machine_learning_enabled": "Iespējot mašīnmācīšanos",
|
||||
"machine_learning_enabled_description": "Ja funkcija ir atspējota, tiks atspējotas visas ML funkcijas neatkarīgi no zemāk esošajiem iestatījumiem.",
|
||||
"machine_learning_facial_recognition": "Seju atpazīšana",
|
||||
"machine_learning_facial_recognition_model": "Seju atpazīšanas modelis",
|
||||
"machine_learning_facial_recognition_setting": "Iespējot seju atpazīšanu",
|
||||
"machine_learning_settings": "Mašīnmācīšanās iestatījumi",
|
||||
"machine_learning_settings_description": "Mašīnmācīšanās funkciju un iestatījumu pārvaldība",
|
||||
"machine_learning_smart_search": "Viedā meklēšana",
|
||||
"machine_learning_smart_search_enabled": "Iespējot viedo meklēšanu",
|
||||
"machine_learning_smart_search_enabled_description": "Ja funkcija ir atspējota, attēli netiks kodēti viedai meklēšanai.",
|
||||
"machine_learning_url_description": "Mašīnmācīšanās servera URL. Ja ir norādīts vairāk nekā viens URL, katrs serveris, sākot no pirmā līdz pēdējam, tiks pārbaudīts pa vienam, līdz kāds no tiem atbildēs veiksmīgi. Serveri, kas neatbild, tiks īslaicīgi ignorēti, līdz tie atkal būs pieejami tiešsaistē.",
|
||||
"manage_concurrency": "Vienlaicīgas darbības pārvaldība",
|
||||
"manage_log_settings": "Žurnāla iestatījumu pārvaldība",
|
||||
|
|
@ -114,10 +127,14 @@
|
|||
"map_settings": "Karte",
|
||||
"map_settings_description": "Kartes iestatījumu pārvaldība",
|
||||
"map_style_description": "URL uz style.json kartes tēmu",
|
||||
"memory_generate_job": "Atmiņu ģenerēšana",
|
||||
"metadata_extraction_job": "Metadatu iegūšana",
|
||||
"metadata_extraction_job_description": "iegūt metadatu informāciju no katra faila, piemēram, GPS, sejas un izšķirtspēju",
|
||||
"metadata_faces_import_setting_description": "Importēt sejas no attēla EXIF datiem un blakusfailiem",
|
||||
"metadata_settings": "Metadatu iestatījumi",
|
||||
"metadata_settings_description": "Metadatu iestatījumu pārvaldība",
|
||||
"migration_job": "Migrācija",
|
||||
"migration_job_description": "Pārvietot failu un seju sīktēlus uz jaunāko mapju struktūru",
|
||||
"nightly_tasks_cluster_faces_setting_description": "Veikt sejas atpazīšanu jaunatklātajām sejām",
|
||||
"nightly_tasks_cluster_new_faces_setting": "Sagrupēt jaunās sejas",
|
||||
"nightly_tasks_database_cleanup_setting": "Datubāzes apkopes uzdevumi",
|
||||
|
|
@ -176,10 +193,15 @@
|
|||
"server_settings_description": "Servera iestatījumu pārvaldība",
|
||||
"server_welcome_message": "Sveiciena ziņa",
|
||||
"server_welcome_message_description": "Ziņojums, kas tiek parādīts pieslēgšanās lapā.",
|
||||
"sidecar_job": "Blakusfailu metadati",
|
||||
"sidecar_job_description": "Atklāt vai sinhronizēt blakusfailu metadatus no failu sistēmas",
|
||||
"slideshow_duration_description": "Katra attēla rādīšanas ilgums sekundēs",
|
||||
"smart_search_job_description": "Analizēt failus ar mašīnmācīšanos lai sagatavotu datus viedajai meklēšanai",
|
||||
"storage_template_date_time_sample": "Laika paraugs {date}",
|
||||
"storage_template_migration": "Krātuves veidņu migrācija",
|
||||
"storage_template_migration_job": "Krātuves veidņu migrācijas uzdevums",
|
||||
"storage_template_migration_description": "Piemēro pašreizējo <link>{template}</link> iepriekš augšupielādētajiem failiem",
|
||||
"storage_template_migration_info": "Krātuves veidne pārveidos visus failu paplašinājumus uz mazajiem burtiem. Veidnes izmaiņas attieksies tikai uz jauniem failiem. Lai veidni piemērotu ar atpakaļejošu efektu iepriekš augšupielādētiem failiem, palaidiet <link>{job}</link>.",
|
||||
"storage_template_migration_job": "Krātuves veidņu migrācijas uzdevumu",
|
||||
"storage_template_path_length": "Aptuvenais ceļa garuma ierobežojums: <b>{length, number}</b>/{limit, number}",
|
||||
"storage_template_settings": "Krātuves veidne",
|
||||
"system_settings": "Sistēmas iestatījumi",
|
||||
|
|
@ -247,7 +269,7 @@
|
|||
"age_years": "{years, plural, zero {# gadu} one {# gads} other {# gadi}}",
|
||||
"album_added": "Albums pievienots",
|
||||
"album_added_notification_setting_description": "Saņemt e-pasta paziņojumu, kad tevi pievieno kopīgam albumam",
|
||||
"album_cover_updated": "Albuma attēls atjaunināts",
|
||||
"album_cover_updated": "Albuma vāciņš atjaunināts",
|
||||
"album_delete_confirmation_description": "Ja šis albums tiek kopīgots, citi lietotāji vairs nevarēs tam piekļūt.",
|
||||
"album_deleted": "Albums dzēsts",
|
||||
"album_info_card_backup_album_excluded": "NEIEKĻAUTS",
|
||||
|
|
@ -328,6 +350,7 @@
|
|||
"automatic_endpoint_switching_title": "Automātiska URL pārslēgšana",
|
||||
"autoplay_slideshow": "Automātiska slaidrādes atskaņošana",
|
||||
"back": "Atpakaļ",
|
||||
"background_backup_running_error": "Pašlaik darbojas dublēšana fonā, nevar uzsākt manuālu dublēšanu",
|
||||
"background_options": "Fona opcijas",
|
||||
"backup": "Dublēšana",
|
||||
"backup_album_selection_page_albums_device": "Albumi ierīcē ({count})",
|
||||
|
|
@ -376,7 +399,7 @@
|
|||
"backup_controller_page_remainder": "Atlikums",
|
||||
"backup_controller_page_remainder_sub": "Atlikušie fotoattēli un videoklipi, kurus dublēt no atlases",
|
||||
"backup_controller_page_server_storage": "Servera krātuve",
|
||||
"backup_controller_page_start_backup": "Sākt Dublēšanu",
|
||||
"backup_controller_page_start_backup": "Sākt dublēšanu",
|
||||
"backup_controller_page_status_off": "Automātiskā priekšplāna dublēšana ir izslēgta",
|
||||
"backup_controller_page_status_on": "Automātiskā priekšplāna dublēšana ir ieslēgta",
|
||||
"backup_controller_page_storage_format": "{used} no {total} tiek izmantots",
|
||||
|
|
@ -393,20 +416,22 @@
|
|||
"backup_manual_title": "Augšupielādes statuss",
|
||||
"backup_options_page_title": "Dublēšanas iestatījumi",
|
||||
"backup_settings_subtitle": "Pārvaldīt augšupielādes iestatījumus",
|
||||
"backward": "Atpakaļejoši",
|
||||
"backward": "Atpakaļejoša",
|
||||
"biometric_auth_enabled": "Ieslēgta biometriskā autentifikācija",
|
||||
"biometric_locked_out": "Biometriskā autentifikācija tev ir bloķēta",
|
||||
"biometric_no_options": "Nav pieejamas biometriskās autentifikācijas iespējas",
|
||||
"biometric_not_available": "Biometriskā autentifikācija šajā ierīcē nav pieejama",
|
||||
"birthdate_saved": "Dzimšanas datums veiksmīgi saglabāts",
|
||||
"birthdate_set_description": "Dzimšanas datums tiek izmantots, lai aprēķinātu šīs personas vecumu fotogrāfijas uzņemšanas brīdī.",
|
||||
"blurred_background": "Izpludināts fons",
|
||||
"bugs_and_feature_requests": "Kļūdas un funkciju pieprasījumi",
|
||||
"build": "Būvējums",
|
||||
"build_image": "Būvējuma attēls",
|
||||
"buy": "Iegādāties Immich",
|
||||
"cache_settings_clear_cache_button": "Iztīrīt kešatmiņu",
|
||||
"cache_settings_clear_cache_button_title": "Iztīra aplikācijas kešatmiņu. Tas būtiski ietekmēs lietotnes veiktspēju, līdz kešatmiņa būs pārbūvēta.",
|
||||
"cache_settings_duplicated_assets_clear_button": "NOTĪRĪT",
|
||||
"cache_settings_duplicated_assets_subtitle": "Fotoattēli un videoklipi, kurus lietotne ir iekļāvusi melnajā sarakstā",
|
||||
"cache_settings_duplicated_assets_subtitle": "Fotoattēli un videoklipi, kurus lietotne ir iekļāvusi ignorējamo sarakstā",
|
||||
"cache_settings_duplicated_assets_title": "Dublicētie faili ({count})",
|
||||
"cache_settings_statistics_album": "Bibliotēkas sīktēli",
|
||||
"cache_settings_statistics_full": "Pilni attēli",
|
||||
|
|
@ -418,10 +443,14 @@
|
|||
"cache_settings_tile_title": "Lokālā Krātuve",
|
||||
"cache_settings_title": "Kešdarbes iestatījumi",
|
||||
"camera": "Fotokamera",
|
||||
"camera_brand": "Fotokameras zīmols",
|
||||
"camera_model": "Fotokameras modelis",
|
||||
"cancel": "Atcelt",
|
||||
"cancel_search": "Atcelt meklēšanu",
|
||||
"canceled": "Atcelts",
|
||||
"canceling": "Atceļ",
|
||||
"cannot_merge_people": "Nevar apvienot personas",
|
||||
"cannot_undo_this_action": "Šo darbību nevar atcelt!",
|
||||
"cast": "Pārraidīt",
|
||||
"cast_description": "Konfigurēt pieejamos pārraides galamērķus",
|
||||
"change_date": "Mainīt datumu",
|
||||
|
|
@ -432,6 +461,7 @@
|
|||
"change_name": "Mainīt nosaukumu",
|
||||
"change_name_successfully": "Vārds veiksmīgi nomainīts",
|
||||
"change_password": "Nomainīt paroli",
|
||||
"change_password_description": "Vai nu šī ir pirmā reize, kad pieslēdzaties sistēmai, vai arī ir iesniegts pieprasījums mainīt paroli. Lūdzu, ievadiet jauno paroli zemāk.",
|
||||
"change_password_form_confirm_password": "Apstiprināt Paroli",
|
||||
"change_password_form_description": "Sveiki {name},\n\nŠī ir pirmā reize, kad pierakstāties sistēmā, vai arī ir iesniegts pieprasījums mainīt paroli. Lūdzu, zemāk ievadiet jauno paroli.",
|
||||
"change_password_form_new_password": "Jauna Parole",
|
||||
|
|
@ -445,7 +475,9 @@
|
|||
"city": "Pilsēta",
|
||||
"clear": "Notīrīt",
|
||||
"clear_all": "Notīrīt visu",
|
||||
"clear_all_recent_searches": "Notīrīt visas pēdējās meklēšanas",
|
||||
"clear_file_cache": "Notīrīt failu kešatmiņu",
|
||||
"clear_message": "Notīrīt paziņojumu",
|
||||
"clear_value": "Notīrīt vērtību",
|
||||
"client_cert_dialog_msg_confirm": "Labi",
|
||||
"client_cert_enter_password": "Ievadi paroli",
|
||||
|
|
@ -462,10 +494,14 @@
|
|||
"color": "Krāsa",
|
||||
"color_theme": "Krāsu tēma",
|
||||
"comment_deleted": "Komentārs dzēsts",
|
||||
"comment_options": "Komentāru iespējas",
|
||||
"comments_and_likes": "Komentāri un tīkšķi",
|
||||
"comments_are_disabled": "Komentāri ir atslēgti",
|
||||
"common_create_new_album": "Izveidot jaunu albumu",
|
||||
"common_server_error": "Lūdzu, pārbaudiet tīkla savienojumu, pārliecinieties, vai serveris ir sasniedzams un aplikācijas/servera versijas ir saderīgas.",
|
||||
"completed": "Pabeigts",
|
||||
"confirm": "Apstiprināt",
|
||||
"confirm_admin_password": "Administratora paroles apstiprinājums",
|
||||
"confirm_new_pin_code": "Apstiprināt jauno PIN kodu",
|
||||
"confirm_password": "Apstiprināt paroli",
|
||||
"confirm_tag_face": "Vai vēlies atzīmēt šo seju kā {name}?",
|
||||
|
|
@ -482,6 +518,8 @@
|
|||
"copy_error": "Kopēšanas kļūda",
|
||||
"copy_to_clipboard": "Kopēt starpliktuvē",
|
||||
"country": "Valsts",
|
||||
"cover": "Aizpildīts ekrāns",
|
||||
"covers": "Vāciņi",
|
||||
"create": "Izveidot",
|
||||
"create_album": "Izveidot albumu",
|
||||
"create_album_page_untitled": "Bez nosaukuma",
|
||||
|
|
@ -490,6 +528,7 @@
|
|||
"create_link_to_share": "Izveidot kopīgošanas saiti",
|
||||
"create_new": "IZVEIDOT JAUNU",
|
||||
"create_new_person": "Izveidot jaunu personu",
|
||||
"create_new_person_hint": "Piesaistīt izvēlētos failus jaunai personai",
|
||||
"create_new_user": "Izveidot jaunu lietotāju",
|
||||
"create_shared_album_page_share_add_assets": "PIEVIENOT AKTĪVUS",
|
||||
"create_shared_album_page_share_select_photos": "Fotoattēlu Izvēle",
|
||||
|
|
@ -544,6 +583,8 @@
|
|||
"details": "INFORMĀCIJA",
|
||||
"direction": "Secība",
|
||||
"discord": "Discord",
|
||||
"discover": "Atklāt",
|
||||
"discovered_devices": "Atrastās ierīces",
|
||||
"display_order": "Attēlošanas secība",
|
||||
"display_original_photos": "Rādīt oriģinālās fotogrāfijas",
|
||||
"documentation": "Dokumentācija",
|
||||
|
|
@ -556,6 +597,8 @@
|
|||
"download_error": "Lejupielādes kļūda",
|
||||
"download_failed": "Lejupielāde neizdevās",
|
||||
"download_finished": "Lejupielāde pabeigta",
|
||||
"download_include_embedded_motion_videos": "Iegultie videoklipi",
|
||||
"download_include_embedded_motion_videos_description": "Iekļaut video, kas iebūvēti kustīgos fotoattēlos, kā atsevišķu failu",
|
||||
"download_notfound": "Lejupielāde nav atrasta",
|
||||
"download_paused": "Lejupielāde nopauzēta",
|
||||
"download_settings": "Lejupielāde",
|
||||
|
|
@ -607,6 +650,7 @@
|
|||
"enter_your_pin_code_subtitle": "Ievadi savu PIN kodu, lai piekļūtu slēgtajai mapei",
|
||||
"error": "Kļūda",
|
||||
"error_change_sort_album": "Neizdevās nomainīt albuma kārtošanas secību",
|
||||
"error_loading_image": "Kļūda, ielādējot attēlu",
|
||||
"error_loading_partners": "Kļūda, ielādējot partnerus: {error}",
|
||||
"error_saving_image": "Kļūda: {error}",
|
||||
"errors": {
|
||||
|
|
@ -640,7 +684,8 @@
|
|||
"unable_to_save_date_of_birth": "Neizdevās saglabāt dzimšanas datumu",
|
||||
"unable_to_scan_libraries": "Bibliotēku skenēšana neizdevās",
|
||||
"unable_to_scan_library": "Bibliotēkas skenēšana neizdevās",
|
||||
"unable_to_trash_asset": "Neizdevās pārvietot failu uz atkritni"
|
||||
"unable_to_trash_asset": "Neizdevās pārvietot failu uz atkritni",
|
||||
"unable_to_update_album_cover": "Nevar atjaunināt albuma vāciņu"
|
||||
},
|
||||
"exif": "Exif",
|
||||
"exif_bottom_sheet_description": "Pievienot Aprakstu...",
|
||||
|
|
@ -712,6 +757,10 @@
|
|||
"hashed_assets": "Faili ar jaucējvērtībām",
|
||||
"hashing": "Veido jaucējvērtības",
|
||||
"header_settings_field_validator_msg": "Vērtība nevar būt tukša",
|
||||
"header_settings_header_name_input": "Galvenes lauks",
|
||||
"header_settings_header_value_input": "Galvenes vērtība",
|
||||
"headers_settings_tile_subtitle": "Norādiet starpniekservera galvenes, kuras lietotnei jānosūta ar katru tīkla pieprasījumu",
|
||||
"headers_settings_tile_title": "Pielāgotas starpniekservera galvenes",
|
||||
"hide_all_people": "Paslēpt visas personas",
|
||||
"hide_gallery": "Paslēpt galeriju",
|
||||
"hide_named_person": "Paslēpt personu {name}",
|
||||
|
|
@ -742,7 +791,7 @@
|
|||
"ignore_icloud_photos_description": "iCloud uzglabātās fotogrāfijas netiks augšupielādētas Immich serverī",
|
||||
"image": "Attēls",
|
||||
"image_saved_successfully": "Attēls saglabāts",
|
||||
"image_viewer_page_state_provider_download_started": "Lejupielāde Uzsākta",
|
||||
"image_viewer_page_state_provider_download_started": "Lejupielāde uzsākta",
|
||||
"image_viewer_page_state_provider_download_success": "Lejupielāde izdevās",
|
||||
"image_viewer_page_state_provider_share_error": "Kopīgošanas Kļūda",
|
||||
"immich_logo": "Immich logo",
|
||||
|
|
@ -908,6 +957,7 @@
|
|||
"network_requirement_photos_upload": "Izmantot mobilo datu pārraidi, lai dublētu fotoattēlus",
|
||||
"network_requirement_videos_upload": "Izmantot mobilo datu pārraidi, lai dublētu video",
|
||||
"network_requirements": "Tīkla prasības",
|
||||
"network_requirements_updated": "Tīkla prasības ir mainījušās, atiestata dublēšanas rindu",
|
||||
"networking_settings": "Tīkla iestatījumi",
|
||||
"networking_subtitle": "Pārvaldīt servera galapunktu iestatījumus",
|
||||
"never": "nekad",
|
||||
|
|
@ -928,8 +978,12 @@
|
|||
"no_archived_assets_message": "Arhivē fotoattēlus un videoklipus, lai paslēptu tos no Fotoattēli skata",
|
||||
"no_assets_message": "NOKLIKŠĶINIET, LAI AUGŠUPIELĀDĒTU SAVU PIRMO FOTOATTĒLU",
|
||||
"no_assets_to_show": "Nav uzrādāmo aktīvu",
|
||||
"no_cast_devices_found": "Nav atrasta neviena pārraides ierīce",
|
||||
"no_checksum_local": "Nav pieejama kontrolsumma - nevar iegūt vietējos failus",
|
||||
"no_checksum_remote": "Nav pieejama kontrolsumma - nevar iegūt attālo failu",
|
||||
"no_duplicates_found": "Dublikāti netika atrasti.",
|
||||
"no_exif_info_available": "Nav pieejama exif informācija",
|
||||
"no_explore_results_message": "Augšupielādē vairāk fotogrāfiju, lai iepazītu savu kolekciju.",
|
||||
"no_name": "Nav nosaukuma",
|
||||
"no_notifications": "Nav paziņojumu",
|
||||
"no_places": "Nav atrašanās vietu",
|
||||
|
|
@ -1172,13 +1226,14 @@
|
|||
"search_page_your_activity": "Jūsu aktivitāte",
|
||||
"search_page_your_map": "Jūsu Karte",
|
||||
"search_people": "Meklēt personas",
|
||||
"search_rating": "Meklēt pēc vērtējuma...",
|
||||
"search_result_page_new_search_hint": "Jauns Meklējums",
|
||||
"search_settings": "Meklēt iestatījumos",
|
||||
"search_state": "Meklēt pēc štata...",
|
||||
"search_suggestion_list_smart_search_hint_1": "Viedā meklēšana pēc noklusējuma ir iespējota, lai meklētu metadatos, izmanto sintaksi ",
|
||||
"search_suggestion_list_smart_search_hint_2": "m:jūsu-meklēšanas-frāze",
|
||||
"search_type": "Meklēšanas veids",
|
||||
"search_your_photos": "Meklēt Jūsu fotoattēlus",
|
||||
"search_your_photos": "Meklēt fotoattēlos",
|
||||
"second": "Sekunde",
|
||||
"see_all_people": "Skatīt visas personas",
|
||||
"select_album_cover": "Izvēlieties albuma vāciņu",
|
||||
|
|
@ -1200,6 +1255,8 @@
|
|||
"server_privacy": "Servera privātums",
|
||||
"server_stats": "Servera statistika",
|
||||
"server_version": "Servera versija",
|
||||
"set_as_album_cover": "Iestatīt kā albuma vāciņu",
|
||||
"set_as_profile_picture": "Iestatīt kā profila attēlu",
|
||||
"set_date_of_birth": "Iestatīt dzimšanas datumu",
|
||||
"setting_image_viewer_help": "Detaļu skatītājs vispirms ielādē mazo sīktēlu, pēc tam ielādē vidēja lieluma priekšskatījumu (ja iespējots), visbeidzot ielādē oriģinālu (ja iespējots).",
|
||||
"setting_image_viewer_original_subtitle": "Iespējot sākotnējā pilnas izšķirtspējas attēla (liels!) ielādi. Atspējot, lai samazinātu datu lietojumu (gan tīklā, gan ierīces kešatmiņā).",
|
||||
|
|
@ -1227,7 +1284,7 @@
|
|||
"setup_pin_code": "Uzstādīt PIN kodu",
|
||||
"share": "Kopīgot",
|
||||
"share_add_photos": "Pievienot fotoattēlus",
|
||||
"share_assets_selected": "{count} izvēlēti",
|
||||
"share_assets_selected": "{count} atlasīti",
|
||||
"share_dialog_preparing": "Notiek sagatavošana...",
|
||||
"shared": "Kopīgots",
|
||||
"shared_album_activities_input_disable": "Komentāri atslēgti",
|
||||
|
|
@ -1317,7 +1374,9 @@
|
|||
"sort_title": "Nosaukums",
|
||||
"source": "Pirmkods",
|
||||
"stack": "Apvienot kaudzē",
|
||||
"start": "Sākt",
|
||||
"start_date": "Sākuma datums",
|
||||
"start_date_before_end_date": "Sākuma datumam jābūt pirms beigu datuma",
|
||||
"state": "Štats",
|
||||
"status": "Statuss",
|
||||
"stop_photo_sharing": "Beigt kopīgot jūsu fotogrāfijas?",
|
||||
|
|
@ -1386,6 +1445,7 @@
|
|||
"unlimited": "Neierobežots",
|
||||
"unnamed_album": "Albums bez nosaukuma",
|
||||
"unsaved_change": "Nesaglabāta izmaiņa",
|
||||
"unselect_all": "Atcelt visu atlasi",
|
||||
"unstack": "At-Stekot",
|
||||
"updated_at": "Atjaunināts",
|
||||
"updated_password": "Parole ir atjaunināta",
|
||||
|
|
@ -1426,6 +1486,7 @@
|
|||
"version_history": "Versiju vēsture",
|
||||
"version_history_item": "{version} uzstādīta {date}",
|
||||
"video": "Videoklips",
|
||||
"video_hover_setting_description": "Atskaņot video sīktēlu, kad peles kursors atrodas virs objekta. Pat ja funkcija ir atspējota, atskaņošanu var sākt, uzvirzot kursoru uz atskaņošanas ikonas.",
|
||||
"videos": "Videoklipi",
|
||||
"view": "Apskatīt",
|
||||
"view_album": "Skatīt Albumu",
|
||||
|
|
|
|||
2190
i18n/ml.json
2190
i18n/ml.json
File diff suppressed because it is too large
Load diff
512
i18n/nb_NO.json
512
i18n/nb_NO.json
File diff suppressed because it is too large
Load diff
15
i18n/nl.json
15
i18n/nl.json
|
|
@ -416,7 +416,7 @@
|
|||
"age_years": "{years, plural, other {Leeftijd #}}",
|
||||
"album_added": "Album toegevoegd",
|
||||
"album_added_notification_setting_description": "Ontvang een e-mailmelding wanneer je aan een gedeeld album wordt toegevoegd",
|
||||
"album_cover_updated": "Album cover is bijgewerkt",
|
||||
"album_cover_updated": "Albumomslag is bijgewerkt",
|
||||
"album_delete_confirmation": "Weet je zeker dat je het album {album} wilt verwijderen?",
|
||||
"album_delete_confirmation_description": "Als dit album gedeeld is, hebben andere gebruikers er geen toegang meer toe.",
|
||||
"album_deleted": "Album verwijderd",
|
||||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Back-up op de voorgrond aanzetten",
|
||||
"backup_controller_page_uploading_file_info": "Bestandsgegevens uploaden",
|
||||
"backup_err_only_album": "Kan het enige album niet verwijderen",
|
||||
"backup_error_sync_failed": "Synchronisatie mislukt. Kan back-up niet verwerken.",
|
||||
"backup_info_card_assets": "bestanden",
|
||||
"backup_manual_cancelled": "Geannuleerd",
|
||||
"backup_manual_in_progress": "Het uploaden is al bezig. Probeer het na een tijdje",
|
||||
|
|
@ -734,7 +735,7 @@
|
|||
"copy_to_clipboard": "Kopiëren naar klembord",
|
||||
"country": "Land",
|
||||
"cover": "Bedekken",
|
||||
"covers": "Covers",
|
||||
"covers": "Omslagen",
|
||||
"create": "Aanmaken",
|
||||
"create_album": "Album aanmaken",
|
||||
"create_album_page_untitled": "Naamloos",
|
||||
|
|
@ -820,7 +821,7 @@
|
|||
"disabled": "Uitgeschakeld",
|
||||
"disallow_edits": "Geen bewerkingen toestaan",
|
||||
"discord": "Discord",
|
||||
"discover": "Zoeken",
|
||||
"discover": "Zoek",
|
||||
"discovered_devices": "Gevonden apparaten",
|
||||
"dismiss_all_errors": "Negeer alle fouten",
|
||||
"dismiss_error": "Negeer fout",
|
||||
|
|
@ -840,7 +841,7 @@
|
|||
"download_failed": "Download mislukt",
|
||||
"download_finished": "Download voltooid",
|
||||
"download_include_embedded_motion_videos": "Ingesloten video's",
|
||||
"download_include_embedded_motion_videos_description": "Voeg video's toe die ingesloten zijn in bewegende foto's als een apart bestand",
|
||||
"download_include_embedded_motion_videos_description": "Voeg video's die in bewegingsfoto's zijn ingebed toe als een apart bestand",
|
||||
"download_notfound": "Download niet gevonden",
|
||||
"download_paused": "Download gepauseerd",
|
||||
"download_settings": "Downloaden",
|
||||
|
|
@ -1023,7 +1024,7 @@
|
|||
"unable_to_trash_asset": "Kan item niet naar prullenbak verplaatsen",
|
||||
"unable_to_unlink_account": "Kan account niet ontkoppelen",
|
||||
"unable_to_unlink_motion_video": "Kan bewegende video niet ontkoppelen",
|
||||
"unable_to_update_album_cover": "Kan album cover niet bijwerken",
|
||||
"unable_to_update_album_cover": "Kan albumomslag niet bijwerken",
|
||||
"unable_to_update_album_info": "Kan albumgegevens niet bijwerken",
|
||||
"unable_to_update_library": "Kan bibliotheek niet bijwerken",
|
||||
"unable_to_update_location": "Kan locatie niet bijwerken",
|
||||
|
|
@ -1749,7 +1750,7 @@
|
|||
"second": "Seconde",
|
||||
"see_all_people": "Bekijk alle mensen",
|
||||
"select": "Selecteer",
|
||||
"select_album_cover": "Selecteer album cover",
|
||||
"select_album_cover": "Selecteer albumomslag",
|
||||
"select_all": "Alles selecteren",
|
||||
"select_all_duplicates": "Selecteer alle duplicaten",
|
||||
"select_all_in": "Selecteer alles in {group}",
|
||||
|
|
@ -1778,7 +1779,7 @@
|
|||
"server_stats": "Serverstatistieken",
|
||||
"server_version": "Serverversie",
|
||||
"set": "Instellen",
|
||||
"set_as_album_cover": "Stel in als album cover",
|
||||
"set_as_album_cover": "Stel in als albumomslag",
|
||||
"set_as_featured_photo": "Instellen als uitgelichte foto",
|
||||
"set_as_profile_picture": "Instellen als profielfoto",
|
||||
"set_date_of_birth": "Geboortedatum instellen",
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Włącz kopię zapasową na pierwszym planie",
|
||||
"backup_controller_page_uploading_file_info": "Informacje o przesyłanym pliku",
|
||||
"backup_err_only_album": "Nie można usunąć jedynego albumu",
|
||||
"backup_error_sync_failed": "Synchronizacja nie powiodła się. Nie można wykonać kopii zapasowej.",
|
||||
"backup_info_card_assets": "zasoby",
|
||||
"backup_manual_cancelled": "Anulowano",
|
||||
"backup_manual_in_progress": "Przesyłanie już trwa. Spróbuj po pewnym czasie",
|
||||
|
|
|
|||
80
i18n/pt.json
80
i18n/pt.json
|
|
@ -368,7 +368,7 @@
|
|||
"trash_settings_description": "Gerir definições da reciclagem",
|
||||
"unlink_all_oauth_accounts": "Desvincular todas as contas OAuth",
|
||||
"unlink_all_oauth_accounts_description": "Lembre-se de desvincular todas as contas OAuth antes de migrar para um novo provedor.",
|
||||
"unlink_all_oauth_accounts_prompt": "Tem a certeza de que deseja desvincular todas as contas OAuth? Isso redefinirá o ID OAuth de cada utilizador e não poderá ser desfeito.",
|
||||
"unlink_all_oauth_accounts_prompt": "Tem a certeza de que deseja desvincular todas as contas OAuth? Isto irá redefinir o ID OAuth de cada utilizador e não poderá ser anulado.",
|
||||
"user_cleanup_job": "Limpeza de utilizadores",
|
||||
"user_delete_delay": "A conta e os ficheiros de <b>{user}</b> serão agendados para eliminação permanente dentro de {delay, plural, one {# dia} other {# dias}}.",
|
||||
"user_delete_delay_settings": "Atraso de eliminação",
|
||||
|
|
@ -402,8 +402,8 @@
|
|||
"advanced_settings_prefer_remote_title": "Preferir imagens do servidor",
|
||||
"advanced_settings_proxy_headers_subtitle": "Defina os cabeçalhos do proxy que o Immich deve enviar em todas comunicações com a rede",
|
||||
"advanced_settings_proxy_headers_title": "Cabeçalhos do Proxy",
|
||||
"advanced_settings_readonly_mode_subtitle": "Ativa o modo somente leitura, onde as fotos podem ser visualizadas. Recursos como selecionar várias imagens, partilhar, transmitir e excluir ficam deactivados. Ativar/Desativar o modo somente leitura via avatar do utilizador na janela principal",
|
||||
"advanced_settings_readonly_mode_title": "Modo somente leitura",
|
||||
"advanced_settings_readonly_mode_subtitle": "Ativa o modo só de leitura, onde as fotos apenas podem ser visualizadas. Funções como selecionar várias imagens, partilhar, transmitir e eliminar ficam deactivadas. Pode ativar ou desativar o modo só de leitura através da imagem de perfil do utilizador na janela principal",
|
||||
"advanced_settings_readonly_mode_title": "Modo só de leitura",
|
||||
"advanced_settings_self_signed_ssl_subtitle": "Não validar o certificado SSL com o endereço do servidor. Isto é necessário para certificados auto-assinados.",
|
||||
"advanced_settings_self_signed_ssl_title": "Permitir certificados SSL auto-assinados",
|
||||
"advanced_settings_sync_remote_deletions_subtitle": "Automaticamente eliminar ou restaurar um ficheiro neste dispositivo quando essa mesma ação for efetuada na web",
|
||||
|
|
@ -512,9 +512,9 @@
|
|||
"assets": "Ficheiros",
|
||||
"assets_added_count": "{count, plural, one {# ficheiro adicionado} other {# ficheiros adicionados}}",
|
||||
"assets_added_to_album_count": "{count, plural, one {# ficheiro adicionado} other {# ficheiros adicionados}} ao álbum",
|
||||
"assets_added_to_albums_count": "Adicionado {assetTotal, plural, one {# asset} other {# assets}} a {albumTotal, plural, one {# album} other {# albums}}",
|
||||
"assets_added_to_albums_count": "{assetTotal, plural, one {Foi adicionado # ficheiro} other {Foram adiciondos # ficheiros}} a {albumTotal, plural, one {# álbum} other {# albuns}}",
|
||||
"assets_cannot_be_added_to_album_count": "Não foi possível adicionar {count, plural, one {ficheiro} other {ficheiros}} ao álbum",
|
||||
"assets_cannot_be_added_to_albums": "{count, plural, one {Asset} other {Assets}} não pode ser adicionado a nenhum dos álbuns",
|
||||
"assets_cannot_be_added_to_albums": "{count, plural, one {Ficheiro não pode ser adicionado} other {Ficheiros não podem ser adiciondos}} a nenhum dos álbuns",
|
||||
"assets_count": "{count, plural, one {# ficheiro} other {# ficheiros}}",
|
||||
"assets_deleted_permanently": "{count} ficheiro(s) eliminado(s) permanentemente",
|
||||
"assets_deleted_permanently_from_server": "{count} ficheiro(s) eliminado(s) permanentemente do servidor Immich",
|
||||
|
|
@ -531,7 +531,7 @@
|
|||
"assets_trashed_count": "{count, plural, one {# ficheiro enviado} other {# ficheiros enviados}} para a reciclagem",
|
||||
"assets_trashed_from_server": "{count} ficheiro(s) do servidor Immich foi/foram enviados para a reciclagem",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {O ficheiro já fazia} other {Os ficheiros já faziam}} parte do álbum",
|
||||
"assets_were_part_of_albums_count": "{count, plural, one {Asset was} other {Assets were}} já faz parte dos álbuns",
|
||||
"assets_were_part_of_albums_count": "{count, plural, one {Ficheiro já fazia} other {Ficheiros já faziam}} parte dos álbuns",
|
||||
"authorized_devices": "Dispositivos Autorizados",
|
||||
"automatic_endpoint_switching_subtitle": "Conecte-se localmente quando estiver em uma rede uma Wi-Fi específica e use conexões alternativas em outras redes",
|
||||
"automatic_endpoint_switching_title": "Troca automática de URL",
|
||||
|
|
@ -589,7 +589,7 @@
|
|||
"backup_controller_page_remainder": "Restante",
|
||||
"backup_controller_page_remainder_sub": "Fotos e vídeos selecionados restantes para fazer backup",
|
||||
"backup_controller_page_server_storage": "Armazenamento no servidor",
|
||||
"backup_controller_page_start_backup": "Iniciar Backup",
|
||||
"backup_controller_page_start_backup": "Iniciar Cópia de Segurança",
|
||||
"backup_controller_page_status_off": "Backup automático desativado",
|
||||
"backup_controller_page_status_on": "Backup automático ativado",
|
||||
"backup_controller_page_storage_format": "{used} de {total} utilizado",
|
||||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Ativar backup",
|
||||
"backup_controller_page_uploading_file_info": "Enviando arquivo",
|
||||
"backup_err_only_album": "Não é possível remover apenas o álbum",
|
||||
"backup_error_sync_failed": "A sincronização falhou. Não é possível fazer cópia de segurança.",
|
||||
"backup_info_card_assets": "arquivos",
|
||||
"backup_manual_cancelled": "Cancelado",
|
||||
"backup_manual_in_progress": "Envio já está em progresso. Tente novamente mais tarde",
|
||||
|
|
@ -667,7 +668,7 @@
|
|||
"change_your_password": "Alterar a sua palavra-passe",
|
||||
"changed_visibility_successfully": "Visibilidade alterada com sucesso",
|
||||
"charging": "A carregar",
|
||||
"charging_requirement_mobile_backup": "Cópia de segurança de fundo necesssita que o dispositivo esteja a carregar",
|
||||
"charging_requirement_mobile_backup": "Cópia de segurança de fundo necessita que o dispositivo esteja a carregar",
|
||||
"check_corrupt_asset_backup": "Verificar por backups corrompidos",
|
||||
"check_corrupt_asset_backup_button": "Verificar",
|
||||
"check_corrupt_asset_backup_description": "Execute esta verificação somente em uma rede Wi-Fi e quando o backup de todos os arquivos já estiver concluído. O processo demora alguns minutos.",
|
||||
|
|
@ -906,7 +907,7 @@
|
|||
"error_delete_face": "Falha ao remover rosto do ficheiro",
|
||||
"error_getting_places": "Erro ao obter locais",
|
||||
"error_loading_image": "Erro ao carregar a imagem",
|
||||
"error_loading_partners": "Erro a carregar parceiros: {error}",
|
||||
"error_loading_partners": "Erro ao carregar parceiros: {error}",
|
||||
"error_saving_image": "Erro: {error}",
|
||||
"error_tag_face_bounding_box": "Erro ao marcar o rosto - não foi possível localizar o rosto",
|
||||
"error_title": "Erro - Algo correu mal",
|
||||
|
|
@ -939,7 +940,7 @@
|
|||
"failed_to_load_notifications": "Ocorreu um erro ao carregar notificações",
|
||||
"failed_to_load_people": "Ocorreu um erro ao carregar pessoas",
|
||||
"failed_to_remove_product_key": "Ocorreu um erro ao remover chave de produto",
|
||||
"failed_to_reset_pin_code": "Falha ao repor o código PIN",
|
||||
"failed_to_reset_pin_code": "Ocorreu um erro ao repor o código PIN",
|
||||
"failed_to_stack_assets": "Ocorreu um erro ao empilhar os ficheiros",
|
||||
"failed_to_unstack_assets": "Ocorreu um erro ao desempilhar ficheiros",
|
||||
"failed_to_update_notification_status": "Ocorreu um erro ao atualizar o estado das notificações",
|
||||
|
|
@ -948,7 +949,7 @@
|
|||
"paths_validation_failed": "Ocorreu um erro na validação de {paths, plural, one {# caminho} other {# caminhos}}",
|
||||
"profile_picture_transparent_pixels": "Imagem de perfil não pode ter pixeis transparentes. Por favor amplie e/ou mova a imagem.",
|
||||
"quota_higher_than_disk_size": "Definiu uma quota maior do que o tamanho do disco",
|
||||
"something_went_wrong": "Algo deu errado",
|
||||
"something_went_wrong": "Algo correu mal",
|
||||
"unable_to_add_album_users": "Não foi possível adicionar utilizadores ao álbum",
|
||||
"unable_to_add_assets_to_shared_link": "Não foi possível adicionar os ficheiros ao link partilhado",
|
||||
"unable_to_add_comment": "Não foi possível adicionar o comentário",
|
||||
|
|
@ -1087,12 +1088,12 @@
|
|||
"folder_not_found": "Pasta não encontrada",
|
||||
"folders": "Pastas",
|
||||
"folders_feature_description": "Navegar na vista de pastas por fotos e vídeos no sistema de ficheiros",
|
||||
"forgot_pin_code_question": "Esqueceu o seu PIN?",
|
||||
"forgot_pin_code_question": "Esqueceu-se do seu PIN?",
|
||||
"forward": "Para a frente",
|
||||
"gcast_enabled": "Google Cast",
|
||||
"gcast_enabled_description": "Esta funcionalidade requer o carregamento de recursos externos da Google para poder funcionar.",
|
||||
"general": "Geral",
|
||||
"geolocation_instruction_location": "Clique num ativo com coordenadas GPS para usar a sua localização ou seleccione um local diretamente do mapa",
|
||||
"geolocation_instruction_location": "Clique num ficheiro com coordenadas GPS para usar a sua localização ou selecione um local diretamente do mapa",
|
||||
"get_help": "Obter Ajuda",
|
||||
"get_wifiname_error": "Não foi possível obter o nome do Wi-Fi. Verifique se concedeu as permissões necessárias e se está conectado a uma rede Wi-Fi",
|
||||
"getting_started": "Primeiros Passos",
|
||||
|
|
@ -1225,7 +1226,7 @@
|
|||
"library_page_sort_title": "Título do álbum",
|
||||
"licenses": "Licenças",
|
||||
"light": "Claro",
|
||||
"like": "Gostar",
|
||||
"like": "Gosto",
|
||||
"like_deleted": "Gosto removido",
|
||||
"link_motion_video": "Relacionar video animado",
|
||||
"link_to_oauth": "Link do OAuth",
|
||||
|
|
@ -1254,7 +1255,7 @@
|
|||
"logged_in_as": "Utilizador atual: {user}",
|
||||
"logged_out_all_devices": "Sessão terminada em todos os dispositivos",
|
||||
"logged_out_device": "Sessão terminada no dispositivo",
|
||||
"login": "Iniciar sessão",
|
||||
"login": "Iniciar Sessão",
|
||||
"login_disabled": "Login desativado",
|
||||
"login_form_api_exception": "Erro de API. Verifique a URL do servidor e tente novamente.",
|
||||
"login_form_back_button_text": "Voltar",
|
||||
|
|
@ -1284,7 +1285,7 @@
|
|||
"look": "Estilo",
|
||||
"loop_videos": "Repetir vídeos",
|
||||
"loop_videos_description": "Ativar para repetir os vídeos automaticamente durante a exibição.",
|
||||
"main_branch_warning": "Está a utilizar uma versão de desenvolvimento, recomendamos vivamente que utilize uma versão estável!",
|
||||
"main_branch_warning": "Está a usar uma versão de desenvolvimento; recomendamos vivamente que use uma versão de lançamento!",
|
||||
"main_menu": "Menu Principal",
|
||||
"make": "Marca",
|
||||
"manage_geolocation": "Gerir localização",
|
||||
|
|
@ -1296,7 +1297,7 @@
|
|||
"manage_your_devices": "Gerir os seus dispositivos com sessão iniciada",
|
||||
"manage_your_oauth_connection": "Gerir a sua ligação ao OAuth",
|
||||
"map": "Mapa",
|
||||
"map_assets_in_bounds": "{count, plural, =0 {No photos in this area} one {# photo} other {# photos}}",
|
||||
"map_assets_in_bounds": "{count, plural, =0 {Sem fotos nesta área} one {# foto} other {# fotos}}",
|
||||
"map_cannot_get_user_location": "Impossível obter a sua localização",
|
||||
"map_location_dialog_yes": "Sim",
|
||||
"map_location_picker_page_use_location": "Utilizar esta localização",
|
||||
|
|
@ -1361,12 +1362,12 @@
|
|||
"my_albums": "Os meus álbuns",
|
||||
"name": "Nome",
|
||||
"name_or_nickname": "Nome ou alcunha",
|
||||
"network_requirement_photos_upload": "Usar dados móveis para fazer backup de fotos",
|
||||
"network_requirement_videos_upload": "Usar dados móveis para fazer backup de vídeos",
|
||||
"network_requirement_photos_upload": "Usar dados móveis para fazer cópia de segurança de fotos",
|
||||
"network_requirement_videos_upload": "Usar dados móveis para fazer cópia de segurança de vídeos",
|
||||
"network_requirements": "Requisitos de rede",
|
||||
"network_requirements_updated": "Requisitos de rede alterados, redefinindo fila de backup",
|
||||
"networking_settings": "Conexões",
|
||||
"networking_subtitle": "Gerencie a conexão do servidor",
|
||||
"network_requirements_updated": "Requisitos de rede alterados, a redefinir fila de cópia de segurança",
|
||||
"networking_settings": "Ligações",
|
||||
"networking_subtitle": "Gerir as ligações de rede do servidor",
|
||||
"never": "Nunca",
|
||||
"new_album": "Novo Álbum",
|
||||
"new_api_key": "Nova Chave de API",
|
||||
|
|
@ -1389,16 +1390,19 @@
|
|||
"no_assets_to_show": "Não há arquivos para exibir",
|
||||
"no_cast_devices_found": "Nenhum dispositivo de transmissão encontrado",
|
||||
"no_checksum_local": "Sem cálculo de verificação disponível - não pode capturar conteúdos locais",
|
||||
"no_checksum_remote": "Soma de verificação (checksum) não disponível - não é possível obter o recurso remoto",
|
||||
"no_duplicates_found": "Nenhum item duplicado foi encontrado.",
|
||||
"no_exif_info_available": "Sem informações exif disponíveis",
|
||||
"no_explore_results_message": "Carregue mais fotos para explorar a sua coleção.",
|
||||
"no_favorites_message": "Adicione aos favoritos para encontrar as suas melhores fotos e vídeos rapidamente",
|
||||
"no_libraries_message": "Crie uma biblioteca externa para ver as suas fotos e vídeos",
|
||||
"no_local_assets_found": "Sem cálculo de verificação disponível",
|
||||
"no_locked_photos_message": "Fotos e vídeos na pasta trancada estão ocultos e não serão exibidos enquanto explora ou pesquisa na biblioteca.",
|
||||
"no_name": "Sem nome",
|
||||
"no_notifications": "Sem notificações",
|
||||
"no_people_found": "Nenhuma pessoa encontrada",
|
||||
"no_places": "Sem lugares",
|
||||
"no_remote_assets_found": "Soma de verificação (checksum) não disponível - não é possível obter o recurso remoto",
|
||||
"no_results": "Sem resultados",
|
||||
"no_results_description": "Tente um sinónimo ou uma palavra-chave mais comum",
|
||||
"no_shared_albums_message": "Crie um álbum para partilhar fotos e vídeos com pessoas na sua rede",
|
||||
|
|
@ -1499,9 +1503,9 @@
|
|||
"permission_onboarding_permission_limited": "Permissão limitada. Para permitir que o Immich faça backups e gerencie sua galeria, conceda permissões para fotos e vídeos nas configurações.",
|
||||
"permission_onboarding_request": "O Immich requer autorização para ver as suas fotos e vídeos.",
|
||||
"person": "Pessoa",
|
||||
"person_age_months": "{months, plural, one {# month} other {# months}} idade",
|
||||
"person_age_year_months": "1 ano, {months, plural, one {# month} other {# months}} idade",
|
||||
"person_age_years": "{years, plural, other {# years}} idade",
|
||||
"person_age_months": "{months, plural, one {# month} other {# months}} de idade",
|
||||
"person_age_year_months": "1 ano, {months, plural, one {# month} other {# months}} de idade",
|
||||
"person_age_years": "{years, plural, other {# anos}} de idade",
|
||||
"person_birthdate": "Nasceu a {date}",
|
||||
"person_hidden": "{name}{hidden, select, true { (oculto)} other {}}",
|
||||
"photo_shared_all_users": "Parece que partilhou as suas fotos com todos os utilizadores ou não tem nenhum utilizador para partilhar.",
|
||||
|
|
@ -1542,7 +1546,7 @@
|
|||
"profile_drawer_client_out_of_date_minor": "O aplicativo está desatualizado. Por favor, atualize para a versão mais recente.",
|
||||
"profile_drawer_client_server_up_to_date": "Cliente e Servidor atualizados",
|
||||
"profile_drawer_github": "GitHub",
|
||||
"profile_drawer_readonly_mode": "Modo somente leitura ativado. Toque duas vezes no ícone do avatar do utilizador para sair.",
|
||||
"profile_drawer_readonly_mode": "Modo só de leitura ativado. Faça um toque longo no ícone do perfil do utilizador para sair.",
|
||||
"profile_drawer_server_out_of_date_major": "O servidor está desatualizado. Atualize para a versão principal mais recente.",
|
||||
"profile_drawer_server_out_of_date_minor": "O servidor está desatualizado. Atualize para a versão mais recente.",
|
||||
"profile_image_of_user": "Imagem de perfil de {user}",
|
||||
|
|
@ -1569,7 +1573,7 @@
|
|||
"purchase_lifetime_description": "Compra vitalícia",
|
||||
"purchase_option_title": "OPÇÕES DE COMPRA",
|
||||
"purchase_panel_info_1": "O desenvolvimento do Immich requer muito tempo e esforço, e temos engenheiros a tempo inteiro a trabalhar nele para melhorá-lo quanto possível. A nossa missão é para que o software de código aberto e práticas de negócio éticas se tornem numa fonte de rendimento sustentável para os desenvolvedores e criar um ecossistema que respeite a privacidade dos utilizadores e que ofereça alternativas reais a serviços cloud explorativos.",
|
||||
"purchase_panel_info_2": "Como estamos comprometidos a não adicionar acesso pago, esta compra não lhe dará acesso a nenhuma funcionalidade adicional do Immich. Contamos com utilizadores como você para dar suporte ao desenvolvimento contínuo do Immich.",
|
||||
"purchase_panel_info_2": "Uma vez que estamos empenhados em não adicionar barreiras de pagamento, esta compra não lhe dará quaisquer funcionalidades adicionais no Immich. Contamos com utilizadores como você para apoiar o desenvolvimento contínuo do Immich.",
|
||||
"purchase_panel_title": "Apoie o projeto",
|
||||
"purchase_per_server": "Por servidor",
|
||||
"purchase_per_user": "Por utilizador",
|
||||
|
|
@ -1581,7 +1585,7 @@
|
|||
"purchase_server_description_2": "Status de apoiante",
|
||||
"purchase_server_title": "Servidor",
|
||||
"purchase_settings_server_activated": "A chave de produto do servidor é gerida pelo administrador",
|
||||
"query_asset_id": "Consultar ID do recurso",
|
||||
"query_asset_id": "Consultar ID do ficheiro",
|
||||
"queue_status": "Em fila {count}/{total}",
|
||||
"rating": "Classificação por estrelas",
|
||||
"rating_clear": "Limpar classificação",
|
||||
|
|
@ -1589,8 +1593,8 @@
|
|||
"rating_description": "Mostrar a classificação EXIF no painel de informações",
|
||||
"reaction_options": "Opções de reação",
|
||||
"read_changelog": "Ler Novidades",
|
||||
"readonly_mode_disabled": "Modo somente leitura desativado",
|
||||
"readonly_mode_enabled": "Modo somente leitura ativado",
|
||||
"readonly_mode_disabled": "Modo só de leitura desativado",
|
||||
"readonly_mode_enabled": "Modo só de leitura ativado",
|
||||
"ready_for_upload": "Pronto para upload",
|
||||
"reassign": "Reatribuir",
|
||||
"reassigned_assets_to_existing_person": "Reatribuir {count, plural, one {# ficheiro} other {# ficheiros}} para {name, select, null {uma pessoa existente} other {{name}}}",
|
||||
|
|
@ -1616,6 +1620,7 @@
|
|||
"regenerating_thumbnails": "A atualizar miniaturas",
|
||||
"remote": "Remoto",
|
||||
"remote_assets": "Ficheiros Remotos",
|
||||
"remote_media_summary": "Sumário de Ficheiros Remotos",
|
||||
"remove": "Remover",
|
||||
"remove_assets_album_confirmation": "Tem a certeza de que deseja remover {count, plural, one {# ficheiro} other {# ficheiros}} do álbum?",
|
||||
"remove_assets_shared_link_confirmation": "Tem certeza de que deseja remover {count, plural, one {# ficheiro} other {# ficheiros}} deste link partilhado?",
|
||||
|
|
@ -1653,9 +1658,9 @@
|
|||
"reset_password": "Redefinir palavra-passe",
|
||||
"reset_people_visibility": "Redefinir pessoas ocultas",
|
||||
"reset_pin_code": "Repor código PIN",
|
||||
"reset_pin_code_description": "Se esqueceu o seu código PIN, pode entrar em contato com o administrador do servidor para o repor",
|
||||
"reset_pin_code_description": "Se esqueceu o seu código PIN, pode entrar em contacto com o administrador do servidor para o repor",
|
||||
"reset_pin_code_success": "Código PIN redefinido com sucesso",
|
||||
"reset_pin_code_with_password": "Pode sempre repor o seu código PIN com a sua senha",
|
||||
"reset_pin_code_with_password": "Pode sempre repor o seu código PIN com a sua palavra-passe",
|
||||
"reset_sqlite": "Reiniciar Base de Dados SQLite",
|
||||
"reset_sqlite_confirmation": "Tem a certeza de que quer reiniciar a base de dados SQLite? Vai ter de terminar a sessão e entrar outra vez para sincronizar os dados de novo",
|
||||
"reset_sqlite_success": "Base de dados SQLite reiniciada com sucesso",
|
||||
|
|
@ -1668,10 +1673,10 @@
|
|||
"restore_user": "Restaurar utilizador",
|
||||
"restored_asset": "Ficheiro restaurado",
|
||||
"resume": "Continuar",
|
||||
"resume_paused_jobs": "Continuar {count, plural, one {# trabalho em pausa} other {# trabalhos pausados}}",
|
||||
"resume_paused_jobs": "Continuar {count, plural, one {# trabalho em pausa} other {# trabalhos em pausa}}",
|
||||
"retry_upload": "Tentar carregar novamente",
|
||||
"review_duplicates": "Rever itens duplicados",
|
||||
"review_large_files": "Rever arquivos grandes",
|
||||
"review_large_files": "Rever ficheiros grandes",
|
||||
"role": "Função",
|
||||
"role_editor": "Editor",
|
||||
"role_viewer": "Visualizador",
|
||||
|
|
@ -1856,7 +1861,7 @@
|
|||
"shared_link_info_chip_metadata": "EXIF",
|
||||
"shared_link_manage_links": "Gerenciar links compartilhados",
|
||||
"shared_link_options": "Opções de link partilhado",
|
||||
"shared_link_password_description": "Exigir uma senha para aceder a este link partilhado",
|
||||
"shared_link_password_description": "Exigir uma palavra-passe para aceder a este link partilhado",
|
||||
"shared_links": "Links partilhados",
|
||||
"shared_links_description": "Partilhar fotos e videos com um link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# Fotos & videos partilhados.}}",
|
||||
|
|
@ -1947,7 +1952,7 @@
|
|||
"sync_albums_manual_subtitle": "Sincronizar todas as fotos e vídeos enviados para o álbum de backup selecionado",
|
||||
"sync_local": "Sincronização Local",
|
||||
"sync_remote": "Sincronização Remota",
|
||||
"sync_status": "Status da sincronização",
|
||||
"sync_status": "Estado da sincronização",
|
||||
"sync_status_subtitle": "Ver e gerir o sistema de sincronização",
|
||||
"sync_upload_album_setting_subtitle": "Crie e envie suas fotos e vídeos para o álbum selecionado no Immich",
|
||||
"tag": "Etiqueta",
|
||||
|
|
@ -2125,5 +2130,6 @@
|
|||
"yes": "Sim",
|
||||
"you_dont_have_any_shared_links": "Não tem links partilhados",
|
||||
"your_wifi_name": "Nome da sua rede Wi-Fi",
|
||||
"zoom_image": "Ampliar/Reduzir imagem"
|
||||
"zoom_image": "Ampliar/Reduzir imagem",
|
||||
"zoom_to_bounds": "Aproximar aos limites"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Ativar backup automático",
|
||||
"backup_controller_page_uploading_file_info": "Informações do arquivo",
|
||||
"backup_err_only_album": "Não é possível remover o único álbum",
|
||||
"backup_error_sync_failed": "A sincronização falhou. Não foi possível processar o backup.",
|
||||
"backup_info_card_assets": "arquivos",
|
||||
"backup_manual_cancelled": "Cancelado",
|
||||
"backup_manual_in_progress": "Envio já está em progresso. Tente novamente mais tarde",
|
||||
|
|
|
|||
|
|
@ -468,7 +468,7 @@
|
|||
"app_bar_signout_dialog_content": "Ești sigur că vrei să te deconectezi?",
|
||||
"app_bar_signout_dialog_ok": "Da",
|
||||
"app_bar_signout_dialog_title": "Deconectare",
|
||||
"app_settings": "Setări Aplicație",
|
||||
"app_settings": "Setări aplicație",
|
||||
"appears_in": "Apare în",
|
||||
"apply_count": "Aplică ({count, number})",
|
||||
"archive": "Arhivă",
|
||||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Activează backup-ul în prim-plan",
|
||||
"backup_controller_page_uploading_file_info": "Informații încărcare fișier",
|
||||
"backup_err_only_album": "Nu poți șterge singurul album",
|
||||
"backup_error_sync_failed": "Sincronizarea a eșuat. Nu se poate procesa copia de rezervă.",
|
||||
"backup_info_card_assets": "resurse",
|
||||
"backup_manual_cancelled": "Anulat",
|
||||
"backup_manual_in_progress": "Încărcarea este deja în curs. Încearcă din nou mai târziu",
|
||||
|
|
|
|||
|
|
@ -599,7 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Включить",
|
||||
"backup_controller_page_uploading_file_info": "Информация о загружаемом файле",
|
||||
"backup_err_only_album": "Невозможно удалить единственный альбом",
|
||||
"backup_error_sync_failed": "Сбой синхронизации. Невозможно запустить резервное копирование.",
|
||||
"backup_error_sync_failed": "Сбой синхронизации. Невозможно выполнить резервное копирование.",
|
||||
"backup_info_card_assets": "объектов",
|
||||
"backup_manual_cancelled": "Отменено",
|
||||
"backup_manual_in_progress": "Загрузка в процессе. Попробуйте позже",
|
||||
|
|
@ -732,7 +732,7 @@
|
|||
"copy_link": "Копировать ссылку",
|
||||
"copy_link_to_clipboard": "Скопировать ссылку в буфер обмена",
|
||||
"copy_password": "Скопировать пароль",
|
||||
"copy_to_clipboard": "Скопировать настройки в буфер обмена",
|
||||
"copy_to_clipboard": "Скопировать в буфер обмена",
|
||||
"country": "Страна",
|
||||
"cover": "Обложка",
|
||||
"covers": "Обложки",
|
||||
|
|
@ -1779,7 +1779,7 @@
|
|||
"server_stats": "Статистика сервера",
|
||||
"server_version": "Версия сервера",
|
||||
"set": "Установить",
|
||||
"set_as_album_cover": "Установить в качестве обложки альбома",
|
||||
"set_as_album_cover": "Установить как обложку альбома",
|
||||
"set_as_featured_photo": "Установить как основное фото",
|
||||
"set_as_profile_picture": "Установить как фото профиля",
|
||||
"set_date_of_birth": "Установить дату рождения",
|
||||
|
|
@ -1969,7 +1969,7 @@
|
|||
"theme": "Тема",
|
||||
"theme_selection": "Выбор темы",
|
||||
"theme_selection_description": "Автоматически устанавливать светлую или тёмную тему в зависимости от настроек вашего браузера",
|
||||
"theme_setting_asset_list_storage_indicator_title": "Показать индикатор хранилища на плитках объектов",
|
||||
"theme_setting_asset_list_storage_indicator_title": "Отображать индикатор хранилища на плитках объектов",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Количество объектов в строке ({count})",
|
||||
"theme_setting_colorful_interface_subtitle": "Добавить оттенок к фону.",
|
||||
"theme_setting_colorful_interface_title": "Цвет фона",
|
||||
|
|
|
|||
|
|
@ -497,7 +497,7 @@
|
|||
"asset_list_layout_settings_group_by_month_day": "Mesiac + deň",
|
||||
"asset_list_layout_sub_title": "Rozvrhnutie",
|
||||
"asset_list_settings_subtitle": "Nastavenia rozloženia mriežky fotografií",
|
||||
"asset_list_settings_title": "Fotografická mriežka",
|
||||
"asset_list_settings_title": "Mriežka fotografií",
|
||||
"asset_offline": "Médium je offline",
|
||||
"asset_offline_description": "Toto externý obsah sa už nenachádza na disku. Požiadajte o pomoc svojho správcu Immich.",
|
||||
"asset_restored_successfully": "Položky boli úspešne obnovené",
|
||||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Povoliť zálohovanie na popredí",
|
||||
"backup_controller_page_uploading_file_info": "Nahrávaný súbor",
|
||||
"backup_err_only_album": "Nie je možné odstrániť jediný vybraný album",
|
||||
"backup_error_sync_failed": "Synchronizácia sa nepodarila. Nie je možné spracovať zálohu.",
|
||||
"backup_info_card_assets": "položiek",
|
||||
"backup_manual_cancelled": "Zrušené",
|
||||
"backup_manual_in_progress": "Nahrávanie už prebieha. Vyskúšajte neskôr",
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Vklopite varnostno kopiranje v ospredju",
|
||||
"backup_controller_page_uploading_file_info": "Nalaganje podatkov o datoteki",
|
||||
"backup_err_only_album": "Edinega albuma ni mogoče odstraniti",
|
||||
"backup_error_sync_failed": "Sinhronizacija ni uspela. Varnostne kopije ni mogoče obdelati.",
|
||||
"backup_info_card_assets": "sredstva",
|
||||
"backup_manual_cancelled": "Preklicano",
|
||||
"backup_manual_in_progress": "Nalaganje že poteka. Poskusite čez nekaj časa",
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
"add_to_album": "Lägg till i album",
|
||||
"add_to_album_bottom_sheet_added": "Tillagd till {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Redan i {album}",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "Vissa lokala tillgångar kunde inte läggas till i albumet",
|
||||
"add_to_album_toggle": "Växla val för {album}",
|
||||
"add_to_albums": "Lägg till i album",
|
||||
"add_to_albums_count": "Lägg till i album ({count})",
|
||||
|
|
@ -598,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Aktivera automatisk säkerhetskopiering",
|
||||
"backup_controller_page_uploading_file_info": "Laddar upp filinformation",
|
||||
"backup_err_only_album": "Kan inte ta bort det enda albumet",
|
||||
"backup_error_sync_failed": "Synkroniseringen misslyckades. Det går inte att bearbeta säkerhetskopian.",
|
||||
"backup_info_card_assets": "objekt",
|
||||
"backup_manual_cancelled": "Avbrutet",
|
||||
"backup_manual_in_progress": "Uppladdning pågår redan. Försök igen om en liten stund",
|
||||
|
|
|
|||
22
i18n/ta.json
22
i18n/ta.json
|
|
@ -28,6 +28,7 @@
|
|||
"add_to_album": "ஆல்பமில் சேர்க்க",
|
||||
"add_to_album_bottom_sheet_added": "{album}-இல் சேர்க்கப்பட்டது",
|
||||
"add_to_album_bottom_sheet_already_exists": "ஏற்கனவே {album}-இல் உள்ளது",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "சில உள்ளக சொத்துக்களை ஆல்பத்தில் சேர்க்க முடியவில்லை",
|
||||
"add_to_album_toggle": "{album} க்கான தேர்வை மாற்று",
|
||||
"add_to_albums": "ஆல்பத்தில் சேர்",
|
||||
"add_to_albums_count": "ஆல்பங்களில் சேர்({count})",
|
||||
|
|
@ -39,16 +40,16 @@
|
|||
"admin": {
|
||||
"add_exclusion_pattern_description": "விலக்கு வடிவங்களைச் சேர்க்கவும். *, **, மற்றும் ? ஆதரிக்கப்படுகிறது. \"Raw\" என்ற பெயரிடப்பட்ட எந்த கோப்பகத்திலும் உள்ள எல்லா கோப்புகளையும் புறக்கணிக்க, \"**/Raw/**\" ஐப் பயன்படுத்தவும். \".tif\" இல் முடியும் எல்லா கோப்புகளையும் புறக்கணிக்க, \"**/*.tif\" ஐப் பயன்படுத்தவும். ஒரு முழுமையான பாதையை புறக்கணிக்க, \"/path/to/ignore/**\" ஐப் பயன்படுத்தவும்.",
|
||||
"admin_user": "நிர்வாக பயனர்",
|
||||
"asset_offline_description": "இந்த வெளிப்புற நூலக சொத்து இனி வட்டில் காணப்படவில்லை மற்றும் குப்பைக்கு நகர்த்தப்பட்டுள்ளது. கோப்பு நூலகத்திற்குள் நகர்த்தப்பட்டிருந்தால், புதிய தொடர்புடைய சொத்துக்கான உங்கள் காலவரிசையை சரிபார்க்கவும். இந்த சொத்தை மீட்டெடுக்க, கீழேயுள்ள கோப்பு பாதையை இம்மிச் மூலம் அணுகலாம் மற்றும் நூலகத்தை ச்கேன் செய்ய முடியும் என்பதை உறுதிப்படுத்தவும்.",
|
||||
"authentication_settings": "அடையாள உறுதிப்படுத்தல் அமைப்புகள் (செட்டிங்ஸ்)",
|
||||
"authentication_settings_description": "கடவுச்சொல், OAuth, மற்றும் பிற அடையாள அமைப்புகள்",
|
||||
"authentication_settings_disable_all": "எல்லா உள்நுழைவு முறைகளையும் நிச்சயமாக முடக்க விரும்புகிறீர்களா? உள்நுழைவு முற்றிலும் முடக்கப்படும்.",
|
||||
"authentication_settings_reenable": "மீண்டும் இயக்க, <link> சர்வர் கட்டளை</link> பயன்படுத்தவும்.",
|
||||
"asset_offline_description": "இந்த வெளிப்புற நூலகச் சொத்து (external library asset) இனி கோப்புப் பதிப்பில் காணப்படவில்லை மற்றும் குப்பைத்தொட்டியில் (trash) நகர்த்தப்பட்டுள்ளது.கோப்பு நூலகத்தில் உள்ளே நகர்த்தப்பட்டிருந்தால், புதிய இணை சொத்தை (corresponding asset) கண்டுபிடிக்க உங்கள் காலவரிசையை (timeline) சரிபார்க்கவும். இந்த சொத்தை மீட்டமைக்க, கீழே உள்ள கோப்புப் பாதை Immich மூலம் அணுகக்கூடியதா என்பதை உறுதி செய்து, நூலகத்தை (library) மீண்டும் ஸ்கேன் செய்யவும்.",
|
||||
"authentication_settings": "அங்கீகார அமைப்புகள்",
|
||||
"authentication_settings_description": "அடையாளச் சொல்லுகள் (Password), OAuth மற்றும் பிற அங்கீகார அமைப்புகளை நிர்வகிக்கவும்",
|
||||
"authentication_settings_disable_all": "நீங்கள் உண்மையில் அனைத்து உள்நுழைவு முறைகளையும் முடக்க விரும்புகிறீர்களா? உள்நுழைவு முழுமையாக முடக்கப்படும்.",
|
||||
"authentication_settings_reenable": "மீண்டும் செயல்படுத்த, <link>சேவையகம் கட்டளை</link> பயன்படுத்தவும்.",
|
||||
"background_task_job": "பின்னணி பணிகள்",
|
||||
"backup_database": "தரவுத்தள காப்புப்பிரதியை உருவாக்கு",
|
||||
"backup_database_enable_description": "தரவுத்தள திணிப்புகள் இயக்கவும்",
|
||||
"backup_keep_last_amount": "வைத்திருக்க முந்தைய திணிப்புகள் அளவு",
|
||||
"backup_onboarding_1_description": "மேகக்கட்டத்தில் அல்லது மற்றொரு உடல் இடத்தில் ஆஃப்சைட் நகல்.",
|
||||
"backup_database": "தரவுத்தள நகல் உருவாக்கவும்",
|
||||
"backup_database_enable_description": "தரவுத்தள நகல்களை இயக்கவும்",
|
||||
"backup_keep_last_amount": "வைத்திருக்க முந்தைய நகல்களின் அளவு",
|
||||
"backup_onboarding_1_description": "மேகம் அல்லது வேறு இடத்தில் நகல்.",
|
||||
"backup_onboarding_2_description": "வெவ்வேறு சாதனங்களில் உள்ள நகல் பிரதிகள். இதில் முக்கிய கோப்புகள் மற்றும் அந்தக் கோப்புகளின் நகல் காப்புப்பிரதி ஆகியவை அடங்கும்.",
|
||||
"backup_onboarding_3_description": "உங்கள் தரவின் மொத்த கோப்புகள் அசல் மற்றும் நகல்கள் உட்பட. இதில் 1 வெளிப்புற நகல் மற்றும் 2 சாதனப் பிரதிகள் அடங்கும்.",
|
||||
"backup_onboarding_description": "உங்கள் தரவை பாதுகாப்பதற்காக ஒரு <backblaze-link>3-2-1 காப்புப் பிரதி</backblaze-link> பரிந்துரைக்கப்படுகிறது. முழுமையான காப்பு பாதுகாப்பு தீர்விற்காக, நீங்கள் பதிவேற்றிய புகைப்படங்கள்/வீடியோக்கள் மற்றும் Immich தரவுத்தளத்தின் நகல்களையும் வைத்திருக்க வேண்டும்.",
|
||||
|
|
@ -56,7 +57,7 @@
|
|||
"backup_onboarding_parts_title": "3-2-1 காப்புப்பிரதியில் பின்வருவன அடங்கும்:",
|
||||
"backup_onboarding_title": "காப்புப்பிரதிகள்",
|
||||
"backup_settings": "தரவுத்தள திணிப்பு அமைப்புகள்",
|
||||
"backup_settings_description": "தரவுத்தள திணிப்பு அமைப்புகளை நிர்வகிக்கவும்",
|
||||
"backup_settings_description": "தரவுத்தள நகல் அமைப்புகளை நிர்வகிக்கவும்",
|
||||
"cleared_jobs": "முடித்த வேலைகள்: {job}",
|
||||
"config_set_by_file": "கட்டமைப்பு, தற்போது ஒரு கட்டமைப்பு கோப்பு மூலம் அமைக்கப்பட்டுள்ளது",
|
||||
"confirm_delete_library": "{library} படங்கள் நூலகத்தை நிச்சயமாக நீக்க விரும்புகிறீர்களா?",
|
||||
|
|
@ -598,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "முன்புற காப்புப்பிரதியை இயக்கவும்",
|
||||
"backup_controller_page_uploading_file_info": "கோப்பு தகவலைப் பதிவேற்றுகிறது",
|
||||
"backup_err_only_album": "ஒரே ஆல்பத்தை அகற்ற முடியாது",
|
||||
"backup_error_sync_failed": "ஒத்திசைவு தோல்வியுற்றது. காப்புப்பிரதியை செயலாக்க முடியாது.",
|
||||
"backup_info_card_assets": "சொத்துக்கள்",
|
||||
"backup_manual_cancelled": "ரத்து செய்யப்பட்டது",
|
||||
"backup_manual_in_progress": "ஏற்கனவே முன்னேற்றத்தில் பதிவேற்றவும். சிறிது நேரம் கழித்து முயற்சிக்கவும்",
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
"add_to_album": "Albüme ekle",
|
||||
"add_to_album_bottom_sheet_added": "{album} albümüne eklendi",
|
||||
"add_to_album_bottom_sheet_already_exists": "Zaten {album} albümüne ekli",
|
||||
"add_to_album_bottom_sheet_some_local_assets": "Bazı yerel öğeler albüme eklenemedi",
|
||||
"add_to_album_toggle": "{album} için seçimi değiştir",
|
||||
"add_to_albums": "Albümlere ekle",
|
||||
"add_to_albums_count": "{count} albümlerine ekle",
|
||||
|
|
@ -574,16 +575,16 @@
|
|||
"backup_controller_page_background_turn_off": "Arka plan hizmetini kapat",
|
||||
"backup_controller_page_background_turn_on": "Arka plan hizmetini aç",
|
||||
"backup_controller_page_background_wifi": "Sadece Wi-Fi",
|
||||
"backup_controller_page_backup": "Yedekle",
|
||||
"backup_controller_page_backup": "Yedek",
|
||||
"backup_controller_page_backup_selected": "Seçilen: ",
|
||||
"backup_controller_page_backup_sub": "Yedeklenen öğeler",
|
||||
"backup_controller_page_backup_sub": "Yedeklenen fotoğraflar ve videolar",
|
||||
"backup_controller_page_created": "Oluşturma tarihi: {date}",
|
||||
"backup_controller_page_desc_backup": "Uygulamayı açtığınızda yeni öğelerin sunucuya otomatik olarak yüklenmesi için ön planda yedeklemeyi açın.",
|
||||
"backup_controller_page_excluded": "Hariç tutuldu: ",
|
||||
"backup_controller_page_failed": "Başarısız ({count})",
|
||||
"backup_controller_page_filename": "Dosya adı: {filename} [{size}]",
|
||||
"backup_controller_page_id": "KNu: {id}",
|
||||
"backup_controller_page_info": "Yedekleme bilgileri",
|
||||
"backup_controller_page_info": "Yedekleme Bilgileri",
|
||||
"backup_controller_page_none_selected": "Hiçbiri seçilmedi",
|
||||
"backup_controller_page_remainder": "Kalan",
|
||||
"backup_controller_page_remainder_sub": "Seçili albümlerden yedeklenecek kalan öğeler",
|
||||
|
|
@ -598,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "Ön planda yedeklemeyi aç",
|
||||
"backup_controller_page_uploading_file_info": "Dosya bilgisi yükleniyor",
|
||||
"backup_err_only_album": "Tek albüm kaldırılamaz",
|
||||
"backup_error_sync_failed": "Senkronizasyon başarısız. Yedekleme işlemi gerçekleştirilemiyor.",
|
||||
"backup_info_card_assets": "öğeler",
|
||||
"backup_manual_cancelled": "İptal Edildi",
|
||||
"backup_manual_in_progress": "Yükleme halihazırda devam ediyor. Bir süre sonra deneyin",
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "開啟前台備份",
|
||||
"backup_controller_page_uploading_file_info": "上傳中的檔案資訊",
|
||||
"backup_err_only_album": "不能移除唯一的相簿",
|
||||
"backup_error_sync_failed": "同步失敗。 無法處理備份。",
|
||||
"backup_info_card_assets": "個媒體",
|
||||
"backup_manual_cancelled": "已取消",
|
||||
"backup_manual_in_progress": "上傳正在進行中,請稍後再試",
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@
|
|||
"backup_controller_page_turn_on": "开启前台备份",
|
||||
"backup_controller_page_uploading_file_info": "正在上传中的文件信息",
|
||||
"backup_err_only_album": "不能移除唯一的一个相册",
|
||||
"backup_error_sync_failed": "同步失败。无法处理备份。",
|
||||
"backup_info_card_assets": "项",
|
||||
"backup_manual_cancelled": "已取消",
|
||||
"backup_manual_in_progress": "上传正在进行中,请稍后再试",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "immich-ml"
|
||||
version = "2.0.0"
|
||||
version = "2.0.1"
|
||||
description = ""
|
||||
authors = [{ name = "Hau Tran", email = "alex.tran1502@gmail.com" }]
|
||||
requires-python = ">=3.10,<4.0"
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package app.alextran.immich
|
||||
|
||||
import android.app.Application
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import androidx.work.Configuration
|
||||
import androidx.work.WorkManager
|
||||
import app.alextran.immich.background.BackgroundEngineLock
|
||||
import app.alextran.immich.background.BackgroundWorkerApiImpl
|
||||
|
||||
class ImmichApp : Application() {
|
||||
|
|
@ -17,6 +20,11 @@ class ImmichApp : Application() {
|
|||
// As a workaround, we also run a backup check when initializing the application
|
||||
|
||||
ContentObserverWorker.startBackupWorker(context = this, delayMilliseconds = 0)
|
||||
BackgroundWorkerApiImpl.enqueueBackgroundWorker(this)
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
// We can only check the engine count and not the status of the lock here,
|
||||
// as the previous start might have been killed without unlocking.
|
||||
if (BackgroundEngineLock.connectEngines > 0) return@postDelayed
|
||||
BackgroundWorkerApiImpl.enqueueBackgroundWorker(this)
|
||||
}, 5000)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,43 +8,46 @@ import java.util.concurrent.atomic.AtomicInteger
|
|||
private const val TAG = "BackgroundEngineLock"
|
||||
|
||||
class BackgroundEngineLock(context: Context) : BackgroundWorkerLockApi, FlutterPlugin {
|
||||
private val ctx: Context = context.applicationContext
|
||||
private val ctx: Context = context.applicationContext
|
||||
|
||||
companion object {
|
||||
companion object {
|
||||
|
||||
private var engineCount = AtomicInteger(0)
|
||||
private var engineCount = AtomicInteger(0)
|
||||
|
||||
private fun checkAndEnforceBackgroundLock(ctx: Context) {
|
||||
// work manager task is running while the main app is opened, cancel the worker
|
||||
if (BackgroundWorkerPreferences(ctx).isLocked() &&
|
||||
engineCount.get() > 1 &&
|
||||
BackgroundWorkerApiImpl.isBackgroundWorkerRunning()
|
||||
) {
|
||||
Log.i(TAG, "Background worker is locked, cancelling the background worker")
|
||||
BackgroundWorkerApiImpl.cancelBackgroundWorker(ctx)
|
||||
}
|
||||
}
|
||||
val connectEngines: Int
|
||||
get() = engineCount.get()
|
||||
|
||||
private fun checkAndEnforceBackgroundLock(ctx: Context) {
|
||||
// work manager task is running while the main app is opened, cancel the worker
|
||||
if (BackgroundWorkerPreferences(ctx).isLocked() &&
|
||||
connectEngines > 1 &&
|
||||
BackgroundWorkerApiImpl.isBackgroundWorkerRunning()
|
||||
) {
|
||||
Log.i(TAG, "Background worker is locked, cancelling the background worker")
|
||||
BackgroundWorkerApiImpl.cancelBackgroundWorker(ctx)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun lock() {
|
||||
BackgroundWorkerPreferences(ctx).setLocked(true)
|
||||
checkAndEnforceBackgroundLock(ctx)
|
||||
Log.i(TAG, "Background worker is locked")
|
||||
}
|
||||
override fun lock() {
|
||||
BackgroundWorkerPreferences(ctx).setLocked(true)
|
||||
checkAndEnforceBackgroundLock(ctx)
|
||||
Log.i(TAG, "Background worker is locked")
|
||||
}
|
||||
|
||||
override fun unlock() {
|
||||
BackgroundWorkerPreferences(ctx).setLocked(false)
|
||||
Log.i(TAG, "Background worker is unlocked")
|
||||
}
|
||||
override fun unlock() {
|
||||
BackgroundWorkerPreferences(ctx).setLocked(false)
|
||||
Log.i(TAG, "Background worker is unlocked")
|
||||
}
|
||||
|
||||
override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
||||
checkAndEnforceBackgroundLock(binding.applicationContext)
|
||||
engineCount.incrementAndGet()
|
||||
Log.i(TAG, "Flutter engine attached. Attached Engines count: $engineCount")
|
||||
}
|
||||
override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
||||
checkAndEnforceBackgroundLock(binding.applicationContext)
|
||||
engineCount.incrementAndGet()
|
||||
Log.i(TAG, "Flutter engine attached. Attached Engines count: $engineCount")
|
||||
}
|
||||
|
||||
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
||||
engineCount.decrementAndGet()
|
||||
Log.i(TAG, "Flutter engine detached. Attached Engines count: $engineCount")
|
||||
}
|
||||
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
||||
engineCount.decrementAndGet()
|
||||
Log.i(TAG, "Flutter engine detached. Attached Engines count: $engineCount")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,8 +35,8 @@ platform :android do
|
|||
task: 'bundle',
|
||||
build_type: 'Release',
|
||||
properties: {
|
||||
"android.injected.version.code" => 3020,
|
||||
"android.injected.version.name" => "2.0.0",
|
||||
"android.injected.version.code" => 3021,
|
||||
"android.injected.version.name" => "2.0.1",
|
||||
}
|
||||
)
|
||||
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ platform :ios do
|
|||
path: "./Runner.xcodeproj",
|
||||
)
|
||||
increment_version_number(
|
||||
version_number: "2.0.0"
|
||||
version_number: "2.0.1"
|
||||
)
|
||||
increment_build_number(
|
||||
build_number: latest_testflight_build_number + 1,
|
||||
|
|
|
|||
|
|
@ -6,11 +6,12 @@ import 'package:immich_mobile/utils/isolate.dart';
|
|||
import 'package:worker_manager/worker_manager.dart';
|
||||
|
||||
typedef SyncCallback = void Function();
|
||||
typedef SyncCallbackWithResult<T> = void Function(T result);
|
||||
typedef SyncErrorCallback = void Function(String error);
|
||||
|
||||
class BackgroundSyncManager {
|
||||
final SyncCallback? onRemoteSyncStart;
|
||||
final SyncCallback? onRemoteSyncComplete;
|
||||
final SyncCallbackWithResult<bool?>? onRemoteSyncComplete;
|
||||
final SyncErrorCallback? onRemoteSyncError;
|
||||
|
||||
final SyncCallback? onLocalSyncStart;
|
||||
|
|
@ -156,15 +157,18 @@ class BackgroundSyncManager {
|
|||
debugLabel: 'remote-sync',
|
||||
);
|
||||
return _syncTask!
|
||||
.then((result) => result ?? false)
|
||||
.whenComplete(() {
|
||||
onRemoteSyncComplete?.call();
|
||||
_syncTask = null;
|
||||
.then((result) {
|
||||
final success = result ?? false;
|
||||
onRemoteSyncComplete?.call(success);
|
||||
return success;
|
||||
})
|
||||
.catchError((error) {
|
||||
onRemoteSyncError?.call(error.toString());
|
||||
_syncTask = null;
|
||||
return false;
|
||||
})
|
||||
.whenComplete(() {
|
||||
_syncTask = null;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ class SyncStreamRepository extends DriftDatabaseRepository {
|
|||
await _db.remoteAssetEntity.deleteAll();
|
||||
await _db.remoteExifEntity.deleteAll();
|
||||
await _db.stackEntity.deleteAll();
|
||||
await _db.authUserEntity.deleteAll();
|
||||
await _db.userEntity.deleteAll();
|
||||
await _db.userMetadataEntity.deleteAll();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -49,9 +49,6 @@ class _DriftBackupPageState extends ConsumerState<DriftBackupPage> {
|
|||
|
||||
ref.read(driftBackupProvider.notifier).updateSyncing(true);
|
||||
syncSuccess = await ref.read(backgroundSyncProvider).syncRemote();
|
||||
ref
|
||||
.read(driftBackupProvider.notifier)
|
||||
.updateError(syncSuccess == true ? BackupError.none : BackupError.syncFailed);
|
||||
ref.read(driftBackupProvider.notifier).updateSyncing(false);
|
||||
|
||||
if (mounted) {
|
||||
|
|
@ -94,7 +91,6 @@ class _DriftBackupPageState extends ConsumerState<DriftBackupPage> {
|
|||
|
||||
if (syncSuccess == false) {
|
||||
Logger("DriftBackupPage").warning("Remote sync did not complete successfully, skipping backup");
|
||||
backupNotifier.updateError(BackupError.syncFailed);
|
||||
return;
|
||||
}
|
||||
await backupNotifier.startBackup(currentUser.id);
|
||||
|
|
|
|||
|
|
@ -120,7 +120,6 @@ class _DriftBackupAlbumSelectionPageState extends ConsumerState<DriftBackupAlbum
|
|||
return backupNotifier.startBackup(user.id);
|
||||
} else {
|
||||
Logger('DriftBackupAlbumSelectionPage').warning('Background sync failed, not starting backup');
|
||||
backupNotifier.updateError(BackupError.syncFailed);
|
||||
}
|
||||
}),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@ class DriftBackupOptionsPage extends ConsumerWidget {
|
|||
return backupNotifier.startBackup(currentUser.id);
|
||||
} else {
|
||||
Logger('DriftBackupOptionsPage').warning('Background sync failed, not starting backup');
|
||||
backupNotifier.updateError(BackupError.syncFailed);
|
||||
}
|
||||
}),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -141,14 +141,9 @@ class SettingsSubPage extends StatelessWidget {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
context.locale;
|
||||
return SafeArea(
|
||||
bottom: true,
|
||||
top: false,
|
||||
right: true,
|
||||
child: Scaffold(
|
||||
appBar: AppBar(centerTitle: false, title: Text(section.title).tr()),
|
||||
body: section.widget,
|
||||
),
|
||||
return Scaffold(
|
||||
appBar: AppBar(centerTitle: false, title: Text(section.title).tr()),
|
||||
body: section.widget,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ class SplashScreenPageState extends ConsumerState<SplashScreenPage> {
|
|||
if (Store.isBetaTimelineEnabled) {
|
||||
bool syncSuccess = false;
|
||||
await Future.wait([
|
||||
backgroundManager.syncLocal(full: true),
|
||||
backgroundManager.syncLocal(),
|
||||
backgroundManager.syncRemote().then((success) => syncSuccess = success),
|
||||
]);
|
||||
|
||||
|
|
@ -76,7 +76,6 @@ class SplashScreenPageState extends ConsumerState<SplashScreenPage> {
|
|||
_resumeBackup(backupProvider),
|
||||
]);
|
||||
} else {
|
||||
backupProvider.updateError(BackupError.syncFailed);
|
||||
await backgroundManager.hashAssets();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -512,7 +512,7 @@ class _AlbumList extends ConsumerWidget {
|
|||
}
|
||||
|
||||
return SliverPadding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
padding: const EdgeInsets.only(left: 16.0, right: 16, bottom: 64),
|
||||
sliver: SliverList.builder(
|
||||
itemBuilder: (_, index) {
|
||||
final album = albums[index];
|
||||
|
|
|
|||
|
|
@ -186,6 +186,7 @@ class _AssetDetailBottomSheet extends ConsumerWidget {
|
|||
color: context.textTheme.bodyMedium?.color?.withAlpha(155),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 64),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/constants/enums.dart';
|
||||
import 'package:immich_mobile/domain/models/album/album.model.dart';
|
||||
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
||||
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
||||
import 'package:immich_mobile/presentation/widgets/action_buttons/archive_action_button.widget.dart';
|
||||
import 'package:immich_mobile/presentation/widgets/action_buttons/delete_local_action_button.widget.dart';
|
||||
import 'package:immich_mobile/presentation/widgets/action_buttons/delete_permanent_action_button.widget.dart';
|
||||
|
|
@ -15,9 +18,12 @@ import 'package:immich_mobile/presentation/widgets/action_buttons/trash_action_b
|
|||
import 'package:immich_mobile/presentation/widgets/action_buttons/unfavorite_action_button.widget.dart';
|
||||
import 'package:immich_mobile/presentation/widgets/action_buttons/unstack_action_button.widget.dart';
|
||||
import 'package:immich_mobile/presentation/widgets/action_buttons/upload_action_button.widget.dart';
|
||||
import 'package:immich_mobile/presentation/widgets/album/album_selector.widget.dart';
|
||||
import 'package:immich_mobile/presentation/widgets/bottom_sheet/base_bottom_sheet.widget.dart';
|
||||
import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
|
||||
import 'package:immich_mobile/providers/server_info.provider.dart';
|
||||
import 'package:immich_mobile/providers/timeline/multiselect.provider.dart';
|
||||
import 'package:immich_mobile/widgets/common/immich_toast.dart';
|
||||
|
||||
class FavoriteBottomSheet extends ConsumerWidget {
|
||||
const FavoriteBottomSheet({super.key});
|
||||
|
|
@ -27,9 +33,42 @@ class FavoriteBottomSheet extends ConsumerWidget {
|
|||
final multiselect = ref.watch(multiSelectProvider);
|
||||
final isTrashEnable = ref.watch(serverInfoProvider.select((state) => state.serverFeatures.trash));
|
||||
|
||||
Future<void> addAssetsToAlbum(RemoteAlbum album) async {
|
||||
final selectedAssets = multiselect.selectedAssets;
|
||||
if (selectedAssets.isEmpty) {
|
||||
return;
|
||||
}
|
||||
|
||||
final remoteAssets = selectedAssets.whereType<RemoteAsset>();
|
||||
final addedCount = await ref
|
||||
.read(remoteAlbumProvider.notifier)
|
||||
.addAssets(album.id, remoteAssets.map((e) => e.id).toList());
|
||||
|
||||
if (selectedAssets.length != remoteAssets.length) {
|
||||
ImmichToast.show(
|
||||
context: context,
|
||||
msg: 'add_to_album_bottom_sheet_some_local_assets'.t(context: context),
|
||||
);
|
||||
}
|
||||
|
||||
if (addedCount != remoteAssets.length) {
|
||||
ImmichToast.show(
|
||||
context: context,
|
||||
msg: 'add_to_album_bottom_sheet_already_exists'.t(args: {"album": album.name}),
|
||||
);
|
||||
} else {
|
||||
ImmichToast.show(
|
||||
context: context,
|
||||
msg: 'add_to_album_bottom_sheet_added'.t(args: {"album": album.name}),
|
||||
);
|
||||
}
|
||||
|
||||
ref.read(multiSelectProvider.notifier).reset();
|
||||
}
|
||||
|
||||
return BaseBottomSheet(
|
||||
initialChildSize: 0.25,
|
||||
maxChildSize: 0.4,
|
||||
initialChildSize: 0.4,
|
||||
maxChildSize: 0.7,
|
||||
shouldCloseOnMinExtent: false,
|
||||
actions: [
|
||||
const ShareActionButton(source: ActionSource.timeline),
|
||||
|
|
@ -52,6 +91,9 @@ class FavoriteBottomSheet extends ConsumerWidget {
|
|||
const UploadActionButton(source: ActionSource.timeline),
|
||||
],
|
||||
],
|
||||
slivers: multiselect.hasRemote
|
||||
? [const AddToAlbumHeader(), AlbumSelector(onAlbumSelected: addAssetsToAlbum)]
|
||||
: [],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ class ThumbnailTile extends ConsumerWidget {
|
|||
this.asset, {
|
||||
this.size = kThumbnailResolution,
|
||||
this.fit = BoxFit.cover,
|
||||
this.showStorageIndicator,
|
||||
this.showStorageIndicator = false,
|
||||
this.lockSelection = false,
|
||||
this.heroOffset,
|
||||
super.key,
|
||||
|
|
@ -25,7 +25,7 @@ class ThumbnailTile extends ConsumerWidget {
|
|||
final BaseAsset? asset;
|
||||
final Size size;
|
||||
final BoxFit fit;
|
||||
final bool? showStorageIndicator;
|
||||
final bool showStorageIndicator;
|
||||
final bool lockSelection;
|
||||
final int? heroOffset;
|
||||
|
||||
|
|
@ -55,7 +55,7 @@ class ThumbnailTile extends ConsumerWidget {
|
|||
: const BoxDecoration();
|
||||
|
||||
final bool storageIndicator =
|
||||
showStorageIndicator ?? ref.watch(settingsProvider.select((s) => s.get(Setting.showStorageIndicator)));
|
||||
ref.watch(settingsProvider.select((s) => s.get(Setting.showStorageIndicator))) && showStorageIndicator;
|
||||
|
||||
return Stack(
|
||||
children: [
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ class TimelineArgs {
|
|||
final double maxHeight;
|
||||
final double spacing;
|
||||
final int columnCount;
|
||||
final bool? showStorageIndicator;
|
||||
final bool showStorageIndicator;
|
||||
final bool withStack;
|
||||
final GroupAssetsBy? groupBy;
|
||||
|
||||
|
|
@ -23,7 +23,7 @@ class TimelineArgs {
|
|||
required this.maxHeight,
|
||||
this.spacing = kTimelineSpacing,
|
||||
this.columnCount = kTimelineColumnCount,
|
||||
this.showStorageIndicator,
|
||||
this.showStorageIndicator = false,
|
||||
this.withStack = false,
|
||||
this.groupBy,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class Timeline extends StatelessWidget {
|
|||
this.showStorageIndicator = false,
|
||||
this.withStack = false,
|
||||
this.appBar = const ImmichSliverAppBar(floating: true, pinned: false, snap: false),
|
||||
this.bottomSheet = const GeneralBottomSheet(minChildSize: 0.18),
|
||||
this.bottomSheet = const GeneralBottomSheet(minChildSize: 0.23),
|
||||
this.groupBy,
|
||||
this.withScrubber = true,
|
||||
this.snapToMonth = true,
|
||||
|
|
|
|||
|
|
@ -161,7 +161,6 @@ class AppLifeCycleNotifier extends StateNotifier<AppLifeCycleEnum> {
|
|||
_resumeBackup(),
|
||||
]);
|
||||
} else {
|
||||
_ref.read(driftBackupProvider.notifier).updateError(BackupError.syncFailed);
|
||||
await _safeRun(backgroundManager.hashAssets(), "hashAssets");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,21 @@
|
|||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/domain/utils/background_sync.dart';
|
||||
import 'package:immich_mobile/providers/backup/drift_backup.provider.dart';
|
||||
import 'package:immich_mobile/providers/sync_status.provider.dart';
|
||||
|
||||
final backgroundSyncProvider = Provider<BackgroundSyncManager>((ref) {
|
||||
final syncStatusNotifier = ref.read(syncStatusProvider.notifier);
|
||||
final backupProvider = ref.read(driftBackupProvider.notifier);
|
||||
|
||||
final manager = BackgroundSyncManager(
|
||||
onRemoteSyncStart: syncStatusNotifier.startRemoteSync,
|
||||
onRemoteSyncComplete: syncStatusNotifier.completeRemoteSync,
|
||||
onRemoteSyncStart: () {
|
||||
syncStatusNotifier.startRemoteSync();
|
||||
backupProvider.updateError(BackupError.none);
|
||||
},
|
||||
onRemoteSyncComplete: (isSuccess) {
|
||||
syncStatusNotifier.completeRemoteSync();
|
||||
backupProvider.updateError(isSuccess == true ? BackupError.none : BackupError.syncFailed);
|
||||
},
|
||||
onRemoteSyncError: syncStatusNotifier.errorRemoteSync,
|
||||
onLocalSyncStart: syncStatusNotifier.startLocalSync,
|
||||
onLocalSyncComplete: syncStatusNotifier.completeLocalSync,
|
||||
|
|
|
|||
|
|
@ -162,48 +162,32 @@ class _ProfileIndicator extends ConsumerWidget {
|
|||
}
|
||||
}
|
||||
|
||||
const double _kBadgeWidgetSize = 30.0;
|
||||
|
||||
class _BackupIndicator extends ConsumerWidget {
|
||||
const _BackupIndicator();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
const widgetSize = 30.0;
|
||||
final hasError = ref.watch(driftBackupProvider.select((state) => state.error != BackupError.none));
|
||||
final indicatorIcon = hasError
|
||||
? Icon(
|
||||
Icons.warning_rounded,
|
||||
size: 12,
|
||||
color: context.colorScheme.error,
|
||||
semanticLabel: 'backup_controller_page_backup'.tr(),
|
||||
)
|
||||
: _getBackupBadgeIcon(context, ref);
|
||||
final badgeBackground = hasError ? context.colorScheme.errorContainer : context.colorScheme.surfaceContainer;
|
||||
final indicatorIcon = _getBackupBadgeIcon(context, ref);
|
||||
|
||||
return InkWell(
|
||||
onTap: () => context.pushRoute(const DriftBackupRoute()),
|
||||
borderRadius: const BorderRadius.all(Radius.circular(12)),
|
||||
child: Badge(
|
||||
label: Container(
|
||||
width: widgetSize / 2,
|
||||
height: widgetSize / 2,
|
||||
decoration: BoxDecoration(
|
||||
color: badgeBackground,
|
||||
border: Border.all(color: context.colorScheme.outline.withValues(alpha: .3)),
|
||||
borderRadius: BorderRadius.circular(widgetSize / 2),
|
||||
),
|
||||
child: indicatorIcon,
|
||||
),
|
||||
label: indicatorIcon,
|
||||
backgroundColor: Colors.transparent,
|
||||
alignment: Alignment.bottomRight,
|
||||
isLabelVisible: indicatorIcon != null,
|
||||
offset: const Offset(-2, -12),
|
||||
child: Icon(Icons.backup_rounded, size: widgetSize, color: context.primaryColor),
|
||||
child: Icon(Icons.backup_rounded, size: _kBadgeWidgetSize, color: context.primaryColor),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget? _getBackupBadgeIcon(BuildContext context, WidgetRef ref) {
|
||||
final backupStateStream = ref.watch(settingsProvider).watch(Setting.enableBackup);
|
||||
final hasError = ref.watch(driftBackupProvider.select((state) => state.error != BackupError.none));
|
||||
final isDarkTheme = context.isDarkTheme;
|
||||
final iconColor = isDarkTheme ? Colors.white : Colors.black;
|
||||
final isUploading = ref.watch(driftBackupProvider.select((state) => state.uploadItems.isNotEmpty));
|
||||
|
|
@ -215,42 +199,76 @@ class _BackupIndicator extends ConsumerWidget {
|
|||
final backupEnabled = snapshot.data ?? false;
|
||||
|
||||
if (!backupEnabled) {
|
||||
return Icon(
|
||||
Icons.cloud_off_rounded,
|
||||
size: 9,
|
||||
color: iconColor,
|
||||
semanticLabel: 'backup_controller_page_backup'.tr(),
|
||||
return _BadgeLabel(
|
||||
Icon(
|
||||
Icons.cloud_off_rounded,
|
||||
size: 9,
|
||||
color: iconColor,
|
||||
semanticLabel: 'backup_controller_page_backup'.tr(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (hasError) {
|
||||
return _BadgeLabel(
|
||||
Icon(
|
||||
Icons.warning_rounded,
|
||||
size: 12,
|
||||
color: context.colorScheme.error,
|
||||
semanticLabel: 'backup_controller_page_backup'.tr(),
|
||||
),
|
||||
backgroundColor: context.colorScheme.errorContainer,
|
||||
);
|
||||
}
|
||||
|
||||
if (isUploading) {
|
||||
return Container(
|
||||
padding: const EdgeInsets.all(3.5),
|
||||
child: Theme(
|
||||
data: context.themeData.copyWith(
|
||||
progressIndicatorTheme: context.themeData.progressIndicatorTheme.copyWith(year2023: true),
|
||||
),
|
||||
child: CircularProgressIndicator(
|
||||
strokeWidth: 2,
|
||||
strokeCap: StrokeCap.round,
|
||||
valueColor: AlwaysStoppedAnimation<Color>(iconColor),
|
||||
semanticsLabel: 'backup_controller_page_backup'.tr(),
|
||||
return _BadgeLabel(
|
||||
Container(
|
||||
padding: const EdgeInsets.all(3.5),
|
||||
child: Theme(
|
||||
data: context.themeData.copyWith(
|
||||
progressIndicatorTheme: context.themeData.progressIndicatorTheme.copyWith(year2023: true),
|
||||
),
|
||||
child: CircularProgressIndicator(
|
||||
strokeWidth: 2,
|
||||
strokeCap: StrokeCap.round,
|
||||
valueColor: AlwaysStoppedAnimation<Color>(iconColor),
|
||||
semanticsLabel: 'backup_controller_page_backup'.tr(),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return Icon(
|
||||
Icons.check_outlined,
|
||||
size: 9,
|
||||
color: iconColor,
|
||||
semanticLabel: 'backup_controller_page_backup'.tr(),
|
||||
return _BadgeLabel(
|
||||
Icon(Icons.check_outlined, size: 9, color: iconColor, semanticLabel: 'backup_controller_page_backup'.tr()),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _BadgeLabel extends StatelessWidget {
|
||||
final Widget indicator;
|
||||
final Color? backgroundColor;
|
||||
|
||||
const _BadgeLabel(this.indicator, {this.backgroundColor});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
width: _kBadgeWidgetSize / 2,
|
||||
height: _kBadgeWidgetSize / 2,
|
||||
decoration: BoxDecoration(
|
||||
color: backgroundColor ?? context.colorScheme.surfaceContainer,
|
||||
border: Border.all(color: context.colorScheme.outline.withValues(alpha: .3)),
|
||||
borderRadius: BorderRadius.circular(_kBadgeWidgetSize / 2),
|
||||
),
|
||||
child: indicator,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _SyncStatusIndicator extends ConsumerStatefulWidget {
|
||||
const _SyncStatusIndicator();
|
||||
|
||||
|
|
|
|||
2
mobile/openapi/README.md
generated
2
mobile/openapi/README.md
generated
|
|
@ -3,7 +3,7 @@ Immich API
|
|||
|
||||
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
||||
|
||||
- API version: 2.0.0
|
||||
- API version: 2.0.1
|
||||
- Generator version: 7.8.0
|
||||
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ name: immich_mobile
|
|||
description: Immich - selfhosted backup media file on mobile phone
|
||||
|
||||
publish_to: 'none'
|
||||
version: 2.0.0+3020
|
||||
version: 2.0.1+3021
|
||||
|
||||
environment:
|
||||
sdk: '>=3.8.0 <4.0.0'
|
||||
|
|
|
|||
|
|
@ -9858,7 +9858,7 @@
|
|||
"info": {
|
||||
"title": "Immich",
|
||||
"description": "Immich API",
|
||||
"version": "2.0.0",
|
||||
"version": "2.0.1",
|
||||
"contact": {}
|
||||
},
|
||||
"tags": [],
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@immich/sdk",
|
||||
"version": "2.0.0",
|
||||
"version": "2.0.1",
|
||||
"description": "Auto-generated TypeScript SDK for the Immich API",
|
||||
"type": "module",
|
||||
"main": "./build/index.js",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* Immich
|
||||
* 2.0.0
|
||||
* 2.0.1
|
||||
* DO NOT MODIFY - This file has been generated using oazapfts.
|
||||
* See https://www.npmjs.com/package/oazapfts
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "immich",
|
||||
"version": "2.0.0",
|
||||
"version": "2.0.1",
|
||||
"description": "",
|
||||
"author": "",
|
||||
"private": true,
|
||||
|
|
|
|||
|
|
@ -75,14 +75,15 @@ select
|
|||
"asset_file"
|
||||
where
|
||||
"asset_file"."assetId" = "asset"."id"
|
||||
and "asset_file"."type" = $1
|
||||
) as agg
|
||||
) as "files"
|
||||
from
|
||||
"asset"
|
||||
where
|
||||
"asset"."id" = $1::uuid
|
||||
"asset"."id" = $2::uuid
|
||||
limit
|
||||
$2
|
||||
$3
|
||||
|
||||
-- AssetJobRepository.streamForThumbnailJob
|
||||
select
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "immich-web",
|
||||
"version": "2.0.0",
|
||||
"version": "2.0.1",
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue