From 4d8ea12ddda80d77c0f2a398b5a724a559b4663d Mon Sep 17 00:00:00 2001 From: dnred <174188760+dnred@users.noreply.github.com> Date: Sun, 24 Aug 2025 16:17:25 +0200 Subject: [PATCH 01/13] Add logo --- mobile/apps/auth/assets/custom-icons/icons/activision2.svg | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mobile/apps/auth/assets/custom-icons/icons/activision2.svg diff --git a/mobile/apps/auth/assets/custom-icons/icons/activision2.svg b/mobile/apps/auth/assets/custom-icons/icons/activision2.svg new file mode 100644 index 0000000000..dfb7d53ff5 --- /dev/null +++ b/mobile/apps/auth/assets/custom-icons/icons/activision2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file From 73d5d33fc5a71009c6076e3694d54993644a05ec Mon Sep 17 00:00:00 2001 From: dnred <174188760+dnred@users.noreply.github.com> Date: Sun, 24 Aug 2025 16:25:47 +0200 Subject: [PATCH 02/13] Update custom-icons.json --- mobile/apps/auth/assets/custom-icons/_data/custom-icons.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mobile/apps/auth/assets/custom-icons/_data/custom-icons.json b/mobile/apps/auth/assets/custom-icons/_data/custom-icons.json index b0145bc9c9..f21367f5e5 100644 --- a/mobile/apps/auth/assets/custom-icons/_data/custom-icons.json +++ b/mobile/apps/auth/assets/custom-icons/_data/custom-icons.json @@ -29,6 +29,10 @@ "certificates.zaka.ai" ] }, + { + "title": "Activision", + "hex": "000000" + }, { "title": "Addy.io", "slug": "addy_io" From f69cec864b9ad2ef6b64c6225ccb6c9953b0ffeb Mon Sep 17 00:00:00 2001 From: dnred <174188760+dnred@users.noreply.github.com> Date: Sun, 24 Aug 2025 16:42:49 +0200 Subject: [PATCH 03/13] Rename activision2.svg to activision.svg --- .../custom-icons/icons/{activision2.svg => activision.svg} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename mobile/apps/auth/assets/custom-icons/icons/{activision2.svg => activision.svg} (96%) diff --git a/mobile/apps/auth/assets/custom-icons/icons/activision2.svg b/mobile/apps/auth/assets/custom-icons/icons/activision.svg similarity index 96% rename from mobile/apps/auth/assets/custom-icons/icons/activision2.svg rename to mobile/apps/auth/assets/custom-icons/icons/activision.svg index dfb7d53ff5..7db5d3e95b 100644 --- a/mobile/apps/auth/assets/custom-icons/icons/activision2.svg +++ b/mobile/apps/auth/assets/custom-icons/icons/activision.svg @@ -1,3 +1,3 @@ - \ No newline at end of file + From 89489b4d7c4cc0a8f112ce075bb9290d4eab16c4 Mon Sep 17 00:00:00 2001 From: dnred <174188760+dnred@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:48:21 +0200 Subject: [PATCH 04/13] Revert "[auth] Add smaller Activision icon" --- mobile/apps/auth/assets/custom-icons/_data/custom-icons.json | 4 ---- mobile/apps/auth/assets/custom-icons/icons/activision.svg | 3 --- 2 files changed, 7 deletions(-) delete mode 100644 mobile/apps/auth/assets/custom-icons/icons/activision.svg diff --git a/mobile/apps/auth/assets/custom-icons/_data/custom-icons.json b/mobile/apps/auth/assets/custom-icons/_data/custom-icons.json index f21367f5e5..b0145bc9c9 100644 --- a/mobile/apps/auth/assets/custom-icons/_data/custom-icons.json +++ b/mobile/apps/auth/assets/custom-icons/_data/custom-icons.json @@ -29,10 +29,6 @@ "certificates.zaka.ai" ] }, - { - "title": "Activision", - "hex": "000000" - }, { "title": "Addy.io", "slug": "addy_io" diff --git a/mobile/apps/auth/assets/custom-icons/icons/activision.svg b/mobile/apps/auth/assets/custom-icons/icons/activision.svg deleted file mode 100644 index 7db5d3e95b..0000000000 --- a/mobile/apps/auth/assets/custom-icons/icons/activision.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - From b4f8a2b27c17767920536e06a7c0078bcd04855c Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Mon, 25 Aug 2025 00:39:57 +0000 Subject: [PATCH 05/13] New Crowdin translations by GitHub Action --- .../base/locales/cs-CZ/translation.json | 404 +++++++++--------- .../base/locales/de-DE/translation.json | 24 +- .../base/locales/pl-PL/translation.json | 22 +- 3 files changed, 225 insertions(+), 225 deletions(-) diff --git a/web/packages/base/locales/cs-CZ/translation.json b/web/packages/base/locales/cs-CZ/translation.json index 98dfaf97e8..2a517efdf3 100644 --- a/web/packages/base/locales/cs-CZ/translation.json +++ b/web/packages/base/locales/cs-CZ/translation.json @@ -1,10 +1,10 @@ { "intro_slide_1_title": "Soukromé zálohy
pro vaše vzpomínky", - "intro_slide_1": "End-to-end šifrováno ve výchozím nastavení", - "intro_slide_2_title": "Bezpečně skladovaný
v úkryt", + "intro_slide_1": "Koncově šifrováno ve výchozím nastavení", + "intro_slide_2_title": "Bezpečně uloženo
v protiatomovém krytu", "intro_slide_2": "Navržen pro prežití", "intro_slide_3_title": "Dostupné
všude", - "intro_slide_3": "Android, iOS, Web, počítač", + "intro_slide_3": "Android, iOS, Web, Počítač", "login": "Přihlášení", "sign_up": "Registrace", "new_to_ente": "Nový uživatel Ente", @@ -32,17 +32,17 @@ "set_password": "Nastavit heslo", "sign_in": "Přihlásit se", "incorrect_password": "Nesprávné heslo", - "incorrect_password_or_no_account": "", + "incorrect_password_or_no_account": "Nesprávné heslo nebo e-mail není zaregistrován", "pick_password_hint": "Zadejte heslo, kterým můžeme zašifrovat Vaše data", - "pick_password_caution": "Vaše heslo neukládáme, takže pokud ho zapomenete, nebudeme moci pomoci obnovit vaše data bez obnovovacího klíče.", + "pick_password_caution": "Vaše heslo neukládáme, takže pokud ho zapomenete, nebudeme vám moci pomoci obnovit vaše data bez obnovovacího klíče.", "key_generation_in_progress": "Generování šifrovacích klíčů...", "confirm_password": "Potvrďte heslo", "referral_source_hint": "Jak jste se dozvěděli o Ente? (volitelné)", - "referral_source_info": "Ne sledujeme instalace aplikace. Pomůže nám, když nám sdělíte, kde jste nás našli!", + "referral_source_info": "Nesledujeme instalace aplikace. Pomůže nám, když nám sdělíte, kde jste nás našli!", "password_mismatch_error": "Hesla se neshodují", - "show_or_hide_password": "", + "show_or_hide_password": "Zobrazit nebo skrýt heslo", "welcome_to_ente_title": "Vítejte v ", - "welcome_to_ente_subtitle": "End to end šifrované úložiště fotek a sdílení", + "welcome_to_ente_subtitle": "Ukládání a sdílení fotografií s koncovým šifrováním", "new_album": "Nové album", "create_albums": "Vytvořit alba", "album_name": "Název alba", @@ -55,7 +55,7 @@ "add_photos": "Přidat fotky", "add_more_photos": "Přidat další fotky", "add_photos_count_one": "Přidat 1 položku", - "add_photos_count": "Přidat {{count, number}} předměty", + "add_photos_count": "Přidat {{count, number}} položek", "select_photos": "Vybrat fotky", "file_upload": "Nahrát soubor", "preparing": "Příprava", @@ -64,9 +64,9 @@ "upload_cancelling": "Ruší se zbývající nahrávání", "upload_done": "{{count, number}} nahráno", "upload_skipped": "{{count, number}} přeskočeno", - "initial_load_delay_warning": "První načitení může chvíli trvat", - "no_account": "Nemáte účet", - "existing_account": "Již máte účet", + "initial_load_delay_warning": "První načítání může chvíli trvat", + "no_account": "Nemám účet", + "existing_account": "Již mám účet", "create": "Vytvořit", "files_count": "{{count, number}} souborů", "download": "Stáhnout", @@ -78,10 +78,10 @@ "more": "Víc", "mouse_scroll": "Posunutí myší", "pan": "Posouvat", - "pinch": "", + "pinch": "Přiblížit", "drag": "Přetáhnout", "tap_inside_image": "Klepněte na obrázek", - "tap_outside_image": "Klepněte mimo obrázku", + "tap_outside_image": "Klepněte mimo obrázek", "shortcuts": "Zkratky", "show_shortcuts": "Zobrazit zkratky", "zoom_preset": "Nastaveni zoomu", @@ -116,17 +116,17 @@ "trash_file_title": "Smazat soubor?", "delete_files_title": "Odstranit okamžitě?", "delete_files_message": "Vybrané soubory budou trvale odstraněny z vašeho účtu Ente.", - "selected_count": "{{selected, number}} vybráno", - "selected_and_yours_count": "{{selected, number}} vybral {{yours, number}} tvůj", + "selected_count": "Vybráno: {{selected, number}}", + "selected_and_yours_count": "{{selected, number}} vybráno, {{yours, number}} tvých", "delete": "Smazat", "favorite": "Oblíbené", - "convert": "Konverze", + "convert": "Převést", "multi_folder_upload": "Bylo nalezeno více složek", "upload_to_choice": "Chcete je nahrát do", "upload_to_single_album": "Jednoho alba", - "upload_to_album_per_folder": "Oddělená alba", + "upload_to_album_per_folder": "Oddělených alb", "session_expired": "Relace vypršela", - "session_expired_message": "Vaše relace vypršela. Přihlaste se, prosím, znovu.", + "session_expired_message": "Vaše relace vypršela, prosím přihlaste se znovu, abyste mohli pokračovat", "password_generation_failed": "Váš prohlížeč nemohl vygenerovat silný klíč, který splňuje normy Ente pro šifrování, zkuste to prosím pomocí mobilní aplikace nebo jiného prohlížeče", "change_password": "Změnit heslo", "password_changed_elsewhere": "Heslo bylo změněno jinde", @@ -137,7 +137,7 @@ "do_this_later": "Udělat později", "save_key": "Uložit klíč", "recovery_key_description": "Tento klíč je jedinou cestou pro obnovení Vašich dat, pokud zapomenete heslo.", - "key_not_stored_note": "Tento místný klíč neuchováváme, uschovejte si ho, prosím, na bezpečném místě", + "key_not_stored_note": "Tento klíč neuchováváme, uschovejte si ho, prosím, na bezpečném místě", "recovery_key_generation_failed": "Obnovovací kód nelze vygenerovat, zkuste to prosím znovu", "forgot_password": "Zapomenuté heslo", "recover_account": "Obnovit účet", @@ -145,11 +145,11 @@ "no_recovery_key_title": "Nemáte obnovovací klíč?", "incorrect_recovery_key": "Nesprávný obnovovací klíč", "sorry": "Omlouváme se", - "no_recovery_key_message": "Vzhledem k povaze našeho end-to-end šifrovacího protokolu nelze vaše data dešifrovat bez vašeho hesla nebo obnovovacího klíče", + "no_recovery_key_message": "Vzhledem k povaze našeho koncového šifrovacího protokolu nelze vaše data dešifrovat bez vašeho hesla nebo obnovovacího klíče", "no_two_factor_recovery_key_message": "Prosím zašlete e-mail na {{emailID}} z vaší registrované e-mailové adresy", "contact_support": "Kontaktovat podporu", "help": "Pomoc", - "ente_help": "Ente pomoc", + "ente_help": "Ente Nápověda", "blog": "Blog", "request_feature": "Žádost o funkci", "support": "Podpora", @@ -157,33 +157,33 @@ "logout": "Odhlásit se", "logout_message": "Opravdu se chcete odhlásit?", "delete_account": "Odstranit účet", - "delete_account_manually_message": "

Pošlete prosím e-mail na {{emailID}} z vaší registrované e-mailové adresy.

Vaše požadavka bude zpracována do 72 hodin.

", + "delete_account_manually_message": "

Pošlete prosím e-mail na {{emailID}} z vaší registrované e-mailové adresy.

Váš požadavek bude zpracován do 72 hodin.

", "change_email": "Změnit e-mail", "ok": "OK", "success": "Úspěch", "error": "Chyba", - "note": "", + "note": "Poznámka", "offline_message": "Jste offline, soubory se zobrazují z mezipaměti", "install": "Instalovat", - "install_mobile_app": "Nainstalujte naši aplikaci Android nebo iOS pro automatické zálohování všech vašich fotografií", - "download_app": "Stáhnout Pc aplikaci", + "install_mobile_app": "Nainstalujte naši Android nebo iOS aplikaci pro automatické zálohování všech vašich fotografií", + "download_app": "Stáhnout aplikaci na počítač", "download_app_message": "Omlouváme se, tato operace je v současné době podporována pouze v naší desktopové aplikaci", "subscription": "Předplatné", "manage_payment_method": "Spravovat způsob platby", "manage_family": "Správa rodiny", - "family_plan": "Plán rodiny", - "leave_family_plan": "Opustit rodinný plán", - "leave": "Odejít", - "leave_family_plan_confirm": "Jste si jisti, že chcete opustit rodinný plán?", - "choose_plan": "Vyberte si svůj plán", + "family_plan": "Rodinný tarif", + "leave_family_plan": "Opustit rodinný tarif", + "leave": "Pustit", + "leave_family_plan_confirm": "Jste si jisti, že chcete opustit rodinný tarif?", + "choose_plan": "Vyberte si svůj tarif", "manage_plan": "Spravovat své předplatné", "current_usage": "Aktuální využití je {{usage}}", - "two_months_free": "Získejte 2 měsíce zdarma při ročních plánech", - "free_plan_option": "Pokračovat s bezplatným plánem", + "two_months_free": "Získejte 2 měsíce zdarma při ročních tarifech", + "free_plan_option": "Pokračovat s bezplatným tarifem", "free_plan_description": "{{storage}} zdarma navždy", "active": "Aktivní", - "subscription_info_free": "Jste na bezplatném plánu", - "subscription_info_family": "Jste na plánu rodiny řízeném", + "subscription_info_free": "Jste na bezplatném tarifu", + "subscription_info_family": "Jste v rodinném tarifu spravovaném", "subscription_info_expired": "Vaše předplatné vypršelo, prosím obnovte", "subscription_info_renewal_cancelled": "Tvé předplatné bude zrušeno dne {{date, date}}", "subscription_info_storage_quota_exceeded": "Překročili jste Vaši kvótu na úložiště, prosím upgradujte", @@ -196,33 +196,33 @@ "subscription_purchase_cancelled": "Váš nákup byl zrušen, zkuste to prosím znovu, pokud chcete předplatné", "subscription_purchase_failed": "Nákup předplatného se nezdařil, zkuste to znovu", "subscription_verification_error": "Ověření předplatného selhalo", - "update_payment_method_message": "Omlouváme se, platba se nezdařila, když jsme se pokusili účtovat Vaši kartu, prosím aktualizujte Vaši platební metodu a zkuste to znovu", + "update_payment_method_message": "Omlouváme se, platba se nezdařila, když jsme se pokusili strhnout částku z vaší karty. Aktualizujte prosím způsob platby a zkuste to znovu", "payment_method_authentication_failed": "Nelze ověřit způsob platby. Zvolte prosím jiný způsob platby a zkuste to znovu", "update_payment_method": "Aktualizovat způsob platby", "monthly": "Měsíčně", "yearly": "Ročně", "month_short": "měs", "year": "rok", - "update_subscription": "Změna plánu", - "update_subscription_title": "Potvrdit změnu plánu", - "update_subscription_message": "Jste si jisti, že chcete změnit svůj plán?", + "update_subscription": "Změnit tarif", + "update_subscription_title": "Potvrdit změnu tarifu", + "update_subscription_message": "Jste si jisti, že chcete změnit svůj tarif?", "cancel_subscription": "Zrušit předplatné", "cancel_subscription_message": "

Všechna vaše data budou smazána z našich serverů na konci tohoto fakturačního období.

Jste si jisti, že chcete zrušit své předplatné?

", "cancel_subscription_with_addon_message": "

Opravdu chcete zrušit své předplatné?

", "subscription_cancel_success": "Předplatné úspěšně zrušeno", "reactivate_subscription": "Znovu aktivovat předplatné", - "reactivate_subscription_message": "Po reaktivaci budete účtován {{date, date}}", + "reactivate_subscription_message": "Po opětovné aktivaci Vám bude účtována částka dne {date, date}", "subscription_activate_success": "Předplatné úspěšně aktivováno ", "thank_you": "Děkujeme", - "cancel_subscription_on_mobile": "Zrušit předplatné mobilu", + "cancel_subscription_on_mobile": "Zrušit mobilní předplatné", "cancel_subscription_on_mobile_message": "Zrušte prosím předplatné z mobilní aplikace pro aktivaci předplatného zde", "mail_to_manage_subscription": "Kontaktujte nás prosím na {{emailID}} pro správu předplatného", "rename": "Přejmenovat", "rename_file": "Přejmenovat soubor", "rename_album": "Přejmenovat album", - "delete_album": "Vymazat Album", - "delete_album_title": "Vymazat Album?", - "delete_album_message": "Odstranit také fotky (a videa) přítomné v tomto albu z všech dalších alb, kterých jsou součástí?", + "delete_album": "Vymazat album", + "delete_album_title": "Vymazat album?", + "delete_album_message": "Odstranit také fotky (a videa) přítomné v tomto albu ze všech dalších alb, kterých jsou součástí?", "delete_photos": "Odstranit fotografie", "keep_photos": "Ponechat fotky", "share_album": "Sdílet album", @@ -250,11 +250,11 @@ "indexing_fetching": "Synchronizace indexů...", "indexing_people": "Synchronizace lidí...", "syncing_wait": "Synchronizování...", - "people_empty_too_few": "Lidé se zobrazí zde, pokud jsou k dispozici dostatečné fotografie osoby", + "people_empty_too_few": "Lidé se zde zobrazí, pokud je k dispozici dostatečné množství fotografií dané osoby", "unnamed_person": "Nepojmenovaná osoba", - "add_a_name": "Přidat název", + "add_a_name": "Přidat jméno", "new_person": "Nová osoba", - "add_name": "Přidat název", + "add_name": "Přidat jméno", "rename_person": "Přejmenovat osobu", "reset_person_confirm": "Resetovat osobu?", "reset_person_confirm_message": "Název, skupiny obličeje a návrhy pro tuto osobu budou resetovány", @@ -266,10 +266,10 @@ "review_suggestions": "Zkontrolovat návrhy", "saved_choices": "Uložené volby", "discard_changes": "Zahodit změny", - "discard_changes_confirm_message": "Máte neuložené změny. Tyto změny budou ztraceny, pokud zavřete bez uložení", + "discard_changes_confirm_message": "Máte neuložené změny. Pokud zavřete bez uložení, budou ztraceny", "people_suggestions_finding": "Hledání podobných obličejů...", "people_suggestions_empty": "Zatím žádné další návrhy", - "info": "Info", + "info": "Informace", "file_name": "Název souboru", "caption_placeholder": "Přidat popis", "location": "Poloha", @@ -277,7 +277,7 @@ "map": "Mapa", "enable_map": "Povolit mapu", "enable_maps_confirm": "Povolit mapu?", - "enable_maps_confirm_message": "

Zobrazí vaše fotky na mapě světa.

Mapa je hostována OpenStreetMapa přesná umístění vašich fotografií nejsou nikdy sdílena.

Tuto funkci můžete kdykoliv zakázat v Nastavení.

", + "enable_maps_confirm_message": "

Zobrazí vaše fotografie na mapě světa.

Mapa je hostována službou OpenStreetMap a přesné umístění vašich fotografií není nikdy sdíleno.

Tuto funkci můžete kdykoli deaktivovat v nastavení.

", "disable_map": "Zakázat mapu", "disable_maps_confirm": "Zakázat mapy?", "disable_maps_confirm_message": "

Toto zakáže zobrazení vašich fotografií na mapě světa.

Tuto funkci můžete kdykoli zapnout v nastavení.

", @@ -285,60 +285,60 @@ "view_exif": "Zobrazit všechna Exif data", "no_exif": "Žádná Exif data", "exif": "Exif", - "two_factor": "Dvoufaktorové", - "two_factor_authentication": "Dvoufaktorové ověření", + "two_factor": "Dvoufázové", + "two_factor_authentication": "Dvoufázové ověření", "two_factor_qr_help": "Naskenujte QR kód pomocí vaší oblíbené autentizační aplikace", "two_factor_manual_entry_title": "Zadejte kód ručně", "two_factor_manual_entry_message": "Prosím, zadejte tento kód do vaší oblíbené autentizační aplikace", "scan_qr_title": "Namísto toho skenovat QR kód", - "enable_two_factor": "", + "enable_two_factor": "Zapnout dvoufázové ověřování", "enable": "Povolit", "enabled": "Povoleno", - "lost_2fa_device": "", + "lost_2fa_device": "Ztracené zařízení pro dvoufázové ověření", "incorrect_code": "Nesprávný kód", - "two_factor_info": "", + "two_factor_info": "Přidejte další vrstvu zabezpečení tím, že pro přihlášení k účtu budete vyžadovat více než jen e-mail a heslo", "disable": "Zakázat", "reconfigure": "Znovu nastavit", - "reconfigure_two_factor_hint": "", - "update_two_factor": "", - "update_two_factor_message": "", + "reconfigure_two_factor_hint": "Aktualizujte své ověřovací zařízení", + "update_two_factor": "Aktualizace dvoufázového ověřování", + "update_two_factor_message": "Pokračováním v procesu dojde ke zrušení všech dříve nakonfigurovaných ověřovacích prostředků", "update": "Aktualizovat", - "disable_two_factor": "", - "disable_two_factor_message": "", + "disable_two_factor": "Vypnout dvoufázové ověřování", + "disable_two_factor_message": "Opravdu chcete deaktivovat dvoufázové ověřování", "export_data": "Exportovat data", "select_folder": "Vyberte složku", - "select_zips": "", + "select_zips": "Vybrat soubory .zip", "faq": "Často kladené dotazy", - "takeout_hint": "", + "takeout_hint": "Rozbalte všechny soubory .zip do stejné složky a nahrajte ji. Nebo nahrajte soubory .zip přímo. Podrobnosti najdete v sekci Časté dotazy.", "destination": "Cíl", "start": "Spustit", "last_export_time": "Čas posledního exportu", - "export_again": "", - "local_storage_not_accessible": "", - "email_already_taken": "E-mail je již obsazen", - "live_photos_detected": "", - "ignored_uploads": "", - "ignored_uploads_hint": "", + "export_again": "Znovu exportovat", + "local_storage_not_accessible": "Váš prohlížeč nebo doplněk blokuje Ente v ukládání dat do lokálního úložiště", + "email_already_taken": "Účet s tímto e-mailem již existuje", + "live_photos_detected": "Fotografie a videa z vašich živých fotografií byly sloučeny do jednoho souboru", + "ignored_uploads": "Ignorované nahrané soubory", + "ignored_uploads_hint": "Tyto byly přeskočeny, protože ve stejném albu jsou soubory se stejným názvem a obsahem", "file_not_uploaded_list": "Následující soubory nebyly nahrány", - "failed_uploads": "", - "failed_uploads_hint": "", - "retry_failed_uploads": "", - "thumbnail_generation_failed": "", - "thumbnail_generation_failed_hint": "Tyto soubory byly nahrány, ale bohužel jsme pro ně nemohli vygenerovat titulky.", + "failed_uploads": "Nepodařilo se nahrát", + "failed_uploads_hint": "Po dokončení nahrávání bude k dispozici možnost tyto soubory zkusit nahrát znovu", + "retry_failed_uploads": "Opakujte neúspěšné nahrávání", + "thumbnail_generation_failed": "Vytvoření miniatury se nezdařilo", + "thumbnail_generation_failed_hint": "Tyto soubory byly nahrány, ale bohužel jsme pro ně nemohli vygenerovat miniatury.", "unsupported_files": "Nepodporované soubory", "unsupported_files_hint": "Ente zatím nepodporuje tyto formáty souborů", - "blocked_uploads": "", - "blocked_uploads_hint": "", + "blocked_uploads": "Zablokované nahrávání", + "blocked_uploads_hint": "Váš prohlížeč nebo doplněk brání Ente v používání eTags k nahrávání velkých souborů.", "large_files": "Velké soubory", - "large_files_hint": "", - "insufficient_storage": "", - "insufficient_storage_hint": "", - "uploads_in_progress": "Probíhá nahrávání", + "large_files_hint": "Tyto soubory nebyly nahrány, protože překračují náš maximální limit velikosti souboru", + "insufficient_storage": "Nedostatečné úložiště", + "insufficient_storage_hint": "Tyto soubory nebyly nahrány, protože překračují maximální velikostní limit vašeho úložného tarifu", + "uploads_in_progress": "Probíhající nahrávání", "successful_uploads": "Úspěšně nahrané", "upload_to_album": "Nahrát do alba", "add_to_album": "Přidat do alba", "move_to_album": "Přesunout do alba", - "unhide_to_album": "Odkrýt album", + "unhide_to_album": "Odkrýt do alba", "restore_to_album": "Obnovit do alba", "section_all": "Vše", "section_uncategorized": "Nezařazené", @@ -359,7 +359,7 @@ "remove_from_album": "Odstranit z alba", "move_to_trash": "Přesunout do koše", "trash_files_message": "Vybrané soubory budou odstraněny ze všech alb a přesunuty do koše.", - "trash_file_message": "Vybrané soubory budou odstraněny ze všech alb a přesunuty do koše.", + "trash_file_message": "Soubor bude odstraněn ze všech alb a přesunut do koše.", "delete_permanently": "Trvale odstranit", "restore": "Obnovit", "empty_trash": "Vyprázdnit koš", @@ -367,9 +367,9 @@ "empty_trash_message": "Vybrané soubory budou trvale odstraněny z vašeho účtu Ente.", "leave_album": "Opustit album", "leave_shared_album_title": "Opustit sdílené album?", - "leave_shared_album_message": "Opustíte album a přestanete ho vidět.", - "leave_shared_album": "Ano, odejít", - "confirm_remove_message": "Vybrané položky budou odstraněny z tohoto alba. Položky, které jsou pouze v tomto albu budou přesunuty do nekategorizované.", + "leave_shared_album_message": "Opustíte album a přestane být pro vás viditelné.", + "leave_shared_album": "Ano, opustit", + "confirm_remove_message": "Vybrané položky budou odstraněny z tohoto alba. Položky, které jsou pouze v tomto albu budou přesunuty do Nezařazené.", "confirm_remove_incl_others_message": "Některé položky, které odstraňujete, byly přidány jinými lidmi a k nim ztratíte přístup.", "oldest": "Nejstarší", "last_updated": "Naposledy aktualizováno", @@ -396,33 +396,33 @@ "participants_count_one": "1 účastník", "participants_count": "{{count, number}} účastníků", "add_viewers": "Přidat prohlížející", - "change_permission_to_viewer": "", - "change_permission_to_collaborator": "", + "change_permission_to_viewer": "

{{selectedEmail}} nebude moci přidávat další fotografie do alba

Stále však bude moci odstraňovat fotografie, které sám přidal

", + "change_permission_to_collaborator": "{{selectedEmail}} bude moci přidávat fotografie do alba", "change_permission_title": "Změnit oprávnění?", - "confirm_convert_to_viewer": "", + "confirm_convert_to_viewer": "Ano, převést na prohlížejícího", "confirm_convert_to_collaborator": "Ano, převést na spolupracovníka", "manage": "Spravovat", - "added_as": "", - "collaborator_hint": "", - "remove_participant": "", - "remove_participant_title": "Odstranit?", - "remove_participant_message": "", + "added_as": "Přidán jako", + "collaborator_hint": "Spolupracovníci mohou přidávat fotografie a videa do sdíleného alba", + "remove_participant": "Odebrat účastníka", + "remove_participant_title": "Odebrat?", + "remove_participant_message": "

{{selectedEmail}} bude odstraněn z alba

Všechny fotografie, které přidali, budou také odstraněny

", "confirm_remove": "Ano, odstranit", "owner": "Vlastník", "collaborators": "Spolupracovníci", "viewers": "Prohlížející", "add_more": "Přidat další", - "or_add_existing": "", + "or_add_existing": "Nebo vyberte existující", "not_found": "404 - Nenalezeno", "link_expired": "Platnost odkazu vypršela", - "link_expired_message": "", - "manage_link": "", - "link_request_limit_exceeded": "", + "link_expired_message": "Tento odkaz vypršel nebo byl deaktivován", + "manage_link": "Spravovat odkaz", + "link_request_limit_exceeded": "Toto album bylo zobrazeno na příliš mnoha zařízeních", "allow_downloads": "Povolit stahování", "allow_adding_photos": "Povolit přidávání fotek", - "allow_adding_photos_hint": "", + "allow_adding_photos_hint": "Umožněte lidem s odkazem přidávat také fotografie do sdíleného alba.", "device_limit": "Limit zařízení", - "none": "", + "none": "Žádný", "link_expiry": "Platnost odkazu", "never": "Nikdy", "after_time": { @@ -438,15 +438,15 @@ "remove_link": "Odstranit odkaz", "create_public_link": "Vytvořit veřejný odkaz", "public_link_created": "Veřejný odkaz vytvořen", - "public_link_enabled": "", - "collect_photos": "", - "disable_file_download": "", - "disable_file_download_message": "", - "shared_using": "", + "public_link_enabled": "Veřejný odkaz povolen", + "collect_photos": "Sbírat fotky", + "disable_file_download": "Zakázat stahování", + "disable_file_download_message": "

Opravdu chcete deaktivovat tlačítko pro stahování souborů?

Uživatelé mohou i nadále pořizovat snímky obrazovky nebo ukládat kopie vašich fotografií pomocí externích nástrojů.

", + "shared_using": "Sdíleno pomocí {{url}}", "sharing_referral_code": "Použij kód {{referralCode}} pro získání 10 GB zdarma", "disable_password": "Zakázat zamknuti heslem", "disable_password_message": "Jste si jisti, že chcete zakázat zamknuti heslem?", - "password_lock": "Zamok heslem", + "password_lock": "Zámek heslem", "lock": "Uzamknout", "file": "Soubor", "folder": "Složka", @@ -457,17 +457,17 @@ "count": "Počet", "deselect_all": "Zrušte výběr všech", "no_duplicates": "Žádné duplikáty", - "duplicate_group_description": "{{count}} položek, {{itemSize}} každý", + "duplicate_group_description": "{{count}} položek, {{itemSize}} každá", "remove_duplicates_button_count": "Odstranit {{count, number}} položek", "stop_uploads_title": "Zastavit nahrávání?", - "stop_uploads_message": "Jste si jisti, že chcete zastavit všechny probíhající nahrávání?", + "stop_uploads_message": "Opravdu chcete zastavit všechny probíhající nahrávání?", "yes_stop_uploads": "Ano, zastavit nahrávání", "stop_downloads_title": "Zastavit nahrávání?", - "stop_downloads_message": "Jste si jisti, že chcete zastavit všechny probíhající nahrávání?", - "yes_stop_downloads": "Ano, zastavit nahrávání", + "stop_downloads_message": "Opravdu chcete zastavit všechny probíhající stahování?", + "yes_stop_downloads": "Ano, zastavit stahování", "albums": "Alba", "albums_count_one": "1 Album", - "albums_count": "{{count, number}} alba", + "albums_count": "{{count, number}} Alb", "all_albums": "Všechna alba", "all_hidden_albums": "Všechna skrytá alba", "hidden_albums": "Skrytá alba", @@ -486,63 +486,63 @@ "watch_folders": "Sledovat složky", "watched_folders": "Sledované složky", "no_folders_added": "Zatím nebyly přidány žádné složky", - "watch_folders_hint_1": "Složky, které sem přidáte, budou automaticky sledovány", + "watch_folders_hint_1": "Složky, které sem přidáte, budou automaticky monitorovány", "watch_folders_hint_2": "Nahrát nové soubory na Ente", "watch_folders_hint_3": "Odstranit smazané soubory z Ente", "add_folder": "Přidat složku", "stop_watching": "Zastavit sledování", "stop_watching_folder_title": "Zastavit sledování složky?", - "stop_watching_folder_message": "Vaše existující soubory nebudou smazány, ale Ente přestane automaticky aktualizovat připojené album Ente při změnách v této složce.", + "stop_watching_folder_message": "Vaše stávající soubory nebudou smazány, ale Ente přestane automaticky aktualizovat propojené album Ente při změnách v této složce.", "yes_stop": "Ano, zastavit", "change_folder": "Změnit složku", "view_logs": "Zobrazit logy", - "view_logs_message": "", - "weak_device_hint": "", - "drag_and_drop_hint": "", + "view_logs_message": "

Zobrazí se ladicí protokoly, které nám můžete zaslat e-mailem, abychom vám pomohli vyřešit váš problém.

Upozorňujeme, že budou zahrnuty názvy souborů, které pomohou sledovat problémy s konkrétními soubory.

", + "weak_device_hint": "Webový prohlížeč, který používáte, není dostatečně výkonný pro šifrování vašich fotografií. Zkuste se přihlásit do Ente na svém počítači nebo si stáhněte mobilní/desktopovou aplikaci Ente.", + "drag_and_drop_hint": "Nebo přetáhněte do okna Ente", "authenticate": "Ověřit", - "uploaded_to_single_collection": "", - "uploaded_to_separate_collections": "", + "uploaded_to_single_collection": "Nahráno do jedné sbírky", + "uploaded_to_separate_collections": "Nahráno do samostatných sbírek", "nevermind": "Nevadí", "update_available": "Je k dispozici aktualizace", - "update_installable_message": "", + "update_installable_message": "Nová verze Ente je připravena k instalaci.", "install_now": "Nainstalovat nyní", "install_on_next_launch": "Instalovat při dalším spuštění", - "update_available_message": "", + "update_available_message": "Byla vydána nová verze programu Ente, ale nelze ji automaticky stáhnout a nainstalovat.", "download_and_install": "Stáhnout a nainstalovat", "ignore_this_version": "Ignorovat tuto verzi", "today": "Dnes", "yesterday": "Včera", "enter_name": "Zadejte jméno", - "uploader_name_hint": "", + "uploader_name_hint": "Přidejte jméno, aby vaši přátelé věděli, komu za tyto skvělé fotky poděkovat!", "name_placeholder": "Název...", "more_details": "Další podrobnosti", "ml_search": "Strojové učení", - "ml_search_description": "", - "ml_search_footnote": "", + "ml_search_description": "Ente podporuje strojové učení na zařízení pro rozpoznávání obličejů, magické vyhledávání a další pokročilé vyhledávací funkce", + "ml_search_footnote": "Magické vyhledávání umožňuje vyhledávat fotografie podle jejich obsahu, např. „auto“, „červené auto“, „Ferrari“", "indexing": "Indexování", "processed": "Zpracováno", - "indexing_status_running": "", - "indexing_status_fetching": "", - "indexing_status_scheduled": "", + "indexing_status_running": "Probíhá", + "indexing_status_fetching": "Načítání", + "indexing_status_scheduled": "Naplánováno", "indexing_status_done": "Hotovo", "ml_search_disable": "Zakázat strojové učení", - "ml_search_disable_confirm": "", + "ml_search_disable_confirm": "Chcete zakázat strojové učení na všech svých zařízeních?", "ml_consent": "Povolit strojové učení", - "ml_consent_title": "", - "ml_consent_description": "", - "ml_consent_confirmation": "", + "ml_consent_title": "Povolit strojové učení?", + "ml_consent_description": "

Pokud povolíte strojové učení, Ente bude extrahovat informace, jako je geometrie obličeje, ze souborů, včetně těch, které s vámi byly sdíleny.

Toto se bude dít na vašem zařízení a veškeré generované biometrické informace budou koncově šifrovány.

Klikněte sem pro více informací o této funkci v našich zásadách ochrany osobních údajů

", + "ml_consent_confirmation": "Rozumím a chci povolit strojové učení", "labs": "Experimentální", "password_strength_weak": "Síla hesla: Slabá", - "password_strength_moderate": "", + "password_strength_moderate": "Síla hesla: Střední", "password_strength_strong": "Síla hesla: Silná", "preferences": "Předvolby", "language": "Jazyk", "advanced": "Pokročilé", - "export_directory_does_not_exist": "", - "export_directory_does_not_exist_message": "", + "export_directory_does_not_exist": "Neplatný adresář pro export", + "export_directory_does_not_exist_message": "

Zvolený adresář pro export neexistuje.

Zvolte platný adresář.

", "storage_unit": { "b": "B", - "kb": "kB", + "kb": "KB", "mb": "MB", "gb": "GB", "tb": "TB" @@ -554,27 +554,27 @@ "export_renaming_album_folders": "Přejmenování složek alba...", "export_trashing_deleted_files": "Mazání odstraněných souborů...", "export_trashing_deleted_albums": "Mazání odstraněných alb...", - "export_progress": "{{progress.success, number}} / {{progress.total, number}} položky synchronizovány", + "export_progress": "{{progress.success, number}} / {{progress.total, number}} položek synchronizováno", "pending_items": "Čekající položky", "delete_account_reason_label": "Jaký je váš hlavní důvod, proč mažete svůj účet?", "delete_account_reason_placeholder": "Vybrat důvod", "delete_reason": { "missing_feature": "Chybí klíčová funkce, kterou potřebuji", "behaviour": "Aplikace nebo určitá funkce se nechová tak, jak si myslím, že by měla", - "found_another_service": "Našel jsem další službu, která se mi líbí víc", + "found_another_service": "Našel jsem jinou službu, která se mi líbí víc", "not_listed": "Můj důvod není uveden" }, - "delete_account_feedback_label": "Je nám líto, že odcházíte. Vysvětlete prosim, proč odcházíte, abyste nám pomohli zlepšit.", + "delete_account_feedback_label": "Je nám líto, že odcházíte. Prosím, vysvětlete nám důvod svého odchodu, abychom se mohli zlepšit.", "delete_account_feedback_placeholder": "Zpětná vazba", "delete_account_confirm_checkbox_label": "Ano, chci trvale odstranit tento účet a všechny jeho údaje", "delete_account_confirm": "Potvrdit odstranění účtu", - "delete_account_confirm_message": "

Tento účet je propojen s ostatními Ente aplikacemi, pokud jej používáte.

Vaše nahraná data napříč všemi Ente aplikacemi budou naplánována na smazání a váš účet bude trvale smazán.

", - "feedback_required": "Pomozte nám s těmito informacemi", - "feedback_required_found_another_service": "Co ostatni služba dela lépe?", - "recover_two_factor": "Obnovit dvoufaktorové", + "delete_account_confirm_message": "

Tento účet je propojen s dalšími aplikacemi Ente, pokud je používáte.

Vaše nahraná data ve všech aplikacích Ente budou naplánována k odstranění a váš účet bude trvale smazán.

", + "feedback_required": "Prosíme, pomozte nám s těmito informacemi", + "feedback_required_found_another_service": "V čem je ta druhá služba lepší?", + "recover_two_factor": "Obnovit dvoufázové ověření", "at": "na", "auth_next": "další", - "auth_download_mobile_app": "Stáhněte si naši mobilní aplikaci pro správu vašich tajemství", + "auth_download_mobile_app": "Stáhněte si naši mobilní aplikaci a spravujte svá tajemství", "no_codes_added_yet": "Zatím nebyly přidány žádné kódy", "hide": "Skrýt", "unhide": "Zobrazit", @@ -591,15 +591,15 @@ "christmas": "Vánoce", "christmas_eve": "Vánoční večer", "new_year": "Nový rok", - "new_year_eve": "Nový rok", + "new_year_eve": "Silvestr", "image": "Obrázek", "video": "Video", "live_photo": "Živá fotografie", - "live": "", - "edit_image": "", - "photo_editor": "", - "confirm_editor_close": "", - "confirm_editor_close_message": "", + "live": "Živé", + "edit_image": "Upravit obrázek", + "photo_editor": "Editor obrázků", + "confirm_editor_close": "Opravdu chcete editor zavřít?", + "confirm_editor_close_message": "Stáhněte si upravený obrázek nebo uložte kopii do Ente, aby se změny trvale uložily.", "brightness": "Jas", "contrast": "Kontrast", "saturation": "Sytost", @@ -609,93 +609,93 @@ "aspect_ratio": "Poměr stran", "square": "Čtverec", "freehand": "Volný", - "apply_crop": "", + "apply_crop": "Použít ořez", "rotation": "Otočení", "rotate_left": "Otočit doleva", "rotate_right": "Otočit doprava", "flip": "Překlopit", "flip_vertically": "Překlopit svisle", "flip_horizontally": "Překlopit vodorovně", - "download_edited": "", + "download_edited": "Stáhnout upravené", "save_a_copy_to_ente": "Uložit kopii na Ente", - "restore_original": "Obnovit původní", - "photo_edit_required_to_save": "", + "restore_original": "Obnovit originál", + "photo_edit_required_to_save": "Před uložením je nutné provést alespoň jednu transformaci nebo úpravu barev.", "colors": "Barvy", "invert_colors": "Invertovat barvy", "reset": "Obnovit", "faster_upload": "Rychlejší nahrávání", - "faster_upload_description": "", - "open_ente_on_startup": "", + "faster_upload_description": "Provést nahrávání skrz servery v blízkosti", + "open_ente_on_startup": "Otevřít Ente při spuštění", "cast_album_to_tv": "Přehrát album v televizi", - "cast_to_tv": "", - "enter_cast_pin_code": "", + "cast_to_tv": "Přehrát v televizi", + "enter_cast_pin_code": "Zadejte kód, který vidíte na televizoru, abyste spárovali toto zařízení.", "code": "Kód", "pair_device_to_tv": "Párovat zařízení", - "tv_not_found": "", - "cast_auto_pair": "", - "cast_auto_pair_description": "", - "choose_device_from_browser": "", - "cast_auto_pair_failed": "", + "tv_not_found": "Televizor nebyl nalezen. Zadali jste správně PIN kód?", + "cast_auto_pair": "Automatické párování", + "cast_auto_pair_description": "Funkce automatického párování funguje pouze se zařízeními, která podporují Chromecast.", + "choose_device_from_browser": "Vyberte zařízení kompatibilní s Chromecast z vyskakovacího okna prohlížeče.", + "cast_auto_pair_failed": "Párování Chromecastu se nezdařilo. Zkuste to znovu.", "pair_with_pin": "Párovat s PINem", - "pair_with_pin_description": "", - "visit_cast_url": "", - "passkeys": "", - "passkey_fetch_failed": "", - "manage_passkey": "", - "delete_passkey": "", - "delete_passkey_confirmation": "", - "rename_passkey": "", - "add_passkey": "", - "enter_passkey_name": "Zadejte název přístupového hesla", - "passkeys_description": "Passkeys je moderní a bezpečný druhý faktor pro váš účet Ente. Používají biometrické ověření na zařízení pro pohodlí a bezpečnost.", + "pair_with_pin_description": "Funkce \"Párovat s PINem\" funguje s jakoukoli obrazovkou, na které si chcete prohlížet své album.", + "visit_cast_url": "Navštivte {{url}} na zařízení, které chcete spárovat.", + "passkeys": "Přístupové klíče", + "passkey_fetch_failed": "Nelze získat vaše přístupové klíče.", + "manage_passkey": "Spravovat přístupové klíče", + "delete_passkey": "Smazat přístupový klíč", + "delete_passkey_confirmation": "Opravdu chcete tento přístupový klíč smazat? Tato akce je nevratná.", + "rename_passkey": "Přejmenovat přístupový klíč", + "add_passkey": "Přidat přístupový klíč", + "enter_passkey_name": "Zadejte název přístupového klíče", + "passkeys_description": "Přístupového klíče jsou moderní a bezpečné dvoufázové ověření pro váš účet Ente. Využívají biometrické ověření na zařízení pro větší pohodlí a bezpečnost.", "created_at": "Vytvořeno dne", - "passkey_add_failed": "Nelze přidat passkey", - "passkey_login_failed": "Přihlášení pomocí passkey selhalo", + "passkey_add_failed": "Nelze přidat přístupový klíč", + "passkey_login_failed": "Přihlášení pomocí přístupového klíče selhalo", "passkey_login_invalid_url": "Přihlašovací URL je neplatná.", "passkey_login_already_claimed_session": "Tato relace již byla ověřena.", - "passkey_login_generic_error": "Došlo k chybě při přihlášení s passkey.", - "passkey_login_credential_hint": "Pokud je vaše passkey na jiném zařízení, můžete tuto stránku otevřít na tomto zařízení a ověřit.", - "passkeys_not_supported": "Passkeys nejsou v tomto prohlížeči podporovány", + "passkey_login_generic_error": "Došlo k chybě při přihlášení pomocí přístupového klíče.", + "passkey_login_credential_hint": "Pokud jsou vaše přístupové klíče na jiném zařízení, můžete tuto stránku otevřít na daném zařízení a ověřit je.", + "passkeys_not_supported": "Tento prohlížeč nepodporuje přístupové klíče", "try_again": "Zkusit znovu", "check_status": "Zkontrolovat stav", "passkey_login_instructions": "Postupujte podle kroků vašeho prohlížeče a pokračujte v přihlašování.", - "passkey_login": "Přihlásit se pomocí passkey", + "passkey_login": "Přihlášení pomocí přístupového klíče", "totp_login": "Přihlášení s TOTP", - "passkey": "Passkey", - "passkey_verify_description": "Ověřte své passkey pro přihlášení do vašeho účtu.", + "passkey": "Přístupový klíč", + "passkey_verify_description": "Ověřte svůj přístupový klíč pro přihlášení do svého účtu.", "waiting_for_verification": "Čekám na ověření...", "verification_still_pending": "Ověřování stále probíhá", - "passkey_verified": "Passkey ověřen", + "passkey_verified": "Přístupový klíč ověřen", "redirecting_back_to_app": "Přesměrování zpět do aplikace...", "redirect_close_instructions": "Toto okno můžete zavřít po otevření aplikace.", "redirect_again": "Přesměrovat znovu", - "autogenerated_first_album_name": "Moje první alba", - "autogenerated_default_album_name": "Nový album", - "developer_settings": "Vývojářská nastavení", + "autogenerated_first_album_name": "Moje první album", + "autogenerated_default_album_name": "Nové album", + "developer_settings": "Nastavení pro vývojáře", "server_endpoint": "Koncový bod serveru", "more_information": "Více informací", "save": "Uložit", - "theme": "Téma", + "theme": "Motiv", "system": "Systém", "light": "Světlý", "dark": "Tmavý", - "streamable_videos": "", - "processing_videos_status": "", - "share_favorites": "", - "person_favorites": "", - "shared_favorites": "", - "added_by_name": "", - "unowned_files_not_processed": "", - "custom_domains": "", - "custom_domains_desc": "", - "link_your_domain": "", - "domain": "", - "domain_help": "", - "invalid_domain": "", - "already_linked_domain": "", - "add_dns_entry": "", - "add_dns_entry_hint": "", - "custom_domains_help": "", - "num_1": "", - "num_2": "" + "streamable_videos": "Videa pro streamování", + "processing_videos_status": "Zpracování videí...", + "share_favorites": "Sdílet oblíbené", + "person_favorites": "Oblíbené položky uživatele {{name}}", + "shared_favorites": "Sdílené oblíbené položky", + "added_by_name": "Přidáno uživatelem {{name}}", + "unowned_files_not_processed": "Soubory přidané jinými uživateli nebyly zpracovány", + "custom_domains": "Vlastní domény", + "custom_domains_desc": "Při sdílení používejte vlastní doménu", + "link_your_domain": "Propojte svou doménu", + "domain": "Doména", + "domain_help": "Jakákoli doména nebo subdoména, kterou vlastníte", + "invalid_domain": "Neplatná doména", + "already_linked_domain": "Doména již propojena uživatelem", + "add_dns_entry": "Přidat záznam DNS", + "add_dns_entry_hint": "U svého poskytovatele DNS přidejte CNAME ze své domény na {{host}}", + "custom_domains_help": "Další informace naleznete v nápovědě", + "num_1": "1", + "num_2": "2" } diff --git a/web/packages/base/locales/de-DE/translation.json b/web/packages/base/locales/de-DE/translation.json index 444eacde12..a4e9d1131c 100644 --- a/web/packages/base/locales/de-DE/translation.json +++ b/web/packages/base/locales/de-DE/translation.json @@ -686,16 +686,16 @@ "shared_favorites": "Geteilte Favoriten", "added_by_name": "Von {{name}} hinzugefügt", "unowned_files_not_processed": "Von anderen Benutzern hinzugefügte Dateien wurden nicht verarbeitet", - "custom_domains": "", - "custom_domains_desc": "", - "link_your_domain": "", - "domain": "", - "domain_help": "", - "invalid_domain": "", - "already_linked_domain": "", - "add_dns_entry": "", - "add_dns_entry_hint": "", - "custom_domains_help": "", - "num_1": "", - "num_2": "" + "custom_domains": "Benutzerdefinierte Domain", + "custom_domains_desc": "Verwenden Sie Ihre eigene Domain beim Teilen", + "link_your_domain": "Domain verknüpfen", + "domain": "Domain", + "domain_help": "Eine beliebige Domain oder Subdomain die Sie besitzen", + "invalid_domain": "Ungültige Domain", + "already_linked_domain": "Domain wurde von einem Benutzer bereits verknüpft", + "add_dns_entry": "DNS-Eintrag hinzufügen", + "add_dns_entry_hint": "Fügen Sie bei Ihrem DNS-Provider einen CNAME von Ihrer Domain zu {{host}} hinzu", + "custom_domains_help": "Weitere Informationen finden Sie unter Hilfe", + "num_1": "1", + "num_2": "2" } diff --git a/web/packages/base/locales/pl-PL/translation.json b/web/packages/base/locales/pl-PL/translation.json index bdae07f1a1..80e71b6a54 100644 --- a/web/packages/base/locales/pl-PL/translation.json +++ b/web/packages/base/locales/pl-PL/translation.json @@ -162,7 +162,7 @@ "ok": "OK", "success": "Sukces", "error": "Błąd", - "note": "", + "note": "Notatka", "offline_message": "Jesteś offline, wyświetlane są wspomnienia z pamięci podręcznej", "install": "Zainstaluj", "install_mobile_app": "Zainstaluj naszą aplikację na system Android lub iOS, aby automatycznie wykonać kopię zapasową wszystkich zdjęć", @@ -686,16 +686,16 @@ "shared_favorites": "Udostępnione ulubione", "added_by_name": "Dodane przez {{name}}", "unowned_files_not_processed": "Pliki dodane przez innych użytkowników nie były przetwarzane", - "custom_domains": "", - "custom_domains_desc": "", - "link_your_domain": "", - "domain": "", - "domain_help": "", - "invalid_domain": "", - "already_linked_domain": "", - "add_dns_entry": "", - "add_dns_entry_hint": "", - "custom_domains_help": "", + "custom_domains": "Domeny własne", + "custom_domains_desc": "Podczas udostępniania użyj własnej domeny", + "link_your_domain": "Połącz swoją domenę", + "domain": "Domena", + "domain_help": "Dowolna domena lub subdomena, którą posiadasz", + "invalid_domain": "Domena nieprawidłowa", + "already_linked_domain": "Domena jest już połączona przez użytkownika", + "add_dns_entry": "Dodaj wpis DNS", + "add_dns_entry_hint": "Na swoim dostawcy DNS, dodaj CNAME ze swojej domeny do {{host}}", + "custom_domains_help": "Aby uzyskać więcej informacji, zobacz pomoc", "num_1": "", "num_2": "" } From fbdec00a620d1eed150a7bc66e89c4a061687e3b Mon Sep 17 00:00:00 2001 From: ashilkn Date: Mon, 25 Aug 2025 09:16:59 +0530 Subject: [PATCH 06/13] Improve lru cache thumbnail rendering speed when scrolling gallery by precaching it it flutter's image cache --- .../apps/photos/lib/ui/viewer/file/thumbnail_widget.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart b/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart index a8ebac8086..3cd3488a85 100644 --- a/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart +++ b/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart @@ -245,12 +245,12 @@ class _ThumbnailWidgetState extends State { final cachedSmallThumbnail = ThumbnailInMemoryLruCache.get(widget.file, thumbnailSmallSize); if (cachedSmallThumbnail != null) { - _imageProvider = Image.memory( + final imageProvider = Image.memory( cachedSmallThumbnail, cacheHeight: optimizedImageHeight, cacheWidth: optimizedImageWidth, ).image; - _hasLoadedThumbnail = true; + _cacheAndRender(imageProvider); } else { if (widget.diskLoadDeferDuration != null) { Future.delayed(widget.diskLoadDeferDuration!, () { @@ -383,12 +383,12 @@ class _ThumbnailWidgetState extends State { _isLoadingRemoteThumbnail = true; final cachedThumbnail = ThumbnailInMemoryLruCache.get(widget.file); if (cachedThumbnail != null) { - _imageProvider = Image.memory( + final imageProvider = Image.memory( cachedThumbnail, cacheHeight: optimizedImageHeight, cacheWidth: optimizedImageWidth, ).image; - _hasLoadedThumbnail = true; + _cacheAndRender(imageProvider); return; } From a856a822492d1986ea24af2409b527b0cefc752f Mon Sep 17 00:00:00 2001 From: ashilkn Date: Mon, 25 Aug 2025 09:18:29 +0530 Subject: [PATCH 07/13] Refactor --- .../lib/ui/viewer/file/thumbnail_widget.dart | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart b/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart index 3cd3488a85..75eaf6fe5d 100644 --- a/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart +++ b/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart @@ -251,16 +251,16 @@ class _ThumbnailWidgetState extends State { cacheWidth: optimizedImageWidth, ).image; _cacheAndRender(imageProvider); + return; + } + if (widget.diskLoadDeferDuration != null) { + Future.delayed(widget.diskLoadDeferDuration!, () { + if (mounted) { + _getThumbnailFromDisk(); + } + }); } else { - if (widget.diskLoadDeferDuration != null) { - Future.delayed(widget.diskLoadDeferDuration!, () { - if (mounted) { - _getThumbnailFromDisk(); - } - }); - } else { - _getThumbnailFromDisk(); - } + _getThumbnailFromDisk(); } } } From 0da3dc5084a542acdaa793b2cd980a2977439526 Mon Sep 17 00:00:00 2001 From: ashilkn Date: Mon, 25 Aug 2025 09:20:08 +0530 Subject: [PATCH 08/13] Skip clearing flutter image cache since default (current) limit is 100MB and the threshold to clear is 250MB --- mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart b/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart index 75eaf6fe5d..6ab50e3019 100644 --- a/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart +++ b/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart @@ -432,11 +432,6 @@ class _ThumbnailWidgetState extends State { } void _cacheAndRender(ImageProvider imageProvider) { - if (imageCache.currentSizeBytes > 256 * 1024 * 1024) { - _logger.info("Clearing image cache"); - imageCache.clear(); - imageCache.clearLiveImages(); - } precacheImage(imageProvider, context).then((value) { if (mounted) { setState(() { From f139e0a0982520e778f3cc4f9d252133d3fafa80 Mon Sep 17 00:00:00 2001 From: ashilkn Date: Mon, 25 Aug 2025 09:21:57 +0530 Subject: [PATCH 09/13] Fix flickering of GalleryFileWidget on hero animation after closing it's open full view --- .../lib/ui/viewer/file/thumbnail_widget.dart | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart b/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart index 6ab50e3019..cbc707d6d4 100644 --- a/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart +++ b/mobile/apps/photos/lib/ui/viewer/file/thumbnail_widget.dart @@ -432,14 +432,14 @@ class _ThumbnailWidgetState extends State { } void _cacheAndRender(ImageProvider imageProvider) { - precacheImage(imageProvider, context).then((value) { - if (mounted) { - setState(() { - _imageProvider = imageProvider; - _hasLoadedThumbnail = true; - }); - } - }); + if (mounted) { + setState(() { + _imageProvider = imageProvider; + _hasLoadedThumbnail = true; + }); + } + + precacheImage(imageProvider, context); } void _reset() { From 839c62ea72ded45e4e928c4d93b599cb4525604b Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Mon, 25 Aug 2025 10:28:23 +0530 Subject: [PATCH 10/13] [web] Enable Czech --- web/apps/photos/src/components/Sidebar.tsx | 2 ++ web/packages/base/i18n.ts | 3 +++ 2 files changed, 5 insertions(+) diff --git a/web/apps/photos/src/components/Sidebar.tsx b/web/apps/photos/src/components/Sidebar.tsx index f2b4cc7b12..03ba6964a3 100644 --- a/web/apps/photos/src/components/Sidebar.tsx +++ b/web/apps/photos/src/components/Sidebar.tsx @@ -976,6 +976,8 @@ const localeName = (locale: SupportedLocale) => { return "اَلْعَرَبِيَّةُ"; case "tr-TR": return "Türkçe"; + case "cs-CZ": + return "čeština"; } }; diff --git a/web/packages/base/i18n.ts b/web/packages/base/i18n.ts index 90c6cfce1c..f5ba2dd1b3 100644 --- a/web/packages/base/i18n.ts +++ b/web/packages/base/i18n.ts @@ -36,6 +36,7 @@ export const supportedLocales = [ "ja-JP" /* Japanese */, "ar-SA" /* Arabic */, "tr-TR" /* Turkish */, + "cs-CZ" /* Czech */, ] as const; /** The type of {@link supportedLocales}. */ @@ -201,6 +202,8 @@ const closestSupportedLocale = ( return "ar-SA"; } else if (ls.startsWith("tr")) { return "tr-TR"; + } else if (ls.startsWith("cs")) { + return "cs-CZ"; } } From 1fa6a0c3b940ac7a4eab0775bee764943892b4a8 Mon Sep 17 00:00:00 2001 From: ashilkn Date: Mon, 25 Aug 2025 10:41:16 +0530 Subject: [PATCH 11/13] Update internal change log --- mobile/apps/photos/scripts/internal_changes.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/mobile/apps/photos/scripts/internal_changes.txt b/mobile/apps/photos/scripts/internal_changes.txt index 8aeedff45d..286f24adeb 100644 --- a/mobile/apps/photos/scripts/internal_changes.txt +++ b/mobile/apps/photos/scripts/internal_changes.txt @@ -1,3 +1,4 @@ +- Ashil: Render cached thumbnails faster (noticeable in gallery scrolling) - Similar images UI changes - Neeraj: Fix for double enteries for local file - (prtk) Fix widget initial launch on iOS From edf32d065e1955f6e905df6ad755933ab5285272 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Mon, 25 Aug 2025 10:47:43 +0530 Subject: [PATCH 12/13] [desktop] Update changelog --- desktop/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/desktop/CHANGELOG.md b/desktop/CHANGELOG.md index 2cff804323..6ce00e6ad9 100644 --- a/desktop/CHANGELOG.md +++ b/desktop/CHANGELOG.md @@ -2,6 +2,8 @@ ## v1.7.15 (Unreleased) +- Custom domains. +- Support Czech translations. - . ## v1.7.14 From 1b394357351f91157c87d20a9616c09022ac8634 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:02:25 +0530 Subject: [PATCH 13/13] Fix query --- mobile/apps/photos/lib/db/files_db.dart | 62 +++++++++++-------- .../services/sync/remote_sync_service.dart | 7 +-- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/mobile/apps/photos/lib/db/files_db.dart b/mobile/apps/photos/lib/db/files_db.dart index 265ac06e06..3d2d8a5242 100644 --- a/mobile/apps/photos/lib/db/files_db.dart +++ b/mobile/apps/photos/lib/db/files_db.dart @@ -981,7 +981,8 @@ class FilesDB with SqlDbBase { // remove references for local files which are either already uploaded // or queued for upload but not yet uploaded - Future removeQueuedLocalFiles(Set localIDs) async { +// Remove queued local files that have duplicate uploaded entries with same localID + Future removeQueuedLocalFiles(Set localIDs, int ownerID) async { if (localIDs.isEmpty) { _logger.finest("No local IDs provided for removal"); return 0; @@ -990,54 +991,63 @@ class FilesDB with SqlDbBase { final db = await instance.sqliteAsyncDB; const batchSize = 10000; int totalRemoved = 0; - final localIDsList = localIDs.toList(); for (int i = 0; i < localIDsList.length; i += batchSize) { final endIndex = (i + batchSize > localIDsList.length) ? localIDsList.length : i + batchSize; - final batch = localIDsList.sublist(i, endIndex); final placeholders = List.filled(batch.length, '?').join(','); - final List alreadyUploaded = []; - // find localIDs that are already uploaded - final result = await db.execute(''' + + // Find localIDs that already have uploaded entries + final result = await db.execute( + ''' SELECT DISTINCT $columnLocalID FROM $filesTable - WHERE $columnLocalID IN ($placeholders) + WHERE + $columnOwnerID = $ownerID + AND $columnLocalID IN ($placeholders) AND ($columnUploadedFileID IS NOT NULL AND $columnUploadedFileID != -1) -'''); - - for (final row in result) { - alreadyUploaded.add(row[columnLocalID] as String); - } - final uploadedPlaceholders = - alreadyUploaded.map((id) => "'$id'").join(','); - final r = await db.execute( - ''' - DELETE FROM $filesTable - WHERE $columnLocalID IN ($uploadedPlaceholders) - AND ($columnUploadedFileID IS NULL OR $columnUploadedFileID = -1) - ''', + ''', batch, ); - if (r.isNotEmpty) { - _logger.warning( - "Batch ${(i ~/ batchSize) + 1}: Removed duplicate ${r.length} files", + if (result.isNotEmpty) { + final alreadyUploadedLocalIDs = + result.map((row) => row[columnLocalID] as String).toList(); + final localIdPlaceholder = + List.filled(alreadyUploadedLocalIDs.length, '?').join(','); + + // Delete queued entries for localIDs that already have uploaded versions + final deleteResult = await db.execute( + ''' + DELETE FROM $filesTable + WHERE $columnLocalID IN ($localIdPlaceholder) + AND ($columnUploadedFileID IS NULL OR $columnUploadedFileID = -1) + ''', + alreadyUploadedLocalIDs, ); - totalRemoved += r.length; + + final removedCount = + deleteResult.length; // or however your DB returns affected rows + if (removedCount > 0) { + _logger.warning( + "Batch ${(i ~/ batchSize) + 1}: Removed $removedCount queued duplicates", + ); + totalRemoved += removedCount; + } } } if (totalRemoved > 0) { _logger.warning( - "Removed $totalRemoved potential dups for already queued local files", + "Removed $totalRemoved queued files that had uploaded duplicates", ); } else { - _logger.finest("No duplicate id found for queued/uploaded files"); + _logger.finest("No queued duplicates found for uploaded files"); } + return totalRemoved; } diff --git a/mobile/apps/photos/lib/services/sync/remote_sync_service.dart b/mobile/apps/photos/lib/services/sync/remote_sync_service.dart index 9e2f7f6aed..f51c967e44 100644 --- a/mobile/apps/photos/lib/services/sync/remote_sync_service.dart +++ b/mobile/apps/photos/lib/services/sync/remote_sync_service.dart @@ -377,10 +377,9 @@ class RemoteSyncService { localIDsToSync.removeAll(alreadyClaimedLocalIDs); if (alreadyClaimedLocalIDs.isNotEmpty && !_hasCleanupStaleEntry) { try { - await _db.removeQueuedLocalFiles(alreadyClaimedLocalIDs); - } catch(e, s) { - _logger.severe("removeQueuedLocalFiles failed",e,s); - + await _db.removeQueuedLocalFiles(alreadyClaimedLocalIDs, ownerID); + } catch (e, s) { + _logger.severe("removeQueuedLocalFiles failed", e, s); } } }