diff --git a/.github/.nvmrc b/.github/.nvmrc
index e2228113dd..442c7587a9 100644
--- a/.github/.nvmrc
+++ b/.github/.nvmrc
@@ -1 +1 @@
-22.19.0
+22.20.0
diff --git a/README.md b/README.md
index 459cda481c..0b9b008bca 100644
--- a/README.md
+++ b/README.md
@@ -38,26 +38,25 @@
ภาษาไทย
-## Disclaimer
-- ⚠️ The project is under **very active** development.
-- ⚠️ Expect bugs and breaking changes.
-- ⚠️ **Do not use the app as the only way to store your photos and videos.**
-- ⚠️ Always follow [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) backup plan for your precious photos and videos!
+> [!WARNING]
+> ⚠️ Always follow [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) backup plan for your precious photos and videos!
+>
+
> [!NOTE]
> You can find the main documentation, including installation guides, at https://immich.app/.
## Links
-- [Documentation](https://immich.app/docs)
-- [About](https://immich.app/docs/overview/introduction)
-- [Installation](https://immich.app/docs/install/requirements)
+- [Documentation](https://docs.immich.app/)
+- [About](https://docs.immich.app/overview/introduction)
+- [Installation](https://docs.immich.app/install/requirements)
- [Roadmap](https://immich.app/roadmap)
- [Demo](#demo)
- [Features](#features)
-- [Translations](https://immich.app/docs/developer/translations)
-- [Contributing](https://immich.app/docs/overview/support-the-project)
+- [Translations](https://docs.immich.app/developer/translations)
+- [Contributing](https://docs.immich.app/overview/support-the-project)
## Demo
@@ -106,7 +105,7 @@ Access the demo [here](https://demo.immich.app). For the mobile app, you can use
## Translations
-Read more about translations [here](https://immich.app/docs/developer/translations).
+Read more about translations [here](https://docs.immich.app/developer/translations).
diff --git a/cli/.nvmrc b/cli/.nvmrc
index e2228113dd..442c7587a9 100644
--- a/cli/.nvmrc
+++ b/cli/.nvmrc
@@ -1 +1 @@
-22.19.0
+22.20.0
diff --git a/cli/README.md b/cli/README.md
index 8fa2ace483..ae82e131f4 100644
--- a/cli/README.md
+++ b/cli/README.md
@@ -1,6 +1,6 @@
A command-line interface for interfacing with the self-hosted photo manager [Immich](https://immich.app/).
-Please see the [Immich CLI documentation](https://immich.app/docs/features/command-line-interface).
+Please see the [Immich CLI documentation](https://docs.immich.app/features/command-line-interface).
# For developers
diff --git a/cli/package.json b/cli/package.json
index ce10484d80..5dffbf1c66 100644
--- a/cli/package.json
+++ b/cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@immich/cli",
- "version": "2.2.92",
+ "version": "2.2.96",
"description": "Command Line Interface (CLI) for Immich",
"type": "module",
"exports": "./dist/index.js",
@@ -68,6 +68,6 @@
"micromatch": "^4.0.8"
},
"volta": {
- "node": "22.19.0"
+ "node": "22.20.0"
}
}
diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml
index bd41ed8d62..eba1f632c1 100644
--- a/docker/docker-compose.dev.yml
+++ b/docker/docker-compose.dev.yml
@@ -1,5 +1,5 @@
#
-# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
+# WARNING: To install Immich, follow our guide: https://docs.immich.app/install/docker-compose
#
# Make sure to use the docker-compose.yml of the current release:
#
@@ -8,8 +8,8 @@
# The compose file on main may not be compatible with the latest release.
# For development see:
-# - https://immich.app/docs/developer/setup
-# - https://immich.app/docs/developer/troubleshooting
+# - https://docs.immich.app/developer/setup
+# - https://docs.immich.app/developer/troubleshooting
name: immich-dev
@@ -55,8 +55,8 @@ services:
IMMICH_BUILD_IMAGE_URL: https://github.com/immich-app/immich/pkgs/container/immich-server
IMMICH_THIRD_PARTY_SOURCE_URL: https://github.com/immich-app/immich/
IMMICH_THIRD_PARTY_BUG_FEATURE_URL: https://github.com/immich-app/immich/issues
- IMMICH_THIRD_PARTY_DOCUMENTATION_URL: https://immich.app/docs
- IMMICH_THIRD_PARTY_SUPPORT_URL: https://immich.app/docs/community-guides
+ IMMICH_THIRD_PARTY_DOCUMENTATION_URL: https://docs.immich.app
+ IMMICH_THIRD_PARTY_SUPPORT_URL: https://docs.immich.app/community-guides
ulimits:
nofile:
soft: 1048576
diff --git a/docker/docker-compose.prod.yml b/docker/docker-compose.prod.yml
index dcdfc72c82..e27012cf56 100644
--- a/docker/docker-compose.prod.yml
+++ b/docker/docker-compose.prod.yml
@@ -1,5 +1,5 @@
#
-# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
+# WARNING: To install Immich, follow our guide: https://docs.immich.app/install/docker-compose
#
# Make sure to use the docker-compose.yml of the current release:
#
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index c3ded93ba9..b4ff05f366 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -1,5 +1,5 @@
#
-# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
+# WARNING: To install Immich, follow our guide: https://docs.immich.app/install/docker-compose
#
# Make sure to use the docker-compose.yml of the current release:
#
@@ -36,7 +36,7 @@ services:
# For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
- # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
+ # extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration
# file: hwaccel.ml.yml
# service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
diff --git a/docker/example.env b/docker/example.env
index 0450dc0805..6d6fd1e3fe 100644
--- a/docker/example.env
+++ b/docker/example.env
@@ -1,4 +1,4 @@
-# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
+# You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
diff --git a/docker/hwaccel.ml.yml b/docker/hwaccel.ml.yml
index 111202d022..c95ac7ee4c 100644
--- a/docker/hwaccel.ml.yml
+++ b/docker/hwaccel.ml.yml
@@ -4,7 +4,7 @@
# you can inline the config for a backend by copying its contents
# into the immich-machine-learning service in the docker-compose.yml file.
-# See https://immich.app/docs/features/ml-hardware-acceleration for info on usage.
+# See https://docs.immich.app/features/ml-hardware-acceleration for info on usage.
services:
armnn:
diff --git a/docker/hwaccel.transcoding.yml b/docker/hwaccel.transcoding.yml
index 60ee7e8fa3..0857faf465 100644
--- a/docker/hwaccel.transcoding.yml
+++ b/docker/hwaccel.transcoding.yml
@@ -4,7 +4,7 @@
# you can inline the config for a backend by copying its contents
# into the immich-microservices service in the docker-compose.yml file.
-# See https://immich.app/docs/features/hardware-transcoding for more info on using hardware transcoding.
+# See https://docs.immich.app/features/hardware-transcoding for more info on using hardware transcoding.
services:
cpu: {}
diff --git a/docs/.nvmrc b/docs/.nvmrc
index e2228113dd..442c7587a9 100644
--- a/docs/.nvmrc
+++ b/docs/.nvmrc
@@ -1 +1 @@
-22.19.0
+22.20.0
diff --git a/docs/docs/install/one-click.md b/docs/docs/install/one-click.md
new file mode 100644
index 0000000000..53fcb20d21
--- /dev/null
+++ b/docs/docs/install/one-click.md
@@ -0,0 +1,32 @@
+---
+sidebar_position: 65
+---
+
+# One-Click [Cloud Service]
+
+:::note
+This version of Immich is provided via cloud service providers' one-click marketplaces. Hosting costs are set by the cloud service providers.
+Support for these are provided by the individual cloud service providers.
+
+**Please report issues to the corresponding [Github Repository][github].**
+:::
+
+## Installation
+
+Go to the provider's marketplace and choose Immich, then follow the provided instructions.
+
+## One-Click Immich marketplace providers
+
+### DigitalOcean
+
+https://marketplace.digitalocean.com/apps/immich
+
+### Vultr
+
+https://www.vultr.com/marketplace/apps/immich
+
+## Issues
+
+For issues, open an issue on the associated [GitHub Repository][github].
+
+[github]: https://github.com/immich-app/immich/
diff --git a/docs/docs/install/upgrading.md b/docs/docs/install/upgrading.md
index 305e61af57..da95222911 100644
--- a/docs/docs/install/upgrading.md
+++ b/docs/docs/install/upgrading.md
@@ -4,9 +4,7 @@ sidebar_position: 95
# Upgrading
-:::danger Read the release notes
-Immich is currently under heavy development, which means you can expect [breaking changes][breaking] and bugs. You should read the release notes prior to updating and take special care when using automated tools like [Watchtower][watchtower].
-
+:::tip Breaking changes
You can see versions that had breaking changes [here][breaking].
:::
diff --git a/docs/docs/partials/_server-backup.md b/docs/docs/partials/_server-backup.md
index 34c93d78a1..34e09670e9 100644
--- a/docs/docs/partials/_server-backup.md
+++ b/docs/docs/partials/_server-backup.md
@@ -1,7 +1,6 @@
Now that you have imported some pictures, you should setup server backups to preserve your memories.
You can do so by following our [backup guide](/administration/backup-and-restore.md).
-:::danger
-Immich is still under heavy development _and_ handles very important data.
-It is essential that you set up good backups, and test them.
+:::info
+A 3-2-1 backup strategy is still crucial. The team has the responsibility to ensure that the application doesn’t cause loss of your precious memories; however, we cannot guarantee that hard drives will not fail, or an electrical event causes unexpected shutdown of your server/system, leading to data loss. Therefore, we still encourage users to follow best practices when safeguarding their data. Keep multiple copies of your most precious data: at least two local copies and one copy offsite in cold storage.
:::
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index fd550806f8..70e0189a00 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -7,7 +7,7 @@ const prism = require('prism-react-renderer');
const config = {
title: 'Immich',
tagline: 'High performance self-hosted photo and video backup solution directly from your mobile phone',
- url: 'https://immich.app',
+ url: 'https://docs.immich.app',
baseUrl: '/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
@@ -65,11 +65,6 @@ const config = {
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
- announcementBar: {
- id: 'site_announcement_immich',
- content: `⚠️ The project is under very active development. Expect bugs and changes. Do not use it as the only way to store your photos and videos!`,
- isCloseable: false,
- },
docs: {
sidebar: {
autoCollapseCategories: false,
diff --git a/docs/package.json b/docs/package.json
index 151fe42e25..d984427622 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -57,6 +57,6 @@
"node": ">=20"
},
"volta": {
- "node": "22.19.0"
+ "node": "22.20.0"
}
}
diff --git a/docs/static/archived-versions.json b/docs/static/archived-versions.json
index e2466370f0..46dec8c35e 100644
--- a/docs/static/archived-versions.json
+++ b/docs/static/archived-versions.json
@@ -1,4 +1,20 @@
[
+ {
+ "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"
+ },
+ {
+ "label": "v1.144.1",
+ "url": "https://docs.v1.144.1.archive.immich.app"
+ },
+ {
+ "label": "v1.144.0",
+ "url": "https://docs.v1.144.0.archive.immich.app"
+ },
{
"label": "v1.143.1",
"url": "https://docs.v1.143.1.archive.immich.app"
diff --git a/e2e/.nvmrc b/e2e/.nvmrc
index e2228113dd..442c7587a9 100644
--- a/e2e/.nvmrc
+++ b/e2e/.nvmrc
@@ -1 +1 @@
-22.19.0
+22.20.0
diff --git a/e2e/package.json b/e2e/package.json
index 8362046578..d2536ea00d 100644
--- a/e2e/package.json
+++ b/e2e/package.json
@@ -1,6 +1,6 @@
{
"name": "immich-e2e",
- "version": "1.143.1",
+ "version": "2.0.1",
"description": "",
"main": "index.js",
"type": "module",
@@ -52,6 +52,6 @@
"vitest": "^3.0.0"
},
"volta": {
- "node": "22.19.0"
+ "node": "22.20.0"
}
}
diff --git a/i18n/ar.json b/i18n/ar.json
index 3a2e9204f8..a94c920bec 100644
--- a/i18n/ar.json
+++ b/i18n/ar.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})",
@@ -124,6 +125,12 @@
"logging_level_description": "عند التفعيل، أي مستوى تسجيل سيستخدم.",
"logging_settings": "تسجيل الاحداث",
"machine_learning_availability_checks": "تحقق من التوفر",
+ "machine_learning_availability_checks_description": "تحديد خوادم التعلم الآلي المتاحة تلقائيًا وإعطاءها الأولوية",
+ "machine_learning_availability_checks_enabled": "تفعيل عمليات فحص التوفر",
+ "machine_learning_availability_checks_interval": "فترة التحقق",
+ "machine_learning_availability_checks_interval_description": "الفترة الزمنية بالمللي ثانية بين عمليات فحص التوفر",
+ "machine_learning_availability_checks_timeout": "انتهت مدة انتظار الطلب",
+ "machine_learning_availability_checks_timeout_description": "مدة انتظار (بالمللي ثانية) لاختبارات توفر الخدمة",
"machine_learning_clip_model": "نموذج CLIP",
"machine_learning_clip_model_description": "اسم نموذج CLIP مدرجٌ هنا. يرجى ملاحظة أنه يجب إعادة تشغيل وظيفة \"البحث الذكي\" لجميع الصور بعد تغيير النموذج.",
"machine_learning_duplicate_detection": "كشف التكرار",
@@ -395,6 +402,7 @@
"advanced_settings_prefer_remote_title": "تفضل الصور البعيدة",
"advanced_settings_proxy_headers_subtitle": "عرف عناوين الوكيل التي يستخدمها Immich لارسال كل طلب شبكي",
"advanced_settings_proxy_headers_title": "عناوين الوكيل",
+ "advanced_settings_readonly_mode_subtitle": "تتيح هذه الميزة وضع العرض فقط، حيث يمكن للمستخدم معاينة الصور فقط، بينما يتم تعطيل جميع الخيارات الأخرى مثل تحديد عدة صور، أو مشاركتها، أو بثها، أو حذفها. يمكن تفعيل/تعطيل وضع العرض فقط من خلال صورة المستخدم في الشاشة الرئيسية",
"advanced_settings_readonly_mode_title": "وضع القراءة فقط",
"advanced_settings_self_signed_ssl_subtitle": "تخطي التحقق من شهادة SSL لخادم النقطة النهائي. مكلوب للشهادات الموقعة ذاتيا.",
"advanced_settings_self_signed_ssl_title": "السماح بشهادات SSL الموقعة ذاتيًا",
@@ -423,6 +431,7 @@
"album_remove_user_confirmation": "هل أنت متأكد أنك تريد إزالة {user}؟",
"album_search_not_found": "لم يتم ايجاد البوم مطابق لبحثك",
"album_share_no_users": "يبدو أنك قمت بمشاركة هذا الألبوم مع جميع المستخدمين أو ليس لديك أي مستخدم للمشاركة معه.",
+ "album_summary": "ملخص الألبوم",
"album_updated": "تم تحديث الألبوم",
"album_updated_setting_description": "تلقي إشعارًا عبر البريد الإلكتروني عندما يحتوي الألبوم المشترك على محتويات جديدة",
"album_user_left": "تم ترك {album}",
@@ -461,6 +470,7 @@
"app_bar_signout_dialog_title": "خروج",
"app_settings": "إعدادات التطبيق",
"appears_in": "يظهر في",
+ "apply_count": "تطبيق ({count, number})",
"archive": "الأرشيف",
"archive_action_prompt": "{count} اضيف إلى الارشيف",
"archive_or_unarchive_photo": "أرشفة الصورة أو إلغاء أرشفتها",
@@ -493,6 +503,8 @@
"asset_restored_successfully": "تم استعادة الاصل بنجاح",
"asset_skipped": "تم تخطيه",
"asset_skipped_in_trash": "في سلة المهملات",
+ "asset_trashed": "اصول محذوفة",
+ "asset_troubleshoot": "استكشاف مشاكل الأصول",
"asset_uploaded": "تم الرفع",
"asset_uploading": "جارٍ الرفع…",
"asset_viewer_settings_subtitle": "إدارة إعدادات عارض المعرض الخاص بك",
@@ -500,7 +512,9 @@
"assets": "المحتويات",
"assets_added_count": "تمت إضافة {count, plural, one {# محتوى} other {# محتويات}}",
"assets_added_to_album_count": "تمت إضافة {count, plural, one {# الأصل} other {# الأصول}} إلى الألبوم",
+ "assets_added_to_albums_count": "تمت اضافة {assetTotal, plural, one {# اصل} other {# اصول}} to {albumTotal, plural, one {# البوم} other {# البومات}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} لايمكن اضافته الى الالبوم",
+ "assets_cannot_be_added_to_albums": "{count, plural, one {اصل} other {اصول}} لا يمكن إضافته إلى أي من الألبومات",
"assets_count": "{count, plural, one {# محتوى} other {# محتويات}}",
"assets_deleted_permanently": "{count} الاص(و)ل المحذوف(ه) بشكل دائم",
"assets_deleted_permanently_from_server": "{count} الاص(و)ل المحذوف(ه) بشكل دائمي من خادم Immich",
@@ -517,14 +531,17 @@
"assets_trashed_count": "تم إرسال {count, plural, one {# محتوى} other {# محتويات}} إلى سلة المهملات",
"assets_trashed_from_server": "{count} الاص(و)ل المنقولة الى سلة المهملات من خادم Immich",
"assets_were_part_of_album_count": "{count, plural, one {هذا المحتوى} other {هذه المحتويات}} في الألبوم بالفعل",
+ "assets_were_part_of_albums_count": "{count, plural, one {اصل هو} other {اصول هي}}بالفعل جزء من الألبومات",
"authorized_devices": "الأجهزه المخولة",
"automatic_endpoint_switching_subtitle": "اتصل محليا من خلال شبكه Wi-Fi عند توفرها و استخدم اتصالات بديله في الاماكن الاخرى",
"automatic_endpoint_switching_title": "تبديل URL تلقائي",
"autoplay_slideshow": "تشغيل تلقائي لعرض الشرائح",
"back": "خلف",
"back_close_deselect": "الرجوع أو الإغلاق أو إلغاء التحديد",
+ "background_backup_running_error": "يتم تشغيل النسخ الاحتياطي في الخلفية حاليًا، ولا يمكن بدء النسخ الاحتياطي اليدوي",
"background_location_permission": "اذن الوصول للموقع في الخلفية",
"background_location_permission_content": "للتمكن من تبديل الشبكه بالخلفية، Immich يحتاج*دائما* للحصول على موقع دقيق ليتمكن التطبيق من قرائة اسم شبكة الWi-Fi",
+ "background_options": "خيارات الخلفية",
"backup": "نسخ احتياطي",
"backup_album_selection_page_albums_device": "الالبومات على الجهاز ({count})",
"backup_album_selection_page_albums_tap": "انقر للتضمين، وانقر نقرًا مزدوجًا للاستثناء",
@@ -532,6 +549,7 @@
"backup_album_selection_page_select_albums": "حدد الألبومات",
"backup_album_selection_page_selection_info": "معلومات الاختيار",
"backup_album_selection_page_total_assets": "إجمالي الأصول الفريدة",
+ "backup_albums_sync": "مزامنة ألبومات النسخ الاحتياطي",
"backup_all": "الجميع",
"backup_background_service_backup_failed_message": "فشل في النسخ الاحتياطي للأصول. جارٍ إعادة المحاولة…",
"backup_background_service_connection_failed_message": "فشل في الاتصال بالخادم. جارٍ إعادة المحاولة…",
@@ -581,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": "قيد التحميل حاول مره اخرى",
@@ -648,6 +667,8 @@
"change_pin_code": "تغيير رمز PIN",
"change_your_password": "غير كلمة المرور الخاصة بك",
"changed_visibility_successfully": "تم تغيير الرؤية بنجاح",
+ "charging": "الشحن",
+ "charging_requirement_mobile_backup": "يتطلب النسخ الاحتياطي في الخلفية أن يكون الجهاز قيد الشحن",
"check_corrupt_asset_backup": "التحقق من وجود نسخ احتياطية فاسدة للاصول",
"check_corrupt_asset_backup_button": "اجراء فحص",
"check_corrupt_asset_backup_description": "قم بإجراء هذا الفحص فقط عبر شبكة Wi-Fi وبعد نسخ جميع الأصول احتياطيًا. قد يستغرق الإجراء بضع دقائق.",
@@ -734,6 +755,7 @@
"create_user": "إنشاء مستخدم",
"created": "تم الإنشاء",
"created_at": "مخلوق",
+ "creating_linked_albums": "جاري إنشاء الألبومات المرتبطة...",
"crop": "قص",
"curated_object_page_title": "أشياء",
"current_device": "الجهاز الحالي",
@@ -883,7 +905,9 @@
"error": "خطأ",
"error_change_sort_album": "فشل في تغيير ترتيب الألبوم",
"error_delete_face": "حدث خطأ في حذف الوجه من الأصول",
+ "error_getting_places": "خطأ أثناء استرجاع بيانات المواقع",
"error_loading_image": "حدث خطأ أثناء تحميل الصورة",
+ "error_loading_partners": "خطأ بتحميل بيانات الشركاء: {error}",
"error_saving_image": "خطأ: {error}",
"error_tag_face_bounding_box": "خطأ في وضع علامة على الوجه - لا يمكن الحصول على إحداثيات المربع المحيط",
"error_title": "خطأ - حدث خللٌ ما",
@@ -1048,6 +1072,7 @@
"favorites_page_no_favorites": "لم يتم العثور على الأصول المفضلة",
"feature_photo_updated": "تم تحديث الصورة المميزة",
"features": "الميزات",
+ "features_in_development": "الميزات قيد التطوير",
"features_setting_description": "إدارة ميزات التطبيق",
"file_name": "إسم الملف",
"file_name_or_extension": "اسم الملف أو امتداده",
@@ -1068,12 +1093,15 @@
"gcast_enabled": "كوكل كاست",
"gcast_enabled_description": "تقوم هذه الميزة بتحميل الموارد الخارجية من Google حتى تعمل.",
"general": "عام",
+ "geolocation_instruction_location": "انقر على الاصل الذي يحتوي على إحداثيات نظام تحديد المواقع لاستخدام موقعه، أو اختر الموقع مباشرة من الخريطة",
"get_help": "الحصول على المساعدة",
"get_wifiname_error": "تعذر الحصول على اسم شبكة Wi-Fi. تأكد من منح الأذونات اللازمة واتصالك بشبكة Wi-Fi",
"getting_started": "البدء",
"go_back": "الرجوع للخلف",
"go_to_folder": "اذهب إلى المجلد",
"go_to_search": "اذهب إلى البحث",
+ "gps": "نظام تحديد المواقع",
+ "gps_missing": "لا يوجد نظام تحديد المواقع",
"grant_permission": "منح الاذن",
"group_albums_by": "تجميع الألبومات حسب...",
"group_country": "مجموعة البلد",
@@ -1209,6 +1237,7 @@
"local": "محلّي",
"local_asset_cast_failed": "غير قادر على بث أصل لم يتم تحميله إلى الخادم",
"local_assets": "أُصول (ملفات) محلية",
+ "local_media_summary": "ملخص الملفات المحلية",
"local_network": "شبكة محلية",
"local_network_sheet_info": "سيتصل التطبيق بالخادم من خلال عنوان URL هذا عند استخدام شبكة Wi-Fi المحددة",
"location_permission": "اذن الموقع",
@@ -1220,6 +1249,7 @@
"location_picker_longitude_hint": "أدخل خط الطول هنا",
"lock": "قفل",
"locked_folder": "مجلد مقفول",
+ "log_detail_title": "تفاصيل السجل",
"log_out": "تسجيل خروج",
"log_out_all_devices": "تسجيل الخروج من كافة الأجهزة",
"logged_in_as": "تم تسجيل الدخول باسم {user}",
@@ -1250,6 +1280,7 @@
"login_password_changed_success": "تم تحديث كلمة السر بنجاح",
"logout_all_device_confirmation": "هل أنت متأكد أنك تريد تسجيل الخروج من جميع الأجهزة؟",
"logout_this_device_confirmation": "هل أنت متأكد أنك تريد تسجيل الخروج من هذا الجهاز؟",
+ "logs": "السجلات",
"longitude": "خط الطول",
"look": "الشكل",
"loop_videos": "تكرار مقاطع الفيديو",
@@ -1257,6 +1288,7 @@
"main_branch_warning": "أنت تستخدم إصداراً قيد التطوير؛ ونحن نوصي بشدة باستخدام إصدار النشر!",
"main_menu": "القائمة الرئيسية",
"make": "صنع",
+ "manage_geolocation": "إدارة الموقع",
"manage_shared_links": "إدارة الروابط المشتركة",
"manage_sharing_with_partners": "إدارة المشاركة مع الشركاء",
"manage_the_app_settings": "إدارة إعدادات التطبيق",
@@ -1291,6 +1323,7 @@
"mark_as_read": "تحديد كمقروء",
"marked_all_as_read": "تم تحديد الكل كمقروء",
"matches": "تطابقات",
+ "matching_assets": "الاصول المطابقة",
"media_type": "نوع الوسائط",
"memories": "الذكريات",
"memories_all_caught_up": "كل شيء محدث",
@@ -1331,6 +1364,7 @@
"name_or_nickname": "الاسم أو اللقب",
"network_requirement_photos_upload": "استخدام بيانات الهاتف المحمول لعمل نسخة احتياطية للصور",
"network_requirement_videos_upload": "استخدام بيانات الهاتف المحمول لعمل نسخة احتياطية لمقاطع الفيديو",
+ "network_requirements": "متطلبات الشبكة",
"network_requirements_updated": "تم تغيير متطلبات الشبكة، يتم إعادة تعيين قائمة انتظار النسخ الاحتياطي",
"networking_settings": "الشبكات",
"networking_subtitle": "إدارة إعدادات نقطة الخادم النهائية",
@@ -1341,6 +1375,7 @@
"new_person": "شخص جديد",
"new_pin_code": "رمز PIN الجديد",
"new_pin_code_subtitle": "هذه أول مرة تدخل فيها إلى المجلد المقفل. أنشئ رمزًا PIN للوصول بامان إلى هذه الصفحة",
+ "new_timeline": "الخط الزمني الجديد",
"new_user_created": "تم إنشاء مستخدم جديد",
"new_version_available": "إصدار جديد متاح",
"newest_first": "الأحدث أولاً",
@@ -1354,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": "ملاحظة: لتطبيق سمة التخزين على المحتويات التي تم رفعها مسبقًا، قم بتشغيل",
@@ -1402,6 +1442,8 @@
"open_the_search_filters": "افتح مرشحات البحث",
"options": "خيارات",
"or": "أو",
+ "organize_into_albums": "ترتيب في ألبومات",
+ "organize_into_albums_description": "أضف الصور الموجودة إلى الألبومات باستخدام إعدادات النسخ المتزامن الحالية",
"organize_your_library": "تنظيم مكتبتك",
"original": "أصلي",
"other": "أخرى",
@@ -1487,6 +1529,7 @@
"port": "المنفذ",
"preferences_settings_subtitle": "ادارة تفضيلات التطبيق",
"preferences_settings_title": "التفضيلات",
+ "preparing": "قيد التحضير",
"preset": "الإعداد المسبق",
"preview": "معاينة",
"previous": "السابق",
@@ -1503,6 +1546,7 @@
"profile_drawer_client_out_of_date_minor": "تطبيق الهاتف المحمول قديم.يرجى التحديث إلى أحدث إصدار صغير.",
"profile_drawer_client_server_up_to_date": "العميل والخادم محدثان",
"profile_drawer_github": "Github",
+ "profile_drawer_readonly_mode": "تم تفعيل وضع القراءة فقط. اضغط مطولا على رمز صورة المستخدم للخروج.",
"profile_drawer_server_out_of_date_major": "الخادم قديم.يرجى التحديث إلى أحدث إصدار رئيسي.",
"profile_drawer_server_out_of_date_minor": "الخادم قديم.يرجى التحديث إلى أحدث إصدار صغير.",
"profile_image_of_user": "صورة الملف الشخصي لـ {user}",
@@ -1541,6 +1585,7 @@
"purchase_server_description_2": "حالة الداعم",
"purchase_server_title": "الخادم",
"purchase_settings_server_activated": "يتم إدارة مفتاح منتج الخادم من قبل مدير النظام",
+ "query_asset_id": "استعلام عن معرف الأصل",
"queue_status": "يتم الاضافة الى قائمة انتظار النسخ الاحتياطي {count}/{total}",
"rating": "تقييم نجمي",
"rating_clear": "مسح التقييم",
@@ -1548,6 +1593,9 @@
"rating_description": "اعرض تقييم EXIF في لوحة المعلومات",
"reaction_options": "خيارات رد الفعل",
"read_changelog": "قراءة سجل التغيير",
+ "readonly_mode_disabled": "تم تعطيل وضع القراءة فقط",
+ "readonly_mode_enabled": "تم تفعيل وضع القراءة فقط",
+ "ready_for_upload": "جاهز للرفع",
"reassign": "إعادة التعيين",
"reassigned_assets_to_existing_person": "تمت إعادة تعيين {count, plural, one {# الأصل} other {# الاصول}} إلى {name, select, null {شخص موجود } other {{name}}}",
"reassigned_assets_to_new_person": "تمت إعادة تعيين {count, plural, one {# المحتوى} other {# المحتويات}} إلى شخص جديد",
@@ -1572,6 +1620,7 @@
"regenerating_thumbnails": "جارٍ تجديد الصور المصغرة",
"remote": "بعيد",
"remote_assets": "الأُصول البعيدة",
+ "remote_media_summary": "ملخص الملفات البعيدة",
"remove": "إزالة",
"remove_assets_album_confirmation": "هل أنت متأكد أنك تريد إزالة {count, plural, one {# المحتوى} other {# المحتويات}} من الألبوم ؟",
"remove_assets_shared_link_confirmation": "هل أنت متأكد أنك تريد إزالة {count, plural, one {# المحتوى} other {# المحتويات}} من رابط المشاركة هذا؟",
@@ -1624,6 +1673,7 @@
"restore_user": "استعادة المستخدم",
"restored_asset": "المحتويات المستعادة",
"resume": "استئناف",
+ "resume_paused_jobs": "استكمال {count, plural, one {# وظيفة معلقة} other {# وظائف معلقة}}",
"retry_upload": "أعد محاولة الرفع",
"review_duplicates": "مراجعة التكرارات",
"review_large_files": "مراجعة الملفات الكبيرة",
@@ -1717,6 +1767,7 @@
"select_user_for_sharing_page_err_album": "فشل في إنشاء ألبوم",
"selected": "التحديد",
"selected_count": "{count, plural, other {# محددة }}",
+ "selected_gps_coordinates": "إحداثيات نظام تحديد المواقع المختارة",
"send_message": "إرسال رسالة",
"send_welcome_email": "إرسال بريدًا إلكترونيًا ترحيبيًا",
"server_endpoint": "نقطة نهاية الخادم",
@@ -1845,6 +1896,7 @@
"show_slideshow_transition": "إظهار انتقال عرض الشرائح",
"show_supporter_badge": "شارة المؤيد",
"show_supporter_badge_description": "إظهار شارة المؤيد",
+ "show_text_search_menu": "عرض قائمة خيارات البحث في النص",
"shuffle": "خلط",
"sidebar": "الشريط الجانبي",
"sidebar_display_description": "عرض رابط للعرض في الشريط الجانبي",
@@ -1875,6 +1927,7 @@
"stacktrace": "تتّبُع التكديس",
"start": "ابدأ",
"start_date": "تاريخ البدء",
+ "start_date_before_end_date": "يجب أن يكون تاريخ بدء الفترة قبل تاريخ نهايتها",
"state": "الولاية",
"status": "الحالة",
"stop_casting": "ايقاف البث",
@@ -1899,6 +1952,8 @@
"sync_albums_manual_subtitle": "مزامنة جميع الفديوهات والصور المرفوعة الى البومات الخزن الاحتياطي المختارة",
"sync_local": "مزامنة الملفات المحلية",
"sync_remote": "مزامنة الملفات البعيدة",
+ "sync_status": "حالة النسخ المتزامن",
+ "sync_status_subtitle": "عرض وإدارة نظام النسخ المتزامن",
"sync_upload_album_setting_subtitle": "انشئ و ارفع صورك و فديوهاتك الالبومات المختارة في Immich",
"tag": "العلامة",
"tag_assets": "أصول العلامة",
@@ -1936,7 +1991,9 @@
"to_change_password": "تغيير كلمة المرور",
"to_favorite": "تفضيل",
"to_login": "تسجيل الدخول",
+ "to_multi_select": "للتحديد المتعدد",
"to_parent": "انتقل إلى الوالد",
+ "to_select": "للتحديد",
"to_trash": "حذف",
"toggle_settings": "الإعدادات",
"total": "الإجمالي",
@@ -1956,6 +2013,7 @@
"trash_page_select_assets_btn": "اختر الأصول",
"trash_page_title": "سلة المهملات ({count})",
"trashed_items_will_be_permanently_deleted_after": "سيتم حذفُ العناصر المحذوفة نِهائيًا بعد {days, plural, one {# يوم} other {# أيام }}.",
+ "troubleshoot": "استكشاف المشاكل",
"type": "النوع",
"unable_to_change_pin_code": "تفيير رمز PIN غير ممكن",
"unable_to_setup_pin_code": "انشاء رمز PIN غير ممكن",
@@ -1986,6 +2044,7 @@
"unstacked_assets_count": "تم إخراج {count, plural, one {# الأصل} other {# الأصول}} من التكديس",
"untagged": "غير مُعَلَّم",
"up_next": "التالي",
+ "update_location_action_prompt": "تحديث موقع {count} عناصر محددة على النحو التالي:",
"updated_at": "تم التحديث",
"updated_password": "تم تحديث كلمة المرور",
"upload": "رفع",
@@ -2052,6 +2111,7 @@
"view_next_asset": "عرض المحتوى التالي",
"view_previous_asset": "عرض المحتوى السابق",
"view_qr_code": "عرض رمز الاستجابة السريعة",
+ "view_similar_photos": "عرض صور مشابهة",
"view_stack": "عرض التكديس",
"view_user": "عرض المستخدم",
"viewer_remove_from_stack": "حذف من الكومه أو المجموعة",
@@ -2070,5 +2130,6 @@
"yes": "نعم",
"you_dont_have_any_shared_links": "ليس لديك أي روابط مشتركة",
"your_wifi_name": "اسم شبكة Wi-Fi الخاص بك",
- "zoom_image": "تكبير الصورة"
+ "zoom_image": "تكبير الصورة",
+ "zoom_to_bounds": "تكبير حتى حدود المنطقة"
}
diff --git a/i18n/az.json b/i18n/az.json
index 0449289735..53e7f55db6 100644
--- a/i18n/az.json
+++ b/i18n/az.json
@@ -1,7 +1,7 @@
{
"about": "Haqqında",
"account": "Hesab",
- "account_settings": "Hesab parametrləri",
+ "account_settings": "Hesab Parametrləri",
"acknowledge": "Təsdiq et",
"action": "Əməliyyat",
"action_common_update": "Yenilə",
@@ -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",
@@ -48,8 +49,15 @@
"backup_database": "Verilənlər bazasının dump-ını yaradın",
"backup_database_enable_description": "Verilənlər bazasının artıq nüsxələrini aktiv et",
"backup_keep_last_amount": "Tutulması gərəkən nüsxələrin sayı",
- "backup_settings": "Ehtiyat Nüsxə Parametrləri",
+ "backup_onboarding_1_description": "buludda və ya başqa fiziki yerdə saytdan kənar surət.",
+ "backup_onboarding_2_description": "müxtəlif cihazlarda yerli nüsxələr. Bura əsas fayllar və həmin faylların ehtiyat lokal nüsxəsi daxildir.",
+ "backup_onboarding_3_description": "orijinal fayllar da daxil olmaqla məlumatlarınızın ümumi surətləri. Buraya 1 kənar nüsxə və 2 lokal nüsxə daxildir.",
+ "backup_onboarding_footer": "Immich-in ehtiyat nüsxəsini çıxarmaq haqqında ətraflı məlumat üçün sənədlərə müraciət edin.",
+ "backup_onboarding_parts_title": "3-2-1 ehtiyat nüsxəsinə aşağıdakılar daxildir:",
+ "backup_onboarding_title": "Ehtiyat surətlər",
+ "backup_settings": "Bazanın Dump Parametrləri",
"backup_settings_description": "Verilənlər bazasının ehtiyat nüsxə parametrlərini idarə et",
+ "cleared_jobs": "{job} üçün tapşırıqlar silindi",
"config_set_by_file": "Konfiqurasiya hal-hazırda konfiqurasiya faylı ilə təyin olunub",
"confirm_delete_library": "{library} kitabxanasını silmək istədiyinizdən əminmisiniz?",
"confirm_email_below": "Təsdiqləmək üçün aşağıya {email} yazın",
@@ -69,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",
diff --git a/i18n/be.json b/i18n/be.json
index f98609b84b..7298e904c1 100644
--- a/i18n/be.json
+++ b/i18n/be.json
@@ -28,6 +28,8 @@
"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})",
"add_to_shared_album": "Дадаць у агульны альбом",
diff --git a/i18n/bg.json b/i18n/bg.json
index 9debd3b10f..a0ab4d0a80 100644
--- a/i18n/bg.json
+++ b/i18n/bg.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})",
@@ -123,6 +124,13 @@
"logging_enable_description": "Включване на запис (логове)",
"logging_level_description": "Когато е включено, какво ниво на записване да се използва.",
"logging_settings": "Записване",
+ "machine_learning_availability_checks": "Проверки за наличност",
+ "machine_learning_availability_checks_description": "Автоматично откриване и предпочитане на налични сървъри за машинно обучение",
+ "machine_learning_availability_checks_enabled": "Активиране на проверки за наличност",
+ "machine_learning_availability_checks_interval": "Интервал на проверяване",
+ "machine_learning_availability_checks_interval_description": "Време в милисекунди между проверките за наличност",
+ "machine_learning_availability_checks_timeout": "Време за изчакване на отговор",
+ "machine_learning_availability_checks_timeout_description": "Време за изчакване на отговор в милисекунди при проверка на наличност",
"machine_learning_clip_model": "CLIP модел",
"machine_learning_clip_model_description": "Името на CLIP модела, посочен тук. Имайте предвид, че при промяна на модела трябва да стартирате отново задачата \"Интелигентно Търсене\" за всички изображения.",
"machine_learning_duplicate_detection": "Откриване на дубликати",
@@ -591,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": "Върви архивиране. Опитай след малко",
@@ -1228,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": "Разрешение за местоположение",
@@ -1337,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": "Извади от заключената папка",
@@ -1520,6 +1529,7 @@
"port": "Порт",
"preferences_settings_subtitle": "Управление на предпочитанията на приложението",
"preferences_settings_title": "Предпочитания",
+ "preparing": "Подготовка",
"preset": "Шаблон",
"preview": "Прегледи",
"previous": "Предишно",
@@ -1532,13 +1542,13 @@
"privacy": "Поверителност",
"profile": "Профил",
"profile_drawer_app_logs": "Дневник",
- "profile_drawer_client_out_of_date_major": "Мобилното приложение е остаряло. Моля, актуализирай до най-новата основна версия.",
- "profile_drawer_client_out_of_date_minor": "Мобилното приложение е остаряло. Моля, актуализирай до най-новата версия.",
+ "profile_drawer_client_out_of_date_major": "Мобилното приложение е остаряло. Моля, актуализирайте до най-новата основна версия.",
+ "profile_drawer_client_out_of_date_minor": "Мобилното приложение е остаряло. Моля, актуализирайте до най-новата версия.",
"profile_drawer_client_server_up_to_date": "Клиента и сървъра са обновени",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Режима само за четене е активиран. С дълго натискане върху картиката-аватар на потребителя ще деактивирате само за четене.",
- "profile_drawer_server_out_of_date_major": "Версията на сървъра е остаряла. Моля, актуализирай поне до последната главна версия.",
- "profile_drawer_server_out_of_date_minor": "Версията на сървъра е остаряла. Моля, актуализирай до последната версия.",
+ "profile_drawer_server_out_of_date_major": "Версията на сървъра е остаряла. Моля, актуализирайте поне до последната главна версия.",
+ "profile_drawer_server_out_of_date_minor": "Версията на сървъра е остаряла. Моля, актуализирайте до последната версия.",
"profile_image_of_user": "Профилна снимка на {user}",
"profile_picture_set": "Профилната снимка е сложена.",
"public_album": "Публичен албум",
@@ -1585,6 +1595,7 @@
"read_changelog": "Прочети промените",
"readonly_mode_disabled": "Режима само за четене е деактивиран",
"readonly_mode_enabled": "Режима само за четене е активиран",
+ "ready_for_upload": "Готово за качване",
"reassign": "Преназначаване",
"reassigned_assets_to_existing_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на {name, select, null {съществуващ човек} other {{name}}}",
"reassigned_assets_to_new_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на нов човек",
@@ -1916,6 +1927,7 @@
"stacktrace": "Следа на събраните",
"start": "Старт",
"start_date": "Начална дата",
+ "start_date_before_end_date": "Началната дата трябва да бъде преди крайната дата",
"state": "Щат",
"status": "Статус",
"stop_casting": "Спри предаването",
diff --git a/i18n/ca.json b/i18n/ca.json
index 2eb795a0d4..5f3267f7ca 100644
--- a/i18n/ca.json
+++ b/i18n/ca.json
@@ -28,12 +28,13 @@
"add_to_album": "Afegir a un l'àlbum",
"add_to_album_bottom_sheet_added": "Afegit a {album}",
"add_to_album_bottom_sheet_already_exists": "Ja està a {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Alguns recursos locals no s'han pogut afegir a l'àlbum",
"add_to_album_toggle": "Commutar selecció de {album}",
"add_to_albums": "Afegir als àlbums",
"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": {
@@ -548,6 +549,7 @@
"backup_album_selection_page_select_albums": "Selecciona àlbums",
"backup_album_selection_page_selection_info": "Informació de la selecció",
"backup_album_selection_page_total_assets": "Total d'elements únics",
+ "backup_albums_sync": "Sincronització d'àlbums de còpia de seguretat",
"backup_all": "Tots",
"backup_background_service_backup_failed_message": "No s'ha pogut copiar els elements. Tornant a intentar…",
"backup_background_service_connection_failed_message": "No s'ha pogut connectar al servidor. Tornant a intentar…",
@@ -597,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",
@@ -665,6 +668,7 @@
"change_your_password": "Canvia la teva contrasenya",
"changed_visibility_successfully": "Visibilitat canviada amb èxit",
"charging": "Carregant",
+ "charging_requirement_mobile_backup": "La còpia de seguretat en segon pla requereix que el dispositiu estigui carregant",
"check_corrupt_asset_backup": "Comprovar les còpies de seguretat corruptes",
"check_corrupt_asset_backup_button": "Realitzar comprovació",
"check_corrupt_asset_backup_description": "Executeu aquesta comprovació només mitjançant Wi-Fi i un cop s'hagi fet una còpia de seguretat de tots els actius. El procediment pot trigar uns minuts.",
@@ -903,6 +907,7 @@
"error_delete_face": "Error esborrant cara de les cares reconegudes",
"error_getting_places": "S'ha produït un error en obtenir els llocs",
"error_loading_image": "Error carregant la imatge",
+ "error_loading_partners": "No s'han pogut carregar les parelles: {error}",
"error_saving_image": "Error: {error}",
"error_tag_face_bounding_box": "Error a l'etiquetar la cara - no s'han pogut obtenir les coordenades de l'àrea",
"error_title": "Error - Quelcom ha anat malament",
@@ -1109,7 +1114,7 @@
"has_quota": "Quota",
"hash_asset": "Hash del recurs",
"hashed_assets": "Recursos amb hash",
- "hashing": "Hashing",
+ "hashing": "Generant el hash",
"header_settings_add_header_tip": "Afegeix Capçalera",
"header_settings_field_validator_msg": "El valor no pot estar buit",
"header_settings_header_name_input": "Nom de la capçalera",
@@ -1232,6 +1237,7 @@
"local": "Local",
"local_asset_cast_failed": "No es pot convertir un actiu que no s'ha penjat al servidor",
"local_assets": "Recursos Locals",
+ "local_media_summary": "Resum de Mitjans Locals",
"local_network": "Xarxa local",
"local_network_sheet_info": "L'aplicació es connectarà al servidor mitjançant aquest URL quan utilitzeu la xarxa Wi-Fi especificada",
"location_permission": "Permís d'ubicació",
@@ -1243,6 +1249,7 @@
"location_picker_longitude_hint": "Introdueix aquí la longitud",
"lock": "Bloqueja",
"locked_folder": "Carpeta bloquejada",
+ "log_detail_title": "Detall de Registres",
"log_out": "Tanca la sessió",
"log_out_all_devices": "Tanqueu la sessió de tots els dispositius",
"logged_in_as": "Sessió iniciada com a {user}",
@@ -1273,6 +1280,7 @@
"login_password_changed_success": "La contrasenya s'ha canviat correctament",
"logout_all_device_confirmation": "Esteu segur que voleu tancar la sessió de tots els dispositius?",
"logout_this_device_confirmation": "Esteu segur que voleu tancar la sessió d'aquest dispositiu?",
+ "logs": "Registres",
"longitude": "Longitud",
"look": "Aspecte",
"loop_videos": "Vídeos en bucle",
@@ -1315,6 +1323,7 @@
"mark_as_read": "Marcar com ha llegit",
"marked_all_as_read": "Marcat tot com a llegit",
"matches": "Coincidències",
+ "matching_assets": "Recursos Coincidents",
"media_type": "Tipus de mitjà",
"memories": "Records",
"memories_all_caught_up": "Posat al dia",
@@ -1355,6 +1364,7 @@
"name_or_nickname": "Nom o sobrenom",
"network_requirement_photos_upload": "Fes servir dades mòbils per a còpies de seguretat de fotos",
"network_requirement_videos_upload": "Fes servir dades mòbils per a còpies de seguretat de videos",
+ "network_requirements": "Requeriments de Xarxa",
"network_requirements_updated": "Han canviat els requeriments de xarxa, reiniciant la cua",
"networking_settings": "Xarxes",
"networking_subtitle": "Gestiona la configuració del endpoint del servidor",
@@ -1365,6 +1375,7 @@
"new_person": "Persona nova",
"new_pin_code": "Nou codi PIN",
"new_pin_code_subtitle": "Aquesta és la primera vegada que accedeixes a la carpeta bloquejada. Crea una codi PIN i accedeix de manera segura a aquesta pàgina",
+ "new_timeline": "Nova Línia de Temps",
"new_user_created": "Nou usuari creat",
"new_version_available": "NOVA VERSIÓ DISPONIBLE",
"newest_first": "El més nou primer",
@@ -1378,20 +1389,25 @@
"no_assets_message": "FEU CLIC PER PUJAR LA VOSTRA PRIMERA FOTO",
"no_assets_to_show": "No hi ha elements per mostrar",
"no_cast_devices_found": "No s'han trobat dispositius per transmetre",
+ "no_checksum_local": "Cap checksum disponible - no s'han pogut carregar els recursos locals",
+ "no_checksum_remote": "Cap checksum disponible - no s'ha pogut obtenir el recurs remot",
"no_duplicates_found": "No s'han trobat duplicats.",
"no_exif_info_available": "No hi ha informació d'exif disponible",
"no_explore_results_message": "Penja més fotos per explorar la teva col·lecció.",
"no_favorites_message": "Afegiu preferits per trobar les millors fotos i vídeos a l'instant",
"no_libraries_message": "Creeu una llibreria externa per veure les vostres fotos i vídeos",
+ "no_local_assets_found": "No s'ha trobat cap recurs local amb aquest checksum",
"no_locked_photos_message": "Les fotos i vídeos d'aquesta carpeta estan ocultes, i no es mostraran a mesura que navegues o cerques a la teva biblioteca.",
"no_name": "Sense nom",
"no_notifications": "No hi ha notificacions",
"no_people_found": "No s'han trobat coincidències de persones",
"no_places": "No hi ha llocs",
+ "no_remote_assets_found": "No s'ha trobat cap recurs remot amb aquest checksum",
"no_results": "Sense resultats",
"no_results_description": "Proveu un sinònim o una paraula clau més general",
"no_shared_albums_message": "Creeu un àlbum per compartir fotos i vídeos amb persones a la vostra xarxa",
"no_uploads_in_progress": "Cap pujada en progrés",
+ "not_available": "N/A",
"not_in_any_album": "En cap àlbum",
"not_selected": "No seleccionat",
"note_apply_storage_label_to_previously_uploaded assets": "Nota: per aplicar l'etiqueta d'emmagatzematge als actius penjats anteriorment, executeu el",
@@ -1513,6 +1529,7 @@
"port": "Port",
"preferences_settings_subtitle": "Gestiona les preferències de l'aplicació",
"preferences_settings_title": "Preferències",
+ "preparing": "Preparant",
"preset": "Preestablert",
"preview": "Previsualització",
"previous": "Anterior",
@@ -1578,6 +1595,7 @@
"read_changelog": "Llegeix el registre de canvis",
"readonly_mode_disabled": "Mode de només lectura desactivat",
"readonly_mode_enabled": "Mode de només lectura activat",
+ "ready_for_upload": "Llest per a pujar",
"reassign": "Reassignar",
"reassigned_assets_to_existing_person": "{count, plural, one {S'ha reassignat # recurs} other {S'han reassignat # recursos}} a {name, select, null {una persona existent} other {{name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {S'ha reassignat # recurs} other {S'han reassignat # recursos}} a una persona nova",
@@ -1602,6 +1620,7 @@
"regenerating_thumbnails": "Regenerant les miniatures",
"remote": "Remot",
"remote_assets": "Recursos Remots",
+ "remote_media_summary": "Resum de Mitjans Remots",
"remove": "Eliminar",
"remove_assets_album_confirmation": "Confirmes que vols eliminar {count, plural, one {# recurs} other {# recursos}} de l'àlbum?",
"remove_assets_shared_link_confirmation": "Esteu segur que voleu eliminar {count, plural, one {# recurs} other {# recursos}} d'aquest enllaç compartit?",
@@ -1654,6 +1673,7 @@
"restore_user": "Restaurar l'usuari",
"restored_asset": "Element restaurat",
"resume": "Reprendre",
+ "resume_paused_jobs": "Reprèn {count, plural, one {# treball pausat} other {# treballs pausats}}",
"retry_upload": "Torna a provar de pujar",
"review_duplicates": "Revisar duplicats",
"review_large_files": "Revisar fitxers grans",
@@ -1876,6 +1896,7 @@
"show_slideshow_transition": "Mostra la transició de la presentació de diapositives",
"show_supporter_badge": "Insígnia de contribuent",
"show_supporter_badge_description": "Mostra una insígnia de contributor",
+ "show_text_search_menu": "Mostra el menú de cerca amb text",
"shuffle": "Mescla",
"sidebar": "Barra lateral",
"sidebar_display_description": "Mostra un enllaç a la vista a la barra lateral",
@@ -1906,6 +1927,7 @@
"stacktrace": "Traça de pila",
"start": "Inicia",
"start_date": "Data inicial",
+ "start_date_before_end_date": "La data d'inici ha de ser abans de la data de fi",
"state": "Regió",
"status": "Estat",
"stop_casting": "Atura la transmisió",
@@ -1930,6 +1952,8 @@
"sync_albums_manual_subtitle": "Sincronitza tots els vídeos i fotos penjats amb els àlbums de còpia de seguretat seleccionats",
"sync_local": "Sincronitza Local",
"sync_remote": "Sincronitza Remot",
+ "sync_status": "Estat de sincronització",
+ "sync_status_subtitle": "Observa i administra el sistema de sincronització",
"sync_upload_album_setting_subtitle": "Creeu i pugeu les seves fotos i vídeos als àlbums seleccionats a Immich",
"tag": "Etiqueta",
"tag_assets": "Etiquetar actius",
@@ -1989,6 +2013,7 @@
"trash_page_select_assets_btn": "Selecciona elements",
"trash_page_title": "Paperera ({count})",
"trashed_items_will_be_permanently_deleted_after": "Els elements que s'enviïn a la paperera s'eliminaran permanentment després de {days, plural, one {# dia} other {# dies}}.",
+ "troubleshoot": "Solució de problemes",
"type": "Tipus",
"unable_to_change_pin_code": "No es pot canviar el codi PIN",
"unable_to_setup_pin_code": "No s'ha pogut configurar el codi PIN",
@@ -2105,5 +2130,6 @@
"yes": "Sí",
"you_dont_have_any_shared_links": "No tens cap enllaç compartit",
"your_wifi_name": "Nom del teu Wi-Fi",
- "zoom_image": "Ampliar Imatge"
+ "zoom_image": "Ampliar Imatge",
+ "zoom_to_bounds": "Amplia als límits"
}
diff --git a/i18n/cs.json b/i18n/cs.json
index 4c42d2d3f1..4382629f89 100644
--- a/i18n/cs.json
+++ b/i18n/cs.json
@@ -28,6 +28,7 @@
"add_to_album": "Přidat do alba",
"add_to_album_bottom_sheet_added": "Přidáno do {album}",
"add_to_album_bottom_sheet_already_exists": "Je již v {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Některá místní aktiva nebylo možné přidat do alba",
"add_to_album_toggle": "Přepnout výběr pro {album}",
"add_to_albums": "Přidat do alb",
"add_to_albums_count": "Přidat do alb ({count})",
@@ -598,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",
diff --git a/i18n/da.json b/i18n/da.json
index 61891e7ef8..c7aabf2b3c 100644
--- a/i18n/da.json
+++ b/i18n/da.json
@@ -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",
diff --git a/i18n/de.json b/i18n/de.json
index a9deba04fa..69e36be8e9 100644
--- a/i18n/de.json
+++ b/i18n/de.json
@@ -28,6 +28,7 @@
"add_to_album": "Zu Album hinzufügen",
"add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt",
"add_to_album_bottom_sheet_already_exists": "Bereits in {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Einige lokale Dateien konnten nicht zum Album hinzugefügt werden",
"add_to_album_toggle": "Auswahl umschalten für {album}",
"add_to_albums": "Zu Alben hinzufügen",
"add_to_albums_count": "Zu Alben hinzufügen ({count})",
@@ -598,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",
diff --git a/i18n/el.json b/i18n/el.json
index cb6708d711..6492ea0370 100644
--- a/i18n/el.json
+++ b/i18n/el.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})",
@@ -401,6 +402,8 @@
"advanced_settings_prefer_remote_title": "Προτίμηση απομακρυσμένων εικόνων",
"advanced_settings_proxy_headers_subtitle": "Καθορισμός κεφαλίδων διακομιστή μεσολάβησης που το Immich πρέπει να στέλνει με κάθε αίτημα δικτύου",
"advanced_settings_proxy_headers_title": "Κεφαλίδες διακομιστή μεσολάβησης",
+ "advanced_settings_readonly_mode_subtitle": "Ενεργοποιεί τη λειτουργία μόνο-για-ανάγνωση, όπου οι φωτογραφίες μπορούν μόνο να προβληθούν. Ενέργειες όπως επιλογή πολλών εικόνων, κοινή χρήση, αποστολή (casting) και διαγραφή είναι απενεργοποιημένες. Η ενεργοποίηση/απενεργοποίηση της λειτουργίας μόνο-για-ανάγνωση γίνεται μέσω της εικόνας του χρήστη από την κεντρική οθόνη",
+ "advanced_settings_readonly_mode_title": "Λειτουργία μόνο-για-ανάγνωση",
"advanced_settings_self_signed_ssl_subtitle": "Παρακάμπτει τον έλεγχο πιστοποιητικού SSL του διακομιστή. Απαραίτητο για αυτο-υπογεγραμμένα πιστοποιητικά.",
"advanced_settings_self_signed_ssl_title": "Να επιτρέπονται αυτο-υπογεγραμμένα πιστοποιητικά SSL",
"advanced_settings_sync_remote_deletions_subtitle": "Αυτόματη διαγραφή ή επαναφορά ενός περιουσιακού στοιχείου σε αυτή τη συσκευή, όταν η ενέργεια αυτή πραγματοποιείται στο διαδίκτυο",
@@ -428,6 +431,7 @@
"album_remove_user_confirmation": "Είστε σίγουροι ότι θέλετε να αφαιρέσετε τον/την {user};",
"album_search_not_found": "Δε βρέθηκαν άλμπουμ που να ταιριάζουν με την αναζήτησή σας",
"album_share_no_users": "Φαίνεται ότι έχετε κοινοποιήσει αυτό το άλμπουμ σε όλους τους χρήστες ή δεν έχετε χρήστες για να το κοινοποιήσετε.",
+ "album_summary": "Περίληψη άλμπουμ",
"album_updated": "Το άλμπουμ, ενημερώθηκε",
"album_updated_setting_description": "Λάβετε ειδοποίηση μέσω email όταν ένα κοινόχρηστο άλμπουμ έχει νέα αρχεία",
"album_user_left": "Αποχωρήσατε από το {album}",
@@ -466,6 +470,7 @@
"app_bar_signout_dialog_title": "Αποσύνδεση",
"app_settings": "Ρυθμίσεις εφαρμογής",
"appears_in": "Εμφανίζεται σε",
+ "apply_count": "Εφαρμογή ({count, number})",
"archive": "Αρχείο",
"archive_action_prompt": "Προστέθηκαν {count} στο Αρχείο",
"archive_or_unarchive_photo": "Αρχειοθέτηση ή αποαρχειοθέτηση φωτογραφίας",
@@ -498,6 +503,8 @@
"asset_restored_successfully": "Το στοιχείο αποκαταστάθηκε με επιτυχία",
"asset_skipped": "Παραλείφθηκε",
"asset_skipped_in_trash": "Στον κάδο απορριμμάτων",
+ "asset_trashed": "Το στοιχείο διαγράφηκε",
+ "asset_troubleshoot": "Αντιμετώπιση προβλήματος στοιχείου",
"asset_uploaded": "Ανεβάστηκε",
"asset_uploading": "Ανεβάζεται…",
"asset_viewer_settings_subtitle": "Διαχείριση ρυθμίσεων προβολής συλλογής",
@@ -531,8 +538,10 @@
"autoplay_slideshow": "Αυτόματη αναπαραγωγή παρουσίασης",
"back": "Πίσω",
"back_close_deselect": "Πίσω, κλείσιμο ή αποεπιλογή",
+ "background_backup_running_error": "Η δημιουργία αντιγράφων ασφάλειας στο παρασκήνιο εκτελείται ήδη, δεν μπορεί να ξεκινήσετε χειροκίνητο αντίγραφο ασφάλειας",
"background_location_permission": "Άδεια τοποθεσίας στο παρασκήνιο",
"background_location_permission_content": "Το Immich για να μπορεί να αλλάζει δίκτυα όταν τρέχει στο παρασκήνιο, πρέπει *πάντα* να έχει πρόσβαση στην ακριβή τοποθεσία ώστε η εφαρμογή να μπορεί να διαβάζει το όνομα του δικτύου Wi-Fi",
+ "background_options": "Επιλογές παρασκηνίου",
"backup": "Αντίγραφο ασφαλείας",
"backup_album_selection_page_albums_device": "Άλμπουμ στη συσκευή ({count})",
"backup_album_selection_page_albums_tap": "Πάτημα για συμπερίληψη, διπλό πάτημα για εξαίρεση",
@@ -540,6 +549,7 @@
"backup_album_selection_page_select_albums": "Επιλογή άλμπουμ",
"backup_album_selection_page_selection_info": "Πληροφορίες επιλογής",
"backup_album_selection_page_total_assets": "Συνολικά μοναδικά στοιχεία",
+ "backup_albums_sync": "Συγχρονισμός αντιγράφων ασφαλείας άλμπουμ",
"backup_all": "Όλα",
"backup_background_service_backup_failed_message": "Αποτυχία δημιουργίας αντιγράφων ασφαλείας. Επανάληψη…",
"backup_background_service_connection_failed_message": "Αποτυχία σύνδεσης με το διακομιστή. Επανάληψη…",
@@ -589,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": "Μεταφόρτωση σε εξέλιξη. Δοκιμάστε αργότερα",
@@ -656,6 +667,8 @@
"change_pin_code": "Αλλαγή κωδικού PIN",
"change_your_password": "Αλλάξτε τον κωδικό σας",
"changed_visibility_successfully": "Η προβολή, άλλαξε με επιτυχία",
+ "charging": "Φόρτιση",
+ "charging_requirement_mobile_backup": "Η δημιουργία αντιγράφων ασφάλειας στο παρασκήνιο απαιτεί η συσκευή να φορτίζει",
"check_corrupt_asset_backup": "Έλεγχος για κατεστραμμένα αντίγραφα ασφαλείας στοιχείων",
"check_corrupt_asset_backup_button": "Εκτέλεση ελέγχου",
"check_corrupt_asset_backup_description": "Εκτέλεσε αυτόν τον έλεγχο μόνο μέσω Wi-Fi και αφού έχουν αποθηκευτεί όλα τα αντίγραφα ασφαλείας των στοιχείων. Η διαδικασία μπορεί να διαρκέσει μερικά λεπτά.",
@@ -742,6 +755,7 @@
"create_user": "Δημιουργία χρήστη",
"created": "Δημιουργήθηκε",
"created_at": "Δημιουργήθηκε",
+ "creating_linked_albums": "Δημιουργία συνδεδεμένων άλμπουμ...",
"crop": "Αποκοπή",
"curated_object_page_title": "Πράγματα",
"current_device": "Τρέχουσα συσκευή",
@@ -891,7 +905,9 @@
"error": "Σφάλμα",
"error_change_sort_album": "Απέτυχε η αλλαγή σειράς του άλμπουμ",
"error_delete_face": "Σφάλμα διαγραφής προσώπου από το στοιχείο",
+ "error_getting_places": "Σφάλμα κατά την ανάκτηση τοποθεσιών",
"error_loading_image": "Σφάλμα κατά τη φόρτωση της εικόνας",
+ "error_loading_partners": "Σφάλμα κατά τη φόρτωση συνεργατών: {error}",
"error_saving_image": "Σφάλμα: {error}",
"error_tag_face_bounding_box": "Σφάλμα επισήμανσης προσώπου - δεν μπορούν να ληφθούν οι συντεταγμένες του πλαισίου οριοθέτησης",
"error_title": "Σφάλμα - Κάτι πήγε στραβά",
@@ -1056,6 +1072,7 @@
"favorites_page_no_favorites": "Δεν βρέθηκαν αγαπημένα στοιχεία",
"feature_photo_updated": "Η φωτογραφία προβολής ενημερώθηκε",
"features": "Χαρακτηριστικά",
+ "features_in_development": "Λειτουργίες υπό Ανάπτυξη",
"features_setting_description": "Διαχειριστείτε τα χαρακτηριστικά της εφαρμογής",
"file_name": "Όνομα αρχείου",
"file_name_or_extension": "Όνομα αρχείου ή επέκταση",
@@ -1076,12 +1093,15 @@
"gcast_enabled": "Μετάδοση περιεχομένου Google Cast",
"gcast_enabled_description": "Αυτό το χαρακτηριστικό φορτώνει εξωτερικούς πόρους από τη Google για να λειτουργήσει.",
"general": "Γενικά",
+ "geolocation_instruction_location": "Κάνε κλικ σε ένα στοιχείο με συντεταγμένες GPS για να χρησιμοποιήσεις την τοποθεσία του, ή επίλεξε απευθείας μια τοποθεσία από τον χάρτη",
"get_help": "Ζητήστε βοήθεια",
"get_wifiname_error": "Δεν ήταν δυνατή η λήψη του ονόματος Wi-Fi. Βεβαιωθείτε ότι έχετε δώσει τις απαραίτητες άδειες και ότι είστε συνδεδεμένοι σε δίκτυο Wi-Fi",
"getting_started": "Ξεκινώντας",
"go_back": "Πηγαίνετε πίσω",
"go_to_folder": "Μετάβαση στο φάκελο",
"go_to_search": "Πηγαίνετε στην αναζήτηση",
+ "gps": "GPS",
+ "gps_missing": "Χωρίς GPS",
"grant_permission": "Επιτρέψτε την άδεια",
"group_albums_by": "Ομαδοποίηση άλμπουμ κατά...",
"group_country": "Ομαδοποίηση κατά χώρα",
@@ -1217,6 +1237,7 @@
"local": "Τοπικά",
"local_asset_cast_failed": "Αδυναμία μετάδοσης στοιχείου που δεν έχει ανέβει στον διακομιστή",
"local_assets": "Τοπικά στοιχεία",
+ "local_media_summary": "Περίληψη τοπικών πολυμέσων",
"local_network": "Τοπικό δίκτυο",
"local_network_sheet_info": "Η εφαρμογή θα συνδεθεί με τον διακομιστή μέσω αυτού του URL όταν χρησιμοποιείται το καθορισμένο δίκτυο Wi-Fi",
"location_permission": "Άδεια τοποθεσίας",
@@ -1228,6 +1249,7 @@
"location_picker_longitude_hint": "Εισαγάγετε εδώ το γεωγραφικό σας μήκος",
"lock": "Κλείδωμα",
"locked_folder": "Κλειδωμένος φάκελος",
+ "log_detail_title": "Λεπτομέρεια καταγραφής",
"log_out": "Αποσύνδεση",
"log_out_all_devices": "Αποσύνδεση από Όλες τις Συσκευές",
"logged_in_as": "Συνδεδεμένος ως {user}",
@@ -1258,6 +1280,7 @@
"login_password_changed_success": "Ο κωδικός πρόσβασης ενημερώθηκε με επιτυχία",
"logout_all_device_confirmation": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε από όλες τις συσκευές;",
"logout_this_device_confirmation": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε από αυτήν τη συσκευή;",
+ "logs": "Καταγραφές",
"longitude": "Γεωγραφικό μήκος",
"look": "Εμφάνιση",
"loop_videos": "Επανάληψη βίντεο",
@@ -1265,6 +1288,7 @@
"main_branch_warning": "Χρησιμοποιείτε μια έκδοση σε ανάπτυξη· συνιστούμε ανεπιφύλακτα τη χρήση μιας τελικής έκδοσης!",
"main_menu": "Κύριο μενού",
"make": "Κατασκευαστής",
+ "manage_geolocation": "Διαχείριση τοποθεσίας",
"manage_shared_links": "Διαχείριση κοινόχρηστων συνδέσμων",
"manage_sharing_with_partners": "Διαχειριστείτε την κοινή χρήση με συνεργάτες",
"manage_the_app_settings": "Διαχειριστείτε τις ρυθμίσεις της εφαρμογής",
@@ -1299,6 +1323,7 @@
"mark_as_read": "Επισήμανση ως αναγνωσμένο",
"marked_all_as_read": "Όλα επισημάνθηκαν ως αναγνωσμένα",
"matches": "Αντιστοιχίες",
+ "matching_assets": "Αντιστοιχία στοιχείων",
"media_type": "Τύπος πολυμέσου",
"memories": "Αναμνήσεις",
"memories_all_caught_up": "Συγχρονισμένα",
@@ -1339,6 +1364,7 @@
"name_or_nickname": "Όνομα ή ψευδώνυμο",
"network_requirement_photos_upload": "Χρήση δεδομένων κινητής τηλεφωνίας για τη δημιουργία αντιγράφων ασφαλείας των φωτογραφιών",
"network_requirement_videos_upload": "Χρήση δεδομένων κινητής τηλεφωνίας για τη δημιουργία αντιγράφων ασφαλείας των βίντεο",
+ "network_requirements": "Απαιτήσεις Δυκτίου",
"network_requirements_updated": "Οι απαιτήσεις δικτύου άλλαξαν, γίνεται επαναφορά της ουράς αντιγράφων ασφαλείας",
"networking_settings": "Δικτύωση",
"networking_subtitle": "Διαχείριση ρυθμίσεων τελικών σημείων διακομιστή",
@@ -1349,6 +1375,7 @@
"new_person": "Νέο άτομο",
"new_pin_code": "Νέος κωδικός PIN",
"new_pin_code_subtitle": "Αυτή είναι η πρώτη φορά που αποκτάτε πρόσβαση στον κλειδωμένο φάκελο. Δημιουργήστε έναν κωδικό PIN για ασφαλή πρόσβαση σε αυτή τη σελίδα",
+ "new_timeline": "Νέο Χρονολόγιο",
"new_user_created": "Ο νέος χρήστης δημιουργήθηκε",
"new_version_available": "ΔΙΑΘΕΣΙΜΗ ΝΕΑ ΕΚΔΟΣΗ",
"newest_first": "Τα νεότερα πρώτα",
@@ -1362,20 +1389,25 @@
"no_assets_message": "ΚΑΝΤΕ ΚΛΙΚ ΓΙΑ ΝΑ ΑΝΕΒΑΣΕΤΕ ΤΗΝ ΠΡΩΤΗ ΣΑΣ ΦΩΤΟΓΡΑΦΙΑ",
"no_assets_to_show": "Δεν υπάρχουν στοιχεία προς εμφάνιση",
"no_cast_devices_found": "Δε βρέθηκαν συσκευές μετάδοσης",
+ "no_checksum_local": "Δεν υπάρχει διαθέσιμο checksum για έλεγχο ακεραιότητας – δεν μπορούν να ανακτηθούν τα τοπικά στοιχεία",
+ "no_checksum_remote": "Δεν υπάρχει διαθέσιμο checksum για έλεγχο ακεραιότητας – δεν μπορούν να ανακτηθούν τα απομακρυσμένα στοιχεία",
"no_duplicates_found": "Δεν βρέθηκαν διπλότυπα.",
"no_exif_info_available": "Καμία πληροφορία exif διαθέσιμη",
"no_explore_results_message": "Ανεβάστε περισσότερες φωτογραφίες για να περιηγηθείτε στη συλλογή σας.",
"no_favorites_message": "Προσθέστε αγαπημένα για να βρείτε γρήγορα τις καλύτερες φωτογραφίες και τα βίντεό σας",
"no_libraries_message": "Δημιουργήστε μια εξωτερική βιβλιοθήκη για να προβάλετε τις φωτογραφίες και τα βίντεό σας",
+ "no_local_assets_found": "Δεν βρέθηκαν τοπικά στοιχεία με αυτό το checksum",
"no_locked_photos_message": "Οι φωτογραφίες και τα βίντεο στον κλειδωμένο φάκελο, είναι κρυμμένες και δεν θα εμφανίζονται κατά την περιήγηση ή την αναζήτηση στη βιβλιοθήκη σας.",
"no_name": "Χωρίς Όνομα",
"no_notifications": "Καμία ειδοποίηση",
"no_people_found": "Δεν βρέθηκαν άτομα που να ταιριάζουν",
"no_places": "Καμία τοποθεσία",
+ "no_remote_assets_found": "Δεν βρέθηκαν απομακρυσμένα στοιχεία με αυτό το checksum",
"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": "Σημείωση: Για να εφαρμόσετε την Ετικέτα Αποθήκευσης σε στοιχεία που έχουν μεταφορτωθεί προηγουμένως, εκτελέστε το",
@@ -1410,6 +1442,8 @@
"open_the_search_filters": "Ανοίξτε τα φίλτρα αναζήτησης",
"options": "Επιλογές",
"or": "ή",
+ "organize_into_albums": "Οργάνωση σε άλμπουμ",
+ "organize_into_albums_description": "Τοποθετείστε τις υπάρχουσες φωτογραφίες σε άλμπουμ χρησιμοποιώντας τις τρέχουσες ρυθμίσεις συγχρονισμού",
"organize_your_library": "Οργανώστε τη βιβλιοθήκη σας",
"original": "πρωτότυπο",
"other": "Άλλες",
@@ -1495,6 +1529,7 @@
"port": "Θύρα",
"preferences_settings_subtitle": "Διαχειριστείτε τις προτιμήσεις της εφαρμογής",
"preferences_settings_title": "Προτιμήσεις",
+ "preparing": "Προετοιμασία",
"preset": "Προκαθορισμένη ρύθμιση",
"preview": "Προεπισκόπηση",
"previous": "Προηγούμενο",
@@ -1511,6 +1546,7 @@
"profile_drawer_client_out_of_date_minor": "Παρακαλώ ενημερώστε την εφαρμογή στην πιο πρόσφατη δευτερεύουσα έκδοση.",
"profile_drawer_client_server_up_to_date": "Ο πελάτης και ο διακομιστής είναι ενημερωμένοι",
"profile_drawer_github": "GitHub",
+ "profile_drawer_readonly_mode": "Η λειτουργία μόνο-για-ανάγνωση ενεργοποιήθηκε. Κρατήστε πατημένο το εικονίδιο του χρήστη για απενεργοποίηση.",
"profile_drawer_server_out_of_date_major": "Παρακαλώ ενημερώστε τον διακομιστή στην πιο πρόσφατη κύρια έκδοση.",
"profile_drawer_server_out_of_date_minor": "Παρακαλώ ενημερώστε τον διακομιστή στην πιο πρόσφατη δευτερεύουσα έκδοση.",
"profile_image_of_user": "Εικόνα προφίλ του χρήστη {user}",
@@ -1549,6 +1585,7 @@
"purchase_server_description_2": "Κατάσταση υποστηρικτή",
"purchase_server_title": "Διακομιστής",
"purchase_settings_server_activated": "Η διαχείριση του κλειδιού προϊόντος του διακομιστή γίνεται από τον διαχειριστή",
+ "query_asset_id": "Αναζήτηση ID Στοιχείου",
"queue_status": "Τοποθέτηση στη ουρά {count} από {total}",
"rating": "Αξιολόγηση με αστέρια",
"rating_clear": "Εκκαθάριση αξιολόγησης",
@@ -1556,6 +1593,9 @@
"rating_description": "Εμφάνιση της αξιολόγησης EXIF στον πίνακα πληροφοριών",
"reaction_options": "Επιλογές αντίδρασης",
"read_changelog": "Διαβάστε το Αρχείο Καταγραφής Αλλαγών",
+ "readonly_mode_disabled": "Η λειτουργία μόνο-για-ανάγνωση απενεργοποιήθηκε",
+ "readonly_mode_enabled": "Η λειτουργία μόνο-για-ανάγνωση ενεργοποιήθηκε",
+ "ready_for_upload": "Έτοιμο για μεταφόρτωση",
"reassign": "Ανάθεση",
"reassigned_assets_to_existing_person": "Η ανάθεση {count, plural, one {# αρχείου} other {# αρχείων}} στον/στην {name, select, null {έναν/μία υπάρχοντα/ουσα χρήστη} other {{name}}}",
"reassigned_assets_to_new_person": "Η ανάθεση {count, plural, one {# αρχείου} other {# αρχείων}} σε νέο άτομο",
@@ -1580,6 +1620,7 @@
"regenerating_thumbnails": "Οι μικρογραφίες αναγεννώνται",
"remote": "Απομακρυσμένος",
"remote_assets": "Απομακρυσμένα στοιχεία",
+ "remote_media_summary": "Περίληψη απομακρυσμένων πολυμέσων",
"remove": "Αφαίρεση",
"remove_assets_album_confirmation": "Είστε σίγουροι ότι θέλετε να αφαιρέσετε {count, plural, one {# στοιχείο} other {# στοιχεία}} από το άλμπουμ;",
"remove_assets_shared_link_confirmation": "Είστε σίγουροι ότι θέλετε να αφαιρέσετε {count, plural, one {# στοιχείο} other {# στοιχεία}} από αυτόν τον κοινόχρηστο σύνδεσμο;",
@@ -1632,6 +1673,7 @@
"restore_user": "Επαναφορά χρήστη",
"restored_asset": "Ανακτήθηκε το αρχείο",
"resume": "Συνέχιση",
+ "resume_paused_jobs": "Συνέχιση {count, plural, one {# σε παύση εργασία} other {# σε παύση εργασίες}}",
"retry_upload": "Επανάληψη ανεβάσματος",
"review_duplicates": "Προβολή διπλότυπων",
"review_large_files": "Επισκόπηση μεγάλων αρχείων",
@@ -1725,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": "Αποστολή email καλωσορίσματος",
"server_endpoint": "Τελικό σημείο Διακομιστή",
@@ -1853,6 +1896,7 @@
"show_slideshow_transition": "Εμφάνιση μετάβασης παρουσίασης",
"show_supporter_badge": "Σήμα υποστηρικτή",
"show_supporter_badge_description": "Εμφάνιση σήματος υποστηρικτή",
+ "show_text_search_menu": "Εμφάνιση μενού αναζήτησης κειμένου",
"shuffle": "Ανάμειξη",
"sidebar": "Πλαϊνή μπάρα",
"sidebar_display_description": "Εμφάνιση συνδέσμου για προβολή στην πλαϊνή μπάρα",
@@ -1883,6 +1927,7 @@
"stacktrace": "Καταγραφή στοίβας",
"start": "Έναρξη",
"start_date": "Από",
+ "start_date_before_end_date": "Η ημερομηνία έναρξης πρέπει να είναι πριν από την ημερομηνία λήξης",
"state": "Νομός",
"status": "Κατάσταση",
"stop_casting": "Διακοπή μετάδοσης",
@@ -1907,6 +1952,8 @@
"sync_albums_manual_subtitle": "Συγχρονίστε όλα τα μεταφορτωμένα βίντεο και φωτογραφίες με τα επιλεγμένα εφεδρικά άλμπουμ",
"sync_local": "Τοπικός Συγχρονισμός",
"sync_remote": "Απομακρυσμένος Συγχρονισμός",
+ "sync_status": "Κατάσταση συγχρονισμού",
+ "sync_status_subtitle": "Προβολή και διαχείριση του συστήματος συγχρονισμού",
"sync_upload_album_setting_subtitle": "Δημιουργήστε και ανεβάστε τις φωτογραφίες και τα βίντεό σας στα επιλεγμένα άλμπουμ στο Immich",
"tag": "Ετικέτα",
"tag_assets": "Ετικετοποίηση στοιχείων",
@@ -1944,7 +1991,9 @@
"to_change_password": "Αλλαγή κωδικού πρόσβασης",
"to_favorite": "Αγαπημένο",
"to_login": "Είσοδος",
+ "to_multi_select": "για πολλαπλή επιλογή",
"to_parent": "Μεταβείτε στο γονικό φάκελο",
+ "to_select": "για επιλογή",
"to_trash": "Κάδος απορριμμάτων",
"toggle_settings": "Εναλλαγή ρυθμίσεων",
"total": "Σύνολο",
@@ -1964,6 +2013,7 @@
"trash_page_select_assets_btn": "Επιλέξτε στοιχεία",
"trash_page_title": "Κάδος Απορριμμάτων ({count})",
"trashed_items_will_be_permanently_deleted_after": "Τα στοιχεία που βρίσκονται στον κάδο απορριμμάτων θα διαγραφούν οριστικά μετά από {days, plural, one {# ημέρα} other {# ημέρες}}.",
+ "troubleshoot": "Επίλυση προβλημάτων",
"type": "Τύπος",
"unable_to_change_pin_code": "Αδυναμία αλλαγής κωδικού PIN",
"unable_to_setup_pin_code": "Αδυναμία ρύθμισης κωδικού PIN",
@@ -1994,6 +2044,7 @@
"unstacked_assets_count": "Αποστοιβάξατε {count, plural, one {# στοιχείο} other {# στοιχεία}}",
"untagged": "Χωρίς ετικέτα",
"up_next": "Ακολουθεί",
+ "update_location_action_prompt": "Ενημέρωση τοποθεσίας για {count} επιλεγμένα στοιχεία με:",
"updated_at": "Ενημερωμένο",
"updated_password": "Ο κωδικός πρόσβασης ενημερώθηκε",
"upload": "Μεταφόρτωση",
@@ -2060,6 +2111,7 @@
"view_next_asset": "Προβολή επόμενου στοιχείου",
"view_previous_asset": "Προβολή προηγούμενου στοιχείου",
"view_qr_code": "Προβολή κωδικού QR",
+ "view_similar_photos": "Προβολή παρόμοιων φωτογραφιών",
"view_stack": "Προβολή της στοίβας",
"view_user": "Προβολή Χρήστη",
"viewer_remove_from_stack": "Κατάργηση από τη Στοίβα",
@@ -2078,5 +2130,6 @@
"yes": "Ναι",
"you_dont_have_any_shared_links": "Δεν έχετε κοινόχρηστους συνδέσμους",
"your_wifi_name": "Το όνομα του Wi-Fi σας",
- "zoom_image": "Ζουμ Εικόνας"
+ "zoom_image": "Ζουμ Εικόνας",
+ "zoom_to_bounds": "Εστίαση στα όρια"
}
diff --git a/i18n/en.json b/i18n/en.json
index b142dc7fca..e86b56be85 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -599,6 +599,7 @@
"backup_controller_page_turn_on": "Turn on foreground backup",
"backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album",
+ "backup_error_sync_failed": "Sync failed. Cannot process backup.",
"backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
diff --git a/i18n/es.json b/i18n/es.json
index 40ea723ded..626ae0540c 100644
--- a/i18n/es.json
+++ b/i18n/es.json
@@ -28,6 +28,7 @@
"add_to_album": "Incluir en álbum",
"add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Algunos recursos locales no se pudieron añadir al álbum",
"add_to_album_toggle": "Alternar selección para el {album}",
"add_to_albums": "Incluir en álbumes",
"add_to_albums_count": "Incluir en {count} álbumes",
@@ -598,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",
@@ -1087,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",
@@ -1904,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",
diff --git a/i18n/et.json b/i18n/et.json
index 3683f142f3..d451606dae 100644
--- a/i18n/et.json
+++ b/i18n/et.json
@@ -28,6 +28,7 @@
"add_to_album": "Lisa albumisse",
"add_to_album_bottom_sheet_added": "Lisatud albumisse {album}",
"add_to_album_bottom_sheet_already_exists": "On juba albumis {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Kõiki lokaalseid üksuseid ei õnnestunud albumisse lisada",
"add_to_album_toggle": "Muuda albumi {album} valikut",
"add_to_albums": "Lisa albumitesse",
"add_to_albums_count": "Lisa albumitesse ({count})",
diff --git a/i18n/fa.json b/i18n/fa.json
index 3b0be9a9b1..76f8d956fc 100644
--- a/i18n/fa.json
+++ b/i18n/fa.json
@@ -13,6 +13,7 @@
"add_a_location": "افزودن یک مکان",
"add_a_name": "افزودن نام",
"add_a_title": "افزودن عنوان",
+ "add_birthday": "افزودن تاریخ تولد",
"add_exclusion_pattern": "افزودن الگوی استثنا",
"add_import_path": "افزودن مسیر ورودی",
"add_location": "افزودن مکان",
@@ -22,10 +23,13 @@
"add_photos": "افزودن عکس ها",
"add_to": "افزودن به …",
"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_shared_album": "افزودن به آلبوم اشتراکی",
"added_to_archive": "به آرشیو اضافه شد",
"added_to_favorites": "به علاقه مندی ها اضافه شد",
- "added_to_favorites_count": "{count} تا اضافه شد به علاقه مندی ها",
+ "added_to_favorites_count": "{count, number} تا به علاقه مندی ها اضافه شد",
"admin": {
"add_exclusion_pattern_description": "الگوهای استثنا را اضافه کنید. پشتیبانی از گلابینگ با استفاده از *, ** و ? وجود دارد. برای نادیده گرفتن تمام فایلها در هر دایرکتوری با نام \"Raw\"، از \"**/Raw/**\" استفاده کنید. برای نادیده گرفتن تمام فایلهایی که با \".tif\" پایان مییابند، از \"**/*.tif\" استفاده کنید. برای نادیده گرفتن یک مسیر مطلق، از \"/path/to/ignore/**\" استفاده کنید.",
"authentication_settings": "تنظیمات احراز هویت",
diff --git a/i18n/fi.json b/i18n/fi.json
index d2b36cf4d3..769b528f4c 100644
--- a/i18n/fi.json
+++ b/i18n/fi.json
@@ -123,7 +123,13 @@
"logging_enable_description": "Ota lokikirjaus käyttöön",
"logging_level_description": "Kun käytössä, mitä lokituksen tasoa käytetään.",
"logging_settings": "Lokit",
- "machine_learning_availability_checks": "Saatavyystarkastukset",
+ "machine_learning_availability_checks": "Saatavuustarkastukset",
+ "machine_learning_availability_checks_description": "Automaattisesti havaitse ja suosi vapaita koneoppimisen palvelimia",
+ "machine_learning_availability_checks_enabled": "Laita päälle saatavuus tarkistukset",
+ "machine_learning_availability_checks_interval": "Tarkastusväli",
+ "machine_learning_availability_checks_interval_description": "Aikaväli millisekunneissa saavutettavuus tarkistuksille",
+ "machine_learning_availability_checks_timeout": "Pyynnön aikakatkaisu",
+ "machine_learning_availability_checks_timeout_description": "Aikakatkaisu aika millisekunneissa saatavuus tarkistuksille",
"machine_learning_clip_model": "CLIP-malli",
"machine_learning_clip_model_description": "Käytettävän CLIP-mallin nimi toimivien mallien listasta. Huomaa että sinun täytyy suorittaa \"Älykäs etsintä\"-työ uudelleen vaihdettuasi käytettävää mallia.",
"machine_learning_duplicate_detection": "Kaksoiskappaleiden tunnistus",
@@ -424,6 +430,7 @@
"album_remove_user_confirmation": "Oletko varma että haluat poistaa {user}?",
"album_search_not_found": "Haullasi ei löytynyt yhtään albumia",
"album_share_no_users": "Näyttää että olet jakanut tämän albumin kaikkien kanssa, tai sinulla ei ole käyttäjiä joille jakaa.",
+ "album_summary": "Albumi tiivistelmä",
"album_updated": "Albumi päivitetty",
"album_updated_setting_description": "Saa sähköpostia kun jaetussa albumissa on uutta sisältöä",
"album_user_left": "Poistuttiin albumista {album}",
@@ -495,6 +502,7 @@
"asset_restored_successfully": "Kohde palautettu onnistuneesti",
"asset_skipped": "Ohitettu",
"asset_skipped_in_trash": "Roskakorissa",
+ "asset_trashed": "Kohde poistettu",
"asset_uploaded": "Lähetetty",
"asset_uploading": "Ladataan…",
"asset_viewer_settings_subtitle": "Galleriakatseluohjelman asetusten hallinta",
@@ -528,8 +536,10 @@
"autoplay_slideshow": "Toista diaesitys automaattisesti",
"back": "Takaisin",
"back_close_deselect": "Palaa, sulje tai poista valinnat",
+ "background_backup_running_error": "Tausta varmuuskopiointi on aktiivinen, ei voida aloittaa manuaalista varmuuskopiointia",
"background_location_permission": "Taustasijainnin käyttöoikeus",
"background_location_permission_content": "Jotta sovellus voi vaihtaa verkkoa taustalla toimiessaan, Immichillä on *aina* oltava pääsy tarkkaan sijaintiin, jotta se voi lukea Wi-Fi-verkon nimen",
+ "background_options": "Tausta valinnat",
"backup": "Varmuuskopiointi",
"backup_album_selection_page_albums_device": "Laitteen albumit ({count})",
"backup_album_selection_page_albums_tap": "Napauta sisällyttääksesi, kaksoisnapauta jättääksesi pois",
diff --git a/i18n/fr.json b/i18n/fr.json
index c0a76c69fe..df0e9d1cc0 100644
--- a/i18n/fr.json
+++ b/i18n/fr.json
@@ -28,6 +28,7 @@
"add_to_album": "Ajouter à l'album",
"add_to_album_bottom_sheet_added": "Ajouté à {album}",
"add_to_album_bottom_sheet_already_exists": "Déjà dans {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Certains médias n'ont pas pu être ajoutés à l'album",
"add_to_album_toggle": "Basculer la sélection pour {album}",
"add_to_albums": "Ajouter aux albums",
"add_to_albums_count": "Ajouter aux albums ({count})",
@@ -598,6 +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 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",
diff --git a/i18n/he.json b/i18n/he.json
index 3bf4f703e8..8138679cdd 100644
--- a/i18n/he.json
+++ b/i18n/he.json
@@ -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": "נוסף לארכיון",
@@ -124,8 +125,12 @@
"logging_level_description": "כאשר פועל, באיזה רמת יומן לתעד.",
"logging_settings": "רישום ביומן",
"machine_learning_availability_checks": "בדיקת זמינות",
+ "machine_learning_availability_checks_description": "זהה ותעדף אוטומטית שרתי למידת מכונה זמינים",
"machine_learning_availability_checks_enabled": "הפעלת בדיקות זמינות",
"machine_learning_availability_checks_interval": "תזמון בדיקה",
+ "machine_learning_availability_checks_interval_description": "מרווח זמן במילישניות בין בדיקות זמינות",
+ "machine_learning_availability_checks_timeout": "פסק זמן לבקשה",
+ "machine_learning_availability_checks_timeout_description": "פסק זמן במילישניות עבור בדיקות זמינות",
"machine_learning_clip_model": "מודל CLIP",
"machine_learning_clip_model_description": "שמו של מודל CLIP רשום כאן. שים לב שעליך להפעיל מחדש את המשימה 'חיפוש חכם' עבור כל התמונות בעת שינוי מודל.",
"machine_learning_duplicate_detection": "איתור כפילויות",
@@ -498,6 +503,8 @@
"asset_restored_successfully": "תמונה שוחזרה בהצלחה",
"asset_skipped": "דילג",
"asset_skipped_in_trash": "באשפה",
+ "asset_trashed": "התמונה הועברה לאשפה",
+ "asset_troubleshoot": "פתרון בעיות בתמונות",
"asset_uploaded": "הועלה",
"asset_uploading": "מעלה…",
"asset_viewer_settings_subtitle": "ניהול הגדרות מציג הגלריה שלך",
@@ -531,8 +538,10 @@
"autoplay_slideshow": "מצגת תמונות אוטומטית",
"back": "חזרה",
"back_close_deselect": "חזור, סגור, או בטל בחירה",
+ "background_backup_running_error": "גיבוי ברקע פועל כעת, לא ניתן להפעיל גיבוי ידני",
"background_location_permission": "הרשאת מיקום ברקע",
"background_location_permission_content": "כדי להחליף רשתות בעת ריצה ברקע, היישום צריך *תמיד* גישה למיקום מדויק על מנת לקרוא את השם של רשת האינטרנט האלחוטי",
+ "background_options": "אפשרויות רקע",
"backup": "גיבוי",
"backup_album_selection_page_albums_device": "({count}) אלבומים במכשיר",
"backup_album_selection_page_albums_tap": "הקש כדי לכלול, הקש פעמיים כדי להחריג",
@@ -540,6 +549,7 @@
"backup_album_selection_page_select_albums": "בחירת אלבומים",
"backup_album_selection_page_selection_info": "פרטי בחירה",
"backup_album_selection_page_total_assets": "סה״כ תמונות ייחודיות",
+ "backup_albums_sync": "סנכרון אלבומי גיבוי",
"backup_all": "הכל",
"backup_background_service_backup_failed_message": "נכשל בגיבוי תמונות. מנסה שוב…",
"backup_background_service_connection_failed_message": "נכשל בהתחברות לשרת. מנסה שוב…",
@@ -589,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": "העלאה כבר בתהליך. נסה אחרי זמן מה",
@@ -656,6 +667,8 @@
"change_pin_code": "שנה קוד PIN",
"change_your_password": "החלף את הסיסמה שלך",
"changed_visibility_successfully": "הנראות שונתה בהצלחה",
+ "charging": "טוען",
+ "charging_requirement_mobile_backup": "גיבוי ברקע דורש טעינה של המכשיר",
"check_corrupt_asset_backup": "בדוק גיבויים פגומים של תמונות",
"check_corrupt_asset_backup_button": "בצע בדיקה",
"check_corrupt_asset_backup_description": "הרץ בדיקה זו רק על Wi-Fi ולאחר שכל התמונות גובו. ההליך עשוי לקחת כמה דקות.",
@@ -742,6 +755,7 @@
"create_user": "צור משתמש",
"created": "נוצר",
"created_at": "נוצר",
+ "creating_linked_albums": "יוצר אלבומים מקושרים...",
"crop": "חתוך",
"curated_object_page_title": "דברים",
"current_device": "מכשיר נוכחי",
@@ -891,7 +905,9 @@
"error": "שגיאה",
"error_change_sort_album": "שינוי סדר מיון אלבום נכשל",
"error_delete_face": "שגיאה במחיקת פנים מתמונה",
+ "error_getting_places": "שגיאה בקבלת מקומות",
"error_loading_image": "שגיאה בטעינת התמונה",
+ "error_loading_partners": "שגיאה בטעינת שותפים: {error}",
"error_saving_image": "שגיאה: {error}",
"error_tag_face_bounding_box": "שגיאה בתיוג הפנים – לא ניתן לקבל את קואורדינטות המסגרת",
"error_title": "שגיאה - משהו השתבש",
@@ -1056,6 +1072,7 @@
"favorites_page_no_favorites": "לא נמצאו תמונות מועדפים",
"feature_photo_updated": "תמונה מייצגת עודכנה",
"features": "תכונות",
+ "features_in_development": "תכונות בפיתוח",
"features_setting_description": "ניהול תכונות היישום",
"file_name": "שם הקובץ",
"file_name_or_extension": "שם קובץ או סיומת",
@@ -1220,6 +1237,7 @@
"local": "מקומי",
"local_asset_cast_failed": "לא ניתן לשדר תמונה שלא הועלתה לשרת",
"local_assets": "תמונות מקומיות",
+ "local_media_summary": "סיכום של מדיה מקומית",
"local_network": "רשת מקומית",
"local_network_sheet_info": "היישום יתחבר לשרת דרך הכתובת הזאת כאשר משתמשים ברשת האינטרנט האלחוטי שמצוינת",
"location_permission": "הרשאת מיקום",
@@ -1231,6 +1249,7 @@
"location_picker_longitude_hint": "הזן את קו האורך שלך כאן",
"lock": "נעל",
"locked_folder": "תיקיה נעולה",
+ "log_detail_title": "פרטי יומן",
"log_out": "התנתק",
"log_out_all_devices": "התנתק מכל המכשירים",
"logged_in_as": "מחובר כ {user}",
@@ -1261,6 +1280,7 @@
"login_password_changed_success": "סיסמה עודכנה בהצלחה",
"logout_all_device_confirmation": "האם באמת ברצונך להתנתק מכל המכשירים?",
"logout_this_device_confirmation": "האם באמת ברצונך להתנתק מהמכשיר הזה?",
+ "logs": "יומנים",
"longitude": "קו אורך",
"look": "מראה",
"loop_videos": "הפעלה חוזרת של סרטונים",
@@ -1303,6 +1323,7 @@
"mark_as_read": "סמן כנקרא",
"marked_all_as_read": "כל ההתראות סומנו כנקראו",
"matches": "התאמות",
+ "matching_assets": "תמונות תואמות",
"media_type": "סוג מדיה",
"memories": "זכרונות",
"memories_all_caught_up": "ראית הכל",
@@ -1343,6 +1364,7 @@
"name_or_nickname": "שם או כינוי",
"network_requirement_photos_upload": "השתמש בנתונים ניידים לגיבוי תמונות",
"network_requirement_videos_upload": "השתמש בנתונים ניידים לגיבוי סרטונים",
+ "network_requirements": "דרישות רשת",
"network_requirements_updated": "דרישות הרשת השתנו, תור הגיבוי אופס",
"networking_settings": "רשת",
"networking_subtitle": "ניהול הגדרות נקודת קצה שרת",
@@ -1353,6 +1375,7 @@
"new_person": "אדם חדש",
"new_pin_code": "קוד PIN חדש",
"new_pin_code_subtitle": "זאת הפעם הראשונה שנכנסת לתיקיה הנעולה. צור קוד PIN כדי לאבטח את הגישה לדף זה",
+ "new_timeline": "ציר הזמן החדש",
"new_user_created": "משתמש חדש נוצר",
"new_version_available": "גרסה חדשה זמינה",
"newest_first": "החדש ביותר ראשון",
@@ -1366,20 +1389,25 @@
"no_assets_message": "לחץ כדי להעלות את התמונה הראשונה שלך",
"no_assets_to_show": "אין תמונות להצגה",
"no_cast_devices_found": "לא נמצאו מכשירי שידור",
+ "no_checksum_local": "אין Checksum זמין - לא ניתן לאחזר תמונות מקומיות",
+ "no_checksum_remote": "אין Checksum זמין - לא ניתן לאחזר תמונות מהשרת",
"no_duplicates_found": "לא נמצאו כפילויות.",
"no_exif_info_available": "אין מידע זמין על מטא-נתונים (exif)",
"no_explore_results_message": "העלה תמונות נוספות כדי לחקור את האוסף שלך.",
"no_favorites_message": "הוסף מועדפים כדי למצוא במהירות את התמונות והסרטונים הכי טובים שלך",
"no_libraries_message": "צור ספרייה חיצונית כדי לראות את התמונות והסרטונים שלך",
+ "no_local_assets_found": "לא נמצאו תמונות עם Checksum זהה",
"no_locked_photos_message": "תמונות וסרטונים בתיקייה הנעולה מוסתרים ולא יופיעו בזמן הגלישה או החיפוש בספרייה שלך.",
"no_name": "אין שם",
"no_notifications": "אין התראות",
"no_people_found": "לא נמצאו אנשים תואמים",
"no_places": "אין מקומות",
+ "no_remote_assets_found": "לא נמצאו תמונות בשרת עם Checksum זהה",
"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": "הערה: כדי להחיל את תווית האחסון על תמונות שהועלו בעבר, הפעל את",
@@ -1475,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}",
@@ -1501,6 +1529,7 @@
"port": "יציאה",
"preferences_settings_subtitle": "ניהול העדפות יישום",
"preferences_settings_title": "העדפות",
+ "preparing": "בהכנה",
"preset": "הגדרות קבועות מראש",
"preview": "תצוגה מקדימה",
"previous": "הקודם",
@@ -1867,6 +1896,7 @@
"show_slideshow_transition": "הצג מעבר מצגת",
"show_supporter_badge": "תג תומך",
"show_supporter_badge_description": "הצג תג תומך",
+ "show_text_search_menu": "הצג תפריט חיפוש טקסט",
"shuffle": "ערבוב",
"sidebar": "סרגל צד",
"sidebar_display_description": "הצג קישור לתצוגה בסרגל הצד",
@@ -1897,6 +1927,7 @@
"stacktrace": "Stack trace",
"start": "התחל",
"start_date": "תאריך התחלה",
+ "start_date_before_end_date": "תאריך ההתחלה חייב להיות לפני תאריך הסיום",
"state": "מדינה",
"status": "מצב",
"stop_casting": "הפסקת שידור",
@@ -2099,5 +2130,6 @@
"yes": "כן",
"you_dont_have_any_shared_links": "אין לך קישורים משותפים",
"your_wifi_name": "שם אינטרנט אלחוטי שלך",
- "zoom_image": "זום לתמונה"
+ "zoom_image": "זום לתמונה",
+ "zoom_to_bounds": "התמקד באזור"
}
diff --git a/i18n/hu.json b/i18n/hu.json
index 131df91a79..081bc12f99 100644
--- a/i18n/hu.json
+++ b/i18n/hu.json
@@ -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",
@@ -548,6 +549,7 @@
"backup_album_selection_page_select_albums": "Válassz albumokat",
"backup_album_selection_page_selection_info": "Összegzés",
"backup_album_selection_page_total_assets": "Összes egyedi elem",
+ "backup_albums_sync": "Backup albumok szinkronizálása",
"backup_all": "Összes",
"backup_background_service_backup_failed_message": "Az elemek mentése sikertelen. Újrapróbálkozás…",
"backup_background_service_connection_failed_message": "A szerverhez csatlakozás sikertelen. Újrapróbálkozás…",
@@ -597,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",
@@ -1386,20 +1389,25 @@
"no_assets_message": "KATTINTS AZ ELSŐ FÉNYKÉP FELTÖLTÉSÉHEZ",
"no_assets_to_show": "Nincs megjeleníthető elem",
"no_cast_devices_found": "Nem található eszköz vetítéshez",
+ "no_checksum_local": "Nincs elérhető ellenőrzőösszeg - a helyi eszközök nem kérhetők le",
+ "no_checksum_remote": "Nincs elérhető ellenőrzőösszeg - a távoli eszköz nem kérhető le",
"no_duplicates_found": "Nem találhatók duplikátumok.",
"no_exif_info_available": "Nincs elérhető Exif információ",
"no_explore_results_message": "Tölts fel több képet, hogy böngészhesd a gyűjteményed.",
"no_favorites_message": "Add hozzá a kedvencekhez, hogy gyorsan megtaláld a legjobb képeidet és videóidat",
"no_libraries_message": "Hozz létre külső képtárat a fényképeid és videóid megtekintéséhez",
+ "no_local_assets_found": "Nem találhatók helyi eszközök ezzel az ellenőrzőösszeggel",
"no_locked_photos_message": "A zárolt mappában elhelyezett fotók és videók rejtettek, és nem jelennek meg a könyvtárad böngészése vagy keresése közben sem.",
"no_name": "Nincs Név",
"no_notifications": "Nincsenek értesítések",
"no_people_found": "Nem található személy",
"no_places": "Nincsenek helyek",
+ "no_remote_assets_found": "Nem találhatók távoli eszközök ezzel az ellenőrzőösszeggel",
"no_results": "Nincs találat",
"no_results_description": "Próbálkozz szinonimákkal vagy általánosabb kulcsszavakkal",
"no_shared_albums_message": "Hozz létre egy új albumot, hogy megoszthasd fényképeid és videóid másokkal",
"no_uploads_in_progress": "Nincs folyamatban lévő feltöltés",
+ "not_available": "N/A",
"not_in_any_album": "Nincs albumban",
"not_selected": "Nincs kiválasztva",
"note_apply_storage_label_to_previously_uploaded assets": "Megjegyzés: a korábban feltöltött elemek Tárhely Címkézéséhez futtasd a(z)",
@@ -1434,6 +1442,8 @@
"open_the_search_filters": "Keresési szűrők megnyitása",
"options": "Beállítások",
"or": "vagy",
+ "organize_into_albums": "Albumokba rendezés",
+ "organize_into_albums_description": "Meglévő fotók albumokba helyezése, a jelenlegi szinkronizációs beállítások alapján",
"organize_your_library": "Rendszerezd a képtáradat",
"original": "eredeti",
"other": "Egyéb",
@@ -1519,6 +1529,7 @@
"port": "Port",
"preferences_settings_subtitle": "Alkalmazásbeállítások kezelése",
"preferences_settings_title": "Beállítások",
+ "preparing": "Előkészítés",
"preset": "Sablon",
"preview": "Előnézet",
"previous": "Előző",
@@ -1535,6 +1546,7 @@
"profile_drawer_client_out_of_date_minor": "A mobilalkalmazás elavult. Kérjük, frissítsd a legfrisebb alverzióra.",
"profile_drawer_client_server_up_to_date": "A Kliens és a Szerver is naprakész",
"profile_drawer_github": "GitHub",
+ "profile_drawer_readonly_mode": "Csak olvasható mód engedélyezve. A kilépéshez hosszan nyomja meg a felhasználói avatar ikont.",
"profile_drawer_server_out_of_date_major": "A szerver elavult. Kérjük, frissítsd a legfrisebb főverzióra.",
"profile_drawer_server_out_of_date_minor": "A szerver elavult. Kérjük, frissítsd a legfrisebb alverzióra.",
"profile_image_of_user": "{user} profilképe",
@@ -1573,6 +1585,7 @@
"purchase_server_description_2": "Támogató státusz",
"purchase_server_title": "Szerver",
"purchase_settings_server_activated": "A szerver termékkulcsot az admin kezeli",
+ "query_asset_id": "Lekérdezési eszköz azonosítója",
"queue_status": "Feldolgozva {count}/{total}",
"rating": "Értékelés csillagokkal",
"rating_clear": "Értékelés törlése",
@@ -1580,6 +1593,9 @@
"rating_description": "Exif értékelés megjelenítése az infópanelen",
"reaction_options": "Reakció lehetőségek",
"read_changelog": "Változásnapló Elolvasása",
+ "readonly_mode_disabled": "Csak olvasható mód kikapcsolva",
+ "readonly_mode_enabled": "Csak olvasható mód bekapcsolva",
+ "ready_for_upload": "Készen áll a feltöltésre",
"reassign": "Hozzárendel",
"reassigned_assets_to_existing_person": "{count, plural, other {# elem}} hozzárendelve{name, select, null { egy létező személyhez} other {: {name}}}",
"reassigned_assets_to_new_person": "{count, plural, other {# elem}} hozzárendelve egy új személyhez",
@@ -1604,6 +1620,7 @@
"regenerating_thumbnails": "Bélyegképek újragenerálása folyamatban",
"remote": "Távoli",
"remote_assets": "Távoli Elemek",
+ "remote_media_summary": "Távoli médiaösszefoglaló",
"remove": "Eltávolítás",
"remove_assets_album_confirmation": "Biztosan el szeretnél távolítani {count, plural, one {# elemet} other {# elemet}} az albumból?",
"remove_assets_shared_link_confirmation": "Biztosan el szeretnél távolítani {count, plural, one {# elemet} other {# elemet}} ebből a megosztott linkből?",
@@ -1656,6 +1673,7 @@
"restore_user": "Felhasználó visszaállítása",
"restored_asset": "Visszaállított elem",
"resume": "Folytatás",
+ "resume_paused_jobs": "Folytatás {count, plural, one {# paused job} other {# paused jobs}}",
"retry_upload": "Feltöltés újrapróbálása",
"review_duplicates": "Duplikátumok áttekintése",
"review_large_files": "Nagy fájlok áttekintése",
@@ -1749,6 +1767,7 @@
"select_user_for_sharing_page_err_album": "Az album létrehozása sikertelen",
"selected": "Kiválasztott",
"selected_count": "{count, plural, other {# kiválasztva}}",
+ "selected_gps_coordinates": "Kiválasztott GPS Kordináták",
"send_message": "Üzenet küldése",
"send_welcome_email": "Üdvözlő email küldése",
"server_endpoint": "Szerver Végpont",
@@ -1877,6 +1896,7 @@
"show_slideshow_transition": "Vetítés áttűnési effekt mutatása",
"show_supporter_badge": "Támogató jelvény",
"show_supporter_badge_description": "Támogató jelvény mutatása",
+ "show_text_search_menu": "Mutasd a szövegkeresési menüt",
"shuffle": "Véletlenszerű",
"sidebar": "Oldalsáv",
"sidebar_display_description": "Nézet link megjelenítése az oldalsávban",
@@ -1907,6 +1927,7 @@
"stacktrace": "Hiba leírása",
"start": "Elindít",
"start_date": "Kezdő dátum",
+ "start_date_before_end_date": "A kezdeti dátumnak a befejezési dátum előtt kell lennie",
"state": "Megye/Állam",
"status": "Állapot",
"stop_casting": "Vetítés megszüntetése",
@@ -1970,7 +1991,9 @@
"to_change_password": "Jelszó megváltoztatása",
"to_favorite": "Kedvenc",
"to_login": "Bejelentkezés",
+ "to_multi_select": "több elem kiválasztásához",
"to_parent": "Egy szinttel feljebb",
+ "to_select": "a kiválasztáshoz",
"to_trash": "Lomtárba helyezés",
"toggle_settings": "Beállítások átállítása",
"total": "Összesen",
@@ -1990,6 +2013,7 @@
"trash_page_select_assets_btn": "Elemek kiválasztása",
"trash_page_title": "Lomtár ({count})",
"trashed_items_will_be_permanently_deleted_after": "A lomtárban lévő elemek véglegesen törlésre kerülnek {days, plural, other {# nap}} múlva.",
+ "troubleshoot": "Hibaelhárítás",
"type": "Típus",
"unable_to_change_pin_code": "Sikertelen PIN kód változtatás",
"unable_to_setup_pin_code": "Sikertelen PIN kód beállítás",
@@ -2106,5 +2130,6 @@
"yes": "Igen",
"you_dont_have_any_shared_links": "Nincsenek megosztott linkjeid",
"your_wifi_name": "A Wi-Fi hálózatod neve",
- "zoom_image": "Kép Nagyítása"
+ "zoom_image": "Kép Nagyítása",
+ "zoom_to_bounds": "Nagyítás a határokhoz"
}
diff --git a/i18n/it.json b/i18n/it.json
index 39c296a0e7..3f8d90eacc 100644
--- a/i18n/it.json
+++ b/i18n/it.json
@@ -28,6 +28,7 @@
"add_to_album": "Aggiungi all'album",
"add_to_album_bottom_sheet_added": "Aggiunto in {album}",
"add_to_album_bottom_sheet_already_exists": "Già presente in {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Alcune risorse locali non possono essere aggiunte all'album",
"add_to_album_toggle": "Attiva/disattiva selezione per {album}",
"add_to_albums": "Aggiungi ad album",
"add_to_albums_count": "Aggiungi ad album ({count})",
@@ -176,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",
@@ -307,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.",
@@ -344,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.",
@@ -355,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",
@@ -387,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",
@@ -598,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",
@@ -617,7 +619,7 @@
"blurred_background": "Sfondo sfocato",
"bugs_and_feature_requests": "Bug & Richieste di nuove funzionalità",
"build": "Compilazione",
- "build_image": "Compila Immagine",
+ "build_image": "Immagine Compilata",
"bulk_delete_duplicates_confirmation": "Sei sicuro di voler cancellare {count, plural, one {# asset duplicato} other {# assets duplicati}}? Questa operazione manterrà l'asset più pesante di ogni gruppo e cancellerà permanentemente tutti gli altri duplicati. Non puoi annullare questa operazione!",
"bulk_keep_duplicates_confirmation": "Sei sicuro di voler tenere {count, plural, one {# asset duplicato} other {# assets duplicati}}? Questa operazione risolverà tutti i gruppi duplicati senza cancellare nulla.",
"bulk_trash_duplicates_confirmation": "Sei davvero sicuro di voler cancellare {count, plural, one {# asset duplicato} other {# assets duplicati}}? Questa operazione manterrà l'asset più pesante di ogni gruppo e cancellerà permanentemente tutti gli altri duplicati.",
@@ -733,7 +735,7 @@
"copy_to_clipboard": "Copia negli appunti",
"country": "Nazione",
"cover": "Riempi la finestra",
- "covers": "Copre",
+ "covers": "Copertine",
"create": "Crea",
"create_album": "Crea album",
"create_album_page_untitled": "Senza titolo",
@@ -766,9 +768,9 @@
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Scuro",
"dark_theme": "Imposta tema scuro",
- "date_after": "Data dopo",
+ "date_after": "Dopo la data",
"date_and_time": "Data e ora",
- "date_before": "Data prima",
+ "date_before": "Prima della data",
"date_format": "E, d LLL, y • hh:mm",
"date_of_birth_saved": "Data di nascita salvata con successo",
"date_range": "Intervallo di date",
@@ -1172,7 +1174,7 @@
"in_archive": "In archivio",
"include_archived": "Includi Archiviati",
"include_shared_albums": "Includi album condivisi",
- "include_shared_partner_assets": "Includi asset condivisi del compagno",
+ "include_shared_partner_assets": "Includi elementi condivisi dai compagni",
"individual_share": "Condivisione individuale",
"individual_shares": "Condivisioni individuali",
"info": "Info",
@@ -1720,11 +1722,11 @@
"search_no_people": "Nessuna persona",
"search_no_people_named": "Nessuna persona chiamate \"{name}\"",
"search_no_result": "Nessun risultato trovato, prova con un termine o combinazione diversi",
- "search_options": "Opzioni Ricerca",
+ "search_options": "Opzioni di ricerca",
"search_page_categories": "Categoria",
"search_page_motion_photos": "Foto in movimento",
- "search_page_no_objects": "Nessuna informazione relativa all'oggetto disponibile",
- "search_page_no_places": "Nessun informazione sul luogo disponibile",
+ "search_page_no_objects": "Nessuna informazione sugli oggetti disponibile",
+ "search_page_no_places": "Nessuna informazione sui luoghi disponibile",
"search_page_screenshots": "Screenshot",
"search_page_search_photos_videos": "Ricerca le tue foto e i tuoi video",
"search_page_selfies": "Selfie",
@@ -1920,7 +1922,7 @@
"stack_action_prompt": "{count} elementi raggruppati",
"stack_duplicates": "Raggruppa i duplicati",
"stack_select_one_photo": "Seleziona una foto principale per il gruppo",
- "stack_selected_photos": "Impila foto selezionate",
+ "stack_selected_photos": "Raggruppa foto selezionate",
"stacked_assets_count": "{count, plural, one {Raggruppato # asset} other {Raggruppati # asset}}",
"stacktrace": "Traccia dell'errore",
"start": "Avvia",
@@ -2037,7 +2039,7 @@
"unselect_all": "Deseleziona tutto",
"unselect_all_duplicates": "Deseleziona tutti i duplicati",
"unselect_all_in": "Deseleziona tutto in {group}",
- "unstack": "Rimuovi dal gruppo",
+ "unstack": "Separa dal gruppo",
"unstack_action_prompt": "{count} separati",
"unstacked_assets_count": "{count, plural, one {Separato # asset} other {Separati # asset}}",
"untagged": "Senza tag",
@@ -2112,9 +2114,9 @@
"view_similar_photos": "Visualizza le foto simili",
"view_stack": "Visualizza Raggruppamento",
"view_user": "Visualizza Utente",
- "viewer_remove_from_stack": "Rimuovi dalla pila",
+ "viewer_remove_from_stack": "Rimuovi dal gruppo",
"viewer_stack_use_as_main_asset": "Usa come risorsa principale",
- "viewer_unstack": "Rimuovi dal gruppo",
+ "viewer_unstack": "Separa dal gruppo",
"visibility_changed": "Visibilità modificata per {count, plural, one {# persona} other {# persone}}",
"waiting": "In Attesa",
"warning": "Attenzione",
@@ -2125,8 +2127,8 @@
"wrong_pin_code": "Codice PIN errato",
"year": "Anno",
"years_ago": "{years, plural, one {# anno} other {# anni}} fa",
- "yes": "Si",
- "you_dont_have_any_shared_links": "Non è presente alcun link condiviso",
+ "yes": "Sì",
+ "you_dont_have_any_shared_links": "Non hai nessun link condiviso",
"your_wifi_name": "Nome della tua rete Wi-Fi",
"zoom_image": "Ingrandisci immagine",
"zoom_to_bounds": "Ingrandisci fino ai bordi"
diff --git a/i18n/kn.json b/i18n/kn.json
index 388f06704c..111c802a1e 100644
--- a/i18n/kn.json
+++ b/i18n/kn.json
@@ -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}ಗೆ ಸೇರಿಸಿದೆ"
}
diff --git a/i18n/ko.json b/i18n/ko.json
index 815f1b2b2f..0c01c03263 100644
--- a/i18n/ko.json
+++ b/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": "위치 추가",
@@ -28,20 +28,21 @@
"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})",
"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": "다시 활성화하려면 서버 명령어를 사용하세요.",
"background_task_job": "백그라운드 작업",
@@ -49,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": "소중한 데이터를 안전하게 보호하기 위해 3-2-1 백업 전략 사용을 권장합니다. Immich를 백업할 때 업로드한 사진 및 동영상뿐 아니라 데이터베이스도 함께 보관해야 한다는 점을 잊지 마세요.",
"backup_onboarding_footer": "Immich 백업에 대한 자세한 내용은 공식 문서를 참조하세요.",
@@ -58,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 코드를 초기화하시겠습니까?",
@@ -70,7 +71,7 @@
"cron_expression_description": "Cron 표현식으로 스캔 주기를 설정합니다. 자세한 내용은 다음을 참조하세요, Crontab Guru",
"cron_expression_presets": "Cron 표현식 프리셋",
"disable_login": "로그인 비활성화",
- "duplicate_detection_job_description": "기계 학습으로 유사한 이미지를 감지합니다. 스마트 검색이 활성화되어 있어야 합니다.",
+ "duplicate_detection_job_description": "기계 학습으로 유사한 이미지를 감지합니다. 스마트 검색이 활성화되어 있어야 합니다",
"exclusion_pattern_description": "라이브러리 스캔에서 제외할 파일이나 폴더 규칙을 설정합니다. 폴더에 원하지 않는 파일(RAW 파일 등)이 함께 존재하는 경우 유용합니다.",
"external_library_management": "외부 라이브러리 관리",
"face_detection": "얼굴 감지",
@@ -123,6 +124,13 @@
"logging_enable_description": "로그 기록 활성화",
"logging_level_description": "활성화 시 사용할 로그 레벨을 선택합니다.",
"logging_settings": "로깅",
+ "machine_learning_availability_checks": "가용성 확인",
+ "machine_learning_availability_checks_description": "사용 가능한 머신 러닝 서버를 자동으로 감지하고 우선적으로 선택합니다",
+ "machine_learning_availability_checks_enabled": "가용성 확인 활성화",
+ "machine_learning_availability_checks_interval": "확인 주기",
+ "machine_learning_availability_checks_interval_description": "가용성 확인 주기 (밀리초 단위)",
+ "machine_learning_availability_checks_timeout": "요청 타임아웃",
+ "machine_learning_availability_checks_timeout_description": "가용성 확인 요청 타임아웃 (밀리초 단위)",
"machine_learning_clip_model": "CLIP 모델",
"machine_learning_clip_model_description": "CLIP 모델의 종류는 이곳을 참조하세요. 한국어 등 여러 언어로 검색하려면 Multilingual CLIP 모델을 선택하세요. 모델을 변경한 경우 모든 이미지의 '스마트 검색' 작업을 다시 실행해야 합니다.",
"machine_learning_duplicate_detection": "비슷한 항목 감지",
@@ -394,6 +402,7 @@
"advanced_settings_prefer_remote_title": "서버 이미지 선호",
"advanced_settings_proxy_headers_subtitle": "Immich가 네트워크 요청 시 사용할 프록시 헤더를 정의합니다.",
"advanced_settings_proxy_headers_title": "프록시 헤더",
+ "advanced_settings_readonly_mode_subtitle": "읽기 전용 모드를 활성화하면 여러 이미지 선택, 공유, 캐스트, 삭제 동작이 모두 비활성화됩니다. 메인 화면에서 사용자 프로필을 통해 읽기 전용 모드의 활성 상태를 전환하세요",
"advanced_settings_readonly_mode_title": "읽기 전용 모드",
"advanced_settings_self_signed_ssl_subtitle": "서버 엔드포인트의 SSL 인증서 검증을 건너뜁니다. 자체 서명 인증서를 사용하는 경우 활성화하세요.",
"advanced_settings_self_signed_ssl_title": "자체 서명된 SSL 인증서 허용",
@@ -422,6 +431,7 @@
"album_remove_user_confirmation": "{user}님을 앨범에서 제거하시겠습니까?",
"album_search_not_found": "검색 결과에 해당하는 앨범이 없습니다.",
"album_share_no_users": "이미 모든 사용자와 앨범을 공유했거나 공유할 사용자가 없습니다.",
+ "album_summary": "앨범 요약",
"album_updated": "항목 추가 알림",
"album_updated_setting_description": "공유 앨범에 항목이 추가된 경우 이메일 알림 받기",
"album_user_left": "{album} 앨범에서 나옴",
@@ -493,6 +503,8 @@
"asset_restored_successfully": "항목이 복원되었습니다.",
"asset_skipped": "건너뜀",
"asset_skipped_in_trash": "휴지통의 항목",
+ "asset_trashed": "항목 삭제됨",
+ "asset_troubleshoot": "항목 트러블슈팅",
"asset_uploaded": "업로드 완료",
"asset_uploading": "업로드 중…",
"asset_viewer_settings_subtitle": "갤러리 보기 설정을 관리합니다.",
@@ -526,8 +538,10 @@
"autoplay_slideshow": "슬라이드 쇼 자동 재생",
"back": "뒤로",
"back_close_deselect": "뒤로, 닫기 또는 선택 해제",
+ "background_backup_running_error": "백그라운드 백업이 현재 진행 중이므로 수동 백업을 시작할 수 없습니다",
"background_location_permission": "백그라운드 위치 권한",
"background_location_permission_content": "Immich가 백그라운드에서 실행 중일 때 네트워크를 전환하려면 Wi-Fi 네트워크 이름을 확인해야 하며, 이를 위해 '정확한 위치' 권한을 항상 허용해야 합니다.",
+ "background_options": "백그라운드 옵션",
"backup": "백업",
"backup_album_selection_page_albums_device": "기기의 앨범 ({count})",
"backup_album_selection_page_albums_tap": "탭하여 포함, 두 번 탭하여 제외",
@@ -535,6 +549,7 @@
"backup_album_selection_page_select_albums": "앨범 선택",
"backup_album_selection_page_selection_info": "선택한 앨범",
"backup_album_selection_page_total_assets": "전체 항목",
+ "backup_albums_sync": "앨범 동기화 백업",
"backup_all": "모두",
"backup_background_service_backup_failed_message": "항목 백업에 실패했습니다. 다시 시도하는 중…",
"backup_background_service_connection_failed_message": "서버 연결에 실패했습니다. 다시 시도하는 중…",
@@ -584,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": "업로드가 이미 진행 중입니다. 잠시 후 다시 시도하세요",
@@ -651,6 +667,8 @@
"change_pin_code": "PIN 코드 변경",
"change_your_password": "사용자 계정의 비밀번호를 변경합니다.",
"changed_visibility_successfully": "숨김 여부가 변경되었습니다.",
+ "charging": "충전 중",
+ "charging_requirement_mobile_backup": "백그라운드 백업은 기기 충전 상태에서 가능합니다",
"check_corrupt_asset_backup": "백업된 항목의 손상 여부 확인",
"check_corrupt_asset_backup_button": "확인 수행",
"check_corrupt_asset_backup_description": "이 검사는 모든 항목이 백업된 후 Wi-Fi가 연결된 상태에서만 실행하세요. 이 작업은 몇 분 정도 소요될 수 있습니다.",
@@ -737,6 +755,7 @@
"create_user": "사용자 계정 생성",
"created": "생성됨",
"created_at": "생성됨",
+ "creating_linked_albums": "링크 연결된 앨범 생성 중...",
"crop": "자르기",
"curated_object_page_title": "사물",
"current_device": "현재 기기",
@@ -886,7 +905,9 @@
"error": "오류",
"error_change_sort_album": "앨범 표시 순서 변경 실패",
"error_delete_face": "항목에서 얼굴 삭제 중 오류 발생",
+ "error_getting_places": "장소 정보 입력 실패",
"error_loading_image": "이미지를 불러오는 중 오류 발생",
+ "error_loading_partners": "파트너 불러오기 실패: {error}",
"error_saving_image": "오류: {error}",
"error_tag_face_bounding_box": "얼굴 태그 실패 - 얼굴의 위치를 가져올 수 없습니다.",
"error_title": "오류 - 문제가 발생했습니다",
@@ -1051,6 +1072,7 @@
"favorites_page_no_favorites": "즐겨찾기된 항목 없음",
"feature_photo_updated": "대표 사진 업데이트됨",
"features": "기능",
+ "features_in_development": "개발 중인 기능",
"features_setting_description": "사진 및 동영상 관리 기능을 설정합니다.",
"file_name": "파일 이름",
"file_name_or_extension": "파일명 또는 확장자",
@@ -1071,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": "시작하기",
@@ -1214,6 +1237,7 @@
"local": "로컬",
"local_asset_cast_failed": "서버에 업로드되지 않은 항목을 캐스팅할 수 없음",
"local_assets": "로컬 항목",
+ "local_media_summary": "로컬 미디어 요약",
"local_network": "로컬 네트워크",
"local_network_sheet_info": "지정된 Wi-Fi를 사용할 때 앱이 아래 URL로 서버에 연결합니다.",
"location_permission": "위치 권한",
@@ -1225,6 +1249,7 @@
"location_picker_longitude_hint": "여기에 경도를 입력하세요",
"lock": "잠금",
"locked_folder": "잠금 폴더",
+ "log_detail_title": "상세 로그",
"log_out": "로그아웃",
"log_out_all_devices": "모든 기기에서 로그아웃",
"logged_in_as": "{user}로 로그인됨",
@@ -1255,6 +1280,7 @@
"login_password_changed_success": "비밀번호가 변경되었습니다.",
"logout_all_device_confirmation": "모든 기기에서 로그아웃하시겠습니까?",
"logout_this_device_confirmation": "이 기기에서 로그아웃하시겠습니까?",
+ "logs": "로그",
"longitude": "경도",
"look": "보기",
"loop_videos": "동영상 반복",
@@ -1297,6 +1323,7 @@
"mark_as_read": "읽음으로 표시",
"marked_all_as_read": "모두 읽음으로 표시했습니다.",
"matches": "일치",
+ "matching_assets": "일치하는 항목",
"media_type": "미디어 종류",
"memories": "추억",
"memories_all_caught_up": "모두 확인함",
@@ -1337,6 +1364,7 @@
"name_or_nickname": "이름 또는 닉네임",
"network_requirement_photos_upload": "사진 백업에 모바일 데이터 사용",
"network_requirement_videos_upload": "동영상 백업에 모바일 데이터 사용",
+ "network_requirements": "네트워크 요구사항",
"network_requirements_updated": "네트워크 상태가 변경되었습니다. 백업 대기열을 초기화합니다.",
"networking_settings": "연결",
"networking_subtitle": "서버 엔드포인트 설정을 관리합니다.",
@@ -1347,6 +1375,7 @@
"new_person": "새 인물 생성",
"new_pin_code": "새 PIN 코드",
"new_pin_code_subtitle": "잠금 폴더에 처음 접근하셨습니다. 이곳에 안전하게 접근하기 위한 PIN 코드를 설정하세요.",
+ "new_timeline": "새 타임라인",
"new_user_created": "사용자 계정이 생성되었습니다.",
"new_version_available": "새 버전 사용 가능",
"newest_first": "최신순",
@@ -1360,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": "참고: 이전에 업로드한 항목에도 스토리지 레이블을 적용하려면 다음을 실행합니다,",
@@ -1408,6 +1442,8 @@
"open_the_search_filters": "검색 필터 열기",
"options": "옵션",
"or": "또는",
+ "organize_into_albums": "앨범으로 정리하기",
+ "organize_into_albums_description": "현재 동기화 설정을 사용하여 기존 사진을 앨범으로 정리합니다",
"organize_your_library": "라이브러리 정리",
"original": "원본",
"other": "기타",
@@ -1493,6 +1529,7 @@
"port": "포트",
"preferences_settings_subtitle": "앱 개인 설정을 관리합니다.",
"preferences_settings_title": "개인 설정",
+ "preparing": "준비 중",
"preset": "프리셋",
"preview": "미리 보기",
"previous": "이전",
@@ -1509,6 +1546,7 @@
"profile_drawer_client_out_of_date_minor": "모바일 앱이 최신 버전이 아닙니다. 최신 버전으로 업데이트하세요.",
"profile_drawer_client_server_up_to_date": "클라이언트와 서버가 최신 상태입니다.",
"profile_drawer_github": "Github",
+ "profile_drawer_readonly_mode": "읽기 전용 모드 활성화. 유저 아바타 아이콘을 길게 눌러 해제할 수 있습니다.",
"profile_drawer_server_out_of_date_major": "서버 버전이 최신이 아닙니다. 최신 버전으로 업데이트하세요.",
"profile_drawer_server_out_of_date_minor": "서버 버전이 최신이 아닙니다. 최신 버전으로 업데이트하세요.",
"profile_image_of_user": "{user}님의 프로필 이미지",
@@ -1547,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": "등급 초기화",
@@ -1554,6 +1593,9 @@
"rating_description": "상세 정보 패널에 EXIF 등급 태그 표시",
"reaction_options": "반응 옵션",
"read_changelog": "변경 내역 보기",
+ "readonly_mode_disabled": "읽기 전용 모드 비활성화",
+ "readonly_mode_enabled": "읽기 전용 모드 활성화",
+ "ready_for_upload": "업로드 준비 완료",
"reassign": "다시 할당",
"reassigned_assets_to_existing_person": "{count, plural, one {항목 #개} other {항목 #개}}를 {name, select, null {기존 인물} other {기존 인물 {name}}}에게 재지정했습니다.",
"reassigned_assets_to_new_person": "{count, plural, one {항목 #개} other {항목 #개}}를 새 인물에게 재지정했습니다.",
@@ -1578,6 +1620,7 @@
"regenerating_thumbnails": "섬네일을 다시 생성하는 중...",
"remote": "원격",
"remote_assets": "원격 항목",
+ "remote_media_summary": "원격 미디어 요약",
"remove": "제거",
"remove_assets_album_confirmation": "앨범에서 항목 {count, plural, one {#개} other {#개}}를 제거하시겠습니까?",
"remove_assets_shared_link_confirmation": "공유 링크에서 항목 {count, plural, one {#개} other {#개}}를 제거하시겠습니까?",
@@ -1630,6 +1673,7 @@
"restore_user": "사용자 복원",
"restored_asset": "항목이 복원되었습니다.",
"resume": "재개",
+ "resume_paused_jobs": "재개 {count, plural, one {# 일시 중지된 작업} other {# 일시 중지된 작업}}",
"retry_upload": "다시 시도",
"review_duplicates": "비슷한 항목 확인",
"review_large_files": "용량이 큰 파일 확인",
@@ -1723,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": "서버 엔드포인트",
@@ -1851,6 +1896,7 @@
"show_slideshow_transition": "슬라이드 전환 표시",
"show_supporter_badge": "서포터 배지",
"show_supporter_badge_description": "서포터 배지 표시",
+ "show_text_search_menu": "텍스트 검색 메뉴 표시",
"shuffle": "셔플",
"sidebar": "사이드바",
"sidebar_display_description": "보기 링크를 사이드바에 표시",
@@ -1881,6 +1927,7 @@
"stacktrace": "스택 추적",
"start": "시작",
"start_date": "시작일",
+ "start_date_before_end_date": "시작일은 종료일보다 이전이어야 합니다",
"state": "지역",
"status": "상태",
"stop_casting": "캐스팅 중단",
@@ -1905,6 +1952,8 @@
"sync_albums_manual_subtitle": "업로드한 모든 동영상과 사진을 선택한 백업 앨범에 동기화",
"sync_local": "로컬 동기화",
"sync_remote": "원격 동기화",
+ "sync_status": "동기화 상태",
+ "sync_status_subtitle": "동기화 시스템 확인 및 관리",
"sync_upload_album_setting_subtitle": "선택한 앨범을 Immich에 생성하고 사진 및 동영상 업로드",
"tag": "태그",
"tag_assets": "항목 태그",
@@ -1964,6 +2013,7 @@
"trash_page_select_assets_btn": "항목 선택",
"trash_page_title": "휴지통 ({count})",
"trashed_items_will_be_permanently_deleted_after": "휴지통으로 이동된 항목은 {days, plural, one {#일} other {#일}} 후 영구적으로 삭제됩니다.",
+ "troubleshoot": "트러블슈팅",
"type": "형식",
"unable_to_change_pin_code": "PIN 코드를 변경할 수 없음",
"unable_to_setup_pin_code": "PIN 코드를 설정할 수 없음",
@@ -1994,6 +2044,7 @@
"unstacked_assets_count": "항목 {count, plural, one {#개} other {#개}}의 스택을 풀었습니다.",
"untagged": "태그 해제됨",
"up_next": "다음",
+ "update_location_action_prompt": "선택한 {count}개 항목 위치 업데이트:",
"updated_at": "업데이트됨",
"updated_password": "비밀번호가 변경되었습니다.",
"upload": "업로드",
@@ -2060,6 +2111,7 @@
"view_next_asset": "다음 항목 보기",
"view_previous_asset": "이전 항목 보기",
"view_qr_code": "QR 코드 보기",
+ "view_similar_photos": "비슷한 사진 보기",
"view_stack": "스택 보기",
"view_user": "사용자 보기",
"viewer_remove_from_stack": "스택에서 제거",
@@ -2078,5 +2130,6 @@
"yes": "네",
"you_dont_have_any_shared_links": "공유 링크가 없습니다.",
"your_wifi_name": "Wi-Fi 네트워크 이름",
- "zoom_image": "이미지 확대"
+ "zoom_image": "이미지 확대",
+ "zoom_to_bounds": "화면에 맞춰 확대"
}
diff --git a/i18n/lv.json b/i18n/lv.json
index fa4981fd0e..db02cea147 100644
--- a/i18n/lv.json
+++ b/i18n/lv.json
@@ -44,7 +44,7 @@
"authentication_settings_description": "Paroļu, OAuth un citu autentifikācijas iestatījumu pārvaldība",
"authentication_settings_disable_all": "Vai tiešām vēlaties atspējot visas pieteikšanās metodes? Pieteikšanās tiks pilnībā atspējota.",
"authentication_settings_reenable": "Lai atkārtoti iespējotu, izmantojiet Servera Komandu.",
- "background_task_job": "Fona Uzdevumi",
+ "background_task_job": "Fona uzdevumi",
"backup_database": "Izveidot datu bāzes izrakstu",
"backup_database_enable_description": "Iespējot datu bāzes izrakstus",
"backup_keep_last_amount": "Iepriekšējo izrakstu daudzums, kas jāsaglabā",
@@ -62,12 +62,16 @@
"create_job": "Izveidot uzdevumu",
"cron_expression": "Cron izteiksme",
"disable_login": "Atspējot pieteikšanos",
- "duplicate_detection_job_description": "Palaidiet mašīnmācīšanos uz failiem, lai noteiktu līdzīgus attēlus. Paļaujas uz viedo meklēšanu",
+ "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,9 +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 {template} 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 {job}.",
+ "storage_template_migration_job": "Krātuves veidņu migrācijas uzdevumu",
"storage_template_path_length": "Aptuvenais ceļa garuma ierobežojums: {length, number}/{limit, number}",
"storage_template_settings": "Krātuves veidne",
"system_settings": "Sistēmas iestatījumi",
@@ -225,14 +248,15 @@
"user_settings_description": "Lietotāju iestatījumu pārvaldība",
"version_check_enabled_description": "Ieslēgt versijas pārbaudi",
"version_check_implications": "Versiju pārbaudes funkcija ir atkarīga no periodiskas saziņas ar github.com",
- "version_check_settings": "Versijas pārbaude"
+ "version_check_settings": "Versijas pārbaude",
+ "version_check_settings_description": "Ieslēgt/izslēgt paziņojumus par jaunu versiju"
},
"admin_email": "Administratora e-pasts",
"admin_password": "Administratora parole",
"administration": "Administrēšana",
"advanced": "Papildu",
"advanced_settings_log_level_title": "Žurnalēšanas līmenis: {level}",
- "advanced_settings_prefer_remote_subtitle": "Dažās ierīcēs sīktēli no ierīcē esošajiem resursiem tiek ielādēti ļoti lēni. Aktivizējiet šo iestatījumu, lai tā vietā ielādētu attālus attēlus.",
+ "advanced_settings_prefer_remote_subtitle": "Dažās ierīcēs sīktēli no ierīces atmiņas ielādējas ļoti lēni. Aktivizējiet šo iestatījumu, lai tā vietā ielādētu attālus attēlus.",
"advanced_settings_prefer_remote_title": "Dot priekšroku attāliem attēliem",
"advanced_settings_proxy_headers_title": "Starpniekservera galvenes",
"advanced_settings_self_signed_ssl_subtitle": "Izlaiž servera galapunkta SSL sertifikātu verifikāciju. Nepieciešams pašparakstītajiem sertifikātiem.",
@@ -245,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",
@@ -270,7 +294,7 @@
"albums_default_sort_order_description": "Sākotnējā failu kārtošanas secība, veidojot jaunus albumus.",
"albums_feature_description": "Failu kolekcijas, kuras var koplietot ar citiem lietotājiem.",
"albums_on_device_count": "Albumi ierīcē ({count})",
- "all": "Viss",
+ "all": "Visi",
"all_albums": "Visi albumi",
"all_people": "Visas personas",
"all_videos": "Visi video",
@@ -303,7 +327,7 @@
"asset_list_group_by_sub_title": "Grupēt pēc",
"asset_list_layout_settings_dynamic_layout_title": "Dinamiskais izkārtojums",
"asset_list_layout_settings_group_automatically": "Automātiski",
- "asset_list_layout_settings_group_by": "Grupēt aktīvus pēc",
+ "asset_list_layout_settings_group_by": "Grupēt failus pēc",
"asset_list_layout_settings_group_by_month_day": "Mēnesis + diena",
"asset_list_layout_sub_title": "Izvietojums",
"asset_list_settings_subtitle": "Fotorežģa izkārtojuma iestatījumi",
@@ -312,7 +336,7 @@
"asset_skipped_in_trash": "Atkritnē",
"asset_uploaded": "Augšupielādēts",
"asset_uploading": "Augšupielādē…",
- "asset_viewer_settings_title": "Aktīvu Skatītājs",
+ "asset_viewer_settings_title": "Failu skatītājs",
"assets": "Faili",
"assets_added_count": "Pievienoja {count, plural, one {# failu} other {# failus}}",
"assets_added_to_album_count": "Pievienoja albumam {count, plural, one {# failu} other {# failus}}",
@@ -326,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})",
@@ -374,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",
@@ -391,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",
@@ -416,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",
@@ -430,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",
@@ -443,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",
@@ -460,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}?",
@@ -473,12 +511,15 @@
"control_bottom_app_bar_create_new_album": "Izveidot jaunu albumu",
"control_bottom_app_bar_delete_from_immich": "Dzēst no Immich",
"control_bottom_app_bar_delete_from_local": "Dzēst no ierīces",
- "control_bottom_app_bar_edit_location": "Rediģēt Atrašanās Vietu",
- "control_bottom_app_bar_edit_time": "Rediģēt Datumu un Laiku",
- "control_bottom_app_bar_share_to": "Kopīgot Uz",
+ "control_bottom_app_bar_edit_location": "Rediģēt atrašanās vietu",
+ "control_bottom_app_bar_edit_time": "Rediģēt datumu un laiku",
+ "control_bottom_app_bar_share_to": "Kopīgot uz",
"control_bottom_app_bar_trash_from_immich": "Pārvietot uz Atkritni",
"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",
@@ -487,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",
@@ -499,6 +541,7 @@
"custom_locale_description": "Formatēt datumus un skaitļus atbilstoši valodai un reģionam",
"custom_url": "Pielāgots URL",
"daily_title_text_date_year": "E, MMM dd, gggg",
+ "dark_theme": "Pārslēgt tumšo tēmu",
"date_after": "Datums pēc",
"date_and_time": "Datums un Laiks",
"date_before": "Datums pirms",
@@ -540,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",
@@ -552,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",
@@ -603,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": {
@@ -636,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...",
@@ -653,12 +702,14 @@
"expired": "Derīguma termiņš beidzās",
"explore": "Izpētīt",
"export": "Eksportēt",
+ "export_as_json": "Eksportēt kā JSON",
"export_database": "Eksportēt datubāzi",
"export_database_description": "Eksportēt SQLite datubāzi",
"extension": "Paplašinājums",
"external": "Ārējs",
+ "external_libraries": "Ārējas bibliotēkas",
"external_network": "Ārējs tīkls",
- "external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
+ "external_network_sheet_info": "Kad nav pieejams izvēlētais Wi-Fi tīkls, aplikācija pieslēgsies serverim lietojot pirmo strādājošo URL no saraksta, sākot ar augšējo",
"face_unassigned": "Nepiešķirts",
"failed": "Neizdevās",
"failed_to_authenticate": "Neizdevās autentificēties",
@@ -699,13 +750,17 @@
"group_owner": "Grupēt pēc īpašnieka",
"group_places_by": "Grupēt vietas pēc...",
"group_year": "Grupēt pēc gada",
- "haptic_feedback_switch": "Iestatīt haptisku reakciju",
+ "haptic_feedback_switch": "Iespējot haptisku reakciju",
"haptic_feedback_title": "Haptiska Reakcija",
- "has_quota": "Ir kvota",
+ "has_quota": "Kvota",
"hash_asset": "Veidot faila jaucējvērtību",
- "hashed_assets": "Faili ar izveidotām jaucējvērtībām",
+ "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}",
@@ -736,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",
@@ -747,6 +802,7 @@
"in_archive": "Arhīvā",
"include_archived": "Iekļaut arhivētos",
"include_shared_albums": "Iekļaut koplietotos albumus",
+ "include_shared_partner_assets": "Iekļaut partneru koplietotos failus",
"info": "Informācija",
"interval": {
"day_at_onepm": "Katru dienu 13.00",
@@ -761,6 +817,7 @@
"ios_debug_info_last_sync_at": "Pēdējā sinhronizācija {dateTime}",
"ios_debug_info_no_processes_queued": "Nav ierindotu fona procesu",
"ios_debug_info_processing_ran_at": "Apstrāde notika {dateTime}",
+ "items_count": "{count, plural, one {# vienums} other {# vienumi}}",
"jobs": "Uzdevumi",
"keep": "Paturēt",
"keep_all": "Paturēt visus",
@@ -794,6 +851,7 @@
"linked_oauth_account": "Piesaistītais OAuth konts",
"list": "Saraksts",
"loading": "Ielādē",
+ "local": "Lokāli",
"local_network": "Lokālais tīkls",
"location_permission": "Atrašanās vietas atļauja",
"location_permission_content": "Lai izmantotu automātiskās pārslēgšanās funkciju, Immich ir nepieciešama precīzas atrašanās vietas atļauja, lai varētu nolasīt pašreizējā Wi-Fi tīkla nosaukumu",
@@ -849,11 +907,11 @@
"map_marker_with_image": "Kartes marķieris ar attēlu",
"map_no_location_permission_content": "Atrašanās vietas atļauja ir nepieciešama, lai parādītu jūsu pašreizējās atrašanās vietas aktīvus. Vai vēlaties to atļaut tagad?",
"map_no_location_permission_title": "Atrašanās vietas Atļaujas liegtas",
- "map_settings": "Kartes Iestatījumi",
+ "map_settings": "Kartes iestatījumi",
"map_settings_dark_mode": "Tumšais režīms",
"map_settings_date_range_option_day": "Pēdējās 24 stundas",
"map_settings_date_range_option_days": "Pēdējās {days} dienas",
- "map_settings_date_range_option_year": "Pēdējo gadu",
+ "map_settings_date_range_option_year": "Pēdējais gads",
"map_settings_date_range_option_years": "Pēdējie {years} gadi",
"map_settings_dialog_title": "Kartes Iestatījumi",
"map_settings_include_show_archived": "Iekļaut Arhivētos",
@@ -862,7 +920,7 @@
"map_settings_theme_settings": "Kartes Dizains",
"map_zoom_to_see_photos": "Attāliniet, lai redzētu fotoattēlus",
"matches": "Atbilstības",
- "media_type": "Multivides veids",
+ "media_type": "Faila veids",
"memories": "Atmiņas",
"memories_all_caught_up": "Šobrīd, tas arī viss",
"memories_check_back_tomorrow": "Atgriezies rīt, lai skatītu vairāk atmiņu",
@@ -899,6 +957,8 @@
"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",
"new_album": "Jauns albums",
@@ -906,6 +966,7 @@
"new_password": "Jaunā parole",
"new_person": "Jauna persona",
"new_pin_code": "Jaunais PIN kods",
+ "new_timeline": "Jaunā laikjosla",
"new_user_created": "Izveidots jauns lietotājs",
"new_version_available": "PIEEJAMA JAUNA VERSIJA",
"next": "Nākamais",
@@ -917,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",
@@ -930,8 +995,8 @@
"nothing_here_yet": "Šeit vēl nekā nav",
"notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.",
"notification_permission_list_tile_content": "Piešķirt atļauju, lai iespējotu paziņojumus.",
- "notification_permission_list_tile_enable_button": "Iespējot Paziņojumus",
- "notification_permission_list_tile_title": "Paziņojumu Atļaujas",
+ "notification_permission_list_tile_enable_button": "Iespējot paziņojumus",
+ "notification_permission_list_tile_title": "Paziņojumu atļaujas",
"notification_toggle_setting_description": "Ieslēgt e-pasta paziņojumus",
"notifications": "Paziņojumi",
"notifications_setting_description": "Paziņojumu pārvaldība",
@@ -972,6 +1037,7 @@
"partner_page_select_partner": "Izvēlēties partneri",
"partner_page_shared_to_title": "Kopīgots uz",
"partner_page_stop_sharing_content": "{partner} vairs nevarēs piekļūt jūsu fotoattēliem.",
+ "partner_sharing": "Koplietošana ar partneriem",
"partners": "Partneri",
"password": "Parole",
"password_does_not_match": "Parole nesakrīt",
@@ -1069,8 +1135,10 @@
"refreshes_every_file": "Vēlreiz nolasa esošos un jaunos failus",
"refreshing_faces": "Atsvaidzina sejas",
"refreshing_metadata": "Atsvaidzina metadatus",
+ "remote": "Attāli",
"remove": "Noņemt",
"remove_assets_title": "Izņemt failus?",
+ "remove_custom_date_range": "Novākt pielāgoto datuma intervālu",
"remove_deleted_assets": "Izņemt dzēstos failus",
"remove_from_album": "Noņemt no albuma",
"remove_from_album_action_prompt": "No albuma izņemti {count} faili",
@@ -1085,6 +1153,8 @@
"removed_from_archive": "Noņēma no arhīva",
"removed_from_favorites": "Noņēma no izlases",
"removed_from_favorites_count": "{count, plural, other {Izņēma #}} no izlases",
+ "removed_memory": "Noņēma atmiņu",
+ "removed_photo_from_memory": "Noņēma fotogrāfiju no atmiņas",
"rename": "Pārsaukt",
"repair": "Remonts",
"replace_with_upload": "Aizstāt ar augšupielādi",
@@ -1095,6 +1165,7 @@
"reset_password": "Atiestatīt paroli",
"reset_people_visibility": "Atiestatīt personu redzamību",
"reset_pin_code": "Atiestatīt PIN kodu",
+ "reset_sqlite": "Atiestatīt SQLite datubāzi",
"reset_to_default": "Atiestatīt noklusējuma iestatījumus",
"resolve_duplicates": "Atrisināt dublēšanās gadījumus",
"resolved_all_duplicates": "Visi dublikāti ir atrisināti",
@@ -1143,6 +1214,7 @@
"search_for_existing_person": "Meklēt esošu personu",
"search_no_people": "Nav personu",
"search_no_people_named": "Nav personas ar vārdu \"{name}\"",
+ "search_options": "Meklēšanas iespējas",
"search_page_categories": "Kategorijas",
"search_page_motion_photos": "Kustību Fotoattēli",
"search_page_no_objects": "Informācija par Objektiem nav pieejama",
@@ -1154,11 +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",
@@ -1180,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ņā).",
@@ -1194,19 +1271,20 @@
"setting_notifications_notify_minutes": "{count} minūtes",
"setting_notifications_notify_never": "nekad",
"setting_notifications_notify_seconds": "{count} sekundes",
- "setting_notifications_single_progress_subtitle": "Detalizēta augšupielādes progresa informācija par katru aktīvu",
+ "setting_notifications_single_progress_subtitle": "Detalizēta augšupielādes progresa informācija par katru failu",
"setting_notifications_single_progress_title": "Rādīt fona dublējuma detalizēto progresu",
"setting_notifications_subtitle": "Paziņojumu preferenču pielāgošana",
"setting_notifications_total_progress_subtitle": "Kopējais augšupielādes progress (pabeigti/kopējie faili)",
"setting_notifications_total_progress_title": "Rādīt fona dublējuma kopējo progresu",
"setting_video_viewer_looping_title": "Cikliski",
"setting_video_viewer_original_video_subtitle": "Straumējot video no servera, izmantot oriģinālu, pat ja ir pieejama pārkodēšana. Tas var izraisīt buferēšanu. Lokāli pieejamie video tiek atskaņoti oriģinālajā kvalitātē, neatkarīgi no šīs iestatījuma.",
+ "setting_video_viewer_original_video_title": "Vienmēr izmantot oriģinālo video",
"settings": "Iestatījumi",
"settings_require_restart": "Lūdzu, restartējiet Immich, lai lietotu šo iestatījumu",
"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",
@@ -1287,7 +1365,7 @@
"slideshow_settings": "Slīdrādes iestatījumi",
"sort_albums_by": "Kārtot albumus pēc...",
"sort_created": "Izveides datums",
- "sort_items": "Vienību skaits",
+ "sort_items": "Vienumu skaits",
"sort_modified": "Izmaiņu datums",
"sort_newest": "Jaunākā fotogrāfija",
"sort_oldest": "Vecākā fotogrāfija",
@@ -1296,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?",
@@ -1313,7 +1393,7 @@
"sync_status": "Sinhronizācijas statuss",
"sync_status_subtitle": "Skatīt un pārvaldīt sinhronizācijas sistēmu",
"theme": "Dizains",
- "theme_setting_asset_list_storage_indicator_title": "Rādīt krātuves indikatoru uz aktīvu elementiem",
+ "theme_setting_asset_list_storage_indicator_title": "Rādīt krātuves indikatoru uz attēliem režga skatā",
"theme_setting_asset_list_tiles_per_row_title": "Failu skaits rindā ({count})",
"theme_setting_colorful_interface_subtitle": "Piemērot pamatkrāsu fona virsmām.",
"theme_setting_colorful_interface_title": "Krāsaina saskarne",
@@ -1345,7 +1425,7 @@
"trash_emptied": "Atkritne iztukšota",
"trash_no_results_message": "Šeit parādīsies uz atkritni pārvietotās fotogrāfijas un video.",
"trash_page_delete_all": "Dzēst Visu",
- "trash_page_empty_trash_dialog_content": "Vai vēlaties iztukšot savus izmestos aktīvus? Tie tiks neatgriezeniski izņemti no Immich",
+ "trash_page_empty_trash_dialog_content": "Vai vēlaties iztukšot savus izmestos failus? Tie tiks neatgriezeniski izņemti no Immich",
"trash_page_info": "Atkritnes vienumi tiks neatgriezeniski dzēsti pēc {days} dienām",
"trash_page_no_assets": "Atkritnē nav aktīvu",
"trash_page_restore_all": "Atjaunot Visu",
@@ -1365,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",
@@ -1405,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",
diff --git a/i18n/mk.json b/i18n/mk.json
index 86694ce346..8430ae117e 100644
--- a/i18n/mk.json
+++ b/i18n/mk.json
@@ -15,6 +15,7 @@
"add_a_name": "Додади име",
"add_a_title": "Додади наслов",
"add_birthday": "Додади роденден",
+ "add_endpoint": "Додади крајна точка",
"add_exclusion_pattern": "Додади шаблон за исклучување",
"add_import_path": "Додади патека за импортирање",
"add_location": "Додади локација",
@@ -22,9 +23,13 @@
"add_partner": "Додади партнер",
"add_path": "Додади патека",
"add_photos": "Додади слики",
+ "add_tag": "Додади ознака",
"add_to": "Додади во…",
"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})",
"add_to_shared_album": "Додади во споделен албум",
@@ -44,8 +49,15 @@
"backup_database": "Креирај резервна копија од базата на податоци",
"backup_database_enable_description": "Овозможи резервни копии од базата на податоци",
"backup_keep_last_amount": "Количина на претходни резервни копии за чување",
- "backup_settings": "Поставки за резервни копии",
- "backup_settings_description": "Управувај со поставки за резервни копии на базата на податоци",
+ "backup_onboarding_1_description": "надворешна копија во облакот или на друга физичка локација.",
+ "backup_onboarding_2_description": "локални копии на различни уреди. Ова ги вклучува и основните фјалови и резервна копија од истите фајлови локално.",
+ "backup_onboarding_3_description": "сите копии од твоите податоци, вклучувајќи и оргиналните фајлови. Ова вклучува и 1 надворешна копија и 2 локални копии.",
+ "backup_onboarding_description": "3-2-1 стратегија за резервна копија е препорачано за да ги заштити твоите податоци. Потребно е да чуваш резервни копии од твоите прикачени фотографии/видеа како и базата за податоци на Immich за целосно решение за зачувување на резервна копија",
+ "backup_onboarding_footer": "Повеќе информации околу правење резервни копии за Immich, ве молам да се референцирате на документацијата",
+ "backup_onboarding_parts_title": "3-2-1 резервна копија вклучува:",
+ "backup_onboarding_title": "Резервни копии",
+ "backup_settings": "Поставки извезување база на податоци",
+ "backup_settings_description": "Управувај со поставки за извезување на базата на податоци",
"cleared_jobs": "Исчистени задачи за: {job}",
"config_set_by_file": "Конгигурацијата е моментално поставена од конфигурациска датотека",
"confirm_delete_library": "Дали сте сигурни дека сакате да ја избришете библиотеката {library}?",
@@ -53,19 +65,40 @@
"confirm_email_below": "За да потврдите, внесете \"{email}\" доле",
"confirm_reprocess_all_faces": "Дали сте сигурни дека сакате да се обработат одново сите лица? Ова ќе ги избрише и сите именувани луѓе.",
"confirm_user_password_reset": "Дали сте сигурни дека сакате да се поништи лозинката на {user}?",
+ "confirm_user_pin_code_reset": "Дали сигурно сакаш да го смените ПИН кодот за {user}",
"create_job": "Создади задача",
"cron_expression": "Cron израз",
"cron_expression_description": "Подеси го интервалот на скенирање користејќи го cron форматот. За повеќе информации погледнете на пр. Crontab Guru",
"cron_expression_presets": "Предефинирани Cron изрази",
"disable_login": "Оневозможи најава",
"duplicate_detection_job_description": "Пушти машинско учење на средствата за да се откријат слични слики. Се потпира на Smart Search",
+ "external_library_management": "Менаџмент на Надворешна Библиотека",
+ "face_detection": "Детекција на лице",
"force_delete_user_warning": "ПРЕДУПРЕДУВАЊЕ: Ова веднаш ќе го отстрани корисникот и сите средства. Оваа акција не може да се поништи и датотеките нема да може да се вратат назад.",
"image_format": "Формат",
+ "image_format_description": "WebP создава помали фајлви отколку JPEG, но е по спор при енкодирање.",
+ "image_fullsize_enabled": "Овозможи целосна-големина на генерирање на слика",
+ "image_fullsize_quality_description": "Целосна-големина на слика со квалитет од 1-100. Повисокто е подобро, но создава поголеми фајлови.",
+ "image_fullsize_title": "Поставки за Целосна-големина на Слика",
+ "image_prefer_embedded_preview": "Претпочитан вграден преглед",
+ "image_preview_title": "Поставки за Преглед",
"image_quality": "Квалитет",
"image_resolution": "Резолуција",
"image_settings": "Поставки за слики",
+ "job_concurrency": "{job} конкурентност",
+ "job_created": "Креирана задача",
+ "job_not_concurrency_safe": "Оваа задача не е конкуретно-безбедна.",
+ "job_settings": "Поставки за задача",
+ "job_settings_description": "Управувај со конкурентност на задачи",
+ "job_status": "Статус на задачи",
+ "library_created": "Креирана библиотека: {library}",
+ "library_deleted": "Библиотеката е избришана",
+ "library_import_path_description": "Предложи папка за внес. Оваа папка, вклучува и под папки, ќе биде скенирана за слики и видеа.",
"library_scanning": "Периодично скенирање",
+ "library_scanning_description": "Подеси периодично скениранје на библиотеката",
+ "library_scanning_enable_description": "Овозможи периодично скениранје на библиотеката",
"library_settings": "Екстерна библиотека",
+ "library_settings_description": "Управувај со подесувањата за надворешната библиотека",
"logging_enable_description": "Вклучи евидентирање",
"logging_settings": "Евидентирање",
"map_dark_style": "Темен стил",
diff --git a/i18n/ml.json b/i18n/ml.json
index 1ef0b46e66..0c85d53bd3 100644
--- a/i18n/ml.json
+++ b/i18n/ml.json
@@ -1,87 +1,2135 @@
{
- "about": "വിഷയത്തെക്കുറിച്ച്",
+ "about": "കുറിച്ച്",
"account": "അക്കൗണ്ട്",
- "account_settings": "അക്കൗണ്ട് സെറ്റിംഗ്സ്",
+ "account_settings": "അക്കൗണ്ട് ക്രമീകരണങ്ങൾ",
"acknowledge": "അംഗീകരിക്കുക",
- "action": "ആക്ഷന്",
- "action_common_update": "പുതുക്കുക",
+ "action": "പ്രവർത്തനം",
+ "action_common_update": "അപ്ഡേറ്റ് ചെയ്യുക",
"actions": "പ്രവർത്തികൾ",
- "active": "സജീവമായവ",
- "activity": "പ്രവർത്തനങ്ങൾ",
+ "active": "സജീവം",
+ "activity": "പ്രവർത്തനം",
+ "activity_changed": "പ്രവർത്തനം {enabled, select, true {പ്രവർത്തനക്ഷമമാക്കി} other {നിർജ്ജീവമാക്കി}}",
"add": "ചേർക്കുക",
- "add_a_description": "ഒരു വിവരണം ചേർക്കുക",
- "add_a_location": "ഒരു സ്ഥലം ചേർക്കുക",
- "add_a_name": "ഒരു പേര് ചേർക്കുക",
- "add_a_title": "ഒരു ശീർഷകം ചേർക്കുക",
+ "add_a_description": "വിവരണം ചേർക്കുക",
+ "add_a_location": "സ്ഥാനം ചേർക്കുക",
+ "add_a_name": "പേര് ചേർക്കുക",
+ "add_a_title": "ശീർഷകം ചേർക്കുക",
"add_birthday": "ജന്മദിനം ചേർക്കുക",
- "add_endpoint": "എൻഡ്പോയിന്റ് ചേർക്കുക",
- "add_exclusion_pattern": "ഒഴിവാക്കാനുള്ള മാതൃക ചേർക്കുക",
- "add_import_path": "ഇറക്കുമതി ചെയ്യുക",
- "add_location": "സ്ഥലനാമം ചേര്ക്കുക",
- "add_more_users": "കൂടുതല് ഉപയോക്താക്കളെ ചേര്ക്കുക",
- "add_partner": "പങ്കാളിയെ ചേര്ക്കുക",
- "add_path": "പാത ചേര്ക്കുക",
- "add_photos": "ചിത്രങ്ങള് ചേര്ക്കുക",
- "add_tag": "ടാഗ് ചേര്ക്കുക",
- "add_to": "ചേര്ക്കുക…",
- "add_to_album": "ആല്ബത്തിലേക്ക് ചേര്ക്കുക",
- "add_to_album_bottom_sheet_added": "{album} - ലേക്ക് ചേര്ത്തു",
- "add_to_album_bottom_sheet_already_exists": "{album} ആൽബത്തിൽ ഇപ്പോള് തന്നെ ഉണ്ട്",
- "add_to_albums": "ആൽബങ്ങളിൽ ചേർക്കുക",
- "add_to_albums_count": "ആൽബങ്ങളിൽ ചേർക്കുക ({count})",
+ "add_endpoint": "എൻഡ്പോയിന്റ് ചേർക്കുക",
+ "add_exclusion_pattern": "ഒഴിവാക്കൽ പാറ്റേൺ ചേർക്കുക",
+ "add_import_path": "ഇമ്പോർട്ട് പാത്ത് ചേർക്കുക",
+ "add_location": "സ്ഥാനം ചേർക്കുക",
+ "add_more_users": "കൂടുതൽ ഉപയോക്താക്കളെ ചേർക്കുക",
+ "add_partner": "പങ്കാളിയെ ചേർക്കുക",
+ "add_path": "പാത്ത് ചേർക്കുക",
+ "add_photos": "ഫോട്ടോകൾ ചേർക്കുക",
+ "add_tag": "ടാഗ് ചേർക്കുക",
+ "add_to": "...ലേക്ക് ചേർക്കുക",
+ "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})",
"add_to_shared_album": "പങ്കിട്ട ആൽബത്തിലേക്ക് ചേർക്കുക",
- "add_url": "URL ചേര്ക്കുക",
- "added_to_archive": "ചരിത്രരേഖയായി (ആര്ക്കൈവ്) ചേര്ത്തിരിക്കുന്നു",
- "added_to_favorites": "ഇഷ്ടപ്പെട്ടവയിലേക്ക് ചേര്ത്തു",
- "added_to_favorites_count": "{count, number} ഇഷ്ടപ്പെട്ടവയിലേക്ക് ചേര്ത്തു",
+ "add_url": "URL ചേർക്കുക",
+ "added_to_archive": "ആർക്കൈവിലേക്ക് ചേർത്തു",
+ "added_to_favorites": "പ്രിയപ്പെട്ടവയിലേക്ക് ചേർത്തു",
+ "added_to_favorites_count": "{count, number} എണ്ണം പ്രിയപ്പെട്ടവയിലേക്ക് ചേർത്തു",
"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": "എല്ലാ പ്രവേശന (ലോഗിൻ) രീതികളും പ്രവർത്തനരഹിതമാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? പ്രവേശനങ്ങള് പൂർണ്ണമായും പ്രവർത്തനരഹിതമാക്കപ്പെടും.",
- "background_task_job": "പശ്ചാത്തല പ്രവര്ത്തികള്",
- "backup_database": "ഡാറ്റാബേസ് ഡംമ്പ് ഉണ്ടാക്കുക",
- "backup_database_enable_description": "ഡാറ്റാബേസ് ഡമ്പുകൾ പ്രാപ്തമാക്കുക",
- "backup_keep_last_amount": "പഴയ ഡാറ്റാബേസ് ഡമ്പുകൾ എത്രയെണ്ണം സൂക്ഷിക്കണം",
- "backup_settings": "ഡാറ്റാബേസ് ഡമ്പ് ക്രമീകരണങ്ങള്",
- "backup_settings_description": "ഡാറ്റാബേസ് ഡമ്പ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക.",
- "cleared_jobs": "{job} - ന്റെ ജോലികള് മായ്ച്ചിരിക്കുന്നു",
- "config_set_by_file": "ക്രമീകരണങ്ങള് ഇപ്പോള് ഒരു ക്രമീകരണ ഫയല് വഴിയാണ് നിശ്ചയിക്കുന്നത്",
- "confirm_delete_library": "{library} മായ്ച്ചു കളയണം എന്നുറപ്പാണോ?",
- "confirm_delete_library_assets": "ഈ ശേഖരം ഇല്ലാതാക്കണം എന്ന് ഉറപ്പാണോ? ഇത് ഇമ്മിച്ചിൽ നിന്ന് {count, plural, one {# contained asset} other {all # contained assets}} ഇല്ലാതാക്കും, ഇത് പഴയപടിയാക്കാൻ കഴിയില്ല. ഫയലുകൾ ഡിസ്കിൽ തന്നെ തുടരും.",
- "confirm_email_below": "തീര്ച്ചപ്പെടുത്താന് {email} താഴെ കൊടുക്കുക",
- "confirm_reprocess_all_faces": "എല്ലാ മുഖങ്ങളും വീണ്ടും കണ്ടെത്തണം എന്ന് ഉറപ്പാണോ? ഇത് ഇതിനകം പേരു ചേര്ത്ത മുഖങ്ങളെയും ആളുകളെയും മായ്ക്കും.",
- "confirm_user_password_reset": "{user} എന്ന ഉപയോക്താവിന്റെ പാസ്സ്വേര്ഡ് പുനഃക്രമീകരിക്കണം എന്നുറപ്പാണോ?",
- "confirm_user_pin_code_reset": "{user} എന്ന ഉപയോക്താവിന്റെ PIN പുനഃക്രമീകരിക്കണം എന്നുറപ്പാണോ?",
- "create_job": "ജോലി സൃഷ്ടിക്കുക",
- "cron_expression": "ക്രോണ് (cron) പ്രയോഗശൈലി",
- "cron_expression_description": "ക്രോൺ ഫോർമാറ്റ് ഉപയോഗിച്ച് സ്കാനിംഗ് ഇടവേള സജ്ജമാക്കുക. കൂടുതൽ വിവരങ്ങൾക്ക് Crontab Guru സന്ദര്ശിക്കുക",
- "cron_expression_presets": "മുന്കൂട്ടി തയ്യാര് ചെയ്ത ക്രോണ് പ്രവര്ത്തനശൈലികള്",
- "disable_login": "ലോഗിന് തടയുക",
- "duplicate_detection_job_description": "സമാനമായ ചിത്രങ്ങൾ കണ്ടെത്താൻ വസ്തുവഹകളില് യന്ത്രപഠനം പ്രവർത്തിപ്പിക്കുക. ഇത് സ്മാർട്ട് സര്ച്ചിനെ ആശ്രയിക്കുന്നു",
- "exclusion_pattern_description": "നിങ്ങളുടെ ലൈബ്രറി സ്കാൻ ചെയ്യുമ്പോൾ ഫയലുകളും ഫോൾഡറുകളും അവഗണിക്കാൻ ഒഴിവാക്കല് മാതൃകകള് നിങ്ങളെ അനുവദിക്കുന്നു. RAW ഫയലുകൾ പോലുള്ള നിങ്ങൾക്ക് ഇറക്കുമതി ചെയ്യാൻ താൽപ്പര്യമില്ലാത്ത ഫയലുകൾ അടങ്ങിയ ഫോൾഡറുകൾ ഉണ്ടെങ്കിൽ ഇത് ഉപയോഗപ്രദമാണ്.",
- "external_library_management": "ബാഹ്യമായശേഖരങ്ങളുടെ നിയന്ത്രണം",
- "face_detection": "മുഖങ്ങള് കണ്ടെത്തുക",
- "face_detection_description": "യന്ത്രപഠനം ഉപയോഗിച്ച് വസ്തുക്കളിലെ മുഖങ്ങൾ കണ്ടെത്തുക. വീഡിയോകൾക്ക്, തംബ്നെയിൽ മാത്രമേ പരിഗണിക്കൂ. \"Refresh\" എല്ലാ വസ്തുക്കളും (വീണ്ടും) പ്രോസസ്സ് ചെയ്യുന്നു. കൂടാതെ \"Reset\" നിലവിലുള്ള എല്ലാ മുഖളും വിവരങ്ങളും മായ്ക്കുന്നു. \"Missing\" ഇതുവരെ ക്രമീകരിക്കാത്ത വസ്തുക്കളെ വരിയിലേക്ക് നിർത്തുന്നു. മുഖം തിരിച്ചറിയൽ പൂർത്തിയായ ശേഷം കണ്ടെത്തിയ മുഖങ്ങൾ മുഖം തിരിച്ചറിയലിനായി ക്യൂവിൽ നിർത്തും, അവയെ നിലവിലുള്ളതോ പുതിയതോ ആയ ആളുകളിലേക്ക് ഗ്രൂപ്പുചെയ്യും.",
- "facial_recognition_job_description": "കണ്ടെത്തിയ മുഖങ്ങളെ ആളുകളുടെ കൂട്ടം ആക്കുക. മുഖം കണ്ടെത്തല് ഘട്ടത്തിനു ശേഷമേ ഇത് ഉണ്ടാകൂ. \"Reset\" വീണ്ടും കൂട്ടങ്ങളെ ഉണ്ടാക്കും. \"Missing\" ആളെ നിയോഗിക്കാത്ത മുഖങ്ങളെ വരിയിലേക്ക് ചേര്ക്കുന്നു.",
- "failed_job_command": "{job} എന്ന ജോലിക്ക് വേണ്ടിയുള്ള ആജ്ഞ {command} പരാജയപ്പെട്ടിരിക്കുന്നു",
- "force_delete_user_warning": "മുന്നറിയിപ്പ്: ഇത് ഉപയോക്താവിനെയും എല്ലാ വസ്തുക്കളേയും ഉടനടി നീക്കം ചെയ്യും. ഇത് പഴയപടിയാക്കാനോ ഫയലുകൾ വീണ്ടെടുക്കാനോ കഴിയില്ല.",
- "image_format": "ഘടന",
- "image_format_description": "WebP ഉണ്ടാക്കാന് സമയം എടുക്കും എങ്കിലും JPEG ഫയലുകളെക്കാള് ചെറുതായിരിക്കും.",
- "image_fullsize_description": "അധികവിവരങ്ങള് ഒഴിവാക്കിയ ചിത്രം, വലുതാക്കി കാണിക്കുമ്പോള് ഉപയോഗിക്കപ്പെടുന്നു",
- "image_fullsize_enabled": "പൂര്ണ വലുപ്പത്തില് ഉള്ള ചിത്രങ്ങള് ഉണ്ടാക്കാന്പ്രാപ്തമാക്കുക",
- "image_fullsize_quality_description": "1 മുതൽ 100 വരെയുള്ള പൂർണ്ണ വലുപ്പത്തിലുള്ള ഇമേജ് നിലവാരം. ഉയർന്നതാണ് നല്ലത്, പക്ഷേ വലിയ ഫയലുകൾ ഉത്പാദിപ്പിക്കുന്നു.",
- "image_fullsize_title": "പൂർണ്ണ വലുപ്പത്തിലുള്ള ഇമേജ് ക്രമീകരണങ്ങൾ",
- "image_quality": "ഗുണനിലവാരം",
+ "add_exclusion_pattern_description": "ഒഴിവാക്കൽ പാറ്റേണുകൾ ചേർക്കുക. *, **, ? എന്നിവ ഉപയോഗിച്ചുള്ള ഗ്ലോബിംഗ് പിന്തുണയ്ക്കുന്നു. \"Raw\" എന്ന് പേരുള്ള ഏതെങ്കിലും ഡയറക്ടറിയിലെ എല്ലാ ഫയലുകളും ഒഴിവാക്കാൻ, \"**/Raw/**\" ഉപയോഗിക്കുക. \".tif\"-ൽ അവസാനിക്കുന്ന എല്ലാ ഫയലുകളും ഒഴിവാക്കാൻ, \"**/*.tif\" ഉപയോഗിക്കുക. ഒരു കേവല പാത്ത് ഒഴിവാക്കാൻ, \"/path/to/ignore/**\" ഉപയോഗിക്കുക.",
+ "admin_user": "അഡ്മിൻ ഉപയോക്താവ്",
+ "asset_offline_description": "ഈ എക്സ്റ്റേണൽ ലൈബ്രറി അസറ്റ് ഇപ്പോൾ ഡിസ്കിൽ ലഭ്യമല്ല, അത് ട്രാഷിലേക്ക് മാറ്റിയിരിക്കുന്നു. ഫയൽ ലൈബ്രറിക്കുള്ളിൽ നീക്കിയിട്ടുണ്ടെങ്കിൽ, പുതിയ അനുബന്ധ അസറ്റിനായി നിങ്ങളുടെ ടൈംലൈൻ പരിശോധിക്കുക. ഈ അസറ്റ് പുനഃസ്ഥാപിക്കാൻ, താഴെയുള്ള ഫയൽ പാത Immich-ന് ആക്സസ് ചെയ്യാൻ കഴിയുമെന്ന് ഉറപ്പാക്കുകയും ലൈബ്രറി സ്കാൻ ചെയ്യുകയും ചെയ്യുക.",
+ "authentication_settings": "പ്രാമാണീകരണ ക്രമീകരണങ്ങൾ",
+ "authentication_settings_description": "പാസ്വേഡ്, OAuth, മറ്റ് പ്രാമാണീകരണ ക്രമീകരണങ്ങൾ എന്നിവ കൈകാര്യം ചെയ്യുക",
+ "authentication_settings_disable_all": "എല്ലാ ലോഗിൻ രീതികളും പ്രവർത്തനരഹിതമാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? ലോഗിൻ പൂർണ്ണമായും പ്രവർത്തനരഹിതമാകും.",
+ "authentication_settings_reenable": "വീണ്ടും പ്രവർത്തനക്ഷമമാക്കാൻ, ഒരു സെർവർ കമാൻഡ് ഉപയോഗിക്കുക.",
+ "background_task_job": "പശ്ചാത്തല ജോലികൾ",
+ "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": "നിങ്ങളുടെ ഡാറ്റ പരിരക്ഷിക്കാൻ 3-2-1 ബാക്കപ്പ് തന്ത്രം ശുപാർശ ചെയ്യുന്നു. സമഗ്രമായ ഒരു ബാക്കപ്പ് പരിഹാരത്തിനായി, നിങ്ങൾ അപ്ലോഡ് ചെയ്ത ഫോട്ടോകളുടെ/വീഡിയോകളുടെ പകർപ്പുകളും Immich ഡാറ്റാബേസും സൂക്ഷിക്കേണ്ടതാണ്.",
+ "backup_onboarding_footer": "Immich ബാക്കപ്പ് ചെയ്യുന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്കായി, ദയവായി ഡോക്യുമെന്റേഷൻ പരിശോധിക്കുക.",
+ "backup_onboarding_parts_title": "ഒരു 3-2-1 ബാക്കപ്പിൽ ഉൾപ്പെടുന്നവ:",
+ "backup_onboarding_title": "ബാക്കപ്പുകൾ",
+ "backup_settings": "ഡാറ്റാബേസ് ഡംപ് ക്രമീകരണങ്ങൾ",
+ "backup_settings_description": "ഡാറ്റാബേസ് ഡംപ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക.",
+ "cleared_jobs": "{job}-നുള്ള ജോലികൾ ക്ലിയർ ചെയ്തു",
+ "config_set_by_file": "കോൺഫിഗറേഷൻ നിലവിൽ ഒരു കോൺഫിഗറേഷൻ ഫയൽ വഴിയാണ് സജ്ജീകരിച്ചിരിക്കുന്നത്",
+ "confirm_delete_library": "{library} ലൈബ്രറി ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "confirm_delete_library_assets": "ഈ ലൈബ്രറി ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? ഇത് Immich-ൽ നിന്ന് {count, plural, one {അതിലുള്ള ഒരു അസറ്റ്} other {അതിലുള്ള എല്ലാ # അസറ്റുകളും}} ഇല്ലാതാക്കും, ഇത് പഴയപടിയാക്കാൻ കഴിയില്ല. ഫയലുകൾ ഡിസ്കിൽ തന്നെ തുടരും.",
+ "confirm_email_below": "സ്ഥിരീകരിക്കുന്നതിന്, താഴെ \"{email}\" എന്ന് ടൈപ്പ് ചെയ്യുക",
+ "confirm_reprocess_all_faces": "എല്ലാ മുഖങ്ങളും വീണ്ടും പ്രോസസ്സ് ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? ഇത് പേരുള്ള ആളുകളെയും നീക്കം ചെയ്യും.",
+ "confirm_user_password_reset": "{user}-ന്റെ പാസ്വേഡ് റീസെറ്റ് ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "confirm_user_pin_code_reset": "{user}-ന്റെ പിൻ കോഡ് റീസെറ്റ് ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "create_job": "ജോലി ഉണ്ടാക്കുക",
+ "cron_expression": "ക്രോൺ എക്സ്പ്രഷൻ",
+ "cron_expression_description": "ക്രോൺ ഫോർമാറ്റ് ഉപയോഗിച്ച് സ്കാനിംഗ് ഇടവേള സജ്ജീകരിക്കുക. കൂടുതൽ വിവരങ്ങൾക്കായി ദയവായി ക്രോൺടാബ് ഗുരു പോലുള്ളവ പരിശോധിക്കുക",
+ "cron_expression_presets": "ക്രോൺ എക്സ്പ്രഷൻ പ്രീസെറ്റുകൾ",
+ "disable_login": "ലോഗിൻ പ്രവർത്തനരഹിതമാക്കുക",
+ "duplicate_detection_job_description": "സമാന ചിത്രങ്ങൾ കണ്ടെത്താൻ അസറ്റുകളിൽ മെഷീൻ ലേണിംഗ് പ്രവർത്തിപ്പിക്കുക. ഇത് സ്മാർട്ട് സെർച്ചിനെ ആശ്രയിച്ചിരിക്കുന്നു",
+ "exclusion_pattern_description": "നിങ്ങളുടെ ലൈബ്രറി സ്കാൻ ചെയ്യുമ്പോൾ ഫയലുകളും ഫോൾഡറുകളും ഒഴിവാക്കാൻ എക്സ്ക്ലൂഷൻ പാറ്റേണുകൾ നിങ്ങളെ സഹായിക്കുന്നു. നിങ്ങൾ ഇമ്പോർട്ട് ചെയ്യാൻ ആഗ്രഹിക്കാത്ത ഫയലുകൾ അടങ്ങിയ ഫോൾഡറുകൾ (ഉദാഹരണത്തിന് RAW ഫയലുകൾ) ഉണ്ടെങ്കിൽ ഇത് ഉപയോഗപ്രദമാണ്.",
+ "external_library_management": "എക്സ്റ്റേണൽ ലൈബ്രറി മാനേജ്മെന്റ്",
+ "face_detection": "മുഖം തിരിച്ചറിയൽ",
+ "face_detection_description": "മെഷീൻ ലേണിംഗ് ഉപയോഗിച്ച് അസറ്റുകളിലെ മുഖങ്ങൾ കണ്ടെത്തുക. വീഡിയോകൾക്കായി, തംബ്നെയിൽ മാത്രമേ പരിഗണിക്കൂ. \"റിഫ്രഷ്\" എല്ലാ അസറ്റുകളും വീണ്ടും പ്രോസസ്സ് ചെയ്യുന്നു. \"റീസെറ്റ്\" നിലവിലുള്ള എല്ലാ മുഖ ഡാറ്റയും നീക്കംചെയ്യുന്നു. \"മിസ്സിംഗ്\" ഇതുവരെ പ്രോസസ്സ് ചെയ്യാത്ത അസറ്റുകളെ ക്യൂവിലാക്കുന്നു. മുഖം തിരിച്ചറിയൽ പൂർത്തിയായ ശേഷം, കണ്ടെത്തിയ മുഖങ്ങൾ ഫേഷ്യൽ റെക്കഗ്നിഷനായി ക്യൂ ചെയ്യപ്പെടും, അവയെ നിലവിലുള്ളതോ പുതിയതോ ആയ ആളുകളായി തരംതിരിക്കും.",
+ "facial_recognition_job_description": "കണ്ടെത്തിയ മുഖങ്ങളെ ആളുകളായി ഗ്രൂപ്പ് ചെയ്യുക. മുഖം കണ്ടെത്തൽ പൂർത്തിയായതിന് ശേഷമാണ് ഈ ഘട്ടം പ്രവർത്തിക്കുന്നത്. \"റീസെറ്റ്\" എല്ലാ മുഖങ്ങളെയും വീണ്ടും ക്ലസ്റ്റർ ചെയ്യുന്നു. \"മിസ്സിംഗ്\" ഒരു വ്യക്തിയെയും അസൈൻ ചെയ്യാത്ത മുഖങ്ങളെ ക്യൂവിലാക്കുന്നു.",
+ "failed_job_command": "{job} എന്ന ജോലിക്കുള്ള കമാൻഡ് {command} പരാജയപ്പെട്ടു",
+ "force_delete_user_warning": "മുന്നറിയിപ്പ്: ഇത് ഉപയോക്താവിനെയും എല്ലാ അസറ്റുകളെയും ഉടനടി നീക്കം ചെയ്യും. ഇത് പഴയപടിയാക്കാൻ കഴിയില്ല, ഫയലുകൾ വീണ്ടെടുക്കാനും സാധിക്കില്ല.",
+ "image_format": "ഫോർമാറ്റ്",
+ "image_format_description": "WebP, JPEG-നെക്കാൾ ചെറിയ ഫയലുകൾ നിർമ്മിക്കുന്നു, പക്ഷേ എൻകോഡ് ചെയ്യാൻ വേഗത കുറവാണ്.",
+ "image_fullsize_description": "മെറ്റാഡാറ്റ നീക്കംചെയ്ത പൂർണ്ണ വലുപ്പത്തിലുള്ള ചിത്രം, സൂം ചെയ്യുമ്പോൾ ഉപയോഗിക്കുന്നു",
+ "image_fullsize_enabled": "പൂർണ്ണ വലുപ്പത്തിലുള്ള ചിത്ര നിർമ്മാണം പ്രവർത്തനക്ഷമമാക്കുക",
+ "image_fullsize_enabled_description": "വെബ്-ഫ്രണ്ട്ലി അല്ലാത്ത ഫോർമാറ്റുകൾക്കായി പൂർണ്ണ വലുപ്പത്തിലുള്ള ചിത്രം നിർമ്മിക്കുക. \"എംബഡഡ് പ്രിവ്യൂവിന് മുൻഗണന നൽകുക\" പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, എംബഡഡ് പ്രിവ്യൂകൾ പരിവർത്തനം കൂടാതെ നേരിട്ട് ഉപയോഗിക്കുന്നു. JPEG പോലുള്ള വെബ്-ഫ്രണ്ട്ലി ഫോർമാറ്റുകളെ ഇത് ബാധിക്കില്ല.",
+ "image_fullsize_quality_description": "പൂർണ്ണ വലുപ്പത്തിലുള്ള ചിത്രത്തിന്റെ ഗുണമേന്മ 1-100 വരെ. ഉയർന്ന മൂല്യം മികച്ചതാണ്, പക്ഷേ വലിയ ഫയലുകൾ ഉണ്ടാക്കുന്നു.",
+ "image_fullsize_title": "പൂർണ്ണ വലുപ്പ ചിത്ര ക്രമീകരണങ്ങൾ",
+ "image_prefer_embedded_preview": "എംബഡഡ് പ്രിവ്യൂവിന് മുൻഗണന നൽകുക",
+ "image_prefer_embedded_preview_setting_description": "ലഭ്യമാകുമ്പോൾ, റോ (RAW) ഫോട്ടോകളിലെ എംബഡഡ് പ്രിവ്യൂകൾ ഇമേജ് പ്രോസസ്സിംഗിനുള്ള ഇൻപുട്ടായി ഉപയോഗിക്കുക. ഇത് ചില ചിത്രങ്ങൾക്ക് കൂടുതൽ കൃത്യമായ നിറങ്ങൾ നൽകിയേക്കാം, പക്ഷേ പ്രിവ്യൂവിൻ്റെ ഗുണനിലവാരം ക്യാമറയെ ആശ്രയിച്ചിരിക്കും, കൂടാതെ ചിത്രത്തിൽ കൂടുതൽ കംപ്രഷൻ ആർട്ടിഫാക്റ്റുകൾ ഉണ്ടാകാം.",
+ "image_prefer_wide_gamut": "വൈഡ് ഗാമറ്റിന് മുൻഗണന നൽകുക",
+ "image_prefer_wide_gamut_setting_description": "തംബ്നെയിലുകൾക്കായി ഡിസ്പ്ലേ P3 ഉപയോഗിക്കുക. ഇത് വൈഡ് കളർസ്പേസുകളുള്ള ചിത്രങ്ങളുടെ മിഴിവ് നന്നായി സംരക്ഷിക്കുന്നു, പക്ഷേ പഴയ ബ്രൗസർ പതിപ്പുള്ള പഴയ ഉപകരണങ്ങളിൽ ചിത്രങ്ങൾ വ്യത്യസ്തമായി കാണപ്പെട്ടേക്കാം. കളർ ഷിഫ്റ്റുകൾ ഒഴിവാക്കാൻ sRGB ചിത്രങ്ങൾ sRGB ആയി തന്നെ നിലനിർത്തുന്നു.",
+ "image_preview_description": "മെറ്റാഡാറ്റ നീക്കംചെയ്ത ഇടത്തരം വലുപ്പമുള്ള ചിത്രം, ഒരൊറ്റ അസറ്റ് കാണുമ്പോഴും മെഷീൻ ലേണിംഗിനും ഉപയോഗിക്കുന്നു",
+ "image_preview_quality_description": "പ്രിവ്യൂ ഗുണമേന്മ 1-100 വരെ. ഉയർന്ന മൂല്യം മികച്ചതാണ്, പക്ഷേ വലിയ ഫയലുകൾ ഉണ്ടാക്കുകയും ആപ്പിന്റെ പ്രതികരണശേഷി കുറയ്ക്കുകയും ചെയ്യും. കുറഞ്ഞ മൂല്യം സജ്ജീകരിക്കുന്നത് മെഷീൻ ലേണിംഗ് ഗുണമേന്മയെ ബാധിച്ചേക്കാം.",
+ "image_preview_title": "പ്രിവ്യൂ ക്രമീകരണങ്ങൾ",
+ "image_quality": "ഗുണമേന്മ",
+ "image_resolution": "റെസല്യൂഷൻ",
+ "image_resolution_description": "ഉയർന്ന റെസല്യൂഷനുകൾക്ക് കൂടുതൽ വിശദാംശങ്ങൾ സംരക്ഷിക്കാൻ കഴിയും, പക്ഷേ എൻകോഡ് ചെയ്യാൻ കൂടുതൽ സമയമെടുക്കും, വലിയ ഫയൽ വലുപ്പമുണ്ടാകും, കൂടാതെ ആപ്പിന്റെ പ്രതികരണശേഷി കുറയ്ക്കുകയും ചെയ്യും.",
+ "image_settings": "ചിത്ര ക്രമീകരണങ്ങൾ",
+ "image_settings_description": "നിർമ്മിച്ച ചിത്രങ്ങളുടെ ഗുണമേന്മയും റെസല്യൂഷനും കൈകാര്യം ചെയ്യുക",
+ "image_thumbnail_description": "മെറ്റാഡാറ്റ നീക്കംചെയ്ത ചെറിയ തംബ്നെയിൽ, പ്രധാന ടൈംലൈൻ പോലുള്ള ഫോട്ടോകളുടെ ഗ്രൂപ്പുകൾ കാണുമ്പോൾ ഉപയോഗിക്കുന്നു",
+ "image_thumbnail_quality_description": "തംബ്നെയിലിന്റെ ഗുണമേന്മ 1-100 വരെ. ഉയർന്ന മൂല്യം മികച്ചതാണ്, പക്ഷേ വലിയ ഫയലുകൾ ഉണ്ടാക്കുകയും ആപ്പിന്റെ പ്രതികരണശേഷി കുറയ്ക്കുകയും ചെയ്യും.",
+ "image_thumbnail_title": "തംബ്നെയിൽ ക്രമീകരണങ്ങൾ",
+ "job_concurrency": "{job} കോൺകറൻസി",
"job_created": "ജോലി സൃഷ്ടിച്ചു",
- "job_status": "ജോലി നില"
+ "job_not_concurrency_safe": "ഈ ജോലി കോൺകറൻസി-സേഫ് അല്ല.",
+ "job_settings": "ജോലി ക്രമീകരണങ്ങൾ",
+ "job_settings_description": "ജോലി കോൺകറൻസി കൈകാര്യം ചെയ്യുക",
+ "job_status": "ജോലിയുടെ നില",
+ "jobs_delayed": "{jobCount, plural, one {# ജോലി വൈകി} other {# ജോലികൾ വൈകി}}",
+ "jobs_failed": "{jobCount, plural, one {# ജോലി പരാജയപ്പെട്ടു} other {# ജോലികൾ പരാജയപ്പെട്ടു}}",
+ "library_created": "{library} എന്ന ലൈബ്രറി സൃഷ്ടിച്ചു",
+ "library_deleted": "ലൈബ്രറി ഇല്ലാതാക്കി",
+ "library_import_path_description": "ഇമ്പോർട്ടുചെയ്യാൻ ഒരു ഫോൾഡർ വ്യക്തമാക്കുക. സബ്ഫോൾഡറുകൾ ഉൾപ്പെടെ ഈ ഫോൾഡർ ചിത്രങ്ങൾക്കും വീഡിയോകൾക്കുമായി സ്കാൻ ചെയ്യും.",
+ "library_scanning": "ആനുകാലിക സ്കാനിംഗ്",
+ "library_scanning_description": "ആനുകാലിക ലൈബ്രറി സ്കാനിംഗ് കോൺഫിഗർ ചെയ്യുക",
+ "library_scanning_enable_description": "ആനുകാലിക ലൈബ്രറി സ്കാനിംഗ് പ്രവർത്തനക്ഷമമാക്കുക",
+ "library_settings": "എക്സ്റ്റേണൽ ലൈബ്രറി",
+ "library_settings_description": "എക്സ്റ്റേണൽ ലൈബ്രറി ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "library_tasks_description": "പുതിയതോ മാറ്റം വരുത്തിയതോ ആയ അസറ്റുകൾക്കായി എക്സ്റ്റേണൽ ലൈബ്രറികൾ സ്കാൻ ചെയ്യുക",
+ "library_watching_enable_description": "ഫയൽ മാറ്റങ്ങൾക്കായി എക്സ്റ്റേണൽ ലൈബ്രറികൾ നിരീക്ഷിക്കുക",
+ "library_watching_settings": "ലൈബ്രറി നിരീക്ഷിക്കൽ (പരീക്ഷണാടിസ്ഥാനത്തിൽ)",
+ "library_watching_settings_description": "മാറ്റം വന്ന ഫയലുകൾക്കായി യാന്ത്രികമായി നിരീക്ഷിക്കുക",
+ "logging_enable_description": "ലോഗിംഗ് പ്രവർത്തനക്ഷമമാക്കുക",
+ "logging_level_description": "പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ഏത് ലോഗ് ലെവൽ ഉപയോഗിക്കണം.",
+ "logging_settings": "ലോഗിംഗ്",
+ "machine_learning_availability_checks": "ലഭ്യത പരിശോധനകൾ",
+ "machine_learning_availability_checks_description": "ലഭ്യമായ മെഷീൻ ലേണിംഗ് സെർവറുകൾ യാന്ത്രികമായി കണ്ടെത്തുകയും മുൻഗണന നൽകുകയും ചെയ്യുക",
+ "machine_learning_availability_checks_enabled": "ലഭ്യത പരിശോധനകൾ പ്രവർത്തനക്ഷമമാക്കുക",
+ "machine_learning_availability_checks_interval": "പരിശോധന ഇടവേള",
+ "machine_learning_availability_checks_interval_description": "ലഭ്യത പരിശോധനകൾക്കിടയിലുള്ള ഇടവേള (മില്ലിസെക്കൻഡിൽ)",
+ "machine_learning_availability_checks_timeout": "അഭ്യർത്ഥനയുടെ സമയപരിധി",
+ "machine_learning_availability_checks_timeout_description": "ലഭ്യത പരിശോധനകൾക്കുള്ള സമയപരിധി (മില്ലിസെക്കൻഡിൽ)",
+ "machine_learning_clip_model": "CLIP മോഡൽ",
+ "machine_learning_clip_model_description": "ഇവിടെ ലിസ്റ്റ് ചെയ്തിട്ടുള്ള ഒരു CLIP മോഡലിന്റെ പേര്. ഒരു മോഡൽ മാറ്റുമ്പോൾ എല്ലാ ചിത്രങ്ങൾക്കുമായി 'സ്മാർട്ട് സെർച്ച്' ജോലി വീണ്ടും പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ടെന്ന് ഓർമ്മിക്കുക.",
+ "machine_learning_duplicate_detection": "ഡ്യൂപ്ലിക്കേറ്റ് കണ്ടെത്തൽ",
+ "machine_learning_duplicate_detection_enabled": "ഡ്യൂപ്ലിക്കേറ്റ് കണ്ടെത്തൽ പ്രവർത്തനക്ഷമമാക്കുക",
+ "machine_learning_duplicate_detection_enabled_description": "പ്രവർത്തനരഹിതമാക്കിയാലും, തികച്ചും സമാനമായ അസറ്റുകളിലെ ഡ്യൂപ്ലിക്കേറ്റുകൾ ഒഴിവാക്കപ്പെടും.",
+ "machine_learning_duplicate_detection_setting_description": "സമാനമായ ഡ്യൂപ്ലിക്കേറ്റുകൾ കണ്ടെത്താൻ CLIP എംബെഡ്ഡിംഗ്സ് ഉപയോഗിക്കുക",
+ "machine_learning_enabled": "മെഷീൻ ലേണിംഗ് പ്രവർത്തനക്ഷമമാക്കുക",
+ "machine_learning_enabled_description": "പ്രവർത്തനരഹിതമാക്കിയാൽ, താഴെയുള്ള ക്രമീകരണങ്ങൾ പരിഗണിക്കാതെ എല്ലാ ML ഫീച്ചറുകളും പ്രവർത്തനരഹിതമാകും.",
+ "machine_learning_facial_recognition": "മുഖം തിരിച്ചറിയൽ",
+ "machine_learning_facial_recognition_description": "ചിത്രങ്ങളിലെ മുഖങ്ങൾ കണ്ടെത്തുക, തിരിച്ചറിയുക, ഗ്രൂപ്പ് ചെയ്യുക",
+ "machine_learning_facial_recognition_model": "മുഖം തിരിച്ചറിയൽ മോഡൽ",
+ "machine_learning_facial_recognition_model_description": "മോഡലുകൾ വലുപ്പത്തിന്റെ അവരോഹണ ക്രമത്തിലാണ് ലിസ്റ്റ് ചെയ്തിരിക്കുന്നത്. വലിയ മോഡലുകൾ വേഗത കുറഞ്ഞതും കൂടുതൽ മെമ്മറി ഉപയോഗിക്കുന്നവയുമാണ്, പക്ഷേ മികച്ച ഫലങ്ങൾ നൽകുന്നു. ഒരു മോഡൽ മാറ്റുമ്പോൾ എല്ലാ ചിത്രങ്ങൾക്കുമായി 'മുഖം കണ്ടെത്തൽ' ജോലി വീണ്ടും പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ടെന്ന് ഓർമ്മിക്കുക.",
+ "machine_learning_facial_recognition_setting": "മുഖം തിരിച്ചറിയൽ പ്രവർത്തനക്ഷമമാക്കുക",
+ "machine_learning_facial_recognition_setting_description": "പ്രവർത്തനരഹിതമാക്കിയാൽ, മുഖം തിരിച്ചറിയലിനായി ചിത്രങ്ങൾ എൻകോഡ് ചെയ്യപ്പെടില്ല, കൂടാതെ എക്സ്പ്ലോർ പേജിലെ 'ആളുകൾ' വിഭാഗത്തിൽ അവ ദൃശ്യമാകുകയുമില്ല.",
+ "machine_learning_max_detection_distance": "പരമാവധി കണ്ടെത്തൽ ദൂരം",
+ "machine_learning_max_detection_distance_description": "രണ്ട് ചിത്രങ്ങളെ ഡ്യൂപ്ലിക്കേറ്റുകളായി കണക്കാക്കുന്നതിനുള്ള പരമാവധി ദൂരം, 0.001-0.1 വരെ. ഉയർന്ന മൂല്യങ്ങൾ കൂടുതൽ ഡ്യൂപ്ലിക്കേറ്റുകളെ കണ്ടെത്തും, പക്ഷേ തെറ്റായ ഫലങ്ങളിലേക്ക് നയിച്ചേക്കാം.",
+ "machine_learning_max_recognition_distance": "പരമാവധി തിരിച്ചറിയൽ ദൂരം",
+ "machine_learning_max_recognition_distance_description": "രണ്ട് മുഖങ്ങളെ ഒരേ വ്യക്തിയായി കണക്കാക്കുന്നതിനുള്ള പരമാവധി ദൂരം, 0-2 വരെ. ഇത് കുറയ്ക്കുന്നത് രണ്ട് പേരെ ഒരേ വ്യക്തിയായി ലേബൽ ചെയ്യുന്നത് തടയാൻ സഹായിക്കും, അതേസമയം ഇത് കൂട്ടുന്നത് ഒരേ വ്യക്തിയെ രണ്ട് വ്യത്യസ്ത ആളുകളായി ലേബൽ ചെയ്യുന്നത് തടയാനും സഹായിക്കും. ഒരാളെ രണ്ടായി വിഭജിക്കുന്നതിനേക്കാൾ എളുപ്പമാണ് രണ്ടുപേരെ ഒന്നാക്കുന്നത് എന്നത് ശ്രദ്ധിക്കുക, അതിനാൽ സാധ്യമാകുമ്പോൾ കുറഞ്ഞ പരിധി തിരഞ്ഞെടുക്കുന്നതാണ് ഉചിതം.",
+ "machine_learning_min_detection_score": "കുറഞ്ഞ കണ്ടെത്തൽ സ്കോർ",
+ "machine_learning_min_detection_score_description": "ഒരു മുഖം കണ്ടെത്തുന്നതിനുള്ള ഏറ്റവും കുറഞ്ഞ കോൺഫിഡൻസ് സ്കോർ 0-1 വരെ. കുറഞ്ഞ മൂല്യങ്ങൾ കൂടുതൽ മുഖങ്ങളെ കണ്ടെത്തും, പക്ഷേ തെറ്റായ ഫലങ്ങളിലേക്ക് നയിച്ചേക്കാം.",
+ "machine_learning_min_recognized_faces": "തിരിച്ചറിഞ്ഞ മുഖങ്ങളുടെ കുറഞ്ഞ എണ്ണം",
+ "machine_learning_min_recognized_faces_description": "ഒരു വ്യക്തിയെ സൃഷ്ടിക്കുന്നതിന് ആവശ്യമായ തിരിച്ചറിഞ്ഞ മുഖങ്ങളുടെ ഏറ്റവും കുറഞ്ഞ എണ്ണം. ഇത് വർദ്ധിപ്പിക്കുന്നത് മുഖം തിരിച്ചറിയൽ കൂടുതൽ കൃത്യമാക്കുന്നു, എന്നാൽ ഒരു മുഖം ഒരു വ്യക്തിക്ക് നൽകാതിരിക്കാനുള്ള സാധ്യതയും വർദ്ധിപ്പിക്കുന്നു.",
+ "machine_learning_settings": "മെഷീൻ ലേണിംഗ് ക്രമീകരണങ്ങൾ",
+ "machine_learning_settings_description": "മെഷീൻ ലേണിംഗ് ഫീച്ചറുകളും ക്രമീകരണങ്ങളും കൈകാര്യം ചെയ്യുക",
+ "machine_learning_smart_search": "സ്മാർട്ട് സെർച്ച്",
+ "machine_learning_smart_search_description": "CLIP എംബെഡ്ഡിംഗ്സ് ഉപയോഗിച്ച് ചിത്രങ്ങൾക്കായി അർത്ഥപൂർവ്വം തിരയുക",
+ "machine_learning_smart_search_enabled": "സ്മാർട്ട് സെർച്ച് പ്രവർത്തനക്ഷമമാക്കുക",
+ "machine_learning_smart_search_enabled_description": "പ്രവർത്തനരഹിതമാക്കിയാൽ, സ്മാർട്ട് സെർച്ചിനായി ചിത്രങ്ങൾ എൻകോഡ് ചെയ്യപ്പെടില്ല.",
+ "machine_learning_url_description": "മെഷീൻ ലേണിംഗ് സെർവറിന്റെ URL. ഒന്നിൽ കൂടുതൽ URL-കൾ നൽകിയിട്ടുണ്ടെങ്കിൽ, ഓരോ സെർവറും ഒന്നിനു പുറകെ ഒന്നായി വിജയകരമായി പ്രതികരിക്കുന്നതുവരെ ശ്രമിക്കും. പ്രതികരിക്കാത്ത സെർവറുകൾ ഓൺലൈനിൽ തിരികെ വരുന്നതുവരെ താൽക്കാലികമായി അവഗണിക്കപ്പെടും.",
+ "manage_concurrency": "കോൺകറൻസി കൈകാര്യം ചെയ്യുക",
+ "manage_log_settings": "ലോഗ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "map_dark_style": "ഡാർക്ക് സ്റ്റൈൽ",
+ "map_enable_description": "മാപ്പ് ഫീച്ചറുകൾ പ്രവർത്തനക്ഷമമാക്കുക",
+ "map_gps_settings": "മാപ്പ് & GPS ക്രമീകരണങ്ങൾ",
+ "map_gps_settings_description": "മാപ്പ് & GPS (റിവേഴ്സ് ജിയോകോഡിംഗ്) ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "map_implications": "മാപ്പ് ഫീച്ചർ ഒരു ബാഹ്യ ടൈൽ സേവനത്തെ (tiles.immich.cloud) ആശ്രയിച്ചിരിക്കുന്നു",
+ "map_light_style": "ലൈറ്റ് സ്റ്റൈൽ",
+ "map_manage_reverse_geocoding_settings": "റിവേഴ്സ് ജിയോകോഡിംഗ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "map_reverse_geocoding": "റിവേഴ്സ് ജിയോകോഡിംഗ്",
+ "map_reverse_geocoding_enable_description": "റിവേഴ്സ് ജിയോകോഡിംഗ് പ്രവർത്തനക്ഷമമാക്കുക",
+ "map_reverse_geocoding_settings": "റിവേഴ്സ് ജിയോകോഡിംഗ് ക്രമീകരണങ്ങൾ",
+ "map_settings": "മാപ്പ്",
+ "map_settings_description": "മാപ്പ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "map_style_description": "ഒരു style.json മാപ്പ് തീമിലേക്കുള്ള URL",
+ "memory_cleanup_job": "മെമ്മറി ക്ലീനപ്പ്",
+ "memory_generate_job": "മെമ്മറി ജനറേഷൻ",
+ "metadata_extraction_job": "മെറ്റാഡാറ്റ എക്സ്ട്രാക്റ്റുചെയ്യുക",
+ "metadata_extraction_job_description": "ഓരോ അസറ്റിൽ നിന്നും GPS, മുഖങ്ങൾ, റെസല്യൂഷൻ തുടങ്ങിയ മെറ്റാഡാറ്റ വിവരങ്ങൾ എക്സ്ട്രാക്റ്റുചെയ്യുക",
+ "metadata_faces_import_setting": "മുഖം ഇമ്പോർട്ട് പ്രവർത്തനക്ഷമമാക്കുക",
+ "metadata_faces_import_setting_description": "ചിത്രത്തിന്റെ EXIF ഡാറ്റയിൽ നിന്നും സൈഡ്കാർ ഫയലുകളിൽ നിന്നും മുഖങ്ങൾ ഇമ്പോർട്ടുചെയ്യുക",
+ "metadata_settings": "മെറ്റാഡാറ്റ ക്രമീകരണങ്ങൾ",
+ "metadata_settings_description": "മെറ്റാഡാറ്റ ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "migration_job": "മൈഗ്രേഷൻ",
+ "migration_job_description": "അസറ്റുകളുടെയും മുഖങ്ങളുടെയും തംബ്നെയിലുകൾ ഏറ്റവും പുതിയ ഫോൾഡർ ഘടനയിലേക്ക് മൈഗ്രേറ്റ് ചെയ്യുക",
+ "nightly_tasks_cluster_faces_setting_description": "പുതുതായി കണ്ടെത്തിയ മുഖങ്ങളിൽ ഫേഷ്യൽ റെക്കഗ്നിഷൻ പ്രവർത്തിപ്പിക്കുക",
+ "nightly_tasks_cluster_new_faces_setting": "പുതിയ മുഖങ്ങളെ ക്ലസ്റ്റർ ചെയ്യുക",
+ "nightly_tasks_database_cleanup_setting": "ഡാറ്റാബേസ് ക്ലീനപ്പ് ടാസ്ക്കുകൾ",
+ "nightly_tasks_database_cleanup_setting_description": "ഡാറ്റാബേസിൽ നിന്ന് പഴയതും കാലഹരണപ്പെട്ടതുമായ ഡാറ്റ വൃത്തിയാക്കുക",
+ "nightly_tasks_generate_memories_setting": "മെമ്മറികൾ നിർമ്മിക്കുക",
+ "nightly_tasks_generate_memories_setting_description": "അസറ്റുകളിൽ നിന്ന് പുതിയ മെമ്മറികൾ സൃഷ്ടിക്കുക",
+ "nightly_tasks_missing_thumbnails_setting": "നഷ്ടപ്പെട്ട തംബ്നെയിലുകൾ നിർമ്മിക്കുക",
+ "nightly_tasks_missing_thumbnails_setting_description": "തംബ്നെയിലുകൾ ഇല്ലാത്ത അസറ്റുകളെ തംബ്നെയിൽ നിർമ്മാണത്തിനായി ക്യൂ ചെയ്യുക",
+ "nightly_tasks_settings": "രാത്രിയിലെ ടാസ്ക് ക്രമീകരണങ്ങൾ",
+ "nightly_tasks_settings_description": "രാത്രിയിലെ ടാസ്ക്കുകൾ കൈകാര്യം ചെയ്യുക",
+ "nightly_tasks_start_time_setting": "തുടങ്ങുന്ന സമയം",
+ "nightly_tasks_start_time_setting_description": "സെർവർ രാത്രിയിലെ ടാസ്ക്കുകൾ പ്രവർത്തിപ്പിക്കാൻ തുടങ്ങുന്ന സമയം",
+ "nightly_tasks_sync_quota_usage_setting": "ക്വാട്ട ഉപയോഗം സിങ്ക് ചെയ്യുക",
+ "nightly_tasks_sync_quota_usage_setting_description": "നിലവിലെ ഉപയോഗത്തെ അടിസ്ഥാനമാക്കി ഉപയോക്താവിന്റെ സ്റ്റോറേജ് ക്വാട്ട അപ്ഡേറ്റ് ചെയ്യുക",
+ "no_paths_added": "പാത്തുകൾ ഒന്നും ചേർത്തിട്ടില്ല",
+ "no_pattern_added": "പാറ്റേൺ ഒന്നും ചേർത്തിട്ടില്ല",
+ "note_apply_storage_label_previous_assets": "കുറിപ്പ്: മുമ്പ് അപ്ലോഡ് ചെയ്ത അസറ്റുകളിൽ സ്റ്റോറേജ് ലേബൽ പ്രയോഗിക്കാൻ, ഇത് പ്രവർത്തിപ്പിക്കുക",
+ "note_cannot_be_changed_later": "കുറിപ്പ്: ഇത് പിന്നീട് മാറ്റാൻ കഴിയില്ല!",
+ "notification_email_from_address": "അയയ്ക്കുന്നയാളുടെ വിലാസം",
+ "notification_email_from_address_description": "അയയ്ക്കുന്നയാളുടെ ഇമെയിൽ വിലാസം, ഉദാഹരണത്തിന്: \"Immich Photo Server \". നിങ്ങൾക്ക് ഇമെയിലുകൾ അയയ്ക്കാൻ അനുവാദമുള്ള ഒരു വിലാസം ഉപയോഗിക്കുന്നുവെന്ന് ഉറപ്പാക്കുക.",
+ "notification_email_host_description": "ഇമെയിൽ സെർവറിന്റെ ഹോസ്റ്റ് (ഉദാ. smtp.immich.app)",
+ "notification_email_ignore_certificate_errors": "സർട്ടിഫിക്കറ്റ് പിശകുകൾ അവഗണിക്കുക",
+ "notification_email_ignore_certificate_errors_description": "TLS സർട്ടിഫിക്കറ്റ് സാധുതാ പിശകുകൾ അവഗണിക്കുക (ശുപാർശ ചെയ്യുന്നില്ല)",
+ "notification_email_password_description": "ഇമെയിൽ സെർവറുമായി പ്രാമാണീകരിക്കുമ്പോൾ ഉപയോഗിക്കേണ്ട പാസ്വേഡ്",
+ "notification_email_port_description": "ഇമെയിൽ സെർവറിന്റെ പോർട്ട് (ഉദാ. 25, 465, അല്ലെങ്കിൽ 587)",
+ "notification_email_sent_test_email_button": "പരിശോധനാ ഇമെയിൽ അയച്ച് സേവ് ചെയ്യുക",
+ "notification_email_setting_description": "ഇമെയിൽ അറിയിപ്പുകൾ അയക്കുന്നതിനുള്ള ക്രമീകരണങ്ങൾ",
+ "notification_email_test_email": "പരിശോധനാ ഇമെയിൽ അയക്കുക",
+ "notification_email_test_email_failed": "പരിശോധനാ ഇമെയിൽ അയക്കുന്നതിൽ പരാജയപ്പെട്ടു, നിങ്ങളുടെ മൂല്യങ്ങൾ പരിശോധിക്കുക",
+ "notification_email_test_email_sent": "{email} എന്ന വിലാസത്തിലേക്ക് ഒരു പരിശോധനാ ഇമെയിൽ അയച്ചിട്ടുണ്ട്. ദയവായി നിങ്ങളുടെ ഇൻബോക്സ് പരിശോധിക്കുക.",
+ "notification_email_username_description": "ഇമെയിൽ സെർവറുമായി പ്രാമാണീകരിക്കുമ്പോൾ ഉപയോഗിക്കേണ്ട ഉപയോക്തൃനാമം",
+ "notification_enable_email_notifications": "ഇമെയിൽ അറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കുക",
+ "notification_settings": "അറിയിപ്പ് ക്രമീകരണങ്ങൾ",
+ "notification_settings_description": "ഇമെയിൽ ഉൾപ്പെടെയുള്ള അറിയിപ്പ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "oauth_auto_launch": "യാന്ത്രികമായി തുടങ്ങുക",
+ "oauth_auto_launch_description": "ലോഗിൻ പേജിലേക്ക് പോകുമ്പോൾ OAuth ലോഗിൻ ഫ്ലോ യാന്ത്രികമായി ആരംഭിക്കുക",
+ "oauth_auto_register": "യാന്ത്രികമായി രജിസ്റ്റർ ചെയ്യുക",
+ "oauth_auto_register_description": "OAuth ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്ത ശേഷം പുതിയ ഉപയോക്താക്കളെ യാന്ത്രികമായി രജിസ്റ്റർ ചെയ്യുക",
+ "oauth_button_text": "ബട്ടണിലെ വാചകം",
+ "oauth_client_secret_description": "OAuth ദാതാവ് PKCE (പ്രൂഫ് കീ ഫോർ കോഡ് എക്സ്ചേഞ്ച്) പിന്തുണയ്ക്കുന്നില്ലെങ്കിൽ ആവശ്യമാണ്",
+ "oauth_enable_description": "OAuth ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യുക",
+ "oauth_mobile_redirect_uri": "മൊബൈൽ റീഡയറക്ട് URI",
+ "oauth_mobile_redirect_uri_override": "മൊബൈൽ റീഡയറക്ട് URI ഓവർറൈഡ്",
+ "oauth_mobile_redirect_uri_override_description": "OAuth ദാതാവ് \"{callback}\" പോലുള്ള ഒരു മൊബൈൽ URI അനുവദിക്കാത്തപ്പോൾ പ്രവർത്തനക്ഷമമാക്കുക",
+ "oauth_role_claim": "റോൾ ക്ലെയിം",
+ "oauth_role_claim_description": "ഈ ക്ലെയിമിന്റെ സാന്നിധ്യത്തെ അടിസ്ഥാനമാക്കി യാന്ത്രികമായി അഡ്മിൻ ആക്സസ് നൽകുക. ക്ലെയിമിന് 'user' അല്ലെങ്കിൽ 'admin' എന്ന് ഉണ്ടാകാം.",
+ "oauth_settings": "OAuth",
+ "oauth_settings_description": "OAuth ലോഗിൻ ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "oauth_settings_more_details": "ഈ ഫീച്ചറിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, ഡോക്സ് പരിശോധിക്കുക.",
+ "oauth_storage_label_claim": "സ്റ്റോറേജ് ലേബൽ ക്ലെയിം",
+ "oauth_storage_label_claim_description": "ഉപയോക്താവിന്റെ സ്റ്റോറേജ് ലേബൽ ഈ ക്ലെയിമിന്റെ മൂല്യത്തിലേക്ക് യാന്ത്രികമായി സജ്ജമാക്കുക.",
+ "oauth_storage_quota_claim": "സ്റ്റോറേജ് ക്വാട്ട ക്ലെയിം",
+ "oauth_storage_quota_claim_description": "ഉപയോക്താവിന്റെ സ്റ്റോറേജ് ക്വാട്ട ഈ ക്ലെയിമിന്റെ മൂല്യത്തിലേക്ക് യാന്ത്രികമായി സജ്ജമാക്കുക.",
+ "oauth_storage_quota_default": "ഡിഫോൾട്ട് സ്റ്റോറേജ് ക്വാട്ട (GiB)",
+ "oauth_storage_quota_default_description": "ക്ലെയിം ഒന്നും നൽകാത്തപ്പോൾ ഉപയോഗിക്കേണ്ട ക്വാട്ട (GiB-യിൽ).",
+ "oauth_timeout": "അഭ്യർത്ഥനയുടെ സമയപരിധി",
+ "oauth_timeout_description": "അഭ്യർത്ഥനകൾക്കുള്ള സമയപരിധി (മില്ലിസെക്കൻഡിൽ)",
+ "password_enable_description": "ഇമെയിലും പാസ്വേഡും ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യുക",
+ "password_settings": "പാസ്വേഡ് ലോഗിൻ",
+ "password_settings_description": "പാസ്വേഡ് ലോഗിൻ ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "paths_validated_successfully": "എല്ലാ പാത്തുകളും വിജയകരമായി സാധൂകരിച്ചു",
+ "person_cleanup_job": "വ്യക്തി ക്ലീനപ്പ്",
+ "quota_size_gib": "ക്വാട്ട വലുപ്പം (GiB)",
+ "refreshing_all_libraries": "എല്ലാ ലൈബ്രറികളും പുതുക്കുന്നു",
+ "registration": "അഡ്മിൻ രജിസ്ട്രേഷൻ",
+ "registration_description": "നിങ്ങളാണ് സിസ്റ്റത്തിലെ ആദ്യത്തെ ഉപയോക്താവ് എന്നതിനാൽ, നിങ്ങളെ അഡ്മിൻ ആയി നിയമിക്കും. ഭരണപരമായ ജോലികൾക്ക് നിങ്ങൾ ഉത്തരവാദിയായിരിക്കും, കൂടാതെ അധിക ഉപയോക്താക്കളെ സൃഷ്ടിക്കുന്നത് നിങ്ങളായിരിക്കും.",
+ "require_password_change_on_login": "ആദ്യ ലോഗിൻ ചെയ്യുമ്പോൾ പാസ്വേഡ് മാറ്റാൻ ഉപയോക്താവിനോട് ആവശ്യപ്പെടുക",
+ "reset_settings_to_default": "ക്രമീകരണങ്ങൾ ഡിഫോൾട്ടിലേക്ക് പുനഃസജ്ജമാക്കുക",
+ "reset_settings_to_recent_saved": "അടുത്തിടെ സേവ് ചെയ്ത ക്രമീകരണങ്ങളിലേക്ക് പുനഃസജ്ജമാക്കുക",
+ "scanning_library": "ലൈബ്രറി സ്കാൻ ചെയ്യുന്നു",
+ "search_jobs": "ജോലികൾക്കായി തിരയുക…",
+ "send_welcome_email": "സ്വാഗത ഇമെയിൽ അയക്കുക",
+ "server_external_domain_settings": "ബാഹ്യ ഡൊമെയ്ൻ",
+ "server_external_domain_settings_description": "പൊതുവായി പങ്കിട്ട ലിങ്കുകൾക്കുള്ള ഡൊമെയ്ൻ, http(s):// ഉൾപ്പെടെ",
+ "server_public_users": "പൊതു ഉപയോക്താക്കൾ",
+ "server_public_users_description": "പങ്കിട്ട ആൽബങ്ങളിലേക്ക് ഒരു ഉപയോക്താവിനെ ചേർക്കുമ്പോൾ എല്ലാ ഉപയോക്താക്കളെയും (പേരും ഇമെയിലും) ലിസ്റ്റ് ചെയ്യും. പ്രവർത്തനരഹിതമാക്കുമ്പോൾ, ഉപയോക്തൃ ലിസ്റ്റ് അഡ്മിൻ ഉപയോക്താക്കൾക്ക് മാത്രമേ ലഭ്യമാകൂ.",
+ "server_settings": "സെർവർ ക്രമീകരണങ്ങൾ",
+ "server_settings_description": "സെർവർ ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "server_welcome_message": "സ്വാഗത സന്ദേശം",
+ "server_welcome_message_description": "ലോഗിൻ പേജിൽ പ്രദർശിപ്പിക്കുന്ന ഒരു സന്ദേശം.",
+ "sidecar_job": "സൈഡ്കാർ മെറ്റാഡാറ്റ",
+ "sidecar_job_description": "ഫയൽസിസ്റ്റത്തിൽ നിന്ന് സൈഡ്കാർ മെറ്റാഡാറ്റ കണ്ടെത്തുകയോ സിൻക്രൊണൈസ് ചെയ്യുകയോ ചെയ്യുക",
+ "slideshow_duration_description": "ഓരോ ചിത്രവും പ്രദർശിപ്പിക്കാനുള്ള സെക്കൻഡുകളുടെ എണ്ണം",
+ "smart_search_job_description": "സ്മാർട്ട് സെർച്ചിനെ പിന്തുണയ്ക്കുന്നതിനായി അസറ്റുകളിൽ മെഷീൻ ലേണിംഗ് പ്രവർത്തിപ്പിക്കുക",
+ "storage_template_date_time_description": "ഡേറ്റ്ടൈം വിവരങ്ങൾക്കായി അസറ്റിന്റെ ക്രിയേഷൻ ടൈംസ്റ്റാമ്പ് ഉപയോഗിക്കുന്നു",
+ "storage_template_date_time_sample": "സാമ്പിൾ സമയം {date}",
+ "storage_template_enable_description": "സ്റ്റോറേജ് ടെംപ്ലേറ്റ് എഞ്ചിൻ പ്രവർത്തനക്ഷമമാക്കുക",
+ "storage_template_hash_verification_enabled": "ഹാഷ് വെരിഫിക്കേഷൻ പ്രവർത്തനക്ഷമമാക്കി",
+ "storage_template_hash_verification_enabled_description": "ഹാഷ് വെരിഫിക്കേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു, പ്രത്യാഘാതങ്ങളെക്കുറിച്ച് ഉറപ്പില്ലെങ്കിൽ ഇത് പ്രവർത്തനരഹിതമാക്കരുത്",
+ "storage_template_migration": "സ്റ്റോറേജ് ടെംപ്ലേറ്റ് മൈഗ്രേഷൻ",
+ "storage_template_migration_description": "മുമ്പ് അപ്ലോഡ് ചെയ്ത അസറ്റുകളിലേക്ക് നിലവിലെ {template} പ്രയോഗിക്കുക",
+ "storage_template_migration_info": "സ്റ്റോറേജ് ടെംപ്ലേറ്റ് എല്ലാ എക്സ്റ്റൻഷനുകളെയും ചെറിയക്ഷരത്തിലേക്ക് മാറ്റും. ടെംപ്ലേറ്റിലെ മാറ്റങ്ങൾ പുതിയ അസറ്റുകൾക്ക് മാത്രമേ ബാധകമാകൂ. മുമ്പ് അപ്ലോഡ് ചെയ്ത അസറ്റുകളിൽ ടെംപ്ലേറ്റ് മുൻകാല പ്രാബല്യത്തോടെ പ്രയോഗിക്കാൻ, {job} പ്രവർത്തിപ്പിക്കുക.",
+ "storage_template_migration_job": "സ്റ്റോറേജ് ടെംപ്ലേറ്റ് മൈഗ്രേഷൻ ജോലി",
+ "storage_template_more_details": "ഈ ഫീച്ചറിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, സ്റ്റോറേജ് ടെംപ്ലേറ്റ്-ഉം അതിൻ്റെ പ്രത്യാഘാതങ്ങളും പരിശോധിക്കുക",
+ "storage_template_onboarding_description_v2": "പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ഉപയോക്താവ് നിർവചിച്ച ടെംപ്ലേറ്റ് അടിസ്ഥാനമാക്കി ഈ ഫീച്ചർ ഫയലുകൾ യാന്ത്രികമായി ഓർഗനൈസ് ചെയ്യും. കൂടുതൽ വിവരങ്ങൾക്ക്, ദയവായി ഡോക്യുമെന്റേഷൻ കാണുക.",
+ "storage_template_path_length": "ഏകദേശ പാത്ത് ദൈർഘ്യ പരിധി: {length, number}/{limit, number}",
+ "storage_template_settings": "സ്റ്റോറേജ് ടെംപ്ലേറ്റ്",
+ "storage_template_settings_description": "അപ്ലോഡ് ചെയ്യുന്ന അസറ്റിന്റെ ഫോൾഡർ ഘടനയും ഫയൽ നാമവും കൈകാര്യം ചെയ്യുക",
+ "storage_template_user_label": "{label} എന്നത് ഉപയോക്താവിന്റെ സ്റ്റോറേജ് ലേബലാണ്",
+ "system_settings": "സിസ്റ്റം ക്രമീകരണങ്ങൾ",
+ "tag_cleanup_job": "ടാഗ് ക്ലീനപ്പ്",
+ "template_email_available_tags": "നിങ്ങളുടെ ടെംപ്ലേറ്റിൽ ഇനിപ്പറയുന്ന വേരിയബിളുകൾ ഉപയോഗിക്കാം: {tags}",
+ "template_email_if_empty": "ടെംപ്ലേറ്റ് ശൂന്യമാണെങ്കിൽ, ഡിഫോൾട്ട് ഇമെയിൽ ഉപയോഗിക്കും.",
+ "template_email_invite_album": "ആൽബം ക്ഷണിക്കാനുള്ള ടെംപ്ലേറ്റ്",
+ "template_email_preview": "പ്രിവ്യൂ",
+ "template_email_settings": "ഇമെയിൽ ടെംപ്ലേറ്റുകൾ",
+ "template_email_update_album": "ആൽബം അപ്ഡേറ്റ് ടെംപ്ലേറ്റ്",
+ "template_email_welcome": "സ്വാഗത ഇമെയിൽ ടെംപ്ലേറ്റ്",
+ "template_settings": "അറിയിപ്പ് ടെംപ്ലേറ്റുകൾ",
+ "template_settings_description": "അറിയിപ്പുകൾക്കായി ഇഷ്ടാനുസൃത ടെംപ്ലേറ്റുകൾ കൈകാര്യം ചെയ്യുക",
+ "theme_custom_css_settings": "കസ്റ്റം CSS",
+ "theme_custom_css_settings_description": "കാസ്കേഡിംഗ് സ്റ്റൈൽ ഷീറ്റുകൾ (CSS) Immich-ന്റെ ഡിസൈൻ ഇഷ്ടാനുസൃതമാക്കാൻ അനുവദിക്കുന്നു.",
+ "theme_settings": "തീം ക്രമീകരണങ്ങൾ",
+ "theme_settings_description": "Immich വെബ് ഇന്റർഫേസിന്റെ കസ്റ്റമൈസേഷൻ കൈകാര്യം ചെയ്യുക",
+ "thumbnail_generation_job": "തംബ്നെയിലുകൾ നിർമ്മിക്കുക",
+ "thumbnail_generation_job_description": "ഓരോ അസറ്റിനും വലുതും ചെറുതും മങ്ങിയതുമായ തംബ്നെയിലുകളും ഓരോ വ്യക്തിക്കും തംബ്നെയിലുകളും നിർമ്മിക്കുക",
+ "transcoding_acceleration_api": "ആക്സിലറേഷൻ API",
+ "transcoding_acceleration_api_description": "ട്രാൻസ്കോഡിംഗ് ത്വരിതപ്പെടുത്തുന്നതിന് നിങ്ങളുടെ ഉപകരണവുമായി സംവദിക്കുന്ന API. ഈ ക്രമീകരണം 'ബെസ്റ്റ് എഫേർട്ട്' ആണ്: പരാജയപ്പെട്ടാൽ സോഫ്റ്റ്വെയർ ട്രാൻസ്കോഡിംഗിലേക്ക് മാറും. നിങ്ങളുടെ ഹാർഡ്വെയർ അനുസരിച്ച് VP9 പ്രവർത്തിക്കുകയോ പ്രവർത്തിക്കാതിരിക്കുകയോ ചെയ്യാം.",
+ "transcoding_acceleration_nvenc": "NVENC (NVIDIA GPU ആവശ്യമാണ്)",
+ "transcoding_acceleration_qsv": "ക്വിക്ക് സിങ്ക് (7-ാം തലമുറ ഇന്റൽ സിപിയു അല്ലെങ്കിൽ അതിനുശേഷമുള്ളത് ആവശ്യമാണ്)",
+ "transcoding_acceleration_rkmpp": "RKMPP (Rockchip SOC-കളിൽ മാത്രം)",
+ "transcoding_acceleration_vaapi": "VAAPI",
+ "transcoding_accepted_audio_codecs": "അംഗീകൃത ഓഡിയോ കോഡെക്കുകൾ",
+ "transcoding_accepted_audio_codecs_description": "ട്രാൻസ്കോഡ് ചെയ്യേണ്ടാത്ത ഓഡിയോ കോഡെക്കുകൾ തിരഞ്ഞെടുക്കുക. ചില ട്രാൻസ്കോഡ് നയങ്ങൾക്ക് വേണ്ടി മാത്രം ഉപയോഗിക്കുന്നു.",
+ "transcoding_accepted_containers": "അംഗീകൃത കണ്ടെയ്നറുകൾ",
+ "transcoding_accepted_containers_description": "MP4-ലേക്ക് റീമക്സ് ചെയ്യേണ്ടാത്ത കണ്ടെയ്നർ ഫോർമാറ്റുകൾ തിരഞ്ഞെടുക്കുക. ചില ട്രാൻസ്കോഡ് നയങ്ങൾക്ക് വേണ്ടി മാത്രം ഉപയോഗിക്കുന്നു.",
+ "transcoding_accepted_video_codecs": "അംഗീകൃത വീഡിയോ കോഡെക്കുകൾ",
+ "transcoding_accepted_video_codecs_description": "ട്രാൻസ്കോഡ് ചെയ്യേണ്ടാത്ത വീഡിയോ കോഡെക്കുകൾ തിരഞ്ഞെടുക്കുക. ചില ട്രാൻസ്കോഡ് നയങ്ങൾക്ക് വേണ്ടി മാത്രം ഉപയോഗിക്കുന്നു.",
+ "transcoding_advanced_options_description": "മിക്ക ഉപയോക്താക്കളും മാറ്റം വരുത്തേണ്ടതില്ലാത്ത ഓപ്ഷനുകൾ",
+ "transcoding_audio_codec": "ഓഡിയോ കോഡെക്",
+ "transcoding_audio_codec_description": "Opus ഏറ്റവും ഉയർന്ന നിലവാരമുള്ള ഓപ്ഷനാണ്, പക്ഷേ പഴയ ഉപകരണങ്ങളുമായോ സോഫ്റ്റ്വെയറുമായോ ഇതിന് കുറഞ്ഞ അനുയോജ്യതയേ ഉള്ളൂ.",
+ "transcoding_bitrate_description": "പരമാവധി ബിറ്റ്റേറ്റിനേക്കാൾ ഉയർന്നതോ അംഗീകൃത ഫോർമാറ്റിൽ അല്ലാത്തതോ ആയ വീഡിയോകൾ",
+ "transcoding_codecs_learn_more": "ഇവിടെ ഉപയോഗിച്ചിരിക്കുന്ന പദങ്ങളെക്കുറിച്ച് കൂടുതലറിയാൻ, H.264 കോഡെക്, HEVC കോഡെക്, VP9 കോഡെക് എന്നിവയുടെ FFmpeg ഡോക്യുമെന്റേഷൻ പരിശോധിക്കുക.",
+ "transcoding_constant_quality_mode": "സ്ഥിരമായ ഗുണമേന്മ മോഡ്",
+ "transcoding_constant_quality_mode_description": "CQP-യെക്കാൾ മികച്ചതാണ് ICQ, എന്നാൽ ചില ഹാർഡ്വെയർ ആക്സിലറേഷൻ ഉപകരണങ്ങൾ ഈ മോഡിനെ പിന്തുണയ്ക്കുന്നില്ല. ഗുണമേന്മ അടിസ്ഥാനമാക്കിയുള്ള എൻകോഡിംഗ് ഉപയോഗിക്കുമ്പോൾ ഈ ഓപ്ഷൻ സജ്ജീകരിക്കുന്നത് നിർദ്ദിഷ്ട മോഡിന് മുൻഗണന നൽകും. ICQ പിന്തുണയ്ക്കാത്തതിനാൽ NVENC ഇത് അവഗണിക്കുന്നു.",
+ "transcoding_constant_rate_factor": "കോൺസ്റ്റന്റ് റേറ്റ് ഫാക്ടർ (-crf)",
+ "transcoding_constant_rate_factor_description": "വീഡിയോയുടെ ഗുണമേന്മ നില. സാധാരണ മൂല്യങ്ങൾ H.264-ന് 23, HEVC-ക്ക് 28, VP9-ന് 31, AV1-ന് 35 എന്നിങ്ങനെയാണ്. കുറഞ്ഞ മൂല്യം മികച്ചതാണ്, പക്ഷേ വലിയ ഫയലുകൾ ഉണ്ടാക്കുന്നു.",
+ "transcoding_disabled_description": "ഒരു വീഡിയോയും ട്രാൻസ്കോഡ് ചെയ്യരുത്, ഇത് ചില ക്ലയിന്റുകളിൽ പ്ലേബാക്ക് തടസ്സപ്പെടുത്തിയേക്കാം",
+ "transcoding_encoding_options": "എൻകോഡിംഗ് ഓപ്ഷനുകൾ",
+ "transcoding_encoding_options_description": "എൻകോഡ് ചെയ്ത വീഡിയോകൾക്കായി കോഡെക്കുകൾ, റെസല്യൂഷൻ, ഗുണമേന്മ, മറ്റ് ഓപ്ഷനുകൾ എന്നിവ സജ്ജമാക്കുക",
+ "transcoding_hardware_acceleration": "ഹാർഡ്വെയർ ആക്സിലറേഷൻ",
+ "transcoding_hardware_acceleration_description": "പരീക്ഷണാടിസ്ഥാനത്തിലുള്ളത്: വേഗതയേറിയ ട്രാൻസ്കോഡിംഗ്, എന്നാൽ ഒരേ ബിറ്റ്റേറ്റിൽ ഗുണമേന്മ കുറച്ചേക്കാം",
+ "transcoding_hardware_decoding": "ഹാർഡ്വെയർ ഡീകോഡിംഗ്",
+ "transcoding_hardware_decoding_setting_description": "എൻകോഡിംഗ് മാത്രം ത്വരിതപ്പെടുത്തുന്നതിന് പകരം എൻഡ്-ടു-എൻഡ് ആക്സിലറേഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു. എല്ലാ വീഡിയോകളിലും പ്രവർത്തിച്ചേക്കില്ല.",
+ "transcoding_max_b_frames": "പരമാവധി ബി-ഫ്രെയിമുകൾ",
+ "transcoding_max_b_frames_description": "ഉയർന്ന മൂല്യങ്ങൾ കംപ്രഷൻ കാര്യക്ഷമത മെച്ചപ്പെടുത്തുന്നു, പക്ഷേ എൻകോഡിംഗ് വേഗത കുറയ്ക്കുന്നു. പഴയ ഉപകരണങ്ങളിലെ ഹാർഡ്വെയർ ആക്സിലറേഷനുമായി പൊരുത്തപ്പെടണമെന്നില്ല. 0 ബി-ഫ്രെയിമുകൾ പ്രവർത്തനരഹിതമാക്കുന്നു, അതേസമയം -1 ഈ മൂല്യം യാന്ത്രികമായി സജ്ജീകരിക്കുന്നു.",
+ "transcoding_max_bitrate": "പരമാവധി ബിറ്റ്റേറ്റ്",
+ "transcoding_max_bitrate_description": "ഒരു പരമാവധി ബിറ്റ്റേറ്റ് സജ്ജീകരിക്കുന്നത് ഗുണമേന്മയിൽ ചെറിയൊരു വിട്ടുവീഴ്ചയോടെ ഫയൽ വലുപ്പങ്ങൾ കൂടുതൽ പ്രവചനാതീതമാക്കും. 720p-ൽ, സാധാരണ മൂല്യങ്ങൾ VP9 അല്ലെങ്കിൽ HEVC-ക്ക് 2600 kbit/s, അല്ലെങ്കിൽ H.264-ന് 4500 kbit/s ആണ്. 0 ആയി സജ്ജീകരിച്ചാൽ പ്രവർത്തനരഹിതമാകും.",
+ "transcoding_max_keyframe_interval": "പരമാവധി കീഫ്രെയിം ഇടവേള",
+ "transcoding_max_keyframe_interval_description": "കീഫ്രെയിമുകൾക്കിടയിലുള്ള പരമാവധി ഫ്രെയിം ദൂരം സജ്ജമാക്കുന്നു. കുറഞ്ഞ മൂല്യങ്ങൾ കംപ്രഷൻ കാര്യക്ഷമത കുറയ്ക്കുന്നു, പക്ഷേ സീക്ക് സമയം മെച്ചപ്പെടുത്തുകയും വേഗതയേറിയ ചലനമുള്ള രംഗങ്ങളിൽ ഗുണമേന്മ മെച്ചപ്പെടുത്തുകയും ചെയ്തേക്കാം. 0 ഈ മൂല്യം യാന്ത്രികമായി സജ്ജീകരിക്കുന്നു.",
+ "transcoding_optimal_description": "ലക്ഷ്യമിട്ട റെസല്യൂഷനേക്കാൾ ഉയർന്നതോ അംഗീകൃത ഫോർമാറ്റിൽ അല്ലാത്തതോ ആയ വീഡിയോകൾ",
+ "transcoding_policy": "ട്രാൻസ്കോഡ് നയം",
+ "transcoding_policy_description": "ഒരു വീഡിയോ എപ്പോൾ ട്രാൻസ്കോഡ് ചെയ്യണമെന്ന് സജ്ജമാക്കുക",
+ "transcoding_preferred_hardware_device": "തിരഞ്ഞെടുക്കുന്ന ഹാർഡ്വെയർ ഉപകരണം",
+ "transcoding_preferred_hardware_device_description": "VAAPI, QSV എന്നിവയ്ക്ക് മാത്രം ബാധകം. ഹാർഡ്വെയർ ട്രാൻസ്കോഡിംഗിനായി ഉപയോഗിക്കുന്ന dri നോഡ് സജ്ജമാക്കുന്നു.",
+ "transcoding_preset_preset": "പ്രീസെറ്റ് (-preset)",
+ "transcoding_preset_preset_description": "കംപ്രഷൻ വേഗത. വേഗത കുറഞ്ഞ പ്രീസെറ്റുകൾ ചെറിയ ഫയലുകൾ നിർമ്മിക്കുന്നു, ഒരു നിശ്ചിത ബിറ്റ്റേറ്റ് ലക്ഷ്യമിടുമ്പോൾ ഗുണമേന്മ വർദ്ധിപ്പിക്കുന്നു. 'faster'-നേക്കാൾ ഉയർന്ന വേഗത VP9 അവഗണിക്കുന്നു.",
+ "transcoding_reference_frames": "റഫറൻസ് ഫ്രെയിമുകൾ",
+ "transcoding_reference_frames_description": "നൽകിയിരിക്കുന്ന ഒരു ഫ്രെയിം കംപ്രസ് ചെയ്യുമ്പോൾ റഫറൻസ് ചെയ്യേണ്ട ഫ്രെയിമുകളുടെ എണ്ണം. ഉയർന്ന മൂല്യങ്ങൾ കംപ്രഷൻ കാര്യക്ഷമത മെച്ചപ്പെടുത്തുന്നു, പക്ഷേ എൻകോഡിംഗ് വേഗത കുറയ്ക്കുന്നു. 0 ഈ മൂല്യം യാന്ത്രികമായി സജ്ജീകരിക്കുന്നു.",
+ "transcoding_required_description": "അംഗീകൃത ഫോർമാറ്റിൽ അല്ലാത്ത വീഡിയോകൾ മാത്രം",
+ "transcoding_settings": "വീഡിയോ ട്രാൻസ്കോഡിംഗ് ക്രമീകരണങ്ങൾ",
+ "transcoding_settings_description": "ഏതൊക്കെ വീഡിയോകളാണ് ട്രാൻസ്കോഡ് ചെയ്യേണ്ടതെന്നും അവ എങ്ങനെ പ്രോസസ്സ് ചെയ്യണമെന്നും കൈകാര്യം ചെയ്യുക",
+ "transcoding_target_resolution": "ലക്ഷ്യമിടുന്ന റെസല്യൂഷൻ",
+ "transcoding_target_resolution_description": "ഉയർന്ന റെസല്യൂഷനുകൾക്ക് കൂടുതൽ വിശദാംശങ്ങൾ സംരക്ഷിക്കാൻ കഴിയും, പക്ഷേ എൻകോഡ് ചെയ്യാൻ കൂടുതൽ സമയമെടുക്കും, വലിയ ഫയൽ വലുപ്പമുണ്ടാകും, കൂടാതെ ആപ്പിന്റെ പ്രതികരണശേഷി കുറയ്ക്കുകയും ചെയ്യും.",
+ "transcoding_temporal_aq": "ടെമ്പറൽ AQ",
+ "transcoding_temporal_aq_description": "NVENC-ക്ക് മാത്രം ബാധകം. ഉയർന്ന വിശദാംശങ്ങളും കുറഞ്ഞ ചലനവുമുള്ള രംഗങ്ങളുടെ ഗുണമേന്മ വർദ്ധിപ്പിക്കുന്നു. പഴയ ഉപകരണങ്ങളുമായി പൊരുത്തപ്പെടണമെന്നില്ല.",
+ "transcoding_threads": "ത്രെഡുകൾ",
+ "transcoding_threads_description": "ഉയർന്ന മൂല്യങ്ങൾ വേഗതയേറിയ എൻകോഡിംഗിലേക്ക് നയിക്കുന്നു, പക്ഷേ സെർവറിന് മറ്റ് ജോലികൾ പ്രോസസ്സ് ചെയ്യാൻ കുറച്ച് ഇടം നൽകുന്നു. ഈ മൂല്യം സിപിയു കോറുകളുടെ എണ്ണത്തേക്കാൾ കൂടുതലാകരുത്. 0 ആയി സജ്ജീകരിച്ചാൽ ഉപയോഗം പരമാവധിയാക്കുന്നു.",
+ "transcoding_tone_mapping": "ടോൺ-മാപ്പിംഗ്",
+ "transcoding_tone_mapping_description": "HDR വീഡിയോകൾ SDR-ലേക്ക് പരിവർത്തനം ചെയ്യുമ്പോൾ അവയുടെ രൂപം നിലനിർത്താൻ ശ്രമിക്കുന്നു. ഓരോ അൽഗോരിതവും നിറം, വിശദാംശങ്ങൾ, തെളിച്ചം എന്നിവയ്ക്കായി വ്യത്യസ്ത വിട്ടുവീഴ്ചകൾ ചെയ്യുന്നു. Hable വിശദാംശങ്ങൾ സംരക്ഷിക്കുന്നു, Mobius നിറം സംരക്ഷിക്കുന്നു, Reinhard തെളിച്ചം സംരക്ഷിക്കുന്നു.",
+ "transcoding_transcode_policy": "ട്രാൻസ്കോഡ് നയം",
+ "transcoding_transcode_policy_description": "ഒരു വീഡിയോ എപ്പോൾ ട്രാൻസ്കോഡ് ചെയ്യണം എന്നതിനെക്കുറിച്ചുള്ള നയം. HDR വീഡിയോകൾ എല്ലായ്പ്പോഴും ട്രാൻസ്കോഡ് ചെയ്യപ്പെടും (ട്രാൻസ്കോഡിംഗ് പ്രവർത്തനരഹിതമാക്കിയിട്ടില്ലെങ്കിൽ).",
+ "transcoding_two_pass_encoding": "ടു-പാസ് എൻകോഡിംഗ്",
+ "transcoding_two_pass_encoding_setting_description": "മെച്ചപ്പെട്ട എൻകോഡ് ചെയ്ത വീഡിയോകൾ നിർമ്മിക്കുന്നതിന് രണ്ട് പാസുകളിലായി ട്രാൻസ്കോഡ് ചെയ്യുക. പരമാവധി ബിറ്റ്റേറ്റ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ (H.264, HEVC എന്നിവയ്ക്കൊപ്പം പ്രവർത്തിക്കാൻ ഇത് ആവശ്യമാണ്), ഈ മോഡ് പരമാവധി ബിറ്റ്റേറ്റിനെ അടിസ്ഥാനമാക്കി ഒരു ബിറ്റ്റേറ്റ് ശ്രേണി ഉപയോഗിക്കുകയും CRF അവഗണിക്കുകയും ചെയ്യുന്നു. VP9-നായി, പരമാവധി ബിറ്റ്റേറ്റ് പ്രവർത്തനരഹിതമാക്കിയിട്ടുണ്ടെങ്കിൽ CRF ഉപയോഗിക്കാം.",
+ "transcoding_video_codec": "വീഡിയോ കോഡെക്",
+ "transcoding_video_codec_description": "VP9-ന് ഉയർന്ന കാര്യക്ഷമതയും വെബ് അനുയോജ്യതയുമുണ്ട്, പക്ഷേ ട്രാൻസ്കോഡ് ചെയ്യാൻ കൂടുതൽ സമയമെടുക്കും. HEVC സമാനമായി പ്രവർത്തിക്കുന്നു, പക്ഷേ വെബ് അനുയോജ്യത കുറവാണ്. H.264 വ്യാപകമായി അനുയോജ്യവും വേഗത്തിൽ ട്രാൻസ്കോഡ് ചെയ്യാൻ കഴിയുന്നതുമാണ്, പക്ഷേ വളരെ വലിയ ഫയലുകൾ നിർമ്മിക്കുന്നു. AV1 ഏറ്റവും കാര്യക്ഷമമായ കോഡെക്കാണ്, പക്ഷേ പഴയ ഉപകരണങ്ങളിൽ ഇതിന് പിന്തുണയില്ല.",
+ "trash_enabled_description": "ട്രാഷ് ഫീച്ചറുകൾ പ്രവർത്തനക്ഷമമാക്കുക",
+ "trash_number_of_days": "ദിവസങ്ങളുടെ എണ്ണം",
+ "trash_number_of_days_description": "അസറ്റുകൾ ശാശ്വതമായി നീക്കം ചെയ്യുന്നതിനുമുമ്പ് ട്രാഷിൽ സൂക്ഷിക്കേണ്ട ദിവസങ്ങളുടെ എണ്ണം",
+ "trash_settings": "ട്രാഷ് ക്രമീകരണങ്ങൾ",
+ "trash_settings_description": "ട്രാഷ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "unlink_all_oauth_accounts": "എല്ലാ OAuth അക്കൗണ്ടുകളും അൺലിങ്ക് ചെയ്യുക",
+ "unlink_all_oauth_accounts_description": "ഒരു പുതിയ ദാതാവിലേക്ക് മാറുന്നതിന് മുമ്പ് എല്ലാ OAuth അക്കൗണ്ടുകളും അൺലിങ്ക് ചെയ്യാൻ ഓർമ്മിക്കുക.",
+ "unlink_all_oauth_accounts_prompt": "എല്ലാ OAuth അക്കൗണ്ടുകളും അൺലിങ്ക് ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? ഇത് ഓരോ ഉപയോക്താവിന്റെയും OAuth ഐഡി റീസെറ്റ് ചെയ്യും, ഇത് പഴയപടിയാക്കാൻ കഴിയില്ല.",
+ "user_cleanup_job": "ഉപയോക്തൃ ക്ലീനപ്പ്",
+ "user_delete_delay": "{user}-ന്റെ അക്കൗണ്ടും അസറ്റുകളും {delay, plural, one {# ദിവസത്തിനുള്ളിൽ} other {# ദിവസങ്ങൾക്കുള്ളിൽ}} ശാശ്വതമായി ഇല്ലാതാക്കാൻ ഷെഡ്യൂൾ ചെയ്യും.",
+ "user_delete_delay_settings": "ഇല്ലാതാക്കാനുള്ള കാലതാമസം",
+ "user_delete_delay_settings_description": "ഒരു ഉപയോക്താവിന്റെ അക്കൗണ്ടും അസറ്റുകളും ശാശ്വതമായി ഇല്ലാതാക്കാൻ നീക്കം ചെയ്തതിന് ശേഷമുള്ള ദിവസങ്ങളുടെ എണ്ണം. ഇല്ലാതാക്കാൻ തയ്യാറായ ഉപയോക്താക്കളെ പരിശോധിക്കാൻ ഉപയോക്താവിനെ ഇല്ലാതാക്കാനുള്ള ജോലി അർദ്ധരാത്രിയിൽ പ്രവർത്തിക്കുന്നു. ഈ ക്രമീകരണത്തിലെ മാറ്റങ്ങൾ അടുത്ത എക്സിക്യൂഷനിൽ വിലയിരുത്തപ്പെടും.",
+ "user_delete_immediately": "{user}-ന്റെ അക്കൗണ്ടും അസറ്റുകളും ഉടനടി ശാശ്വതമായി ഇല്ലാതാക്കുന്നതിനായി ക്യൂ ചെയ്യും.",
+ "user_delete_immediately_checkbox": "ഉപയോക്താവിനെയും അസറ്റുകളെയും ഉടനടി ഇല്ലാതാക്കാൻ ക്യൂ ചെയ്യുക",
+ "user_details": "ഉപയോക്തൃ വിശദാംശങ്ങൾ",
+ "user_management": "ഉപയോക്തൃ മാനേജ്മെന്റ്",
+ "user_password_has_been_reset": "ഉപയോക്താവിന്റെ പാസ്വേഡ് റീസെറ്റ് ചെയ്തു:",
+ "user_password_reset_description": "ദയവായി ഉപയോക്താവിന് താൽക്കാലിക പാസ്വേഡ് നൽകുക, അടുത്ത ലോഗിൻ ചെയ്യുമ്പോൾ പാസ്വേഡ് മാറ്റേണ്ടിവരുമെന്ന് അവരെ അറിയിക്കുക.",
+ "user_restore_description": "{user}-ന്റെ അക്കൗണ്ട് പുനഃസ്ഥാപിക്കും.",
+ "user_restore_scheduled_removal": "ഉപയോക്താവിനെ പുനഃസ്ഥാപിക്കുക - {date, date, long}-ന് നീക്കംചെയ്യാൻ ഷെഡ്യൂൾ ചെയ്തിരിക്കുന്നു",
+ "user_settings": "ഉപയോക്താവിന്റെ ക്രമീകരണങ്ങൾ",
+ "user_settings_description": "ഉപയോക്തൃ ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "user_successfully_removed": "{email} എന്ന ഉപയോക്താവിനെ വിജയകരമായി നീക്കംചെയ്തു.",
+ "version_check_enabled_description": "പതിപ്പ് പരിശോധന പ്രവർത്തനക്ഷമമാക്കുക",
+ "version_check_implications": "പതിപ്പ് പരിശോധന ഫീച്ചർ github.com-മായി ആനുകാലിക ആശയവിനിമയത്തെ ആശ്രയിച്ചിരിക്കുന്നു",
+ "version_check_settings": "പതിപ്പ് പരിശോധന",
+ "version_check_settings_description": "പുതിയ പതിപ്പിന്റെ അറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കുക/പ്രവർത്തനരഹിതമാക്കുക",
+ "video_conversion_job": "വീഡിയോകൾ ട്രാൻസ്കോഡ് ചെയ്യുക",
+ "video_conversion_job_description": "ബ്രൗസറുകളുമായും ഉപകരണങ്ങളുമായും കൂടുതൽ അനുയോജ്യതയ്ക്കായി വീഡിയോകൾ ട്രാൻസ്കോഡ് ചെയ്യുക"
},
+ "admin_email": "അഡ്മിൻ ഇമെയിൽ",
+ "admin_password": "അഡ്മിൻ പാസ്വേഡ്",
+ "administration": "അഡ്മിനിസ്ട്രേഷൻ",
+ "advanced": "വിപുലമായത്",
+ "advanced_settings_enable_alternate_media_filter_subtitle": "ഇതര മാനദണ്ഡങ്ങളെ അടിസ്ഥാനമാക്കി സിങ്ക് സമയത്ത് മീഡിയ ഫിൽട്ടർ ചെയ്യാൻ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക. എല്ലാ ആൽബങ്ങളും കണ്ടെത്തുന്നതിൽ ആപ്പിന് പ്രശ്നങ്ങളുണ്ടെങ്കിൽ മാത്രം ഇത് പരീക്ഷിക്കുക.",
+ "advanced_settings_enable_alternate_media_filter_title": "[പരീക്ഷണാടിസ്ഥാനത്തിൽ] ഇതര ഉപകരണ ആൽബം സിങ്ക് ഫിൽട്ടർ ഉപയോഗിക്കുക",
+ "advanced_settings_log_level_title": "ലോഗ് ലെവൽ: {level}",
+ "advanced_settings_prefer_remote_subtitle": "ചില ഉപകരണങ്ങളിൽ പ്രാദേശിക അസറ്റുകളിൽ നിന്ന് തംബ്നെയിലുകൾ ലോഡുചെയ്യാൻ വളരെ വേഗത കുറവാണ്. പകരം റിമോട്ട് ചിത്രങ്ങൾ ലോഡുചെയ്യാൻ ഈ ക്രമീകരണം സജീവമാക്കുക.",
+ "advanced_settings_prefer_remote_title": "റിമോട്ട് ചിത്രങ്ങൾക്ക് മുൻഗണന നൽകുക",
+ "advanced_settings_proxy_headers_subtitle": "ഓരോ നെറ്റ്വർക്ക് അഭ്യർത്ഥനയ്ക്കൊപ്പവും Immich അയയ്ക്കേണ്ട പ്രോക്സി ഹെഡറുകൾ നിർവചിക്കുക",
+ "advanced_settings_proxy_headers_title": "പ്രോക്സി ഹെഡറുകൾ",
+ "advanced_settings_readonly_mode_subtitle": "ഫോട്ടോകൾ മാത്രം കാണാൻ കഴിയുന്ന റീഡ്-ഓൺലി മോഡ് പ്രവർത്തനക്ഷമമാക്കുന്നു. ഒന്നിലധികം ചിത്രങ്ങൾ തിരഞ്ഞെടുക്കൽ, പങ്കിടൽ, കാസ്റ്റിംഗ്, ഇല്ലാതാക്കൽ എന്നിവയെല്ലാം പ്രവർത്തനരഹിതമാകും. പ്രധാന സ്ക്രീനിലെ ഉപയോക്തൃ അവതാർ വഴി റീഡ്-ഓൺലി പ്രവർത്തനക്ഷമമാക്കുക/പ്രവർത്തനരഹിതമാക്കുക.",
+ "advanced_settings_readonly_mode_title": "റീഡ്-ഓൺലി മോഡ്",
+ "advanced_settings_self_signed_ssl_subtitle": "സെർവർ എൻഡ്പോയിന്റിനായുള്ള SSL സർട്ടിഫിക്കറ്റ് പരിശോധന ഒഴിവാക്കുന്നു. സ്വയം ഒപ്പിട്ട സർട്ടിഫിക്കറ്റുകൾക്ക് ആവശ്യമാണ്.",
+ "advanced_settings_self_signed_ssl_title": "സ്വയം ഒപ്പിട്ട SSL സർട്ടിഫിക്കറ്റുകൾ അനുവദിക്കുക",
+ "advanced_settings_sync_remote_deletions_subtitle": "വെബിൽ ആ പ്രവർത്തനം നടത്തുമ്പോൾ ഈ ഉപകരണത്തിലെ ഒരു അസറ്റ് യാന്ത്രികമായി ഇല്ലാതാക്കുകയോ പുനഃസ്ഥാപിക്കുകയോ ചെയ്യുക",
+ "advanced_settings_sync_remote_deletions_title": "റിമോട്ട് ഇല്ലാതാക്കലുകൾ സിങ്ക് ചെയ്യുക [പരീക്ഷണാടിസ്ഥാനത്തിൽ]",
+ "advanced_settings_tile_subtitle": "വിപുലമായ ഉപയോക്തൃ ക്രമീകരണങ്ങൾ",
+ "advanced_settings_troubleshooting_subtitle": "ട്രബിൾഷൂട്ടിംഗിനായി അധിക ഫീച്ചറുകൾ പ്രവർത്തനക്ഷമമാക്കുക",
+ "advanced_settings_troubleshooting_title": "ട്രബിൾഷൂട്ടിംഗ്",
+ "age_months": "പ്രായം {months, plural, one {# മാസം} other {# മാസം}}",
+ "age_year_months": "പ്രായം 1 വർഷം, {months, plural, one {# മാസം} other {# മാസം}}",
+ "age_years": "{years, plural, other {പ്രായം #}}",
+ "album_added": "ആൽബം ചേർത്തു",
+ "album_added_notification_setting_description": "നിങ്ങളെ ഒരു പങ്കിട്ട ആൽബത്തിലേക്ക് ചേർക്കുമ്പോൾ ഒരു ഇമെയിൽ അറിയിപ്പ് സ്വീകരിക്കുക",
+ "album_cover_updated": "ആൽബം കവർ അപ്ഡേറ്റ് ചെയ്തു",
+ "album_delete_confirmation": "നിങ്ങൾക്ക് {album} ആൽബം ഇല്ലാതാക്കണമെന്ന് ഉറപ്പാണോ?",
+ "album_delete_confirmation_description": "ഈ ആൽബം പങ്കിട്ടതാണെങ്കിൽ, മറ്റ് ഉപയോക്താക്കൾക്ക് ഇനി ഇത് ആക്സസ് ചെയ്യാൻ കഴിയില്ല.",
+ "album_deleted": "ആൽബം ഇല്ലാതാക്കി",
+ "album_info_card_backup_album_excluded": "ഒഴിവാക്കി",
+ "album_info_card_backup_album_included": "ഉൾപ്പെടുത്തി",
+ "album_info_updated": "ആൽബം വിവരങ്ങൾ അപ്ഡേറ്റ് ചെയ്തു",
+ "album_leave": "ആൽബം വിടുകയാണോ?",
+ "album_leave_confirmation": "{album} വിട്ടുപോകണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "album_name": "ആൽബത്തിന്റെ പേര്",
+ "album_options": "ആൽബം ഓപ്ഷനുകൾ",
+ "album_remove_user": "ഉപയോക്താവിനെ നീക്കം ചെയ്യണോ?",
+ "album_remove_user_confirmation": "{user}-നെ നീക്കം ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "album_search_not_found": "നിങ്ങളുടെ തിരയലുമായി പൊരുത്തപ്പെടുന്ന ആൽബങ്ങളൊന്നും കണ്ടെത്തിയില്ല",
+ "album_share_no_users": "നിങ്ങൾ ഈ ആൽബം എല്ലാ ഉപയോക്താക്കളുമായും പങ്കിട്ടു, അല്ലെങ്കിൽ നിങ്ങൾക്ക് പങ്കിടാൻ ഉപയോക്താക്കളാരും ഇല്ലെന്നു തോന്നുന്നു.",
+ "album_summary": "ആൽബത്തിന്റെ സംഗ്രഹം",
+ "album_updated": "ആൽബം അപ്ഡേറ്റ് ചെയ്തു",
+ "album_updated_setting_description": "ഒരു പങ്കിട്ട ആൽബത്തിൽ പുതിയ അസറ്റുകൾ ഉണ്ടാകുമ്പോൾ ഒരു ഇമെയിൽ അറിയിപ്പ് സ്വീകരിക്കുക",
+ "album_user_left": "{album} വിട്ടുപോയി",
+ "album_user_removed": "{user}-നെ നീക്കം ചെയ്തു",
+ "album_viewer_appbar_delete_confirm": "നിങ്ങളുടെ അക്കൗണ്ടിൽ നിന്ന് ഈ ആൽബം ഇല്ലാതാക്കണമെന്ന് ഉറപ്പാണോ?",
+ "album_viewer_appbar_share_err_delete": "ആൽബം ഇല്ലാതാക്കുന്നതിൽ പരാജയപ്പെട്ടു",
+ "album_viewer_appbar_share_err_leave": "ആൽബം വിടുന്നതിൽ പരാജയപ്പെട്ടു",
+ "album_viewer_appbar_share_err_remove": "ആൽബത്തിൽ നിന്ന് അസറ്റുകൾ നീക്കം ചെയ്യുന്നതിൽ പ്രശ്നങ്ങളുണ്ട്",
+ "album_viewer_appbar_share_err_title": "ആൽബത്തിന്റെ ശീർഷകം മാറ്റുന്നതിൽ പരാജയപ്പെട്ടു",
+ "album_viewer_appbar_share_leave": "ആൽബം വിടുക",
+ "album_viewer_appbar_share_to": "ഇതിലേക്ക് പങ്കിടുക",
+ "album_viewer_page_share_add_users": "ഉപയോക്താക്കളെ ചേർക്കുക",
+ "album_with_link_access": "ലിങ്കുള്ള ആർക്കും ഈ ആൽബത്തിലെ ഫോട്ടോകളും ആളുകളെയും കാണാൻ അനുവദിക്കുക.",
+ "albums": "ആൽബങ്ങൾ",
+ "albums_count": "{count, plural, one {{count, number} ആൽബം} other {{count, number} ആൽബങ്ങൾ}}",
+ "albums_default_sort_order": "ഡിഫോൾട്ട് ആൽബം സോർട്ട് ഓർഡർ",
+ "albums_default_sort_order_description": "പുതിയ ആൽബങ്ങൾ സൃഷ്ടിക്കുമ്പോൾ പ്രാരംഭ അസറ്റ് സോർട്ട് ഓർഡർ.",
+ "albums_feature_description": "മറ്റ് ഉപയോക്താക്കളുമായി പങ്കിടാൻ കഴിയുന്ന അസറ്റുകളുടെ ശേഖരം.",
+ "albums_on_device_count": "ഉപകരണത്തിലെ ആൽബങ്ങൾ ({count})",
+ "all": "എല്ലാം",
+ "all_albums": "എല്ലാ ആൽബങ്ങളും",
+ "all_people": "എല്ലാ ആളുകളും",
+ "all_videos": "എല്ലാ വീഡിയോകളും",
+ "allow_dark_mode": "ഡാർക്ക് മോഡ് അനുവദിക്കുക",
+ "allow_edits": "എഡിറ്റുകൾ അനുവദിക്കുക",
+ "allow_public_user_to_download": "പൊതു ഉപയോക്താവിനെ ഡൗൺലോഡ് ചെയ്യാൻ അനുവദിക്കുക",
+ "allow_public_user_to_upload": "പൊതു ഉപയോക്താവിനെ അപ്ലോഡ് ചെയ്യാൻ അനുവദിക്കുക",
+ "alt_text_qr_code": "QR കോഡ് ചിത്രം",
+ "anti_clockwise": "അപ്രദക്ഷിണമായി",
+ "api_key": "API കീ",
+ "api_key_description": "ഈ മൂല്യം ഒരു തവണ മാത്രമേ കാണിക്കൂ. വിൻഡോ അടയ്ക്കുന്നതിന് മുമ്പ് ഇത് പകർത്തുന്നത് ഉറപ്പാക്കുക.",
+ "api_key_empty": "നിങ്ങളുടെ API കീയുടെ പേര് ശൂന്യമാകരുത്",
+ "api_keys": "API കീകൾ",
+ "app_bar_signout_dialog_content": "സൈൻ ഔട്ട് ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "app_bar_signout_dialog_ok": "അതെ",
+ "app_bar_signout_dialog_title": "സൈൻ ഔട്ട്",
+ "app_settings": "ആപ്പ് ക്രമീകരണങ്ങൾ",
+ "appears_in": "ഇതിൽ കാണപ്പെടുന്നു",
+ "apply_count": "പ്രയോഗിക്കുക ({count, number})",
+ "archive": "ആർക്കൈവ്",
+ "archive_action_prompt": "{count} എണ്ണം ആർക്കൈവിലേക്ക് ചേർത്തു",
+ "archive_or_unarchive_photo": "ഫോട്ടോ ആർക്കൈവ് ചെയ്യുക അല്ലെങ്കിൽ അൺആർക്കൈവ് ചെയ്യുക",
+ "archive_page_no_archived_assets": "ആർക്കൈവുചെയ്ത അസറ്റുകളൊന്നും കണ്ടെത്തിയില്ല",
+ "archive_page_title": "ആർക്കൈവ് ({count})",
+ "archive_size": "ആർക്കൈവ് വലുപ്പം",
+ "archive_size_description": "ഡൗൺലോഡുകൾക്കായി ആർക്കൈവ് വലുപ്പം കോൺഫിഗർ ചെയ്യുക (GiB-യിൽ)",
+ "archived": "ആർക്കൈവുചെയ്തു",
+ "archived_count": "{count, plural, other {ആർക്കൈവുചെയ്തവ #}}",
+ "are_these_the_same_person": "ഇവർ ഒരേ വ്യക്തിയാണോ?",
+ "are_you_sure_to_do_this": "ഇത് ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "asset_action_delete_err_read_only": "വായിക്കാൻ മാത്രമുള്ള അസറ്റ്(കൾ) ഇല്ലാതാക്കാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "asset_action_share_err_offline": "ഓഫ്ലൈൻ അസറ്റ്(കൾ) ലഭ്യമാക്കാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "asset_added_to_album": "ആൽബത്തിലേക്ക് ചേർത്തു",
+ "asset_adding_to_album": "ആൽബത്തിലേക്ക് ചേർത്തുകൊണ്ടിരിക്കുന്നു…",
+ "asset_description_updated": "അസറ്റിന്റെ വിവരണം അപ്ഡേറ്റ് ചെയ്തു",
+ "asset_filename_is_offline": "{filename} എന്ന അസറ്റ് ഓഫ്ലൈനാണ്",
+ "asset_has_unassigned_faces": "അസറ്റിൽ അസൈൻ ചെയ്യാത്ത മുഖങ്ങളുണ്ട്",
+ "asset_hashing": "ഹാഷിംഗ്…",
+ "asset_list_group_by_sub_title": "ഇതനുസരിച്ച് ഗ്രൂപ്പ് ചെയ്യുക",
+ "asset_list_layout_settings_dynamic_layout_title": "ഡൈനാമിക് ലേഔട്ട്",
+ "asset_list_layout_settings_group_automatically": "യാന്ത്രികം",
+ "asset_list_layout_settings_group_by": "അസറ്റുകളെ ഇതനുസരിച്ച് ഗ്രൂപ്പ് ചെയ്യുക",
+ "asset_list_layout_settings_group_by_month_day": "മാസം + ദിവസം",
+ "asset_list_layout_sub_title": "ലേഔട്ട്",
+ "asset_list_settings_subtitle": "ഫോട്ടോ ഗ്രിഡ് ലേഔട്ട് ക്രമീകരണങ്ങൾ",
+ "asset_list_settings_title": "ഫോട്ടോ ഗ്രിഡ്",
+ "asset_offline": "അസറ്റ് ഓഫ്ലൈൻ",
+ "asset_offline_description": "ഈ എക്സ്റ്റേണൽ അസറ്റ് ഇപ്പോൾ ഡിസ്കിൽ ലഭ്യമല്ല. സഹായത്തിനായി നിങ്ങളുടെ Immich അഡ്മിനിസ്ട്രേറ്ററുമായി ബന്ധപ്പെടുക.",
+ "asset_restored_successfully": "അസറ്റ് വിജയകരമായി പുനഃസ്ഥാപിച്ചു",
+ "asset_skipped": "ഒഴിവാക്കി",
+ "asset_skipped_in_trash": "ട്രാഷിൽ",
+ "asset_trashed": "അസറ്റ് ട്രാഷ് ചെയ്തു",
+ "asset_troubleshoot": "അസറ്റ് ട്രബിൾഷൂട്ട്",
+ "asset_uploaded": "അപ്ലോഡ് ചെയ്തു",
+ "asset_uploading": "അപ്ലോഡ് ചെയ്യുന്നു…",
+ "asset_viewer_settings_subtitle": "നിങ്ങളുടെ ഗാലറി വ്യൂവർ ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "asset_viewer_settings_title": "അസറ്റ് വ്യൂവർ",
+ "assets": "അസറ്റുകൾ",
+ "assets_added_count": "{count, plural, one {# അസറ്റ് ചേർത്തു} other {# അസറ്റുകൾ ചേർത്തു}}",
+ "assets_added_to_album_count": "ആൽബത്തിലേക്ക് {count, plural, one {# അസറ്റ് ചേർത്തു} other {# അസറ്റുകൾ ചേർത്തു}}",
+ "assets_added_to_albums_count": "{albumTotal, plural, one {# ആൽബത്തിലേക്ക്} other {# ആൽബങ്ങളിലേക്ക്}} {assetTotal, plural, one {# അസറ്റ് ചേർത്തു} other {# അസറ്റുകൾ ചേർത്തു}}",
+ "assets_cannot_be_added_to_album_count": "{count, plural, one {അസറ്റ്} other {അസറ്റുകൾ}} ആൽബത്തിലേക്ക് ചേർക്കാൻ കഴിയില്ല",
+ "assets_cannot_be_added_to_albums": "{count, plural, one {അസറ്റ്} other {അസറ്റുകൾ}} ഒരു ആൽബത്തിലേക്കും ചേർക്കാൻ കഴിയില്ല",
+ "assets_count": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}}",
+ "assets_deleted_permanently": "{count} അസറ്റ്(കൾ) ശാശ്വതമായി ഇല്ലാതാക്കി",
+ "assets_deleted_permanently_from_server": "{count} അസറ്റ്(കൾ) Immich സെർവറിൽ നിന്ന് ശാശ്വതമായി ഇല്ലാതാക്കി",
+ "assets_downloaded_failed": "{count, plural, one {# ഫയൽ ഡൗൺലോഡ് ചെയ്തു - {error} ഫയൽ പരാജയപ്പെട്ടു} other {# ഫയലുകൾ ഡൗൺലോഡ് ചെയ്തു - {error} ഫയലുകൾ പരാജയപ്പെട്ടു}}",
+ "assets_downloaded_successfully": "{count, plural, one {# ഫയൽ വിജയകരമായി ഡൗൺലോഡ് ചെയ്തു} other {# ഫയലുകൾ വിജയകരമായി ഡൗൺലോഡ് ചെയ്തു}}",
+ "assets_moved_to_trash_count": "{count, plural, one {# അസറ്റ് ട്രാഷിലേക്ക് മാറ്റി} other {# അസറ്റുകൾ ട്രാഷിലേക്ക് മാറ്റി}}",
+ "assets_permanently_deleted_count": "{count, plural, one {# അസറ്റ് ശാശ്വതമായി ഇല്ലാതാക്കി} other {# അസറ്റുകൾ ശാശ്വതമായി ഇല്ലാതാക്കി}}",
+ "assets_removed_count": "{count, plural, one {# അസറ്റ് നീക്കം ചെയ്തു} other {# അസറ്റുകൾ നീക്കം ചെയ്തു}}",
+ "assets_removed_permanently_from_device": "{count} അസറ്റ്(കൾ) നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്ന് ശാശ്വതമായി നീക്കം ചെയ്തു",
+ "assets_restore_confirmation": "ട്രാഷ് ചെയ്ത എല്ലാ അസറ്റുകളും പുനഃസ്ഥാപിക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? ഈ പ്രവർത്തനം പഴയപടിയാക്കാൻ കഴിയില്ല! ഓഫ്ലൈൻ അസറ്റുകളൊന്നും ഈ രീതിയിൽ പുനഃസ്ഥാപിക്കാൻ കഴിയില്ലെന്ന കാര്യം ശ്രദ്ധിക്കുക.",
+ "assets_restored_count": "{count, plural, one {# അസറ്റ് പുനഃസ്ഥാപിച്ചു} other {# അസറ്റുകൾ പുനഃസ്ഥാപിച്ചു}}",
+ "assets_restored_successfully": "{count} അസറ്റ്(കൾ) വിജയകരമായി പുനഃസ്ഥാപിച്ചു",
+ "assets_trashed": "{count} അസറ്റ്(കൾ) ട്രാഷ് ചെയ്തു",
+ "assets_trashed_count": "{count, plural, one {# അസറ്റ് ട്രാഷ് ചെയ്തു} other {# അസറ്റുകൾ ട്രാഷ് ചെയ്തു}}",
+ "assets_trashed_from_server": "{count} അസറ്റ്(കൾ) Immich സെർവറിൽ നിന്ന് ട്രാഷ് ചെയ്തു",
+ "assets_were_part_of_album_count": "{count, plural, one {അസറ്റ് ഇതിനകം} other {അസറ്റുകൾ ഇതിനകം}} ആൽബത്തിന്റെ ഭാഗമായിരുന്നു",
+ "assets_were_part_of_albums_count": "{count, plural, one {അസറ്റ് ഇതിനകം} other {അസറ്റുകൾ ഇതിനകം}} ആൽബങ്ങളുടെ ഭാഗമായിരുന്നു",
+ "authorized_devices": "അംഗീകൃത ഉപകരണങ്ങൾ",
+ "automatic_endpoint_switching_subtitle": "ലഭ്യമാകുമ്പോൾ നിശ്ചിത വൈ-ഫൈ വഴി പ്രാദേശികമായി കണക്റ്റുചെയ്യുക, മറ്റ് സ്ഥലങ്ങളിൽ ഇതര കണക്ഷനുകൾ ഉപയോഗിക്കുക",
+ "automatic_endpoint_switching_title": "യാന്ത്രിക URL സ്വിച്ചിംഗ്",
+ "autoplay_slideshow": "സ്ലൈഡ്ഷോ യാന്ത്രികമായി പ്ലേ ചെയ്യുക",
+ "back": "തിരികെ",
+ "back_close_deselect": "പുറകോട്ട്, അടയ്ക്കുക, അല്ലെങ്കിൽ തിരഞ്ഞെടുത്തത് മാറ്റുക",
+ "background_backup_running_error": "പശ്ചാത്തല ബാക്കപ്പ് ഇപ്പോൾ പ്രവർത്തിക്കുന്നു, മാനുവൽ ബാക്കപ്പ് ആരംഭിക്കാൻ കഴിയില്ല",
+ "background_location_permission": "പശ്ചാത്തല ലൊക്കേഷൻ അനുമതി",
+ "background_location_permission_content": "പശ്ചാത്തലത്തിൽ പ്രവർത്തിക്കുമ്പോൾ നെറ്റ്വർക്കുകൾ മാറുന്നതിന്, Immich-ന് എപ്പോഴും കൃത്യമായ ലൊക്കേഷൻ ആക്സസ് ഉണ്ടായിരിക്കണം, അതുവഴി ആപ്പിന് വൈ-ഫൈ നെറ്റ്വർക്കിന്റെ പേര് വായിക്കാൻ കഴിയും",
+ "background_options": "പശ്ചാത്തല ഓപ്ഷനുകൾ",
+ "backup": "ബാക്കപ്പ്",
+ "backup_album_selection_page_albums_device": "ഉപകരണത്തിലെ ആൽബങ്ങൾ ({count})",
+ "backup_album_selection_page_albums_tap": "ഉൾപ്പെടുത്താൻ ടാപ്പുചെയ്യുക, ഒഴിവാക്കാൻ ഡബിൾ ടാപ്പുചെയ്യുക",
+ "backup_album_selection_page_assets_scatter": "അസറ്റുകൾ ഒന്നിലധികം ആൽബങ്ങളിലായി വ്യാപിച്ചുകിടക്കാം. അതിനാൽ, ബാക്കപ്പ് പ്രക്രിയയിൽ ആൽബങ്ങൾ ഉൾപ്പെടുത്തുകയോ ഒഴിവാക്കുകയോ ചെയ്യാം.",
+ "backup_album_selection_page_select_albums": "ആൽബങ്ങൾ തിരഞ്ഞെടുക്കുക",
+ "backup_album_selection_page_selection_info": "തിരഞ്ഞെടുക്കൽ വിവരം",
+ "backup_album_selection_page_total_assets": "ആകെ സവിശേഷമായ അസറ്റുകൾ",
+ "backup_albums_sync": "ബാക്കപ്പ് ആൽബം സിൻക്രൊണൈസേഷൻ",
+ "backup_all": "എല്ലാം ബാക്കപ്പ് ചെയ്യുക",
+ "backup_background_service_backup_failed_message": "അസറ്റുകൾ ബാക്കപ്പ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു. വീണ്ടും ശ്രമിക്കുന്നു…",
+ "backup_background_service_connection_failed_message": "സെർവറിലേക്ക് കണക്റ്റുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു. വീണ്ടും ശ്രമിക്കുന്നു…",
+ "backup_background_service_current_upload_notification": "{filename} അപ്ലോഡ് ചെയ്യുന്നു",
+ "backup_background_service_default_notification": "പുതിയ അസറ്റുകൾക്കായി പരിശോധിക്കുന്നു…",
+ "backup_background_service_error_title": "ബാക്കപ്പ് പിശക്",
+ "backup_background_service_in_progress_notification": "നിങ്ങളുടെ അസറ്റുകൾ ബാക്കപ്പ് ചെയ്യുന്നു…",
+ "backup_background_service_upload_failure_notification": "{filename} അപ്ലോഡ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "backup_controller_page_albums": "ബാക്കപ്പ് ആൽബങ്ങൾ",
+ "backup_controller_page_background_app_refresh_disabled_content": "പശ്ചാത്തല ബാക്കപ്പ് ഉപയോഗിക്കുന്നതിന്, ക്രമീകരണങ്ങൾ > പൊതുവായത് > പശ്ചാത്തല ആപ്പ് റിഫ്രഷ് എന്നതിൽ പശ്ചാത്തല ആപ്പ് റിഫ്രഷ് പ്രവർത്തനക്ഷമമാക്കുക.",
+ "backup_controller_page_background_app_refresh_disabled_title": "പശ്ചാത്തല ആപ്പ് റിഫ്രഷ് പ്രവർത്തനരഹിതമാക്കി",
+ "backup_controller_page_background_app_refresh_enable_button_text": "ക്രമീകരണങ്ങളിലേക്ക് പോകുക",
+ "backup_controller_page_background_battery_info_link": "എങ്ങനെയെന്ന് കാണിക്കുക",
+ "backup_controller_page_background_battery_info_message": "മികച്ച പശ്ചാത്തല ബാക്കപ്പ് അനുഭവത്തിനായി, Immich-ന്റെ പശ്ചാത്തല പ്രവർത്തനം നിയന്ത്രിക്കുന്ന ഏതെങ്കിലും ബാറ്ററി ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനരഹിതമാക്കുക.\n\nഇത് ഉപകരണത്തെ ആശ്രയിച്ചിരിക്കുന്നതിനാൽ, നിങ്ങളുടെ ഉപകരണ നിർമ്മാതാവിനുള്ള ആവശ്യമായ വിവരങ്ങൾ ദയവായി കണ്ടെത്തുക.",
+ "backup_controller_page_background_battery_info_ok": "ശരി",
+ "backup_controller_page_background_battery_info_title": "ബാറ്ററി ഒപ്റ്റിമൈസേഷനുകൾ",
+ "backup_controller_page_background_charging": "ചാർജ് ചെയ്യുമ്പോൾ മാത്രം",
+ "backup_controller_page_background_configure_error": "പശ്ചാത്തല സേവനം കോൺഫിഗർ ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "backup_controller_page_background_delay": "പുതിയ അസറ്റുകളുടെ ബാക്കപ്പ് വൈകിപ്പിക്കുക: {duration}",
+ "backup_controller_page_background_description": "ആപ്പ് തുറക്കാതെ തന്നെ പുതിയ അസറ്റുകൾ യാന്ത്രികമായി ബാക്കപ്പ് ചെയ്യാൻ പശ്ചാത്തല സേവനം ഓണാക്കുക",
+ "backup_controller_page_background_is_off": "യാന്ത്രിക പശ്ചാത്തല ബാക്കപ്പ് ഓഫാണ്",
+ "backup_controller_page_background_is_on": "യാന്ത്രിക പശ്ചാത്തല ബാക്കപ്പ് ഓണാണ്",
+ "backup_controller_page_background_turn_off": "പശ്ചാത്തല സേവനം ഓഫാക്കുക",
+ "backup_controller_page_background_turn_on": "പശ്ചാത്തല സേവനം ഓണാക്കുക",
+ "backup_controller_page_background_wifi": "വൈ-ഫൈയിൽ മാത്രം",
+ "backup_controller_page_backup": "ബാക്കപ്പ്",
+ "backup_controller_page_backup_selected": "തിരഞ്ഞെടുത്തവ: ",
+ "backup_controller_page_backup_sub": "ബാക്കപ്പ് ചെയ്ത ഫോട്ടോകളും വീഡിയോകളും",
+ "backup_controller_page_created": "സൃഷ്ടിച്ചത്: {date}",
+ "backup_controller_page_desc_backup": "ആപ്പ് തുറക്കുമ്പോൾ പുതിയ അസറ്റുകൾ യാന്ത്രികമായി സെർവറിലേക്ക് അപ്ലോഡ് ചെയ്യാൻ ഫോർഗ്രൗണ്ട് ബാക്കപ്പ് ഓണാക്കുക.",
+ "backup_controller_page_excluded": "ഒഴിവാക്കിയവ: ",
+ "backup_controller_page_failed": "പരാജയപ്പെട്ടു ({count})",
+ "backup_controller_page_filename": "ഫയലിന്റെ പേര്: {filename}[{size}]",
+ "backup_controller_page_id": "ഐഡി: {id}",
+ "backup_controller_page_info": "ബാക്കപ്പ് വിവരങ്ങൾ",
+ "backup_controller_page_none_selected": "ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല",
+ "backup_controller_page_remainder": "ശേഷിക്കുന്നത്",
+ "backup_controller_page_remainder_sub": "തിരഞ്ഞെടുത്തവയിൽ നിന്ന് ബാക്കപ്പ് ചെയ്യാനുള്ള ശേഷിക്കുന്ന ഫോട്ടോകളും വീഡിയോകളും",
+ "backup_controller_page_server_storage": "സെർവർ സ്റ്റോറേജ്",
+ "backup_controller_page_start_backup": "ബാക്കപ്പ് ആരംഭിക്കുക",
+ "backup_controller_page_status_off": "യാന്ത്രിക ഫോർഗ്രൗണ്ട് ബാക്കപ്പ് ഓഫാണ്",
+ "backup_controller_page_status_on": "യാന്ത്രിക ഫോർഗ്രൗണ്ട് ബാക്കപ്പ് ഓണാണ്",
+ "backup_controller_page_storage_format": "{total}-ൽ {used} ഉപയോഗിച്ചു",
+ "backup_controller_page_to_backup": "ബാക്കപ്പ് ചെയ്യേണ്ട ആൽബങ്ങൾ",
+ "backup_controller_page_total_sub": "തിരഞ്ഞെടുത്ത ആൽബങ്ങളിൽ നിന്നുള്ള എല്ലാ സവിശേഷമായ ഫോട്ടോകളും വീഡിയോകളും",
+ "backup_controller_page_turn_off": "ഫോർഗ്രൗണ്ട് ബാക്കപ്പ് ഓഫാക്കുക",
+ "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": "അപ്ലോഡ് ഇതിനകം പുരോഗമിക്കുന്നു. കുറച്ച് സമയത്തിന് ശേഷം ശ്രമിക്കുക",
+ "backup_manual_success": "വിജയം",
+ "backup_manual_title": "അപ്ലോഡ് നില",
+ "backup_options": "ബാക്കപ്പ് ഓപ്ഷനുകൾ",
+ "backup_options_page_title": "ബാക്കപ്പ് ഓപ്ഷനുകൾ",
+ "backup_setting_subtitle": "പശ്ചാത്തല, മുൻനിര അപ്ലോഡ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "backup_settings_subtitle": "അപ്ലോഡ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "backward": "പിന്നോട്ട്",
+ "biometric_auth_enabled": "ബയോമെട്രിക് പ്രാമാണീകരണം പ്രവർത്തനക്ഷമമാക്കി",
+ "biometric_locked_out": "ബയോമെട്രിക് പ്രാമാണീകരണത്തിൽ നിന്ന് നിങ്ങളെ ലോക്ക് ഔട്ട് ചെയ്തിരിക്കുന്നു",
+ "biometric_no_options": "ബയോമെട്രിക് ഓപ്ഷനുകളൊന്നും ലഭ്യമല്ല",
+ "biometric_not_available": "ഈ ഉപകരണത്തിൽ ബയോമെട്രിക് പ്രാമാണീകരണം ലഭ്യമല്ല",
+ "birthdate_saved": "ജനനത്തീയതി വിജയകരമായി സേവ് ചെയ്തു",
+ "birthdate_set_description": "ഒരു ഫോട്ടോ എടുക്കുമ്പോഴുള്ള ഈ വ്യക്തിയുടെ പ്രായം കണക്കാക്കാൻ ജനനത്തീയതി ഉപയോഗിക്കുന്നു.",
+ "blurred_background": "മങ്ങിയ പശ്ചാത്തലം",
+ "bugs_and_feature_requests": "ബഗുകളും ഫീച്ചർ അഭ്യർത്ഥനകളും",
+ "build": "ബിൽഡ്",
+ "build_image": "ഇമേജ് നിർമ്മിക്കുക",
+ "bulk_delete_duplicates_confirmation": "നിങ്ങൾക്ക് {count, plural, one {# ഡ്യൂപ്ലിക്കേറ്റ് അസറ്റ്} other {# ഡ്യൂപ്ലിക്കേറ്റ് അസറ്റുകൾ}} ബൾക്കായി ഇല്ലാതാക്കണമെന്ന് ഉറപ്പാണോ? ഇത് ഓരോ ഗ്രൂപ്പിലെയും ഏറ്റവും വലിയ അസറ്റ് നിലനിർത്തുകയും മറ്റ് എല്ലാ ഡ്യൂപ്ലിക്കേറ്റുകളും ശാശ്വതമായി ഇല്ലാതാക്കുകയും ചെയ്യും. ഈ പ്രവർത്തനം പഴയപടിയാക്കാൻ കഴിയില്ല!",
+ "bulk_keep_duplicates_confirmation": "നിങ്ങൾക്ക് {count, plural, one {# ഡ്യൂപ്ലിക്കേറ്റ് അസറ്റ്} other {# ഡ്യൂപ്ലിക്കേറ്റ് അസറ്റുകൾ}} നിലനിർത്തണമെന്ന് ഉറപ്പാണോ? ഇത് ഒന്നും ഇല്ലാതാക്കാതെ എല്ലാ ഡ്യൂപ്ലിക്കേറ്റ് ഗ്രൂപ്പുകളെയും പരിഹരിക്കും.",
+ "bulk_trash_duplicates_confirmation": "നിങ്ങൾക്ക് {count, plural, one {# ഡ്യൂപ്ലിക്കേറ്റ് അസറ്റ്} other {# ഡ്യൂപ്ലിക്കേറ്റ് അസറ്റുകൾ}} ബൾക്കായി ട്രാഷ് ചെയ്യണമെന്ന് ഉറപ്പാണോ? ഇത് ഓരോ ഗ്രൂപ്പിലെയും ഏറ്റവും വലിയ അസറ്റ് നിലനിർത്തുകയും മറ്റ് എല്ലാ ഡ്യൂപ്ലിക്കേറ്റുകളും ട്രാഷ് ചെയ്യുകയും ചെയ്യും.",
+ "buy": "Immich വാങ്ങുക",
+ "cache_settings_clear_cache_button": "കാഷെ ക്ലിയർ ചെയ്യുക",
+ "cache_settings_clear_cache_button_title": "ആപ്പിന്റെ കാഷെ ക്ലിയർ ചെയ്യുന്നു. കാഷെ പുനർനിർമ്മിക്കുന്നതുവരെ ഇത് ആപ്പിന്റെ പ്രകടനത്തെ സാരമായി ബാധിക്കും.",
+ "cache_settings_duplicated_assets_clear_button": "ക്ലിയർ ചെയ്യുക",
+ "cache_settings_duplicated_assets_subtitle": "ആപ്പ് അവഗണിച്ച ഫോട്ടോകളും വീഡിയോകളും",
+ "cache_settings_duplicated_assets_title": "ഡ്യൂപ്ലിക്കേറ്റ് അസറ്റുകൾ ({count})",
+ "cache_settings_statistics_album": "ലൈബ്രറി തംബ്നെയിലുകൾ",
+ "cache_settings_statistics_full": "പൂർണ്ണ ചിത്രങ്ങൾ",
+ "cache_settings_statistics_shared": "പങ്കിട്ട ആൽബം തംബ്നെയിലുകൾ",
+ "cache_settings_statistics_thumbnail": "തംബ്നെയിലുകൾ",
+ "cache_settings_statistics_title": "കാഷെ ഉപയോഗം",
+ "cache_settings_subtitle": "Immich മൊബൈൽ ആപ്ലിക്കേഷന്റെ കാഷിംഗ് സ്വഭാവം നിയന്ത്രിക്കുക",
+ "cache_settings_tile_subtitle": "പ്രാദേശിക സ്റ്റോറേജ് സ്വഭാവം നിയന്ത്രിക്കുക",
+ "cache_settings_tile_title": "പ്രാദേശിക സ്റ്റോറേജ്",
+ "cache_settings_title": "കാഷിംഗ് ക്രമീകരണങ്ങൾ",
+ "camera": "ക്യാമറ",
+ "camera_brand": "ക്യാമറ ബ്രാൻഡ്",
+ "camera_model": "ക്യാമറ മോഡൽ",
+ "cancel": "റദ്ദാക്കുക",
+ "cancel_search": "തിരയൽ റദ്ദാക്കുക",
+ "canceled": "റദ്ദാക്കി",
+ "canceling": "റദ്ദാക്കുന്നു",
+ "cannot_merge_people": "ആളുകളെ ലയിപ്പിക്കാൻ കഴിയില്ല",
+ "cannot_undo_this_action": "നിങ്ങൾക്ക് ഈ പ്രവർത്തനം പഴയപടിയാക്കാൻ കഴിയില്ല!",
+ "cannot_update_the_description": "വിവരണം അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "cast": "കാസ്റ്റ്",
+ "cast_description": "ലഭ്യമായ കാസ്റ്റ് ഡെസ്റ്റിനേഷനുകൾ കോൺഫിഗർ ചെയ്യുക",
+ "change_date": "തീയതി മാറ്റുക",
+ "change_description": "വിവരണം മാറ്റുക",
+ "change_display_order": "പ്രദർശന ക്രമം മാറ്റുക",
+ "change_expiration_time": "കാലഹരണപ്പെടുന്ന സമയം മാറ്റുക",
+ "change_location": "സ്ഥാനം മാറ്റുക",
+ "change_name": "പേര് മാറ്റുക",
+ "change_name_successfully": "പേര് വിജയകരമായി മാറ്റി",
+ "change_password": "പാസ്വേഡ് മാറ്റുക",
+ "change_password_description": "ഇത് നിങ്ങൾ ആദ്യമായി സിസ്റ്റത്തിൽ സൈൻ ഇൻ ചെയ്യുന്നതുകൊണ്ടോ അല്ലെങ്കിൽ നിങ്ങളുടെ പാസ്വേഡ് മാറ്റാൻ ഒരു അഭ്യർത്ഥന നടത്തിയതുകൊണ്ടോ ആകാം. ദയവായി താഴെ പുതിയ പാസ്വേഡ് നൽകുക.",
+ "change_password_form_confirm_password": "പാസ്വേഡ് സ്ഥിരീകരിക്കുക",
+ "change_password_form_description": "നമസ്കാരം {name},\n\nഇത് നിങ്ങൾ ആദ്യമായി സിസ്റ്റത്തിൽ സൈൻ ഇൻ ചെയ്യുന്നതുകൊണ്ടോ അല്ലെങ്കിൽ നിങ്ങളുടെ പാസ്വേഡ് മാറ്റാൻ ഒരു അഭ്യർത്ഥന നടത്തിയതുകൊണ്ടോ ആകാം. ദയവായി താഴെ പുതിയ പാസ്വേഡ് നൽകുക.",
+ "change_password_form_new_password": "പുതിയ പാസ്വേഡ്",
+ "change_password_form_password_mismatch": "പാസ്വേഡുകൾ പൊരുത്തപ്പെടുന്നില്ല",
+ "change_password_form_reenter_new_password": "പുതിയ പാസ്വേഡ് വീണ്ടും നൽകുക",
+ "change_pin_code": "പിൻ കോഡ് മാറ്റുക",
+ "change_your_password": "നിങ്ങളുടെ പാസ്വേഡ് മാറ്റുക",
+ "changed_visibility_successfully": "ദൃശ്യത വിജയകരമായി മാറ്റി",
+ "charging": "ചാർജ്ജ് ചെയ്യുന്നു",
+ "charging_requirement_mobile_backup": "പശ്ചാത്തല ബാക്കപ്പിന് ഉപകരണം ചാർജ് ചെയ്യേണ്ടതുണ്ട്",
+ "check_corrupt_asset_backup": "കേടായ അസറ്റ് ബാക്കപ്പുകൾ പരിശോധിക്കുക",
+ "check_corrupt_asset_backup_button": "പരിശോധന നടത്തുക",
+ "check_corrupt_asset_backup_description": "എല്ലാ അസറ്റുകളും ബാക്കപ്പ് ചെയ്ത ശേഷം, വൈ-ഫൈയിൽ മാത്രം ഈ പരിശോധന നടത്തുക. നടപടിക്രമത്തിന് കുറച്ച് മിനിറ്റുകൾ എടുത്തേക്കാം.",
+ "check_logs": "ലോഗുകൾ പരിശോധിക്കുക",
+ "choose_matching_people_to_merge": "ലയിപ്പിക്കാൻ പൊരുത്തപ്പെടുന്ന ആളുകളെ തിരഞ്ഞെടുക്കുക",
+ "city": "നഗരം",
+ "clear": "ക്ലിയർ ചെയ്യുക",
+ "clear_all": "എല്ലാം ക്ലിയർ ചെയ്യുക",
+ "clear_all_recent_searches": "അടുത്തിടെ നടത്തിയ എല്ലാ തിരയലുകളും ക്ലിയർ ചെയ്യുക",
+ "clear_file_cache": "ഫയൽ കാഷെ ക്ലിയർ ചെയ്യുക",
+ "clear_message": "സന്ദേശം ക്ലിയർ ചെയ്യുക",
+ "clear_value": "മൂല്യം ക്ലിയർ ചെയ്യുക",
+ "client_cert_dialog_msg_confirm": "ശരി",
+ "client_cert_enter_password": "പാസ്വേഡ് നൽകുക",
+ "client_cert_import": "ഇമ്പോർട്ട് ചെയ്യുക",
+ "client_cert_import_success_msg": "ക്ലയിന്റ് സർട്ടിഫിക്കറ്റ് ഇമ്പോർട്ടുചെയ്തു",
+ "client_cert_invalid_msg": "അസാധുവായ സർട്ടിഫിക്കറ്റ് ഫയൽ അല്ലെങ്കിൽ തെറ്റായ പാസ്വേഡ്",
+ "client_cert_remove_msg": "ക്ലയിന്റ് സർട്ടിഫിക്കറ്റ് നീക്കംചെയ്തു",
+ "client_cert_subtitle": "PKCS12 (.p12, .pfx) ഫോർമാറ്റ് മാത്രം പിന്തുണയ്ക്കുന്നു. ലോഗിൻ ചെയ്യുന്നതിന് മുമ്പ് മാത്രമേ സർട്ടിഫിക്കറ്റ് ഇമ്പോർട്ട്/നീക്കംചെയ്യൽ ലഭ്യമാകൂ",
+ "client_cert_title": "SSL ക്ലയിന്റ് സർട്ടിഫിക്കറ്റ്",
+ "clockwise": "പ്രദക്ഷിണമായി",
+ "close": "അടയ്ക്കുക",
+ "collapse": "ചുരുക്കുക",
+ "collapse_all": "എല്ലാം ചുരുക്കുക",
+ "color": "നിറം",
+ "color_theme": "കളർ തീം",
+ "comment_deleted": "അഭിപ്രായം ഇല്ലാതാക്കി",
+ "comment_options": "അഭിപ്രായത്തിനുള്ള ഓപ്ഷനുകൾ",
+ "comments_and_likes": "അഭിപ്രായങ്ങളും ലൈക്കുകളും",
+ "comments_are_disabled": "അഭിപ്രായങ്ങൾ പ്രവർത്തനരഹിതമാക്കി",
+ "common_create_new_album": "പുതിയ ആൽബം ഉണ്ടാക്കുക",
+ "common_server_error": "നിങ്ങളുടെ നെറ്റ്വർക്ക് കണക്ഷൻ പരിശോധിക്കുക, സെർവർ ലഭ്യമാണെന്നും ആപ്പ്/സെർവർ പതിപ്പുകൾ അനുയോജ്യമാണെന്നും ഉറപ്പാക്കുക.",
+ "completed": "പൂർത്തിയായി",
+ "confirm": "സ്ഥിരീകരിക്കുക",
+ "confirm_admin_password": "അഡ്മിൻ പാസ്വേഡ് സ്ഥിരീകരിക്കുക",
+ "confirm_delete_face": "{name} എന്ന മുഖം അസറ്റിൽ നിന്ന് ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "confirm_delete_shared_link": "ഈ പങ്കിട്ട ലിങ്ക് ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "confirm_keep_this_delete_others": "ഈ അസറ്റ് ഒഴികെ സ്റ്റാക്കിലെ മറ്റെല്ലാ അസറ്റുകളും ഇല്ലാതാക്കപ്പെടും. തുടരണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "confirm_new_pin_code": "പുതിയ പിൻ കോഡ് സ്ഥിരീകരിക്കുക",
+ "confirm_password": "പാസ്വേഡ് സ്ഥിരീകരിക്കുക",
+ "confirm_tag_face": "ഈ മുഖം {name} എന്ന് ടാഗ് ചെയ്യണോ?",
+ "confirm_tag_face_unnamed": "ഈ മുഖം ടാഗ് ചെയ്യണോ?",
+ "connected_device": "ബന്ധിപ്പിച്ച ഉപകരണം",
+ "connected_to": "ഇതുമായി ബന്ധിപ്പിച്ചു",
+ "contain": "ഉൾക്കൊള്ളുക",
+ "context": "സന്ദർഭം",
+ "continue": "തുടരുക",
+ "control_bottom_app_bar_create_new_album": "പുതിയ ആൽബം ഉണ്ടാക്കുക",
+ "control_bottom_app_bar_delete_from_immich": "Immich-ൽ നിന്ന് ഇല്ലാതാക്കുക",
+ "control_bottom_app_bar_delete_from_local": "ഉപകരണത്തിൽ നിന്ന് ഇല്ലാതാക്കുക",
+ "control_bottom_app_bar_edit_location": "സ്ഥാനം എഡിറ്റുചെയ്യുക",
+ "control_bottom_app_bar_edit_time": "തീയതിയും സമയവും എഡിറ്റുചെയ്യുക",
+ "control_bottom_app_bar_share_link": "ലിങ്ക് പങ്കിടുക",
+ "control_bottom_app_bar_share_to": "ഇതിലേക്ക് പങ്കിടുക",
+ "control_bottom_app_bar_trash_from_immich": "ട്രാഷിലേക്ക് മാറ്റുക",
+ "copied_image_to_clipboard": "ചിത്രം ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി.",
+ "copied_to_clipboard": "ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി!",
+ "copy_error": "പകർത്തുന്നതിൽ പിശക്",
+ "copy_file_path": "ഫയൽ പാത്ത് പകർത്തുക",
+ "copy_image": "ചിത്രം പകർത്തുക",
+ "copy_link": "ലിങ്ക് പകർത്തുക",
+ "copy_link_to_clipboard": "ലിങ്ക് ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തുക",
+ "copy_password": "പാസ്വേഡ് പകർത്തുക",
+ "copy_to_clipboard": "ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തുക",
+ "country": "രാജ്യം",
+ "cover": "കവർ",
+ "covers": "കവറുകൾ",
+ "create": "സൃഷ്ടിക്കുക",
+ "create_album": "ആൽബം ഉണ്ടാക്കുക",
+ "create_album_page_untitled": "പേരില്ലാത്തത്",
+ "create_library": "ലൈബ്രറി ഉണ്ടാക്കുക",
+ "create_link": "ലിങ്ക് ഉണ്ടാക്കുക",
+ "create_link_to_share": "പങ്കിടാൻ ലിങ്ക് ഉണ്ടാക്കുക",
+ "create_link_to_share_description": "തിരഞ്ഞെടുത്ത ഫോട്ടോ(കൾ) കാണാൻ ലിങ്കുള്ള ആർക്കും അനുവാദം നൽകുക",
+ "create_new": "പുതിയത് ഉണ്ടാക്കുക",
+ "create_new_person": "പുതിയ വ്യക്തിയെ ഉണ്ടാക്കുക",
+ "create_new_person_hint": "തിരഞ്ഞെടുത്ത അസറ്റുകൾ ഒരു പുതിയ വ്യക്തിക്ക് നൽകുക",
+ "create_new_user": "പുതിയ ഉപയോക്താവിനെ ഉണ്ടാക്കുക",
+ "create_shared_album_page_share_add_assets": "അസറ്റുകൾ ചേർക്കുക",
+ "create_shared_album_page_share_select_photos": "ഫോട്ടോകൾ തിരഞ്ഞെടുക്കുക",
+ "create_shared_link": "പങ്കിട്ട ലിങ്ക് ഉണ്ടാക്കുക",
+ "create_tag": "ടാഗ് ഉണ്ടാക്കുക",
+ "create_tag_description": "ഒരു പുതിയ ടാഗ് ഉണ്ടാക്കുക. നെസ്റ്റഡ് ടാഗുകൾക്കായി, ഫോർവേഡ് സ്ലാഷുകൾ ഉൾപ്പെടെ ടാഗിന്റെ പൂർണ്ണ പാത നൽകുക.",
+ "create_user": "ഉപയോക്താവിനെ ഉണ്ടാക്കുക",
+ "created": "സൃഷ്ടിച്ചത്",
+ "created_at": "സൃഷ്ടിച്ചത്",
+ "creating_linked_albums": "ബന്ധിപ്പിച്ച ആൽബങ്ങൾ ഉണ്ടാക്കുന്നു...",
+ "crop": "ക്രോപ്പ് ചെയ്യുക",
+ "curated_object_page_title": "വസ്തുക്കൾ",
+ "current_device": "നിലവിലെ ഉപകരണം",
+ "current_pin_code": "നിലവിലെ പിൻ കോഡ്",
+ "current_server_address": "നിലവിലെ സെർവർ വിലാസം",
+ "custom_locale": "കസ്റ്റം ലൊക്കേൽ",
+ "custom_locale_description": "ഭാഷയെയും പ്രദേശത്തെയും അടിസ്ഥാനമാക്കി തീയതികളും അക്കങ്ങളും ഫോർമാറ്റ് ചെയ്യുക",
+ "custom_url": "കസ്റ്റം URL",
+ "daily_title_text_date": "E, MMM dd",
+ "daily_title_text_date_year": "E, MMM dd, yyyy",
+ "dark": "ഇരുണ്ടത്",
+ "dark_theme": "ഡാർക്ക് തീം ടോഗിൾ ചെയ്യുക",
+ "date_after": "ഇതിനു ശേഷമുള്ള തീയതി",
+ "date_and_time": "തീയതിയും സമയവും",
+ "date_before": "ഇതിനു മുമ്പുള്ള തീയതി",
+ "date_format": "E, LLL d, y • h:mm a",
+ "date_of_birth_saved": "ജനനത്തീയതി വിജയകരമായി സേവ് ചെയ്തു",
+ "date_range": "തീയതി പരിധി",
+ "day": "ദിവസം",
+ "days": "ദിവസങ്ങൾ",
+ "deduplicate_all": "എല്ലാ ഡ്യൂപ്ലിക്കേറ്റുകളും ഒഴിവാക്കുക",
+ "deduplication_criteria_1": "ചിത്രത്തിന്റെ വലുപ്പം (ബൈറ്റുകളിൽ)",
+ "deduplication_criteria_2": "EXIF ഡാറ്റയുടെ എണ്ണം",
+ "deduplication_info": "ഡ്യൂപ്ലിക്കേഷൻ ഒഴിവാക്കൽ വിവരം",
+ "deduplication_info_description": "അസറ്റുകൾ യാന്ത്രികമായി മുൻകൂട്ടി തിരഞ്ഞെടുക്കുന്നതിനും ഡ്യൂപ്ലിക്കേറ്റുകൾ ബൾക്കായി നീക്കം ചെയ്യുന്നതിനും, ഞങ്ങൾ ഇവ പരിഗണിക്കുന്നു:",
+ "default_locale": "ഡിഫോൾട്ട് ലൊക്കേൽ",
+ "default_locale_description": "നിങ്ങളുടെ ബ്രൗസർ ലൊക്കേലിനെ അടിസ്ഥാനമാക്കി തീയതികളും അക്കങ്ങളും ഫോർമാറ്റ് ചെയ്യുക",
+ "delete": "ഇല്ലാതാക്കുക",
+ "delete_action_confirmation_message": "ഈ അസറ്റ് ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? ഈ പ്രവർത്തനം അസറ്റിനെ സെർവറിന്റെ ട്രാഷിലേക്ക് മാറ്റും, കൂടാതെ ഇത് പ്രാദേശികമായി ഇല്ലാതാക്കണോ എന്ന് ചോദിക്കുകയും ചെയ്യും",
+ "delete_action_prompt": "{count} എണ്ണം ഇല്ലാതാക്കി",
+ "delete_album": "ആൽബം ഇല്ലാതാക്കുക",
+ "delete_api_key_prompt": "ഈ API കീ ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "delete_dialog_alert": "ഈ ഇനങ്ങൾ Immich-ൽ നിന്നും നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്നും ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും",
+ "delete_dialog_alert_local": "ഈ ഇനങ്ങൾ നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്ന് ശാശ്വതമായി നീക്കം ചെയ്യപ്പെടും, പക്ഷേ Immich സെർവറിൽ തുടർന്നും ലഭ്യമാകും",
+ "delete_dialog_alert_local_non_backed_up": "ചില ഇനങ്ങൾ Immich-ലേക്ക് ബാക്കപ്പ് ചെയ്തിട്ടില്ല, അവ നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്ന് ശാശ്വതമായി നീക്കം ചെയ്യപ്പെടും",
+ "delete_dialog_alert_remote": "ഈ ഇനങ്ങൾ Immich സെർവറിൽ നിന്ന് ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും",
+ "delete_dialog_ok_force": "എന്തായാലും ഇല്ലാതാക്കുക",
+ "delete_dialog_title": "ശാശ്വതമായി ഇല്ലാതാക്കുക",
+ "delete_duplicates_confirmation": "ഈ ഡ്യൂപ്ലിക്കേറ്റുകൾ ശാശ്വതമായി ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "delete_face": "മുഖം ഇല്ലാതാക്കുക",
+ "delete_key": "കീ ഇല്ലാതാക്കുക",
+ "delete_library": "ലൈബ്രറി ഇല്ലാതാക്കുക",
+ "delete_link": "ലിങ്ക് ഇല്ലാതാക്കുക",
+ "delete_local_action_prompt": "{count} എണ്ണം പ്രാദേശികമായി ഇല്ലാതാക്കി",
+ "delete_local_dialog_ok_backed_up_only": "ബാക്കപ്പ് ചെയ്തവ മാത്രം ഇല്ലാതാക്കുക",
+ "delete_local_dialog_ok_force": "എന്തായാലും ഇല്ലാതാക്കുക",
+ "delete_others": "മറ്റുള്ളവ ഇല്ലാതാക്കുക",
+ "delete_permanently": "ശാശ്വതമായി ഇല്ലാതാക്കുക",
+ "delete_permanently_action_prompt": "{count} എണ്ണം ശാശ്വതമായി ഇല്ലാതാക്കി",
+ "delete_shared_link": "പങ്കിട്ട ലിങ്ക് ഇല്ലാതാക്കുക",
+ "delete_shared_link_dialog_title": "പങ്കിട്ട ലിങ്ക് ഇല്ലാതാക്കുക",
+ "delete_tag": "ടാഗ് ഇല്ലാതാക്കുക",
+ "delete_tag_confirmation_prompt": "{tagName} എന്ന ടാഗ് ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "delete_user": "ഉപയോക്താവിനെ ഇല്ലാതാക്കുക",
+ "deleted_shared_link": "പങ്കിട്ട ലിങ്ക് ഇല്ലാതാക്കി",
+ "deletes_missing_assets": "ഡിസ്കിൽ നിന്ന് കാണാതായ അസറ്റുകൾ ഇല്ലാതാക്കുന്നു",
+ "description": "വിവരണം",
+ "description_input_hint_text": "വിവരണം ചേർക്കുക...",
+ "description_input_submit_error": "വിവരണം അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പിശക്, കൂടുതൽ വിവരങ്ങൾക്ക് ലോഗ് പരിശോധിക്കുക",
+ "deselect_all": "എല്ലാം തിരഞ്ഞെടുത്തത് മാറ്റുക",
+ "details": "വിശദാംശങ്ങൾ",
+ "direction": "ദിശ",
+ "disabled": "പ്രവർത്തനരഹിതം",
+ "disallow_edits": "എഡിറ്റുകൾ അനുവദിക്കരുത്",
+ "discord": "ഡിസ്കോർഡ്",
+ "discover": "കണ്ടെത്തുക",
+ "discovered_devices": "കണ്ടെത്തിയ ഉപകരണങ്ങൾ",
+ "dismiss_all_errors": "എല്ലാ പിശകുകളും തള്ളിക്കളയുക",
+ "dismiss_error": "പിശക് തള്ളിക്കളയുക",
+ "display_options": "പ്രദർശന ഓപ്ഷനുകൾ",
+ "display_order": "പ്രദർശന ക്രമം",
+ "display_original_photos": "യഥാർത്ഥ ഫോട്ടോകൾ പ്രദർശിപ്പിക്കുക",
+ "display_original_photos_setting_description": "യഥാർത്ഥ അസറ്റ് വെബ്-അനുയോജ്യമാകുമ്പോൾ, തംബ്നെയിലുകൾക്ക് പകരം യഥാർത്ഥ ഫോട്ടോ പ്രദർശിപ്പിക്കാൻ മുൻഗണന നൽകുക. ഇത് ഫോട്ടോ പ്രദർശന വേഗത കുറയ്ക്കാൻ ഇടയാക്കും.",
+ "do_not_show_again": "ഈ സന്ദേശം വീണ്ടും കാണിക്കരുത്",
+ "documentation": "ഡോക്യുമെന്റേഷൻ",
+ "done": "പൂർത്തിയായി",
+ "download": "ഡൗൺലോഡ്",
+ "download_action_prompt": "{count} അസറ്റുകൾ ഡൗൺലോഡ് ചെയ്യുന്നു",
+ "download_canceled": "ഡൗൺലോഡ് റദ്ദാക്കി",
+ "download_complete": "ഡൗൺലോഡ് പൂർത്തിയായി",
+ "download_enqueue": "ഡൗൺലോഡ് ക്യൂവിൽ ചേർത്തു",
+ "download_error": "ഡൗൺലോഡ് പിശക്",
+ "download_failed": "ഡൗൺലോഡ് പരാജയപ്പെട്ടു",
+ "download_finished": "ഡൗൺലോഡ് കഴിഞ്ഞു",
+ "download_include_embedded_motion_videos": "ഉൾച്ചേർത്ത വീഡിയോകൾ",
+ "download_include_embedded_motion_videos_description": "ചലിക്കുന്ന ഫോട്ടോകളിൽ ഉൾച്ചേർത്ത വീഡിയോകൾ ഒരു പ്രത്യേക ഫയലായി ഉൾപ്പെടുത്തുക",
+ "download_notfound": "ഡൗൺലോഡ് കണ്ടെത്തിയില്ല",
+ "download_paused": "ഡൗൺലോഡ് താൽക്കാലികമായി നിർത്തി",
+ "download_settings": "ഡൗൺലോഡ് ക്രമീകരണങ്ങൾ",
+ "download_settings_description": "അസറ്റ് ഡൗൺലോഡുമായി ബന്ധപ്പെട്ട ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "download_started": "ഡൗൺലോഡ് ആരംഭിച്ചു",
+ "download_sucess": "ഡൗൺലോഡ് വിജയിച്ചു",
+ "download_sucess_android": "മീഡിയ DCIM/Immich എന്നതിലേക്ക് ഡൗൺലോഡ് ചെയ്തിരിക്കുന്നു",
+ "download_waiting_to_retry": "വീണ്ടും ശ്രമിക്കാൻ കാത്തിരിക്കുന്നു",
+ "downloading": "ഡൗൺലോഡ് ചെയ്യുന്നു",
+ "downloading_asset_filename": "{filename} എന്ന അസറ്റ് ഡൗൺലോഡ് ചെയ്യുന്നു",
+ "downloading_media": "മീഡിയ ഡൗൺലോഡ് ചെയ്യുന്നു",
+ "drop_files_to_upload": "അപ്ലോഡ് ചെയ്യാൻ ഫയലുകൾ എവിടെയും ഡ്രോപ്പ് ചെയ്യുക",
+ "duplicates": "ഡ്യൂപ്ലിക്കേറ്റുകൾ",
+ "duplicates_description": "ഏതാണ് ഡ്യൂപ്ലിക്കേറ്റ് എന്ന് സൂചിപ്പിച്ച് ഓരോ ഗ്രൂപ്പും പരിഹരിക്കുക",
+ "duration": "ദൈർഘ്യം",
+ "edit": "തിരുത്തുക",
+ "edit_album": "ആൽബം എഡിറ്റുചെയ്യുക",
+ "edit_avatar": "അവതാർ എഡിറ്റുചെയ്യുക",
+ "edit_birthday": "ജന്മദിനം എഡിറ്റുചെയ്യുക",
+ "edit_date": "തീയതി എഡിറ്റുചെയ്യുക",
+ "edit_date_and_time": "തീയതിയും സമയവും എഡിറ്റുചെയ്യുക",
+ "edit_date_and_time_action_prompt": "{count} എണ്ണത്തിന്റെ തീയതിയും സമയവും എഡിറ്റുചെയ്തു",
+ "edit_date_and_time_by_offset": "ഓഫ്സെറ്റ് ഉപയോഗിച്ച് തീയതി മാറ്റുക",
+ "edit_date_and_time_by_offset_interval": "പുതിയ തീയതി പരിധി: {from}-{to}",
+ "edit_description": "വിവരണം എഡിറ്റുചെയ്യുക",
+ "edit_description_prompt": "ദയവായി ഒരു പുതിയ വിവരണം തിരഞ്ഞെടുക്കുക:",
+ "edit_exclusion_pattern": "ഒഴിവാക്കൽ പാറ്റേൺ എഡിറ്റുചെയ്യുക",
+ "edit_faces": "മുഖങ്ങൾ എഡിറ്റുചെയ്യുക",
+ "edit_import_path": "ഇമ്പോർട്ട് പാത്ത് എഡിറ്റുചെയ്യുക",
+ "edit_import_paths": "ഇമ്പോർട്ട് പാത്തുകൾ എഡിറ്റുചെയ്യുക",
+ "edit_key": "കീ എഡിറ്റുചെയ്യുക",
+ "edit_link": "ലിങ്ക് എഡിറ്റുചെയ്യുക",
+ "edit_location": "സ്ഥാനം എഡിറ്റുചെയ്യുക",
+ "edit_location_action_prompt": "{count} എണ്ണത്തിന്റെ സ്ഥാനം എഡിറ്റുചെയ്തു",
+ "edit_location_dialog_title": "സ്ഥാനം",
+ "edit_name": "പേര് എഡിറ്റുചെയ്യുക",
+ "edit_people": "ആളുകളെ എഡിറ്റുചെയ്യുക",
+ "edit_tag": "ടാഗ് എഡിറ്റുചെയ്യുക",
+ "edit_title": "ശീർഷകം എഡിറ്റുചെയ്യുക",
+ "edit_user": "ഉപയോക്താവിനെ എഡിറ്റുചെയ്യുക",
+ "edited": "എഡിറ്റുചെയ്തു",
+ "editor": "എഡിറ്റർ",
+ "editor_close_without_save_prompt": "മാറ്റങ്ങൾ സേവ് ചെയ്യില്ല",
+ "editor_close_without_save_title": "എഡിറ്റർ അടയ്ക്കണോ?",
+ "editor_crop_tool_h2_aspect_ratios": "വീക്ഷണാനുപാതം",
+ "editor_crop_tool_h2_rotation": "റൊട്ടേഷൻ",
+ "email": "ഇമെയിൽ",
+ "email_notifications": "ഇമെയിൽ അറിയിപ്പുകൾ",
+ "empty_folder": "ഈ ഫോൾഡർ ശൂന്യമാണ്",
+ "empty_trash": "ട്രാഷ് ശൂന്യമാക്കുക",
+ "empty_trash_confirmation": "ട്രാഷ് ശൂന്യമാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? ഇത് ട്രാഷിലെ എല്ലാ അസറ്റുകളും Immich-ൽ നിന്ന് ശാശ്വതമായി നീക്കംചെയ്യും.\nനിങ്ങൾക്ക് ഈ പ്രവർത്തനം പഴയപടിയാക്കാൻ കഴിയില്ല!",
+ "enable": "പ്രവർത്തനക്ഷമമാക്കുക",
+ "enable_backup": "ബാക്കപ്പ് പ്രവർത്തനക്ഷമമാക്കുക",
+ "enable_biometric_auth_description": "ബയോമെട്രിക് പ്രാമാണീകരണം പ്രവർത്തനക്ഷമമാക്കാൻ നിങ്ങളുടെ പിൻ കോഡ് നൽകുക",
+ "enabled": "പ്രവർത്തനക്ഷമമാക്കി",
+ "end_date": "അവസാന തീയതി",
+ "enqueued": "ക്യൂവിൽ ചേർത്തു",
+ "enter_wifi_name": "വൈ-ഫൈയുടെ പേര് നൽകുക",
+ "enter_your_pin_code": "നിങ്ങളുടെ പിൻ കോഡ് നൽകുക",
+ "enter_your_pin_code_subtitle": "ലോക്ക് ചെയ്ത ഫോൾഡർ ആക്സസ് ചെയ്യാൻ നിങ്ങളുടെ പിൻ കോഡ് നൽകുക",
+ "error": "പിശക്",
+ "error_change_sort_album": "ആൽബത്തിന്റെ സോർട്ട് ഓർഡർ മാറ്റുന്നതിൽ പരാജയപ്പെട്ടു",
+ "error_delete_face": "അസറ്റിൽ നിന്ന് മുഖം ഇല്ലാതാക്കുന്നതിൽ പിശക്",
+ "error_getting_places": "സ്ഥലങ്ങൾ ലഭിക്കുന്നതിൽ പിശക്",
+ "error_loading_image": "ചിത്രം ലോഡുചെയ്യുന്നതിൽ പിശക്",
+ "error_loading_partners": "പങ്കാളികളെ ലോഡുചെയ്യുന്നതിൽ പിശക്: {error}",
+ "error_saving_image": "പിശക്: {error}",
+ "error_tag_face_bounding_box": "മുഖം ടാഗ് ചെയ്യുന്നതിൽ പിശക് - ബൗണ്ടിംഗ് ബോക്സ് കോർഡിനേറ്റുകൾ ലഭിക്കുന്നില്ല",
+ "error_title": "പിശക് - എന്തോ കുഴപ്പം സംഭവിച്ചു",
+ "errors": {
+ "cannot_navigate_next_asset": "അടുത്ത അസറ്റിലേക്ക് പോകാൻ കഴിയില്ല",
+ "cannot_navigate_previous_asset": "മുമ്പത്തെ അസറ്റിലേക്ക് പോകാൻ കഴിയില്ല",
+ "cant_apply_changes": "മാറ്റങ്ങൾ പ്രയോഗിക്കാൻ കഴിയില്ല",
+ "cant_change_activity": "പ്രവർത്തനം {enabled, select, true {പ്രവർത്തനരഹിതമാക്കാൻ} other {പ്രവർത്തനക്ഷമമാക്കാൻ}} കഴിയില്ല",
+ "cant_change_asset_favorite": "അസറ്റിന്റെ പ്രിയപ്പെട്ടവ മാറ്റാൻ കഴിയില്ല",
+ "cant_change_metadata_assets_count": "{count, plural, one {# അസറ്റിന്റെ} other {# അസറ്റുകളുടെ}} മെറ്റാഡാറ്റ മാറ്റാൻ കഴിയില്ല",
+ "cant_get_faces": "മുഖങ്ങൾ ലഭിക്കുന്നില്ല",
+ "cant_get_number_of_comments": "അഭിപ്രായങ്ങളുടെ എണ്ണം ലഭിക്കുന്നില്ല",
+ "cant_search_people": "ആളുകളെ തിരയാൻ കഴിയില്ല",
+ "cant_search_places": "സ്ഥലങ്ങൾ തിരയാൻ കഴിയില്ല",
+ "error_adding_assets_to_album": "ആൽബത്തിലേക്ക് അസറ്റുകൾ ചേർക്കുന്നതിൽ പിശക്",
+ "error_adding_users_to_album": "ആൽബത്തിലേക്ക് ഉപയോക്താക്കളെ ചേർക്കുന്നതിൽ പിശക്",
+ "error_deleting_shared_user": "പങ്കിട്ട ഉപയോക്താവിനെ ഇല്ലാതാക്കുന്നതിൽ പിശക്",
+ "error_downloading": "{filename} ഡൗൺലോഡ് ചെയ്യുന്നതിൽ പിശക്",
+ "error_hiding_buy_button": "വാങ്ങാനുള്ള ബട്ടൺ മറയ്ക്കുന്നതിൽ പിശക്",
+ "error_removing_assets_from_album": "ആൽബത്തിൽ നിന്ന് അസറ്റുകൾ നീക്കം ചെയ്യുന്നതിൽ പിശക്, കൂടുതൽ വിവരങ്ങൾക്ക് കൺസോൾ പരിശോധിക്കുക",
+ "error_selecting_all_assets": "എല്ലാ അസറ്റുകളും തിരഞ്ഞെടുക്കുന്നതിൽ പിശക്",
+ "exclusion_pattern_already_exists": "ഈ ഒഴിവാക്കൽ പാറ്റേൺ ഇതിനകം നിലവിലുണ്ട്.",
+ "failed_to_create_album": "ആൽബം ഉണ്ടാക്കുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_create_shared_link": "പങ്കിട്ട ലിങ്ക് ഉണ്ടാക്കുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_edit_shared_link": "പങ്കിട്ട ലിങ്ക് എഡിറ്റുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_get_people": "ആളുകളെ ലഭിക്കുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_keep_this_delete_others": "ഈ അസറ്റ് നിലനിർത്തി മറ്റ് അസറ്റുകൾ ഇല്ലാതാക്കുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_load_asset": "അസറ്റ് ലോഡുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_load_assets": "അസറ്റുകൾ ലോഡുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_load_notifications": "അറിയിപ്പുകൾ ലോഡുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_load_people": "ആളുകളെ ലോഡുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_remove_product_key": "പ്രൊഡക്റ്റ് കീ നീക്കം ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_reset_pin_code": "പിൻ കോഡ് റീസെറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_stack_assets": "അസറ്റുകൾ സ്റ്റാക്ക് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_unstack_assets": "അസറ്റുകൾ അൺ-സ്റ്റാക്ക് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_update_notification_status": "അറിയിപ്പിന്റെ നില അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "import_path_already_exists": "ഈ ഇമ്പോർട്ട് പാത്ത് ഇതിനകം നിലവിലുണ്ട്.",
+ "incorrect_email_or_password": "തെറ്റായ ഇമെയിൽ അല്ലെങ്കിൽ പാസ്വേഡ്",
+ "paths_validation_failed": "{paths, plural, one {# പാത്ത്} other {# പാത്തുകൾ}} സാധൂകരണത്തിൽ പരാജയപ്പെട്ടു",
+ "profile_picture_transparent_pixels": "പ്രൊഫൈൽ ചിത്രങ്ങൾക്ക് സുതാര്യമായ പിക്സലുകൾ ഉണ്ടാകരുത്. ദയവായി സൂം ഇൻ ചെയ്യുക കൂടാതെ/അല്ലെങ്കിൽ ചിത്രം നീക്കുക.",
+ "quota_higher_than_disk_size": "ഡിസ്ക് വലുപ്പത്തേക്കാൾ ഉയർന്ന ക്വാട്ട നിങ്ങൾ സജ്ജമാക്കിയിരിക്കുന്നു",
+ "something_went_wrong": "എന്തോ കുഴപ്പം സംഭവിച്ചു",
+ "unable_to_add_album_users": "ആൽബത്തിലേക്ക് ഉപയോക്താക്കളെ ചേർക്കാൻ കഴിയില്ല",
+ "unable_to_add_assets_to_shared_link": "പങ്കിട്ട ലിങ്കിലേക്ക് അസറ്റുകൾ ചേർക്കാൻ കഴിയില്ല",
+ "unable_to_add_comment": "അഭിപ്രായം ചേർക്കാൻ കഴിയില്ല",
+ "unable_to_add_exclusion_pattern": "ഒഴിവാക്കൽ പാറ്റേൺ ചേർക്കാൻ കഴിയില്ല",
+ "unable_to_add_import_path": "ഇമ്പോർട്ട് പാത്ത് ചേർക്കാൻ കഴിയില്ല",
+ "unable_to_add_partners": "പങ്കാളികളെ ചേർക്കാൻ കഴിയില്ല",
+ "unable_to_add_remove_archive": "ആർക്കൈവിൽ {archived, select, true {നിന്ന് അസറ്റ് നീക്കംചെയ്യാൻ} other {ലേക്ക് അസറ്റ് ചേർക്കാൻ}} കഴിയില്ല",
+ "unable_to_add_remove_favorites": "പ്രിയപ്പെട്ടവയിലേക്ക് {favorite, select, true {അസറ്റ് ചേർക്കാൻ} other {നിന്ന് അസറ്റ് നീക്കംചെയ്യാൻ}} കഴിയില്ല",
+ "unable_to_archive_unarchive": "{archived, select, true {ആർക്കൈവ് ചെയ്യാൻ} other {അൺആർക്കൈവ് ചെയ്യാൻ}} കഴിയില്ല",
+ "unable_to_change_album_user_role": "ആൽബം ഉപയോക്താവിന്റെ റോൾ മാറ്റാൻ കഴിയില്ല",
+ "unable_to_change_date": "തീയതി മാറ്റാൻ കഴിയില്ല",
+ "unable_to_change_description": "വിവരണം മാറ്റാൻ കഴിയില്ല",
+ "unable_to_change_favorite": "അസറ്റിന്റെ പ്രിയപ്പെട്ടവ മാറ്റാൻ കഴിയില്ല",
+ "unable_to_change_location": "സ്ഥാനം മാറ്റാൻ കഴിയില്ല",
+ "unable_to_change_password": "പാസ്വേഡ് മാറ്റാൻ കഴിയില്ല",
+ "unable_to_change_visibility": "{count, plural, one {# വ്യക്തിയുടെ} other {# ആളുകളുടെ}} ദൃശ്യത മാറ്റാൻ കഴിയില്ല",
+ "unable_to_complete_oauth_login": "OAuth ലോഗിൻ പൂർത്തിയാക്കാൻ കഴിയില്ല",
+ "unable_to_connect": "ബന്ധിപ്പിക്കാൻ കഴിയില്ല",
+ "unable_to_copy_to_clipboard": "ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്താൻ കഴിയില്ല, നിങ്ങൾ https വഴിയാണ് പേജ് ആക്സസ് ചെയ്യുന്നതെന്ന് ഉറപ്പാക്കുക",
+ "unable_to_create_admin_account": "അഡ്മിൻ അക്കൗണ്ട് ഉണ്ടാക്കാൻ കഴിയില്ല",
+ "unable_to_create_api_key": "പുതിയ API കീ ഉണ്ടാക്കാൻ കഴിയില്ല",
+ "unable_to_create_library": "ലൈബ്രറി ഉണ്ടാക്കാൻ കഴിയില്ല",
+ "unable_to_create_user": "ഉപയോക്താവിനെ ഉണ്ടാക്കാൻ കഴിയില്ല",
+ "unable_to_delete_album": "ആൽബം ഇല്ലാതാക്കാൻ കഴിയില്ല",
+ "unable_to_delete_asset": "അസറ്റ് ഇല്ലാതാക്കാൻ കഴിയില്ല",
+ "unable_to_delete_assets": "അസറ്റുകൾ ഇല്ലാതാക്കുന്നതിൽ പിശക്",
+ "unable_to_delete_exclusion_pattern": "ഒഴിവാക്കൽ പാറ്റേൺ ഇല്ലാതാക്കാൻ കഴിയില്ല",
+ "unable_to_delete_import_path": "ഇമ്പോർട്ട് പാത്ത് ഇല്ലാതാക്കാൻ കഴിയില്ല",
+ "unable_to_delete_shared_link": "പങ്കിട്ട ലിങ്ക് ഇല്ലാതാക്കാൻ കഴിയില്ല",
+ "unable_to_delete_user": "ഉപയോക്താവിനെ ഇല്ലാതാക്കാൻ കഴിയില്ല",
+ "unable_to_download_files": "ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_edit_exclusion_pattern": "ഒഴിവാക്കൽ പാറ്റേൺ എഡിറ്റുചെയ്യാൻ കഴിയില്ല",
+ "unable_to_edit_import_path": "ഇമ്പോർട്ട് പാത്ത് എഡിറ്റുചെയ്യാൻ കഴിയില്ല",
+ "unable_to_empty_trash": "ട്രാഷ് ശൂന്യമാക്കാൻ കഴിയില്ല",
+ "unable_to_enter_fullscreen": "ഫുൾസ്ക്രീനിൽ പ്രവേശിക്കാൻ കഴിയില്ല",
+ "unable_to_exit_fullscreen": "ഫുൾസ്ക്രീനിൽ നിന്ന് പുറത്തുകടക്കാൻ കഴിയില്ല",
+ "unable_to_get_comments_number": "അഭിപ്രായങ്ങളുടെ എണ്ണം ലഭിക്കുന്നില്ല",
+ "unable_to_get_shared_link": "പങ്കിട്ട ലിങ്ക് ലഭിക്കുന്നതിൽ പരാജയപ്പെട്ടു",
+ "unable_to_hide_person": "വ്യക്തിയെ മറയ്ക്കാൻ കഴിയില്ല",
+ "unable_to_link_motion_video": "ചലിക്കുന്ന വീഡിയോ ലിങ്ക് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_link_oauth_account": "OAuth അക്കൗണ്ട് ലിങ്ക് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_log_out_all_devices": "എല്ലാ ഉപകരണങ്ങളിൽ നിന്നും ലോഗ് ഔട്ട് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_log_out_device": "ഉപകരണത്തിൽ നിന്ന് ലോഗ് ഔട്ട് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_login_with_oauth": "OAuth ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_play_video": "വീഡിയോ പ്ലേ ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_reassign_assets_existing_person": "{name, select, null {നിലവിലുള്ള ഒരു വ്യക്തിക്ക്} other {{name}-ന്}} അസറ്റുകൾ വീണ്ടും നൽകാൻ കഴിയില്ല",
+ "unable_to_reassign_assets_new_person": "ഒരു പുതിയ വ്യക്തിക്ക് അസറ്റുകൾ വീണ്ടും നൽകാൻ കഴിയില്ല",
+ "unable_to_refresh_user": "ഉപയോക്താവിനെ പുതുക്കാൻ കഴിയില്ല",
+ "unable_to_remove_album_users": "ആൽബത്തിൽ നിന്ന് ഉപയോക്താക്കളെ നീക്കംചെയ്യാൻ കഴിയില്ല",
+ "unable_to_remove_api_key": "API കീ നീക്കംചെയ്യാൻ കഴിയില്ല",
+ "unable_to_remove_assets_from_shared_link": "പങ്കിട്ട ലിങ്കിൽ നിന്ന് അസറ്റുകൾ നീക്കംചെയ്യാൻ കഴിയില്ല",
+ "unable_to_remove_library": "ലൈബ്രറി നീക്കംചെയ്യാൻ കഴിയില്ല",
+ "unable_to_remove_partner": "പങ്കാളിയെ നീക്കംചെയ്യാൻ കഴിയില്ല",
+ "unable_to_remove_reaction": "പ്രതികരണം നീക്കംചെയ്യാൻ കഴിയില്ല",
+ "unable_to_reset_password": "പാസ്വേഡ് റീസെറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_reset_pin_code": "പിൻ കോഡ് റീസെറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_resolve_duplicate": "ഡ്യൂപ്ലിക്കേറ്റ് പരിഹരിക്കാൻ കഴിയില്ല",
+ "unable_to_restore_assets": "അസറ്റുകൾ പുനഃസ്ഥാപിക്കാൻ കഴിയില്ല",
+ "unable_to_restore_trash": "ട്രാഷ് പുനഃസ്ഥാപിക്കാൻ കഴിയില്ല",
+ "unable_to_restore_user": "ഉപയോക്താവിനെ പുനഃസ്ഥാപിക്കാൻ കഴിയില്ല",
+ "unable_to_save_album": "ആൽബം സേവ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_save_api_key": "API കീ സേവ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_save_date_of_birth": "ജനനത്തീയതി സേവ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_save_name": "പേര് സേവ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_save_profile": "പ്രൊഫൈൽ സേവ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_save_settings": "ക്രമീകരണങ്ങൾ സേവ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_scan_libraries": "ലൈബ്രറികൾ സ്കാൻ ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_scan_library": "ലൈബ്രറി സ്കാൻ ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_set_feature_photo": "ഫീച്ചർ ഫോട്ടോ സജ്ജമാക്കാൻ കഴിയില്ല",
+ "unable_to_set_profile_picture": "പ്രൊഫൈൽ ചിത്രം സജ്ജമാക്കാൻ കഴിയില്ല",
+ "unable_to_submit_job": "ജോലി സമർപ്പിക്കാൻ കഴിയില്ല",
+ "unable_to_trash_asset": "അസറ്റ് ട്രാഷ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_unlink_account": "അക്കൗണ്ട് അൺലിങ്ക് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_unlink_motion_video": "ചലിക്കുന്ന വീഡിയോ അൺലിങ്ക് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_update_album_cover": "ആൽബം കവർ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_update_album_info": "ആൽബം വിവരങ്ങൾ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_update_library": "ലൈബ്രറി അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_update_location": "സ്ഥാനം അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_update_settings": "ക്രമീകരണങ്ങൾ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_update_timeline_display_status": "ടൈംലൈൻ പ്രദർശന നില അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_update_user": "ഉപയോക്താവിനെ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "unable_to_upload_file": "ഫയൽ അപ്ലോഡ് ചെയ്യാൻ കഴിയില്ല"
+ },
+ "exif": "Exif",
+ "exif_bottom_sheet_description": "വിവരണം ചേർക്കുക...",
+ "exif_bottom_sheet_description_error": "വിവരണം അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പിശക്",
+ "exif_bottom_sheet_details": "വിശദാംശങ്ങൾ",
+ "exif_bottom_sheet_location": "സ്ഥാനം",
+ "exif_bottom_sheet_people": "ആളുകൾ",
+ "exif_bottom_sheet_person_add_person": "പേര് ചേർക്കുക",
+ "exit_slideshow": "സ്ലൈഡ്ഷോയിൽ നിന്ന് പുറത്തുകടക്കുക",
+ "expand_all": "എല്ലാം വികസിപ്പിക്കുക",
+ "experimental_settings_new_asset_list_subtitle": "പുരോഗതിയിലാണ്",
+ "experimental_settings_new_asset_list_title": "പരീക്ഷണാടിസ്ഥാനത്തിലുള്ള ഫോട്ടോ ഗ്രിഡ് പ്രവർത്തനക്ഷമമാക്കുക",
+ "experimental_settings_subtitle": "നിങ്ങളുടെ സ്വന്തം ഉത്തരവാദിത്വത്തിൽ ഉപയോഗിക്കുക!",
+ "experimental_settings_title": "പരീക്ഷണാടിസ്ഥാനത്തിലുള്ളത്",
+ "expire_after": "ഇതിന് ശേഷം കാലഹരണപ്പെടും",
+ "expired": "കാലഹരണപ്പെട്ടു",
+ "expires_date": "{date}-ന് കാലഹരണപ്പെടും",
+ "explore": "പര്യവേക്ഷണം ചെയ്യുക",
+ "explorer": "എക്സ്പ്ലോറർ",
+ "export": "കയറ്റുമതി ചെയ്യുക",
+ "export_as_json": "JSON ആയി കയറ്റുമതി ചെയ്യുക",
+ "export_database": "ഡാറ്റാബേസ് കയറ്റുമതി ചെയ്യുക",
+ "export_database_description": "SQLite ഡാറ്റാബേസ് കയറ്റുമതി ചെയ്യുക",
+ "extension": "എക്സ്റ്റൻഷൻ",
+ "external": "ബാഹ്യം",
+ "external_libraries": "ബാഹ്യ ലൈബ്രറികൾ",
+ "external_network": "ബാഹ്യ നെറ്റ്വർക്ക്",
+ "external_network_sheet_info": "തിരഞ്ഞെടുത്ത വൈ-ഫൈ നെറ്റ്വർക്കിൽ അല്ലാത്തപ്പോൾ, താഴെ നൽകിയിട്ടുള്ള URL-കളിൽ ആദ്യം ലഭ്യമാകുന്ന ഒന്നിലൂടെ, മുകളിൽ നിന്ന് താഴേക്കുള്ള ക്രമത്തിൽ, ആപ്പ് സെർവറുമായി ബന്ധിപ്പിക്കും",
+ "face_unassigned": "അസൈൻ ചെയ്തിട്ടില്ല",
+ "failed": "പരാജയപ്പെട്ടു",
+ "failed_to_authenticate": "പ്രാമാണീകരിക്കുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_load_assets": "അസറ്റുകൾ ലോഡുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "failed_to_load_folder": "ഫോൾഡർ ലോഡുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "favorite": "പ്രിയം",
+ "favorite_action_prompt": "{count} എണ്ണം പ്രിയപ്പെട്ടവയിലേക്ക് ചേർത്തു",
+ "favorite_or_unfavorite_photo": "ഫോട്ടോ പ്രിയപ്പെട്ടതാക്കുക അല്ലെങ്കിൽ മാറ്റുക",
+ "favorites": "പ്രിയങ്ങൾ",
+ "favorites_page_no_favorites": "പ്രിയപ്പെട്ട അസറ്റുകളൊന്നും കണ്ടെത്തിയില്ല",
+ "feature_photo_updated": "ഫീച്ചർ ഫോട്ടോ അപ്ഡേറ്റ് ചെയ്തു",
+ "features": "ഫീച്ചറുകൾ",
+ "features_in_development": "വികസിപ്പിച്ചുകൊണ്ടിരിക്കുന്ന ഫീച്ചറുകൾ",
+ "features_setting_description": "ആപ്പ് ഫീച്ചറുകൾ കൈകാര്യം ചെയ്യുക",
+ "file_name": "ഫയലിന്റെ പേര്",
+ "file_name_or_extension": "ഫയലിന്റെ പേര് അല്ലെങ്കിൽ എക്സ്റ്റൻഷൻ",
+ "filename": "ഫയൽനാമം",
+ "filetype": "ഫയൽ തരം",
+ "filter": "ഫിൽട്ടർ ചെയ്യുക",
+ "filter_people": "ആളുകളെ ഫിൽട്ടർ ചെയ്യുക",
+ "filter_places": "സ്ഥലങ്ങൾ ഫിൽട്ടർ ചെയ്യുക",
+ "find_them_fast": "തിരയലിലൂടെ പേര് ഉപയോഗിച്ച് അവരെ വേഗത്തിൽ കണ്ടെത്തുക",
+ "first": "ആദ്യം",
+ "fix_incorrect_match": "തെറ്റായ പൊരുത്തം ശരിയാക്കുക",
+ "folder": "ഫോൾഡർ",
+ "folder_not_found": "ഫോൾഡർ കണ്ടെത്തിയില്ല",
+ "folders": "ഫോൾഡറുകൾ",
+ "folders_feature_description": "ഫയൽ സിസ്റ്റത്തിലെ ഫോട്ടോകൾക്കും വീഡിയോകൾക്കുമായി ഫോൾഡർ കാഴ്ച ബ്രൗസുചെയ്യുന്നു",
+ "forgot_pin_code_question": "നിങ്ങളുടെ പിൻ മറന്നോ?",
+ "forward": "മുന്നോട്ട്",
+ "gcast_enabled": "ഗൂഗിൾ കാസ്റ്റ്",
+ "gcast_enabled_description": "പ്രവർത്തിക്കുന്നതിനായി ഈ ഫീച്ചർ ഗൂഗിളിൽ നിന്ന് ബാഹ്യ ഉറവിടങ്ങൾ ലോഡുചെയ്യുന്നു.",
+ "general": "പൊതുവായത്",
+ "geolocation_instruction_location": "ലൊക്കേഷൻ ഉപയോഗിക്കുന്നതിന് GPS കോർഡിനേറ്റുകളുള്ള ഒരു അസറ്റിൽ ക്ലിക്കുചെയ്യുക, അല്ലെങ്കിൽ മാപ്പിൽ നിന്ന് നേരിട്ട് ഒരു സ്ഥലം തിരഞ്ഞെടുക്കുക",
+ "get_help": "സഹായം നേടുക",
+ "get_wifiname_error": "വൈ-ഫൈയുടെ പേര് ലഭിച്ചില്ല. നിങ്ങൾ ആവശ്യമായ അനുമതികൾ നൽകിയിട്ടുണ്ടെന്നും ഒരു വൈ-ഫൈ നെറ്റ്വർക്കിലേക്ക് കണക്റ്റുചെയ്തിട്ടുണ്ടെന്നും ഉറപ്പാക്കുക",
+ "getting_started": "ആരംഭിക്കുന്നു",
+ "go_back": "പിന്നോട്ട് പോകുക",
+ "go_to_folder": "ഫോൾഡറിലേക്ക് പോകുക",
+ "go_to_search": "തിരയലിലേക്ക് പോകുക",
+ "gps": "ജിപിഎസ്",
+ "gps_missing": "GPS ഇല്ല",
+ "grant_permission": "അനുമതി നൽകുക",
+ "group_albums_by": "ആൽബങ്ങളെ ഇതനുസരിച്ച് ഗ്രൂപ്പ് ചെയ്യുക...",
+ "group_country": "രാജ്യം അനുസരിച്ച് ഗ്രൂപ്പ് ചെയ്യുക",
+ "group_no": "ഗ്രൂപ്പിംഗ് ഇല്ല",
+ "group_owner": "ഉടമ അനുസരിച്ച് ഗ്രൂപ്പ് ചെയ്യുക",
+ "group_places_by": "സ്ഥലങ്ങളെ ഇതനുസരിച്ച് ഗ്രൂപ്പ് ചെയ്യുക...",
+ "group_year": "വർഷം അനുസരിച്ച് ഗ്രൂപ്പ് ചെയ്യുക",
+ "haptic_feedback_switch": "ഹാപ്റ്റിക് ഫീഡ്ബാക്ക് പ്രവർത്തനക്ഷമമാക്കുക",
+ "haptic_feedback_title": "ഹാപ്റ്റിക് ഫീഡ്ബാക്ക്",
+ "has_quota": "ക്വാട്ടയുണ്ട്",
+ "hash_asset": "അസറ്റ് ഹാഷ് ചെയ്യുക",
+ "hashed_assets": "ഹാഷ് ചെയ്ത അസറ്റുകൾ",
+ "hashing": "ഹാഷിംഗ്",
+ "header_settings_add_header_tip": "ഹെഡർ ചേർക്കുക",
+ "header_settings_field_validator_msg": "മൂല്യം ശൂന്യമാകരുത്",
+ "header_settings_header_name_input": "ഹെഡറിന്റെ പേര്",
+ "header_settings_header_value_input": "ഹെഡറിന്റെ മൂല്യം",
+ "headers_settings_tile_subtitle": "ഓരോ നെറ്റ്വർക്ക് അഭ്യർത്ഥനയ്ക്കൊപ്പവും ആപ്പ് അയയ്ക്കേണ്ട പ്രോക്സി ഹെഡറുകൾ നിർവചിക്കുക",
+ "headers_settings_tile_title": "കസ്റ്റം പ്രോക്സി ഹെഡറുകൾ",
+ "hi_user": "നമസ്കാരം {name} ({email})",
+ "hide_all_people": "എല്ലാ ആളുകളെയും മറയ്ക്കുക",
+ "hide_gallery": "ഗാലറി മറയ്ക്കുക",
+ "hide_named_person": "{name} എന്ന വ്യക്തിയെ മറയ്ക്കുക",
+ "hide_password": "പാസ്വേഡ് മറയ്ക്കുക",
+ "hide_person": "വ്യക്തിയെ മറയ്ക്കുക",
+ "hide_unnamed_people": "പേരില്ലാത്ത ആളുകളെ മറയ്ക്കുക",
+ "home_page_add_to_album_conflicts": "{album} എന്ന ആൽബത്തിലേക്ക് {added} അസറ്റുകൾ ചേർത്തു. {failed} അസറ്റുകൾ ഇതിനകം ആൽബത്തിലുണ്ട്.",
+ "home_page_add_to_album_err_local": "പ്രാദേശിക അസറ്റുകൾ ഇപ്പോൾ ആൽബങ്ങളിലേക്ക് ചേർക്കാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_add_to_album_success": "{album} എന്ന ആൽബത്തിലേക്ക് {added} അസറ്റുകൾ ചേർത്തു.",
+ "home_page_album_err_partner": "പങ്കാളിയുടെ അസറ്റുകൾ ഇപ്പോൾ ഒരു ആൽബത്തിലേക്ക് ചേർക്കാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_archive_err_local": "പ്രാദേശിക അസറ്റുകൾ ഇപ്പോൾ ആർക്കൈവ് ചെയ്യാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_archive_err_partner": "പങ്കാളിയുടെ അസറ്റുകൾ ആർക്കൈവ് ചെയ്യാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_building_timeline": "ടൈംലൈൻ നിർമ്മിക്കുന്നു",
+ "home_page_delete_err_partner": "പങ്കാളിയുടെ അസറ്റുകൾ ഇല്ലാതാക്കാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_delete_remote_err_local": "റിമോട്ട് ഇല്ലാതാക്കൽ തിരഞ്ഞെടുപ്പിൽ പ്രാദേശിക അസറ്റുകൾ ഉണ്ട്, ഒഴിവാക്കുന്നു",
+ "home_page_favorite_err_local": "പ്രാദേശിക അസറ്റുകൾ ഇപ്പോൾ പ്രിയപ്പെട്ടതാക്കാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_favorite_err_partner": "പങ്കാളിയുടെ അസറ്റുകൾ ഇപ്പോൾ പ്രിയപ്പെട്ടതാക്കാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_first_time_notice": "നിങ്ങൾ ആദ്യമായിട്ടാണ് ഈ ആപ്പ് ഉപയോഗിക്കുന്നതെങ്കിൽ, ഒരു ബാക്കപ്പ് ആൽബം തിരഞ്ഞെടുക്കുന്നത് ഉറപ്പാക്കുക, അതുവഴി ടൈംലൈനിൽ ഫോട്ടോകളും വീഡിയോകളും ചേർക്കാൻ കഴിയും",
+ "home_page_locked_error_local": "പ്രാദേശിക അസറ്റുകൾ ലോക്ക് ചെയ്ത ഫോൾഡറിലേക്ക് മാറ്റാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_locked_error_partner": "പങ്കാളിയുടെ അസറ്റുകൾ ലോക്ക് ചെയ്ത ഫോൾഡറിലേക്ക് മാറ്റാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_share_err_local": "പ്രാദേശിക അസറ്റുകൾ ലിങ്ക് വഴി പങ്കിടാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "home_page_upload_err_limit": "ഒരു സമയം പരമാവധി 30 അസറ്റുകൾ മാത്രമേ അപ്ലോഡ് ചെയ്യാൻ കഴിയൂ, ഒഴിവാക്കുന്നു",
+ "host": "ഹോസ്റ്റ്",
+ "hour": "മണിക്കൂർ",
+ "hours": "മണിക്കൂറുകൾ",
+ "id": "ഐഡി",
+ "idle": "നിഷ്ക്രിയം",
+ "ignore_icloud_photos": "iCloud ഫോട്ടോകൾ അവഗണിക്കുക",
+ "ignore_icloud_photos_description": "iCloud-ൽ സംഭരിച്ചിരിക്കുന്ന ഫോട്ടോകൾ Immich സെർവറിലേക്ക് അപ്ലോഡ് ചെയ്യില്ല",
+ "image": "ചിത്രം",
+ "image_alt_text_date": "{date}-ന് എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_alt_text_date_1_person": "{date}-ന് {person1}-നൊപ്പം എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_alt_text_date_2_people": "{date}-ന് {person1}, {person2} എന്നിവർക്കൊപ്പം എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_alt_text_date_3_people": "{date}-ന് {person1}, {person2}, {person3} എന്നിവർക്കൊപ്പം എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_alt_text_date_4_or_more_people": "{date}-ന് {person1}, {person2}, കൂടാതെ മറ്റ് {additionalCount, number} പേർക്കുമൊപ്പം എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_alt_text_date_place": "{date}-ന് {city}, {country} എന്നിവിടങ്ങളിൽ വെച്ച് എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_alt_text_date_place_1_person": "{date}-ന് {city}, {country} എന്നിവിടങ്ങളിൽ വെച്ച് {person1}-നൊപ്പം എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_alt_text_date_place_2_people": "{date}-ന് {city}, {country} എന്നിവിടങ്ങളിൽ വെച്ച് {person1}, {person2} എന്നിവർക്കൊപ്പം എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_alt_text_date_place_3_people": "{date}-ന് {city}, {country} എന്നിവിടങ്ങളിൽ വെച്ച് {person1}, {person2}, {person3} എന്നിവർക്കൊപ്പം എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_alt_text_date_place_4_or_more_people": "{date}-ന് {city}, {country} എന്നിവിടങ്ങളിൽ വെച്ച് {person1}, {person2}, കൂടാതെ മറ്റ് {additionalCount, number} പേർക്കുമൊപ്പം എടുത്ത {isVideo, select, true {വീഡിയോ} other {ചിത്രം}}",
+ "image_saved_successfully": "ചിത്രം സേവ് ചെയ്തു",
+ "image_viewer_page_state_provider_download_started": "ഡൗൺലോഡ് ആരംഭിച്ചു",
+ "image_viewer_page_state_provider_download_success": "ഡൗൺലോഡ് വിജയിച്ചു",
+ "image_viewer_page_state_provider_share_error": "പങ്കിടുന്നതിൽ പിശക്",
+ "immich_logo": "Immich ലോഗോ",
+ "immich_web_interface": "Immich വെബ് ഇന്റർഫേസ്",
+ "import_from_json": "JSON-ൽ നിന്ന് ഇമ്പോർട്ടുചെയ്യുക",
+ "import_path": "ഇമ്പോർട്ട് പാത്ത്",
+ "in_albums": "{count, plural, one {# ആൽബത്തിൽ} other {# ആൽബങ്ങളിൽ}}",
+ "in_archive": "ആർക്കൈവിൽ",
+ "include_archived": "ആർക്കൈവുചെയ്തവ ഉൾപ്പെടുത്തുക",
+ "include_shared_albums": "പങ്കിട്ട ആൽബങ്ങൾ ഉൾപ്പെടുത്തുക",
+ "include_shared_partner_assets": "പങ്കിട്ട പങ്കാളിയുടെ അസറ്റുകൾ ഉൾപ്പെടുത്തുക",
+ "individual_share": "വ്യക്തിഗത പങ്കിടൽ",
+ "individual_shares": "വ്യക്തിഗത പങ്കിടലുകൾ",
+ "info": "വിവരങ്ങൾ",
+ "interval": {
+ "day_at_onepm": "എല്ലാ ദിവസവും ഉച്ചയ്ക്ക് 1 മണിക്ക്",
+ "hours": "{hours, plural, one {ഓരോ മണിക്കൂറിലും} other {ഓരോ {hours, number} മണിക്കൂറിലും}}",
+ "night_at_midnight": "എല്ലാ രാത്രിയും അർദ്ധരാത്രിക്ക്",
+ "night_at_twoam": "എല്ലാ രാത്രിയും പുലർച്ചെ 2 മണിക്ക്"
+ },
+ "invalid_date": "അസാധുവായ തീയതി",
+ "invalid_date_format": "അസാധുവായ തീയതി ഫോർമാറ്റ്",
+ "invite_people": "ആളുകളെ ക്ഷണിക്കുക",
+ "invite_to_album": "ആൽബത്തിലേക്ക് ക്ഷണിക്കുക",
+ "ios_debug_info_fetch_ran_at": "ഫെച്ച് പ്രവർത്തിച്ചത് {dateTime}",
+ "ios_debug_info_last_sync_at": "അവസാന സിങ്ക് {dateTime}",
+ "ios_debug_info_no_processes_queued": "പശ്ചാത്തല പ്രോസസ്സുകളൊന്നും ക്യൂവിൽ ഇല്ല",
+ "ios_debug_info_no_sync_yet": "പശ്ചാത്തല സിങ്ക് ജോലി ഇതുവരെ പ്രവർത്തിച്ചിട്ടില്ല",
+ "ios_debug_info_processes_queued": "{count, plural, one {{count} പശ്ചാത്തല പ്രോസസ്സ് ക്യൂവിലുണ്ട്} other {{count} പശ്ചാത്തല പ്രോസസ്സുകൾ ക്യൂവിലുണ്ട്}}",
+ "ios_debug_info_processing_ran_at": "പ്രോസസ്സിംഗ് പ്രവർത്തിച്ചത് {dateTime}",
+ "items_count": "{count, plural, one {# ഇനം} other {# ഇനങ്ങൾ}}",
+ "jobs": "ജോലികൾ",
+ "keep": "സൂക്ഷിക്കുക",
+ "keep_all": "എല്ലാം സൂക്ഷിക്കുക",
+ "keep_this_delete_others": "ഇത് സൂക്ഷിച്ച് മറ്റുള്ളവ ഇല്ലാതാക്കുക",
+ "kept_this_deleted_others": "ഈ അസറ്റ് സൂക്ഷിക്കുകയും {count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} ഇല്ലാതാക്കുകയും ചെയ്തു",
+ "keyboard_shortcuts": "കീബോർഡ് കുറുക്കുവഴികൾ",
+ "language": "ഭാഷ",
+ "language_no_results_subtitle": "നിങ്ങളുടെ തിരയൽ പദം ക്രമീകരിച്ച് ശ്രമിക്കുക",
+ "language_no_results_title": "ഭാഷകളൊന്നും കണ്ടെത്തിയില്ല",
+ "language_search_hint": "ഭാഷകൾക്കായി തിരയുക...",
+ "language_setting_description": "നിങ്ങൾക്കിഷ്ടപ്പെട്ട ഭാഷ തിരഞ്ഞെടുക്കുക",
+ "large_files": "വലിയ ഫയലുകൾ",
+ "last": "അവസാനത്തേത്",
+ "last_seen": "അവസാനം കണ്ടത്",
+ "latest_version": "ഏറ്റവും പുതിയ പതിപ്പ്",
+ "latitude": "അക്ഷാംശം",
+ "leave": "വിടുക",
+ "leave_album": "ആൽബം വിടുക",
+ "lens_model": "ലെൻസ് മോഡൽ",
+ "let_others_respond": "മറ്റുള്ളവരെ പ്രതികരിക്കാൻ അനുവദിക്കുക",
+ "level": "തലം",
+ "library": "ലൈബ്രറി",
+ "library_options": "ലൈബ്രറി ഓപ്ഷനുകൾ",
+ "library_page_device_albums": "ഉപകരണത്തിലെ ആൽബങ്ങൾ",
+ "library_page_new_album": "പുതിയ ആൽബം",
+ "library_page_sort_asset_count": "അസറ്റുകളുടെ എണ്ണം",
+ "library_page_sort_created": "സൃഷ്ടിച്ച തീയതി",
+ "library_page_sort_last_modified": "അവസാനം മാറ്റം വരുത്തിയത്",
+ "library_page_sort_title": "ആൽബത്തിന്റെ ശീർഷകം",
+ "licenses": "ലൈസൻസുകൾ",
+ "light": "ലൈറ്റ്",
+ "like": "ഇഷ്ടപ്പെട്ടു",
+ "like_deleted": "ഇഷ്ടം നീക്കംചെയ്തു",
+ "link_motion_video": "ചലിക്കുന്ന വീഡിയോ ലിങ്ക് ചെയ്യുക",
+ "link_to_oauth": "OAuth-ലേക്ക് ലിങ്ക് ചെയ്യുക",
+ "linked_oauth_account": "ലിങ്ക് ചെയ്ത OAuth അക്കൗണ്ട്",
+ "list": "ലിസ്റ്റ്",
+ "loading": "ലോഡിംഗ്",
+ "loading_search_results_failed": "തിരയൽ ഫലങ്ങൾ ലോഡുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
+ "local": "പ്രാദേശികം",
+ "local_asset_cast_failed": "സെർവറിലേക്ക് അപ്ലോഡ് ചെയ്യാത്ത ഒരു അസറ്റ് കാസ്റ്റ് ചെയ്യാൻ കഴിയില്ല",
+ "local_assets": "പ്രാദേശിക അസറ്റുകൾ",
+ "local_media_summary": "പ്രാദേശിക മീഡിയ സംഗ്രഹം",
+ "local_network": "പ്രാദേശിക നെറ്റ്വർക്ക്",
+ "local_network_sheet_info": "നിർദ്ദിഷ്ട വൈ-ഫൈ നെറ്റ്വർക്ക് ഉപയോഗിക്കുമ്പോൾ ഈ URL വഴി ആപ്പ് സെർവറുമായി ബന്ധിപ്പിക്കും",
+ "location_permission": "ലൊക്കേഷൻ അനുമതി",
+ "location_permission_content": "യാന്ത്രിക-സ്വിച്ചിംഗ് ഫീച്ചർ ഉപയോഗിക്കുന്നതിന്, Immich-ന് കൃത്യമായ ലൊക്കേഷൻ അനുമതി ആവശ്യമാണ്, അതുവഴി നിലവിലെ വൈ-ഫൈ നെറ്റ്വർക്കിന്റെ പേര് വായിക്കാൻ കഴിയും",
+ "location_picker_choose_on_map": "മാപ്പിൽ തിരഞ്ഞെടുക്കുക",
+ "location_picker_latitude_error": "സാധുവായ അക്ഷാംശം നൽകുക",
+ "location_picker_latitude_hint": "നിങ്ങളുടെ അക്ഷാംശം ഇവിടെ നൽകുക",
+ "location_picker_longitude_error": "സാധുവായ രേഖാംശം നൽകുക",
+ "location_picker_longitude_hint": "നിങ്ങളുടെ രേഖാംശം ഇവിടെ നൽകുക",
+ "lock": "ലോക്ക് ചെയ്യുക",
+ "locked_folder": "ലോക്ക് ചെയ്ത ഫോൾഡർ",
+ "log_detail_title": "ലോഗ് വിശദാംശം",
+ "log_out": "ലോഗ് ഔട്ട്",
+ "log_out_all_devices": "എല്ലാ ഉപകരണങ്ങളിൽ നിന്നും ലോഗ് ഔട്ട് ചെയ്യുക",
+ "logged_in_as": "{user} ആയി ലോഗിൻ ചെയ്തു",
+ "logged_out_all_devices": "എല്ലാ ഉപകരണങ്ങളിൽ നിന്നും ലോഗ് ഔട്ട് ചെയ്തു",
+ "logged_out_device": "ഉപകരണത്തിൽ നിന്ന് ലോഗ് ഔട്ട് ചെയ്തു",
+ "login": "ലോഗിൻ",
+ "login_disabled": "ലോഗിൻ പ്രവർത്തനരഹിതമാക്കി",
+ "login_form_api_exception": "API എക്സെപ്ഷൻ. ദയവായി സെർവർ URL പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.",
+ "login_form_back_button_text": "തിരികെ",
+ "login_form_email_hint": "youremail@email.com",
+ "login_form_endpoint_hint": "http://your-server-ip:port",
+ "login_form_endpoint_url": "സെർവർ എൻഡ്പോയിന്റ് URL",
+ "login_form_err_http": "ദയവായി http:// അല്ലെങ്കിൽ https:// എന്ന് വ്യക്തമാക്കുക",
+ "login_form_err_invalid_email": "അസാധുവായ ഇമെയിൽ",
+ "login_form_err_invalid_url": "അസാധുവായ URL",
+ "login_form_err_leading_whitespace": "തുടക്കത്തിലെ ശൂന്യസ്ഥലം",
+ "login_form_err_trailing_whitespace": "അവസാനത്തെ ശൂന്യസ്ഥലം",
+ "login_form_failed_get_oauth_server_config": "OAuth ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യുന്നതിൽ പിശക്, സെർവർ URL പരിശോധിക്കുക",
+ "login_form_failed_get_oauth_server_disable": "ഈ സെർവറിൽ OAuth ഫീച്ചർ ലഭ്യമല്ല",
+ "login_form_failed_login": "നിങ്ങളെ ലോഗിൻ ചെയ്യുന്നതിൽ പിശക്, സെർവർ URL, ഇമെയിൽ, പാസ്വേഡ് എന്നിവ പരിശോധിക്കുക",
+ "login_form_handshake_exception": "സെർവറുമായി ഒരു ഹാൻഡ്ഷേക്ക് എക്സെപ്ഷൻ ഉണ്ടായി. നിങ്ങൾ ഒരു സ്വയം ഒപ്പിട്ട സർട്ടിഫിക്കറ്റാണ് ഉപയോഗിക്കുന്നതെങ്കിൽ ക്രമീകരണങ്ങളിൽ സ്വയം ഒപ്പിട്ട സർട്ടിഫിക്കറ്റ് പിന്തുണ പ്രവർത്തനക്ഷമമാക്കുക.",
+ "login_form_password_hint": "പാസ്വേഡ്",
+ "login_form_save_login": "ലോഗിൻ ആയി തുടരുക",
+ "login_form_server_empty": "ഒരു സെർവർ URL നൽകുക.",
+ "login_form_server_error": "സെർവറിലേക്ക് കണക്റ്റുചെയ്യാൻ കഴിഞ്ഞില്ല.",
+ "login_has_been_disabled": "ലോഗിൻ പ്രവർത്തനരഹിതമാക്കി.",
+ "login_password_changed_error": "നിങ്ങളുടെ പാസ്വേഡ് അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ ഒരു പിശകുണ്ടായി",
+ "login_password_changed_success": "പാസ്വേഡ് വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു",
+ "logout_all_device_confirmation": "എല്ലാ ഉപകരണങ്ങളിൽ നിന്നും ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "logout_this_device_confirmation": "ഈ ഉപകരണത്തിൽ നിന്ന് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "logs": "ലോഗുകൾ",
+ "longitude": "രേഖാംശം",
+ "look": "കാഴ്ച",
+ "loop_videos": "വീഡിയോകൾ ലൂപ്പ് ചെയ്യുക",
+ "loop_videos_description": "വിശദാംശ വ്യൂവറിൽ ഒരു വീഡിയോ യാന്ത്രികമായി ലൂപ്പ് ചെയ്യാൻ പ്രവർത്തനക്ഷമമാക്കുക.",
+ "main_branch_warning": "നിങ്ങൾ ഒരു ഡെവലപ്മെന്റ് പതിപ്പാണ് ഉപയോഗിക്കുന്നത്; ഒരു റിലീസ് പതിപ്പ് ഉപയോഗിക്കാൻ ഞങ്ങൾ ശക്തമായി ശുപാർശ ചെയ്യുന്നു!",
+ "main_menu": "പ്രധാന മെനു",
+ "make": "നിർമ്മാതാവ്",
+ "manage_geolocation": "സ്ഥാനം കൈകാര്യം ചെയ്യുക",
+ "manage_shared_links": "പങ്കിട്ട ലിങ്കുകൾ കൈകാര്യം ചെയ്യുക",
+ "manage_sharing_with_partners": "പങ്കാളികളുമായുള്ള പങ്കിടൽ കൈകാര്യം ചെയ്യുക",
+ "manage_the_app_settings": "ആപ്പ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "manage_your_account": "നിങ്ങളുടെ അക്കൗണ്ട് കൈകാര്യം ചെയ്യുക",
+ "manage_your_api_keys": "നിങ്ങളുടെ API കീകൾ കൈകാര്യം ചെയ്യുക",
+ "manage_your_devices": "നിങ്ങൾ ലോഗിൻ ചെയ്ത ഉപകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "manage_your_oauth_connection": "നിങ്ങളുടെ OAuth കണക്ഷൻ കൈകാര്യം ചെയ്യുക",
+ "map": "മാപ്പ്",
+ "map_assets_in_bounds": "{count, plural, =0 {ഈ പ്രദേശത്ത് ഫോട്ടോകളൊന്നുമില്ല} one {# ഫോട്ടോ} other {# ഫോട്ടോകൾ}}",
+ "map_cannot_get_user_location": "ഉപയോക്താവിന്റെ സ്ഥാനം ലഭിക്കുന്നില്ല",
+ "map_location_dialog_yes": "അതെ",
+ "map_location_picker_page_use_location": "ഈ സ്ഥലം ഉപയോഗിക്കുക",
+ "map_location_service_disabled_content": "നിങ്ങളുടെ നിലവിലെ സ്ഥാനത്ത് നിന്നുള്ള അസറ്റുകൾ പ്രദർശിപ്പിക്കുന്നതിന് ലൊക്കേഷൻ സേവനം പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്. ഇപ്പോൾ പ്രവർത്തനക്ഷമമാക്കണോ?",
+ "map_location_service_disabled_title": "ലൊക്കേഷൻ സേവനം പ്രവർത്തനരഹിതമാക്കി",
+ "map_marker_for_images": "{city}, {country} എന്നിവിടങ്ങളിൽ എടുത്ത ചിത്രങ്ങൾക്കുള്ള മാപ്പ് മാർക്കർ",
+ "map_marker_with_image": "ചിത്രത്തോടുകൂടിയ മാപ്പ് മാർക്കർ",
+ "map_no_location_permission_content": "നിങ്ങളുടെ നിലവിലെ സ്ഥാനത്ത് നിന്നുള്ള അസറ്റുകൾ പ്രദർശിപ്പിക്കുന്നതിന് ലൊക്കേഷൻ അനുമതി ആവശ്യമാണ്. ഇപ്പോൾ അനുവദിക്കണോ?",
+ "map_no_location_permission_title": "ലൊക്കേഷൻ അനുമതി നിഷേധിച്ചു",
+ "map_settings": "മാപ്പ് ക്രമീകരണങ്ങൾ",
+ "map_settings_dark_mode": "ഡാർക്ക് മോഡ്",
+ "map_settings_date_range_option_day": "കഴിഞ്ഞ 24 മണിക്കൂർ",
+ "map_settings_date_range_option_days": "കഴിഞ്ഞ {days} ദിവസങ്ങൾ",
+ "map_settings_date_range_option_year": "കഴിഞ്ഞ വർഷം",
+ "map_settings_date_range_option_years": "കഴിഞ്ഞ {years} വർഷങ്ങൾ",
+ "map_settings_dialog_title": "മാപ്പ് ക്രമീകരണങ്ങൾ",
+ "map_settings_include_show_archived": "ആർക്കൈവുചെയ്തവ ഉൾപ്പെടുത്തുക",
+ "map_settings_include_show_partners": "പങ്കാളികളെ ഉൾപ്പെടുത്തുക",
+ "map_settings_only_show_favorites": "പ്രിയപ്പെട്ടവ മാത്രം കാണിക്കുക",
+ "map_settings_theme_settings": "മാപ്പ് തീം",
+ "map_zoom_to_see_photos": "ഫോട്ടോകൾ കാണാൻ സൂം ഔട്ട് ചെയ്യുക",
+ "mark_all_as_read": "എല്ലാം വായിച്ചതായി അടയാളപ്പെടുത്തുക",
+ "mark_as_read": "വായിച്ചതായി അടയാളപ്പെടുത്തുക",
+ "marked_all_as_read": "എല്ലാം വായിച്ചതായി അടയാളപ്പെടുത്തി",
+ "matches": "ചേർച്ചകൾ",
+ "matching_assets": "ചേർച്ചയുള്ള അസറ്റുകൾ",
+ "media_type": "മീഡിയ തരം",
+ "memories": "ഓർമ്മകൾ",
+ "memories_all_caught_up": "എല്ലാം കണ്ടുതീർത്തു",
+ "memories_check_back_tomorrow": "കൂടുതൽ ഓർമ്മകൾക്കായി നാളെ വീണ്ടും പരിശോധിക്കുക",
+ "memories_setting_description": "നിങ്ങളുടെ ഓർമ്മകളിൽ നിങ്ങൾ കാണുന്നത് കൈകാര്യം ചെയ്യുക",
+ "memories_start_over": "വീണ്ടും തുടങ്ങുക",
+ "memories_swipe_to_close": "അടയ്ക്കാൻ മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക",
+ "memory": "മെമ്മറി",
+ "memory_lane_title": "ഓർമ്മകളുടെ പാത {title}",
+ "menu": "മെനു",
+ "merge": "ലയിപ്പിക്കുക",
+ "merge_people": "ആളുകളെ ലയിപ്പിക്കുക",
+ "merge_people_limit": "ഒരു സമയം 5 മുഖങ്ങൾ വരെ മാത്രമേ ലയിപ്പിക്കാൻ കഴിയൂ",
+ "merge_people_prompt": "ഈ ആളുകളെ ലയിപ്പിക്കണോ? ഈ പ്രവർത്തനം പഴയപടിയാക്കാൻ കഴിയില്ല.",
+ "merge_people_successfully": "ആളുകളെ വിജയകരമായി ലയിപ്പിച്ചു",
+ "merged_people_count": "{count, plural, one {# വ്യക്തിയെ ലയിപ്പിച്ചു} other {# ആളുകളെ ലയിപ്പിച്ചു}}",
+ "minimize": "ചെറുതാക്കുക",
+ "minute": "മിനിറ്റ്",
+ "minutes": "മിനിറ്റുകൾ",
+ "missing": "കാണാനില്ല",
+ "model": "മോഡൽ",
+ "month": "മാസം",
+ "monthly_title_text_date_format": "MMMM y",
+ "more": "കൂടുതൽ",
+ "move": "നീക്കുക",
+ "move_off_locked_folder": "ലോക്ക് ചെയ്ത ഫോൾഡറിൽ നിന്ന് മാറ്റുക",
+ "move_to_lock_folder_action_prompt": "{count} എണ്ണം ലോക്ക് ചെയ്ത ഫോൾഡറിലേക്ക് ചേർത്തു",
+ "move_to_locked_folder": "ലോക്ക് ചെയ്ത ഫോൾഡറിലേക്ക് മാറ്റുക",
+ "move_to_locked_folder_confirmation": "ഈ ഫോട്ടോകളും വീഡിയോയും എല്ലാ ആൽബങ്ങളിൽ നിന്നും നീക്കം ചെയ്യപ്പെടും, ലോക്ക് ചെയ്ത ഫോൾഡറിൽ നിന്ന് മാത്രമേ കാണാൻ കഴിയൂ",
+ "moved_to_archive": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} ആർക്കൈവിലേക്ക് മാറ്റി",
+ "moved_to_library": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} ലൈബ്രറിയിലേക്ക് മാറ്റി",
+ "moved_to_trash": "ട്രാഷിലേക്ക് മാറ്റി",
+ "multiselect_grid_edit_date_time_err_read_only": "വായിക്കാൻ മാത്രമുള്ള അസറ്റി(കളു)ടെ തീയതി എഡിറ്റുചെയ്യാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "multiselect_grid_edit_gps_err_read_only": "വായിക്കാൻ മാത്രമുള്ള അസറ്റി(കളു)ടെ സ്ഥാനം എഡിറ്റുചെയ്യാൻ കഴിയില്ല, ഒഴിവാക്കുന്നു",
+ "mute_memories": "ഓർമ്മകൾ നിശ്ശബ്ദമാക്കുക",
+ "my_albums": "എന്റെ ആൽബങ്ങൾ",
+ "name": "പേര്",
+ "name_or_nickname": "പേര് അല്ലെങ്കിൽ വിളിപ്പേര്",
+ "network_requirement_photos_upload": "ഫോട്ടോകൾ ബാക്കപ്പ് ചെയ്യാൻ സെല്ലുലാർ ഡാറ്റ ഉപയോഗിക്കുക",
+ "network_requirement_videos_upload": "വീഡിയോകൾ ബാക്കപ്പ് ചെയ്യാൻ സെല്ലുലാർ ഡാറ്റ ഉപയോഗിക്കുക",
+ "network_requirements": "നെറ്റ്വർക്ക് ആവശ്യകതകൾ",
+ "network_requirements_updated": "നെറ്റ്വർക്ക് ആവശ്യകതകൾ മാറി, ബാക്കപ്പ് ക്യൂ പുനഃസജ്ജമാക്കുന്നു",
+ "networking_settings": "നെറ്റ്വർക്കിംഗ്",
+ "networking_subtitle": "സെർവർ എൻഡ്പോയിന്റ് ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക",
+ "never": "ഒരിക്കലും ഇല്ല",
+ "new_album": "പുതിയ ആൽബം",
+ "new_api_key": "പുതിയ API കീ",
+ "new_password": "പുതിയ പാസ്വേഡ്",
+ "new_person": "പുതിയ വ്യക്തി",
+ "new_pin_code": "പുതിയ പിൻ കോഡ്",
+ "new_pin_code_subtitle": "നിങ്ങൾ ആദ്യമായിട്ടാണ് ലോക്ക് ചെയ്ത ഫോൾഡർ ആക്സസ് ചെയ്യുന്നത്. ഈ പേജ് സുരക്ഷിതമായി ആക്സസ് ചെയ്യാൻ ഒരു പിൻ കോഡ് ഉണ്ടാക്കുക",
+ "new_timeline": "പുതിയ ടൈംലൈൻ",
+ "new_user_created": "പുതിയ ഉപയോക്താവിനെ ഉണ്ടാക്കി",
+ "new_version_available": "പുതിയ പതിപ്പ് ലഭ്യമാണ്",
+ "newest_first": "ഏറ്റവും പുതിയത് ആദ്യം",
+ "next": "അടുത്തത്",
+ "next_memory": "അടുത്ത ഓർമ്മ",
+ "no": "ഇല്ല",
+ "no_albums_message": "നിങ്ങളുടെ ഫോട്ടോകളും വീഡിയോകളും ക്രമീകരിക്കാൻ ഒരു ആൽബം ഉണ്ടാക്കുക",
+ "no_albums_with_name_yet": "ഈ പേരിൽ നിങ്ങൾക്ക് ഇതുവരെ ആൽബങ്ങളൊന്നും ഇല്ലെന്ന് തോന്നുന്നു.",
+ "no_albums_yet": "നിങ്ങൾക്ക് ഇതുവരെ ആൽബങ്ങളൊന്നും ഇല്ലെന്ന് തോന്നുന്നു.",
+ "no_archived_assets_message": "നിങ്ങളുടെ ഫോട്ടോ കാഴ്ചയിൽ നിന്ന് മറയ്ക്കാൻ ഫോട്ടോകളും വീഡിയോകളും ആർക്കൈവ് ചെയ്യുക",
+ "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": "കുറിപ്പ്: മുമ്പ് അപ്ലോഡ് ചെയ്ത അസറ്റുകളിൽ സ്റ്റോറേജ് ലേബൽ പ്രയോഗിക്കാൻ, ഇത് പ്രവർത്തിപ്പിക്കുക",
+ "notes": "കുറിപ്പുകൾ",
+ "nothing_here_yet": "ഇവിടെ ഇതുവരെ ഒന്നുമില്ല",
+ "notification_permission_dialog_content": "അറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കാൻ, ക്രമീകരണങ്ങളിലേക്ക് പോയി 'അനുവദിക്കുക' തിരഞ്ഞെടുക്കുക.",
+ "notification_permission_list_tile_content": "അറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കാൻ അനുമതി നൽകുക.",
+ "notification_permission_list_tile_enable_button": "അറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കുക",
+ "notification_permission_list_tile_title": "അറിയിപ്പ് അനുമതി",
+ "notification_toggle_setting_description": "ഇമെയിൽ അറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കുക",
+ "notifications": "അറിയിപ്പുകൾ",
+ "notifications_setting_description": "അറിയിപ്പുകൾ കൈകാര്യം ചെയ്യുക",
+ "oauth": "OAuth",
+ "official_immich_resources": "Immich-ന്റെ ഔദ്യോഗിക ഉറവിടങ്ങൾ",
+ "offline": "ഓഫ്ലൈൻ",
+ "offset": "ഓഫ്സെറ്റ്",
+ "ok": "ശരി",
+ "oldest_first": "ഏറ്റവും പഴയത് ആദ്യം",
+ "on_this_device": "ഈ ഉപകരണത്തിൽ",
+ "onboarding": "ഓൺബോർഡിംഗ്",
+ "onboarding_locale_description": "നിങ്ങൾക്കിഷ്ടപ്പെട്ട ഭാഷ തിരഞ്ഞെടുക്കുക. ഇത് പിന്നീട് നിങ്ങളുടെ ക്രമീകരണങ്ങളിൽ മാറ്റാവുന്നതാണ്.",
+ "onboarding_privacy_description": "ഇനിപ്പറയുന്ന (ഓപ്ഷണൽ) ഫീച്ചറുകൾ ബാഹ്യ സേവനങ്ങളെ ആശ്രയിച്ചിരിക്കുന്നു, അവ എപ്പോൾ വേണമെങ്കിലും ക്രമീകരണങ്ങളിൽ പ്രവർത്തനരഹിതമാക്കാം.",
+ "onboarding_server_welcome_description": "ചില സാധാരണ ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് നിങ്ങളുടെ ഇൻസ്റ്റൻസ് സജ്ജമാക്കാം.",
+ "onboarding_theme_description": "നിങ്ങളുടെ ഇൻസ്റ്റൻസിനായി ഒരു കളർ തീം തിരഞ്ഞെടുക്കുക. ഇത് പിന്നീട് നിങ്ങളുടെ ക്രമീകരണങ്ങളിൽ മാറ്റാവുന്നതാണ്.",
+ "onboarding_user_welcome_description": "നമുക്ക് ആരംഭിക്കാം!",
+ "onboarding_welcome_user": "സ്വാഗതം, {user}",
+ "online": "ഓൺലൈൻ",
+ "only_favorites": "പ്രിയപ്പെട്ടവ മാത്രം",
+ "open": "തുറക്കുക",
+ "open_in_map_view": "മാപ്പ് കാഴ്ചയിൽ തുറക്കുക",
+ "open_in_openstreetmap": "OpenStreetMap-ൽ തുറക്കുക",
+ "open_the_search_filters": "തിരയൽ ഫിൽട്ടറുകൾ തുറക്കുക",
+ "options": "ഓപ്ഷനുകൾ",
+ "or": "അല്ലെങ്കിൽ",
+ "organize_into_albums": "ആൽബങ്ങളായി ക്രമീകരിക്കുക",
+ "organize_into_albums_description": "നിലവിലെ സിങ്ക് ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് നിലവിലുള്ള ഫോട്ടോകൾ ആൽബങ്ങളിലേക്ക് മാറ്റുക",
+ "organize_your_library": "നിങ്ങളുടെ ലൈബ്രറി ക്രമീകരിക്കുക",
+ "original": "യഥാർത്ഥം",
+ "other": "മറ്റുള്ളവ",
+ "other_devices": "മറ്റ് ഉപകരണങ്ങൾ",
+ "other_entities": "മറ്റ് എന്റിറ്റികൾ",
+ "other_variables": "മറ്റ് വേരിയബിളുകൾ",
+ "owned": "സ്വന്തമായുള്ളത്",
+ "owner": "ഉടമ",
+ "partner": "പങ്കാളി",
+ "partner_can_access": "{partner}-ക്ക് ആക്സസ് ചെയ്യാൻ കഴിയും",
+ "partner_can_access_assets": "ആർക്കൈവുചെയ്തതും ഇല്ലാതാക്കിയതുമായവ ഒഴികെ നിങ്ങളുടെ എല്ലാ ഫോട്ടോകളും വീഡിയോകളും",
+ "partner_can_access_location": "നിങ്ങളുടെ ഫോട്ടോകൾ എടുത്ത സ്ഥലം",
+ "partner_list_user_photos": "{user}-ന്റെ ഫോട്ടോകൾ",
+ "partner_list_view_all": "എല്ലാം കാണുക",
+ "partner_page_empty_message": "നിങ്ങളുടെ ഫോട്ടോകൾ ഇതുവരെ ഒരു പങ്കാളിയുമായും പങ്കിട്ടിട്ടില്ല.",
+ "partner_page_no_more_users": "ചേർക്കാൻ കൂടുതൽ ഉപയോക്താക്കളില്ല",
+ "partner_page_partner_add_failed": "പങ്കാളിയെ ചേർക്കുന്നതിൽ പരാജയപ്പെട്ടു",
+ "partner_page_select_partner": "പങ്കാളിയെ തിരഞ്ഞെടുക്കുക",
+ "partner_page_shared_to_title": "ഇതിലേക്ക് പങ്കിട്ടു",
+ "partner_page_stop_sharing_content": "{partner}-ക്ക് ഇനി നിങ്ങളുടെ ഫോട്ടോകൾ ആക്സസ് ചെയ്യാൻ കഴിയില്ല.",
+ "partner_sharing": "പങ്കാളിയുമായി പങ്കിടൽ",
+ "partners": "പങ്കാളികൾ",
+ "password": "പാസ്വേർഡ്",
+ "password_does_not_match": "പാസ്വേഡ് പൊരുത്തപ്പെടുന്നില്ല",
+ "password_required": "പാസ്വേഡ് ആവശ്യമാണ്",
+ "password_reset_success": "പാസ്വേഡ് റീസെറ്റ് വിജയിച്ചു",
+ "past_durations": {
+ "days": "കഴിഞ്ഞ {days, plural, one {ദിവസം} other {# ദിവസങ്ങൾ}}",
+ "hours": "കഴിഞ്ഞ {hours, plural, one {മണിക്കൂർ} other {# മണിക്കൂറുകൾ}}",
+ "years": "കഴിഞ്ഞ {years, plural, one {വർഷം} other {# വർഷങ്ങൾ}}"
+ },
+ "path": "പാത്ത്",
+ "pattern": "പാറ്റേൺ",
+ "pause": "താൽക്കാലികമായി നിർത്തുക",
+ "pause_memories": "ഓർമ്മകൾ താൽക്കാലികമായി നിർത്തുക",
+ "paused": "താൽക്കാലികമായി നിർത്തി",
+ "pending": "കാത്തിരിക്കുന്നു",
+ "people": "ആളുകൾ",
+ "people_edits_count": "{count, plural, one {# വ്യക്തിയെ എഡിറ്റുചെയ്തു} other {# ആളുകളെ എഡിറ്റുചെയ്തു}}",
+ "people_feature_description": "ആളുകളനുസരിച്ച് ഗ്രൂപ്പ് ചെയ്ത ഫോട്ടോകളും വീഡിയോകളും ബ്രൗസുചെയ്യുന്നു",
+ "people_sidebar_description": "സൈഡ്ബാറിൽ 'ആളുകൾ' എന്നതിലേക്ക് ഒരു ലിങ്ക് പ്രദർശിപ്പിക്കുക",
+ "permanent_deletion_warning": "ശാശ്വതമായ ഇല്ലാതാക്കൽ മുന്നറിയിപ്പ്",
+ "permanent_deletion_warning_setting_description": "അസറ്റുകൾ ശാശ്വതമായി ഇല്ലാതാക്കുമ്പോൾ ഒരു മുന്നറിയിപ്പ് കാണിക്കുക",
+ "permanently_delete": "ശാശ്വതമായി ഇല്ലാതാക്കുക",
+ "permanently_delete_assets_count": "{count, plural, one {അസറ്റ്} other {അസറ്റുകൾ}} ശാശ്വതമായി ഇല്ലാതാക്കുക",
+ "permanently_delete_assets_prompt": "{count, plural, one {ഈ അസറ്റ് ശാശ്വതമായി ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?} other {ഈ # അസറ്റുകൾ ശാശ്വതമായി ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?}} ഇത് {count, plural, one {അതിനെ അതിന്റെ} other {അവയെ അവയുടെ}} ആൽബത്തിൽ(ങ്ങളിൽ) നിന്നും നീക്കം ചെയ്യും.",
+ "permanently_deleted_asset": "അസറ്റ് ശാശ്വതമായി ഇല്ലാതാക്കി",
+ "permanently_deleted_assets_count": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} ശാശ്വതമായി ഇല്ലാതാക്കി",
+ "permission": "അനുമതി",
+ "permission_empty": "നിങ്ങളുടെ അനുമതി ശൂന്യമാകരുത്",
+ "permission_onboarding_back": "തിരികെ",
+ "permission_onboarding_continue_anyway": "എന്തായാലും തുടരുക",
+ "permission_onboarding_get_started": "തുടങ്ങാം",
+ "permission_onboarding_go_to_settings": "ക്രമീകരണങ്ങളിലേക്ക് പോകുക",
+ "permission_onboarding_permission_denied": "അനുമതി നിഷേധിച്ചു. Immich ഉപയോഗിക്കുന്നതിന്, ക്രമീകരണങ്ങളിൽ ഫോട്ടോ, വീഡിയോ അനുമതികൾ നൽകുക.",
+ "permission_onboarding_permission_granted": "അനുമതി ലഭിച്ചു! നിങ്ങൾ തയ്യാറാണ്.",
+ "permission_onboarding_permission_limited": "അനുമതി പരിമിതമാണ്. Immich-ന് നിങ്ങളുടെ മുഴുവൻ ഗാലറി ശേഖരവും ബാക്കപ്പ് ചെയ്യാനും കൈകാര്യം ചെയ്യാനും അനുവദിക്കുന്നതിന്, ക്രമീകരണങ്ങളിൽ ഫോട്ടോ, വീഡിയോ അനുമതികൾ നൽകുക.",
+ "permission_onboarding_request": "നിങ്ങളുടെ ഫോട്ടോകളും വീഡിയോകളും കാണുന്നതിന് Immich-ന് അനുമതി ആവശ്യമാണ്.",
+ "person": "വ്യക്തി",
+ "person_age_months": "{months, plural, one {# മാസം} other {# മാസം}} പ്രായം",
+ "person_age_year_months": "1 വർഷവും {months, plural, one {# മാസവും} other {# മാസവും}} പ്രായം",
+ "person_age_years": "{years, plural, other {# വയസ്സ്}}",
+ "person_birthdate": "{date}-ന് ജനിച്ചു",
+ "person_hidden": "{name}{hidden, select, true { (മറച്ചത്)} other {}}",
+ "photo_shared_all_users": "നിങ്ങൾ എല്ലാ ഉപയോക്താക്കളുമായും ഫോട്ടോകൾ പങ്കിട്ടു, അല്ലെങ്കിൽ നിങ്ങൾക്ക് പങ്കിടാൻ ഉപയോക്താക്കളാരും ഇല്ലെന്നു തോന്നുന്നു.",
+ "photos": "ഫോട്ടോകൾ",
+ "photos_and_videos": "ഫോട്ടോകളും വീഡിയോകളും",
+ "photos_count": "{count, plural, one {{count, number} ഫോട്ടോ} other {{count, number} ഫോട്ടോകൾ}}",
+ "photos_from_previous_years": "മുൻ വർഷങ്ങളിലെ ഫോട്ടോകൾ",
+ "pick_a_location": "ഒരു സ്ഥലം തിരഞ്ഞെടുക്കുക",
+ "pin_code_changed_successfully": "പിൻ കോഡ് വിജയകരമായി മാറ്റി",
+ "pin_code_reset_successfully": "പിൻ കോഡ് വിജയകരമായി റീസെറ്റ് ചെയ്തു",
+ "pin_code_setup_successfully": "പിൻ കോഡ് വിജയകരമായി സജ്ജീകരിച്ചു",
+ "pin_verification": "പിൻ കോഡ് പരിശോധന",
+ "place": "സ്ഥലം",
+ "places": "സ്ഥലങ്ങൾ",
+ "places_count": "{count, plural, one {{count, number} സ്ഥലം} other {{count, number} സ്ഥലങ്ങൾ}}",
+ "play": "പ്ലേ ചെയ്യുക",
+ "play_memories": "ഓർമ്മകൾ പ്ലേ ചെയ്യുക",
+ "play_motion_photo": "ചലിക്കുന്ന ഫോട്ടോ പ്ലേ ചെയ്യുക",
+ "play_or_pause_video": "വീഡിയോ പ്ലേ ചെയ്യുക അല്ലെങ്കിൽ താൽക്കാലികമായി നിർത്തുക",
+ "please_auth_to_access": "ആക്സസ് ചെയ്യുന്നതിന് ദയവായി പ്രാമാണീകരിക്കുക",
+ "port": "പോർട്ട്",
+ "preferences_settings_subtitle": "ആപ്പിന്റെ മുൻഗണനകൾ കൈകാര്യം ചെയ്യുക",
+ "preferences_settings_title": "മുൻഗണനകൾ",
+ "preparing": "തയ്യാറാക്കുന്നു",
+ "preset": "പ്രീസെറ്റ്",
+ "preview": "പ്രിവ്യൂ",
+ "previous": "മുമ്പത്തെ",
+ "previous_memory": "മുമ്പത്തെ ഓർമ്മ",
+ "previous_or_next_day": "ദിവസം മുന്നോട്ട്/പുറകോട്ട്",
+ "previous_or_next_month": "മാസം മുന്നോട്ട്/പുറകോട്ട്",
+ "previous_or_next_photo": "ഫോട്ടോ മുന്നോട്ട്/പുറകോട്ട്",
+ "previous_or_next_year": "വർഷം മുന്നോട്ട്/പുറകോട്ട്",
+ "primary": "പ്രധാനമായത്",
+ "privacy": "സ്വകാര്യത",
+ "profile": "പ്രൊഫൈൽ",
+ "profile_drawer_app_logs": "ലോഗുകൾ",
+ "profile_drawer_client_out_of_date_major": "മൊബൈൽ ആപ്പ് കാലഹരണപ്പെട്ടു. ദയവായി ഏറ്റവും പുതിയ പ്രധാന പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക.",
+ "profile_drawer_client_out_of_date_minor": "മൊബൈൽ ആപ്പ് കാലഹരണപ്പെട്ടു. ദയവായി ഏറ്റവും പുതിയ മൈനർ പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക.",
+ "profile_drawer_client_server_up_to_date": "ക്ലയിന്റും സെർവറും ഏറ്റവും പുതിയതാണ്",
+ "profile_drawer_github": "ഗിറ്റ്ഹബ്",
+ "profile_drawer_readonly_mode": "റീഡ്-ഓൺലി മോഡ് പ്രവർത്തനക്ഷമമാക്കി. പുറത്തുകടക്കാൻ ഉപയോക്തൃ അവതാർ ഐക്കണിൽ ദീർഘനേരം അമർത്തുക.",
+ "profile_drawer_server_out_of_date_major": "സെർവർ കാലഹരണപ്പെട്ടു. ദയവായി ഏറ്റവും പുതിയ പ്രധാന പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക.",
+ "profile_drawer_server_out_of_date_minor": "സെർവർ കാലഹരണപ്പെട്ടു. ദയവായി ഏറ്റവും പുതിയ മൈനർ പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക.",
+ "profile_image_of_user": "{user}-ന്റെ പ്രൊഫൈൽ ചിത്രം",
+ "profile_picture_set": "പ്രൊഫൈൽ ചിത്രം സജ്ജീകരിച്ചു.",
+ "public_album": "പൊതു ആൽബം",
+ "public_share": "പൊതു പങ്കിടൽ",
+ "purchase_account_info": "സഹായി",
+ "purchase_activated_subtitle": "Immich-നെയും ഓപ്പൺ സോഴ്സ് സോഫ്റ്റ്വെയറിനെയും പിന്തുണച്ചതിന് നന്ദി",
+ "purchase_activated_time": "{date}-ന് സജീവമാക്കി",
+ "purchase_activated_title": "നിങ്ങളുടെ കീ വിജയകരമായി സജീവമാക്കി",
+ "purchase_button_activate": "സജീവമാക്കുക",
+ "purchase_button_buy": "വാങ്ങുക",
+ "purchase_button_buy_immich": "Immich വാങ്ങുക",
+ "purchase_button_never_show_again": "ഇനി കാണിക്കരുത്",
+ "purchase_button_reminder": "30 ദിവസത്തിനുള്ളിൽ ഓർമ്മിപ്പിക്കുക",
+ "purchase_button_remove_key": "കീ നീക്കം ചെയ്യുക",
+ "purchase_button_select": "തിരഞ്ഞെടുക്കുക",
+ "purchase_failed_activation": "സജീവമാക്കുന്നതിൽ പരാജയപ്പെട്ടു! ശരിയായ പ്രൊഡക്റ്റ് കീക്കായി ദയവായി നിങ്ങളുടെ ഇമെയിൽ പരിശോധിക്കുക!",
+ "purchase_individual_description_1": "ഒരു വ്യക്തിക്ക്",
+ "purchase_individual_description_2": "സഹായിയുടെ നില",
+ "purchase_individual_title": "വ്യക്തിഗതം",
+ "purchase_input_suggestion": "പ്രൊഡക്റ്റ് കീ ഉണ്ടോ? താഴെ കീ നൽകുക",
+ "purchase_license_subtitle": "സേവനത്തിന്റെ തുടർ വികസനത്തെ പിന്തുണയ്ക്കാൻ Immich വാങ്ങുക",
+ "purchase_lifetime_description": "ആജീവനാന്ത വാങ്ങൽ",
+ "purchase_option_title": "വാങ്ങാനുള്ള ഓപ്ഷനുകൾ",
+ "purchase_panel_info_1": "Immich നിർമ്മിക്കാൻ ധാരാളം സമയവും പ്രയത്നവും ആവശ്യമാണ്, അത് കഴിയുന്നത്ര മികച്ചതാക്കാൻ മുഴുവൻ സമയ എഞ്ചിനീയർമാർ പ്രവർത്തിക്കുന്നു. ഓപ്പൺ സോഴ്സ് സോഫ്റ്റ്വെയറും ധാർമ്മികമായ ബിസിനസ്സ് രീതികളും ഡെവലപ്പർമാർക്ക് സുസ്ഥിരമായ വരുമാന മാർഗ്ഗമാക്കുക, ചൂഷണപരമായ ക്ലൗഡ് സേവനങ്ങൾക്ക് യഥാർത്ഥ ബദലുകളുള്ള സ്വകാര്യതയെ മാനിക്കുന്ന ഒരു ആവാസവ്യവസ്ഥ സൃഷ്ടിക്കുക എന്നതാണ് ഞങ്ങളുടെ ദൗത്യം.",
+ "purchase_panel_info_2": "പേവാളുകൾ ചേർക്കില്ലെന്ന് ഞങ്ങൾ പ്രതിജ്ഞാബദ്ധരായതിനാൽ, ഈ വാങ്ങൽ നിങ്ങൾക്ക് Immich-ൽ അധിക ഫീച്ചറുകളൊന്നും നൽകില്ല. Immich-ന്റെ തുടർ വികസനത്തെ പിന്തുണയ്ക്കാൻ നിങ്ങളെപ്പോലുള്ള ഉപയോക്താക്കളെയാണ് ഞങ്ങൾ ആശ്രയിക്കുന്നത്.",
+ "purchase_panel_title": "പദ്ധതിയെ പിന്തുണയ്ക്കുക",
+ "purchase_per_server": "ഓരോ സെർവറിനും",
+ "purchase_per_user": "ഓരോ ഉപയോക്താവിനും",
+ "purchase_remove_product_key": "പ്രൊഡക്റ്റ് കീ നീക്കം ചെയ്യുക",
+ "purchase_remove_product_key_prompt": "പ്രൊഡക്റ്റ് കീ നീക്കം ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "purchase_remove_server_product_key": "സെർവർ പ്രൊഡക്റ്റ് കീ നീക്കം ചെയ്യുക",
+ "purchase_remove_server_product_key_prompt": "സെർവർ പ്രൊഡക്റ്റ് കീ നീക്കം ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "purchase_server_description_1": "മുഴുവൻ സെർവറിനും",
+ "purchase_server_description_2": "സഹായിയുടെ നില",
+ "purchase_server_title": "സെർവർ",
+ "purchase_settings_server_activated": "സെർവർ പ്രൊഡക്റ്റ് കീ അഡ്മിൻ ആണ് കൈകാര്യം ചെയ്യുന്നത്",
+ "query_asset_id": "അസറ്റ് ഐഡി അന്വേഷിക്കുക",
+ "queue_status": "ക്യൂ ചെയ്യുന്നു {count}/{total}",
+ "rating": "സ്റ്റാർ റേറ്റിംഗ്",
+ "rating_clear": "റേറ്റിംഗ് ക്ലിയർ ചെയ്യുക",
+ "rating_count": "{count, plural, one {# സ്റ്റാർ} other {# സ്റ്റാറുകൾ}}",
+ "rating_description": "വിവര പാനലിൽ EXIF റേറ്റിംഗ് പ്രദർശിപ്പിക്കുക",
+ "reaction_options": "പ്രതികരണ ഓപ്ഷനുകൾ",
+ "read_changelog": "മാറ്റങ്ങളുടെ ലോഗ് വായിക്കുക",
+ "readonly_mode_disabled": "റീഡ്-ഓൺലി മോഡ് പ്രവർത്തനരഹിതമാക്കി",
+ "readonly_mode_enabled": "റീഡ്-ഓൺലി മോഡ് പ്രവർത്തനക്ഷമമാക്കി",
+ "ready_for_upload": "അപ്ലോഡിനായി തയ്യാറാണ്",
+ "reassign": "വീണ്ടും നൽകുക",
+ "reassigned_assets_to_existing_person": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} {name, select, null {നിലവിലുള്ള ഒരു വ്യക്തിക്ക്} other {{name}-ന്}} വീണ്ടും നൽകി",
+ "reassigned_assets_to_new_person": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} ഒരു പുതിയ വ്യക്തിക്ക് വീണ്ടും നൽകി",
+ "reassing_hint": "തിരഞ്ഞെടുത്ത അസറ്റുകൾ നിലവിലുള്ള ഒരു വ്യക്തിക്ക് നൽകുക",
+ "recent": "സമീപകാലം",
+ "recent-albums": "സമീപകാല ആൽബങ്ങൾ",
+ "recent_searches": "സമീപകാല തിരയലുകൾ",
+ "recently_added": "അടുത്തിടെ ചേർത്തത്",
+ "recently_added_page_title": "അടുത്തിടെ ചേർത്തത്",
+ "recently_taken": "അടുത്തിടെ എടുത്തത്",
+ "recently_taken_page_title": "അടുത്തിടെ എടുത്തത്",
+ "refresh": "പുതുക്കുക",
+ "refresh_encoded_videos": "എൻകോഡ് ചെയ്ത വീഡിയോകൾ പുതുക്കുക",
+ "refresh_faces": "മുഖങ്ങൾ പുതുക്കുക",
+ "refresh_metadata": "മെറ്റാഡാറ്റ പുതുക്കുക",
+ "refresh_thumbnails": "തംബ്നെയിലുകൾ പുതുക്കുക",
+ "refreshed": "പുതുക്കി",
+ "refreshes_every_file": "നിലവിലുള്ളതും പുതിയതുമായ എല്ലാ ഫയലുകളും വീണ്ടും വായിക്കുന്നു",
+ "refreshing_encoded_video": "എൻകോഡ് ചെയ്ത വീഡിയോ പുതുക്കുന്നു",
+ "refreshing_faces": "മുഖങ്ങൾ പുതുക്കുന്നു",
+ "refreshing_metadata": "മെറ്റാഡാറ്റ പുതുക്കുന്നു",
+ "regenerating_thumbnails": "തംബ്നെയിലുകൾ പുനർനിർമ്മിക്കുന്നു",
+ "remote": "റിമോട്ട്",
+ "remote_assets": "റിമോട്ട് അസറ്റുകൾ",
+ "remote_media_summary": "റിമോട്ട് മീഡിയ സംഗ്രഹം",
+ "remove": "നീക്കം ചെയ്യുക",
+ "remove_assets_album_confirmation": "ആൽബത്തിൽ നിന്ന് {count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} നീക്കം ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "remove_assets_shared_link_confirmation": "ഈ പങ്കിട്ട ലിങ്കിൽ നിന്ന് {count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} നീക്കം ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "remove_assets_title": "അസറ്റുകൾ നീക്കം ചെയ്യണോ?",
+ "remove_custom_date_range": "കസ്റ്റം തീയതി പരിധി നീക്കം ചെയ്യുക",
+ "remove_deleted_assets": "ഇല്ലാതാക്കിയ അസറ്റുകൾ നീക്കം ചെയ്യുക",
+ "remove_from_album": "ആൽബത്തിൽ നിന്ന് നീക്കം ചെയ്യുക",
+ "remove_from_album_action_prompt": "{count} എണ്ണം ആൽബത്തിൽ നിന്ന് നീക്കം ചെയ്തു",
+ "remove_from_favorites": "പ്രിയപ്പെട്ടവയിൽ നിന്ന് നീക്കം ചെയ്യുക",
+ "remove_from_lock_folder_action_prompt": "{count} എണ്ണം ലോക്ക് ചെയ്ത ഫോൾഡറിൽ നിന്ന് നീക്കം ചെയ്തു",
+ "remove_from_locked_folder": "ലോക്ക് ചെയ്ത ഫോൾഡറിൽ നിന്ന് നീക്കം ചെയ്യുക",
+ "remove_from_locked_folder_confirmation": "ഈ ഫോട്ടോകളും വീഡിയോകളും ലോക്ക് ചെയ്ത ഫോൾഡറിൽ നിന്ന് മാറ്റണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? അവ നിങ്ങളുടെ ലൈബ്രറിയിൽ ദൃശ്യമാകും.",
+ "remove_from_shared_link": "പങ്കിട്ട ലിങ്കിൽ നിന്ന് നീക്കം ചെയ്യുക",
+ "remove_memory": "ഓർമ്മ നീക്കം ചെയ്യുക",
+ "remove_photo_from_memory": "ഈ ഓർമ്മയിൽ നിന്ന് ഫോട്ടോ നീക്കം ചെയ്യുക",
+ "remove_tag": "ടാഗ് നീക്കം ചെയ്യുക",
+ "remove_url": "URL നീക്കം ചെയ്യുക",
+ "remove_user": "ഉപയോക്താവിനെ നീക്കം ചെയ്യുക",
+ "removed_api_key": "API കീ നീക്കം ചെയ്തു: {name}",
+ "removed_from_archive": "ആർക്കൈവിൽ നിന്ന് നീക്കം ചെയ്തു",
+ "removed_from_favorites": "പ്രിയപ്പെട്ടവയിൽ നിന്ന് നീക്കം ചെയ്തു",
+ "removed_from_favorites_count": "{count, plural, other {# എണ്ണം}} പ്രിയപ്പെട്ടവയിൽ നിന്ന് നീക്കം ചെയ്തു",
+ "removed_memory": "ഓർമ്മ നീക്കം ചെയ്തു",
+ "removed_photo_from_memory": "ഓർമ്മയിൽ നിന്ന് ഫോട്ടോ നീക്കം ചെയ്തു",
+ "removed_tagged_assets": "{count, plural, one {# അസറ്റിൽ നിന്ന്} other {# അസറ്റുകളിൽ നിന്ന്}} ടാഗ് നീക്കം ചെയ്തു",
+ "rename": "പുനർനാമകരണം ചെയ്യുക",
+ "repair": "റിപ്പയർ ചെയ്യുക",
+ "repair_no_results_message": "ട്രാക്ക് ചെയ്യാത്തതും കാണാതായതുമായ ഫയലുകൾ ഇവിടെ കാണിക്കും",
+ "replace_with_upload": "അപ്ലോഡ് ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുക",
+ "repository": "റെപ്പോസിറ്ററി",
+ "require_password": "പാസ്വേഡ് ആവശ്യമാണ്",
+ "require_user_to_change_password_on_first_login": "ആദ്യ ലോഗിൻ ചെയ്യുമ്പോൾ പാസ്വേഡ് മാറ്റാൻ ഉപയോക്താവിനോട് ആവശ്യപ്പെടുക",
+ "rescan": "വീണ്ടും സ്കാൻ ചെയ്യുക",
+ "reset": "റീസെറ്റ് ചെയ്യുക",
+ "reset_password": "പാസ്വേഡ് റീസെറ്റ് ചെയ്യുക",
+ "reset_people_visibility": "ആളുകളുടെ ദൃശ്യത പുനഃസജ്ജമാക്കുക",
+ "reset_pin_code": "പിൻ കോഡ് റീസെറ്റ് ചെയ്യുക",
+ "reset_pin_code_description": "നിങ്ങൾ പിൻ കോഡ് മറന്നെങ്കിൽ, അത് പുനഃസജ്ജമാക്കാൻ നിങ്ങൾക്ക് സെർവർ അഡ്മിനിസ്ട്രേറ്ററുമായി ബന്ധപ്പെടാം",
+ "reset_pin_code_success": "പിൻ കോഡ് വിജയകരമായി റീസെറ്റ് ചെയ്തു",
+ "reset_pin_code_with_password": "നിങ്ങളുടെ പാസ്വേഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് എപ്പോഴും പിൻ കോഡ് റീസെറ്റ് ചെയ്യാം",
+ "reset_sqlite": "SQLite ഡാറ്റാബേസ് റീസെറ്റ് ചെയ്യുക",
+ "reset_sqlite_confirmation": "SQLite ഡാറ്റാബേസ് റീസെറ്റ് ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? ഡാറ്റ വീണ്ടും സിങ്ക് ചെയ്യുന്നതിന് നിങ്ങൾ ലോഗ് ഔട്ട് ചെയ്ത് വീണ്ടും ലോഗിൻ ചെയ്യേണ്ടിവരും",
+ "reset_sqlite_success": "SQLite ഡാറ്റാബേസ് വിജയകരമായി റീസെറ്റ് ചെയ്തു",
+ "reset_to_default": "ഡിഫോൾട്ടിലേക്ക് പുനഃസജ്ജമാക്കുക",
+ "resolve_duplicates": "ഡ്യൂപ്ലിക്കേറ്റുകൾ പരിഹരിക്കുക",
+ "resolved_all_duplicates": "എല്ലാ ഡ്യൂപ്ലിക്കേറ്റുകളും പരിഹരിച്ചു",
+ "restore": "പുനഃസ്ഥാപിക്കുക",
+ "restore_all": "എല്ലാം പുനഃസ്ഥാപിക്കുക",
+ "restore_trash_action_prompt": "{count} എണ്ണം ട്രാഷിൽ നിന്ന് പുനഃസ്ഥാപിച്ചു",
+ "restore_user": "ഉപയോക്താവിനെ പുനഃസ്ഥാപിക്കുക",
+ "restored_asset": "അസറ്റ് പുനഃസ്ഥാപിച്ചു",
+ "resume": "പുനരാരംഭിക്കുക",
+ "resume_paused_jobs": "{count, plural, one {താൽക്കാലികമായി നിർത്തിയ # ജോലി} other {താൽക്കാലികമായി നിർത്തിയ # ജോലികൾ}} പുനരാരംഭിക്കുക",
+ "retry_upload": "അപ്ലോഡ് വീണ്ടും ശ്രമിക്കുക",
+ "review_duplicates": "ഡ്യൂപ്ലിക്കേറ്റുകൾ അവലോകനം ചെയ്യുക",
+ "review_large_files": "വലിയ ഫയലുകൾ അവലോകനം ചെയ്യുക",
+ "role": "റോൾ",
+ "role_editor": "എഡിറ്റർ",
+ "role_viewer": "കാണുന്നയാൾ",
+ "running": "പ്രവർത്തിക്കുന്നു",
+ "save": "സേവ് ചെയ്യുക",
+ "save_to_gallery": "ഗാലറിയിലേക്ക് സേവ് ചെയ്യുക",
+ "saved_api_key": "API കീ സേവ് ചെയ്തു",
+ "saved_profile": "പ്രൊഫൈൽ സേവ് ചെയ്തു",
+ "saved_settings": "ക്രമീകരണങ്ങൾ സേവ് ചെയ്തു",
+ "say_something": "എന്തെങ്കിലും പറയൂ",
+ "scaffold_body_error_occurred": "പിശക് സംഭവിച്ചു",
+ "scan_all_libraries": "എല്ലാ ലൈബ്രറികളും സ്കാൻ ചെയ്യുക",
+ "scan_library": "സ്കാൻ ചെയ്യുക",
+ "scan_settings": "സ്കാൻ ക്രമീകരണങ്ങൾ",
+ "scanning_for_album": "ആൽബത്തിനായി സ്കാൻ ചെയ്യുന്നു...",
+ "search": "തിരയുക",
+ "search_albums": "ആൽബങ്ങൾക്കായി തിരയുക",
+ "search_by_context": "സന്ദർഭം അനുസരിച്ച് തിരയുക",
+ "search_by_description": "വിവരണം അനുസരിച്ച് തിരയുക",
+ "search_by_description_example": "സപ്പയിലെ ഹൈക്കിംഗ് ദിനം",
+ "search_by_filename": "ഫയൽ നാമം അല്ലെങ്കിൽ എക്സ്റ്റൻഷൻ ഉപയോഗിച്ച് തിരയുക",
+ "search_by_filename_example": "ഉദാ. IMG_1234.JPG അല്ലെങ്കിൽ PNG",
+ "search_camera_make": "ക്യാമറ നിർമ്മാതാവിനായി തിരയുക...",
+ "search_camera_model": "ക്യാമറ മോഡലിനായി തിരയുക...",
+ "search_city": "നഗരത്തിനായി തിരയുക...",
+ "search_country": "രാജ്യത്തിനായി തിരയുക...",
+ "search_filter_apply": "ഫിൽട്ടർ പ്രയോഗിക്കുക",
+ "search_filter_camera_title": "ക്യാമറ തരം തിരഞ്ഞെടുക്കുക",
+ "search_filter_date": "തീയതി",
+ "search_filter_date_interval": "{start} മുതൽ {end} വരെ",
+ "search_filter_date_title": "ഒരു തീയതി പരിധി തിരഞ്ഞെടുക്കുക",
+ "search_filter_display_option_not_in_album": "ആൽബത്തിൽ ഇല്ല",
+ "search_filter_display_options": "പ്രദർശന ഓപ്ഷനുകൾ",
+ "search_filter_filename": "ഫയൽ നാമം ഉപയോഗിച്ച് തിരയുക",
+ "search_filter_location": "സ്ഥാനം",
+ "search_filter_location_title": "സ്ഥാനം തിരഞ്ഞെടുക്കുക",
+ "search_filter_media_type": "മീഡിയ തരം",
+ "search_filter_media_type_title": "മീഡിയ തരം തിരഞ്ഞെടുക്കുക",
+ "search_filter_people_title": "ആളുകളെ തിരഞ്ഞെടുക്കുക",
+ "search_for": "ഇതിനായി തിരയുക",
+ "search_for_existing_person": "നിലവിലുള്ള വ്യക്തിക്കായി തിരയുക",
+ "search_no_more_result": "കൂടുതൽ ഫലങ്ങളില്ല",
+ "search_no_people": "ആളുകളില്ല",
+ "search_no_people_named": "\"{name}\" എന്ന് പേരുള്ള ആളുകളില്ല",
+ "search_no_result": "ഫലങ്ങളൊന്നും കണ്ടെത്തിയില്ല, മറ്റൊരു തിരയൽ പദമോ സംയോജനമോ ഉപയോഗിച്ച് ശ്രമിക്കുക",
+ "search_options": "തിരയൽ ഓപ്ഷനുകൾ",
+ "search_page_categories": "വിഭാഗങ്ങൾ",
+ "search_page_motion_photos": "ചലിക്കുന്ന ഫോട്ടോകൾ",
+ "search_page_no_objects": "വസ്തുക്കളുടെ വിവരങ്ങൾ ലഭ്യമല്ല",
+ "search_page_no_places": "സ്ഥലങ്ങളുടെ വിവരങ്ങൾ ലഭ്യമല്ല",
+ "search_page_screenshots": "സ്ക്രീൻഷോട്ടുകൾ",
+ "search_page_search_photos_videos": "നിങ്ങളുടെ ഫോട്ടോകൾക്കും വീഡിയോകൾക്കുമായി തിരയുക",
+ "search_page_selfies": "സെൽഫികൾ",
+ "search_page_things": "വസ്തുക്കൾ",
+ "search_page_view_all_button": "എല്ലാം കാണുക",
+ "search_page_your_activity": "നിങ്ങളുടെ പ്രവർത്തനം",
+ "search_page_your_map": "നിങ്ങളുടെ മാപ്പ്",
+ "search_people": "ആളുകളെ തിരയുക",
+ "search_places": "സ്ഥലങ്ങൾ തിരയുക",
+ "search_rating": "റേറ്റിംഗ് അനുസരിച്ച് തിരയുക...",
+ "search_result_page_new_search_hint": "പുതിയ തിരയൽ",
+ "search_settings": "തിരയൽ ക്രമീകരണങ്ങൾ",
+ "search_state": "സംസ്ഥാനം തിരയുക...",
+ "search_suggestion_list_smart_search_hint_1": "സ്മാർട്ട് സെർച്ച് ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു, മെറ്റാഡാറ്റയ്ക്കായി തിരയാൻ ഈ വാക്യഘടന ഉപയോഗിക്കുക ",
+ "search_suggestion_list_smart_search_hint_2": "m:നിങ്ങളുടെ-തിരയൽ-പദം",
+ "search_tags": "ടാഗുകൾക്കായി തിരയുക...",
+ "search_timezone": "സമയമേഖലയ്ക്കായി തിരയുക...",
+ "search_type": "തിരയൽ തരം",
+ "search_your_photos": "നിങ്ങളുടെ ഫോട്ടോകൾ തിരയുക",
+ "searching_locales": "ലൊക്കേലുകൾക്കായി തിരയുന്നു...",
+ "second": "സെക്കന്റ്",
+ "see_all_people": "എല്ലാ ആളുകളെയും കാണുക",
+ "select": "തിരഞ്ഞെടുക്കുക",
+ "select_album_cover": "ആൽബം കവർ തിരഞ്ഞെടുക്കുക",
+ "select_all": "എല്ലാം തിരഞ്ഞെടുക്കുക",
+ "select_all_duplicates": "എല്ലാ ഡ്യൂപ്ലിക്കേറ്റുകളും തിരഞ്ഞെടുക്കുക",
+ "select_all_in": "{group}-ലെ എല്ലാം തിരഞ്ഞെടുക്കുക",
+ "select_avatar_color": "അവതാർ നിറം തിരഞ്ഞെടുക്കുക",
+ "select_face": "മുഖം തിരഞ്ഞെടുക്കുക",
+ "select_featured_photo": "ഫീച്ചർ ചെയ്ത ഫോട്ടോ തിരഞ്ഞെടുക്കുക",
+ "select_from_computer": "കമ്പ്യൂട്ടറിൽ നിന്ന് തിരഞ്ഞെടുക്കുക",
+ "select_keep_all": "എല്ലാം സൂക്ഷിക്കാൻ തിരഞ്ഞെടുക്കുക",
+ "select_library_owner": "ലൈബ്രറി ഉടമയെ തിരഞ്ഞെടുക്കുക",
+ "select_new_face": "പുതിയ മുഖം തിരഞ്ഞെടുക്കുക",
+ "select_person_to_tag": "ടാഗ് ചെയ്യാൻ ഒരു വ്യക്തിയെ തിരഞ്ഞെടുക്കുക",
+ "select_photos": "ഫോട്ടോകൾ തിരഞ്ഞെടുക്കുക",
+ "select_trash_all": "എല്ലാം ട്രാഷ് ചെയ്യാൻ തിരഞ്ഞെടുക്കുക",
+ "select_user_for_sharing_page_err_album": "ആൽബം ഉണ്ടാക്കുന്നതിൽ പരാജയപ്പെട്ടു",
+ "selected": "തിരഞ്ഞെടുത്തു",
+ "selected_count": "{count, plural, other {# എണ്ണം തിരഞ്ഞെടുത്തു}}",
+ "selected_gps_coordinates": "തിരഞ്ഞെടുത്ത GPS കോർഡിനേറ്റുകൾ",
+ "send_message": "സന്ദേശം അയക്കുക",
+ "send_welcome_email": "സ്വാഗത ഇമെയിൽ അയക്കുക",
+ "server_endpoint": "സെർവർ എൻഡ്പോയിന്റ്",
+ "server_info_box_app_version": "ആപ്പ് പതിപ്പ്",
+ "server_info_box_server_url": "സെർവർ URL",
+ "server_offline": "സെർവർ ഓഫ്ലൈൻ",
+ "server_online": "സെർവർ ഓൺലൈൻ",
+ "server_privacy": "സെർവർ സ്വകാര്യത",
+ "server_stats": "സെർവർ സ്ഥിതിവിവരക്കണക്കുകൾ",
+ "server_version": "സെർവർ പതിപ്പ്",
+ "set": "സജ്ജമാക്കുക",
+ "set_as_album_cover": "ആൽബം കവറായി സജ്ജമാക്കുക",
+ "set_as_featured_photo": "ഫീച്ചർ ചെയ്ത ഫോട്ടോയായി സജ്ജമാക്കുക",
+ "set_as_profile_picture": "പ്രൊഫൈൽ ചിത്രമായി സജ്ജമാക്കുക",
+ "set_date_of_birth": "ജനനത്തീയതി സജ്ജമാക്കുക",
+ "set_profile_picture": "പ്രൊഫൈൽ ചിത്രം സജ്ജമാക്കുക",
+ "set_slideshow_to_fullscreen": "സ്ലൈഡ്ഷോ ഫുൾസ്ക്രീനായി സജ്ജമാക്കുക",
+ "set_stack_primary_asset": "പ്രധാന അസറ്റായി സജ്ജമാക്കുക",
+ "setting_image_viewer_help": "വിശദാംശ വ്യൂവർ ആദ്യം ചെറിയ തംബ്നെയിൽ ലോഡുചെയ്യുന്നു, തുടർന്ന് ഇടത്തരം പ്രിവ്യൂ (പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ), ഒടുവിൽ യഥാർത്ഥ ചിത്രം (പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ) ലോഡുചെയ്യുന്നു.",
+ "setting_image_viewer_original_subtitle": "യഥാർത്ഥ പൂർണ്ണ-റെസല്യൂഷൻ ചിത്രം (വലുത്!) ലോഡുചെയ്യാൻ പ്രവർത്തനക്ഷമമാക്കുക. ഡാറ്റ ഉപയോഗം (നെറ്റ്വർക്കും ഉപകരണ കാഷെയും) കുറയ്ക്കാൻ പ്രവർത്തനരഹിതമാക്കുക.",
+ "setting_image_viewer_original_title": "യഥാർത്ഥ ചിത്രം ലോഡുചെയ്യുക",
+ "setting_image_viewer_preview_subtitle": "ഇടത്തരം റെസല്യൂഷനുള്ള ചിത്രം ലോഡുചെയ്യാൻ പ്രവർത്തനക്ഷമമാക്കുക. ഒന്നുകിൽ യഥാർത്ഥ ചിത്രം നേരിട്ട് ലോഡുചെയ്യുന്നതിനോ അല്ലെങ്കിൽ തംബ്നെയിൽ മാത്രം ഉപയോഗിക്കുന്നതിനോ പ്രവർത്തനരഹിതമാക്കുക.",
+ "setting_image_viewer_preview_title": "പ്രിവ്യൂ ചിത്രം ലോഡുചെയ്യുക",
+ "setting_image_viewer_title": "ചിത്രങ്ങൾ",
+ "setting_languages_apply": "പ്രയോഗിക്കുക",
+ "setting_languages_subtitle": "ആപ്പിന്റെ ഭാഷ മാറ്റുക",
+ "setting_notifications_notify_failures_grace_period": "പശ്ചാത്തല ബാക്കപ്പ് പരാജയങ്ങൾ അറിയിക്കുക: {duration}",
+ "setting_notifications_notify_hours": "{count} മണിക്കൂർ",
+ "setting_notifications_notify_immediately": "ഉടനടി",
+ "setting_notifications_notify_minutes": "{count} മിനിറ്റ്",
+ "setting_notifications_notify_never": "ഒരിക്കലും",
+ "setting_notifications_notify_seconds": "{count} സെക്കൻഡ്",
+ "setting_notifications_single_progress_subtitle": "ഓരോ അസറ്റിന്റെയും വിശദമായ അപ്ലോഡ് പുരോഗതി വിവരം",
+ "setting_notifications_single_progress_title": "പശ്ചാത്തല ബാക്കപ്പിന്റെ വിശദമായ പുരോഗതി കാണിക്കുക",
+ "setting_notifications_subtitle": "നിങ്ങളുടെ അറിയിപ്പ് മുൻഗണനകൾ ക്രമീകരിക്കുക",
+ "setting_notifications_total_progress_subtitle": "മൊത്തത്തിലുള്ള അപ്ലോഡ് പുരോഗതി (ചെയ്തത്/ആകെ അസറ്റുകൾ)",
+ "setting_notifications_total_progress_title": "പശ്ചാത്തല ബാക്കപ്പിന്റെ മൊത്തം പുരോഗതി കാണിക്കുക",
+ "setting_video_viewer_looping_title": "ലൂപ്പിംഗ്",
+ "setting_video_viewer_original_video_subtitle": "സെർവറിൽ നിന്ന് ഒരു വീഡിയോ സ്ട്രീം ചെയ്യുമ്പോൾ, ഒരു ട്രാൻസ്കോഡ് ലഭ്യമാണെങ്കിലും യഥാർത്ഥ വീഡിയോ പ്ലേ ചെയ്യുക. ഇത് ബഫറിംഗിന് കാരണമായേക്കാം. പ്രാദേശികമായി ലഭ്യമായ വീഡിയോകൾ ഈ ക്രമീകരണം പരിഗണിക്കാതെ തന്നെ യഥാർത്ഥ ഗുണമേന്മയിൽ പ്ലേ ചെയ്യും.",
+ "setting_video_viewer_original_video_title": "യഥാർത്ഥ വീഡിയോ നിർബന്ധമാക്കുക",
+ "settings": "ക്രമീകരണങ്ങൾ",
+ "settings_require_restart": "ഈ ക്രമീകരണം പ്രയോഗിക്കാൻ ദയവായി Immich പുനരാരംഭിക്കുക",
+ "settings_saved": "ക്രമീകരണങ്ങൾ സേവ് ചെയ്തു",
+ "setup_pin_code": "ഒരു പിൻ കോഡ് സജ്ജീകരിക്കുക",
+ "share": "പങ്കിടുക",
+ "share_action_prompt": "{count} അസറ്റുകൾ പങ്കിട്ടു",
+ "share_add_photos": "ഫോട്ടോകൾ ചേർക്കുക",
+ "share_assets_selected": "{count} എണ്ണം തിരഞ്ഞെടുത്തു",
+ "share_dialog_preparing": "തയ്യാറാക്കുന്നു...",
+ "share_link": "ലിങ്ക് പങ്കിടുക",
+ "shared": "പങ്കിട്ടത്",
+ "shared_album_activities_input_disable": "അഭിപ്രായം പ്രവർത്തനരഹിതമാക്കി",
+ "shared_album_activity_remove_content": "ഈ പ്രവർത്തനം ഇല്ലാതാക്കണോ?",
+ "shared_album_activity_remove_title": "പ്രവർത്തനം ഇല്ലാതാക്കുക",
+ "shared_album_section_people_action_error": "ആൽബത്തിൽ നിന്ന് വിട്ടുപോകുന്നതിനോ/നീക്കംചെയ്യുന്നതിനോ പിശക്",
+ "shared_album_section_people_action_leave": "ആൽബത്തിൽ നിന്ന് ഉപയോക്താവിനെ നീക്കം ചെയ്യുക",
+ "shared_album_section_people_action_remove_user": "ആൽബത്തിൽ നിന്ന് ഉപയോക്താവിനെ നീക്കം ചെയ്യുക",
+ "shared_album_section_people_title": "ആളുകൾ",
+ "shared_by": "പങ്കിട്ടത്",
+ "shared_by_user": "{user} പങ്കിട്ടു",
+ "shared_by_you": "നിങ്ങൾ പങ്കിട്ടത്",
+ "shared_from_partner": "{partner}-ൽ നിന്നുള്ള ഫോട്ടോകൾ",
+ "shared_intent_upload_button_progress_text": "{current}/{total} അപ്ലോഡ് ചെയ്തു",
+ "shared_link_app_bar_title": "പങ്കിട്ട ലിങ്കുകൾ",
+ "shared_link_clipboard_copied_massage": "ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി",
+ "shared_link_clipboard_text": "ലിങ്ക്: {link}\nപാസ്വേഡ്: {password}",
+ "shared_link_create_error": "പങ്കിട്ട ലിങ്ക് ഉണ്ടാക്കുന്നതിൽ പിശക്",
+ "shared_link_custom_url_description": "ഒരു കസ്റ്റം URL ഉപയോഗിച്ച് ഈ പങ്കിട്ട ലിങ്ക് ആക്സസ് ചെയ്യുക",
+ "shared_link_edit_description_hint": "പങ്കിടലിന്റെ വിവരണം നൽകുക",
+ "shared_link_edit_expire_after_option_day": "1 ദിവസം",
+ "shared_link_edit_expire_after_option_days": "{count} ദിവസങ്ങൾ",
+ "shared_link_edit_expire_after_option_hour": "1 മണിക്കൂർ",
+ "shared_link_edit_expire_after_option_hours": "{count} മണിക്കൂറുകൾ",
+ "shared_link_edit_expire_after_option_minute": "1 മിനിറ്റ്",
+ "shared_link_edit_expire_after_option_minutes": "{count} മിനിറ്റുകൾ",
+ "shared_link_edit_expire_after_option_months": "{count} മാസങ്ങൾ",
+ "shared_link_edit_expire_after_option_year": "{count} വർഷം",
+ "shared_link_edit_password_hint": "പങ്കിടലിന്റെ പാസ്വേഡ് നൽകുക",
+ "shared_link_edit_submit_button": "ലിങ്ക് അപ്ഡേറ്റ് ചെയ്യുക",
+ "shared_link_error_server_url_fetch": "സെർവർ url ലഭ്യമാക്കാൻ കഴിയില്ല",
+ "shared_link_expires_day": "{count} ദിവസത്തിനുള്ളിൽ കാലഹരണപ്പെടും",
+ "shared_link_expires_days": "{count} ദിവസങ്ങൾക്കുള്ളിൽ കാലഹരണപ്പെടും",
+ "shared_link_expires_hour": "{count} മണിക്കൂറിനുള്ളിൽ കാലഹരണപ്പെടും",
+ "shared_link_expires_hours": "{count} മണിക്കൂറുകൾക്കുള്ളിൽ കാലഹരണപ്പെടും",
+ "shared_link_expires_minute": "{count} മിനിറ്റിനുള്ളിൽ കാലഹരണപ്പെടും",
+ "shared_link_expires_minutes": "{count} മിനിറ്റുകൾക്കുള്ളിൽ കാലഹരണപ്പെടും",
+ "shared_link_expires_never": "കാലഹരണപ്പെടില്ല ∞",
+ "shared_link_expires_second": "{count} സെക്കൻഡിനുള്ളിൽ കാലഹരണപ്പെടും",
+ "shared_link_expires_seconds": "{count} സെക്കൻഡുകൾക്കുള്ളിൽ കാലഹരണപ്പെടും",
+ "shared_link_individual_shared": "വ്യക്തിഗതമായി പങ്കിട്ടത്",
+ "shared_link_info_chip_metadata": "EXIF",
+ "shared_link_manage_links": "പങ്കിട്ട ലിങ്കുകൾ കൈകാര്യം ചെയ്യുക",
+ "shared_link_options": "പങ്കിട്ട ലിങ്ക് ഓപ്ഷനുകൾ",
+ "shared_link_password_description": "ഈ പങ്കിട്ട ലിങ്ക് ആക്സസ് ചെയ്യാൻ ഒരു പാസ്വേഡ് ആവശ്യമാണ്",
+ "shared_links": "പങ്കിട്ട ലിങ്കുകൾ",
+ "shared_links_description": "ഒരു ലിങ്ക് ഉപയോഗിച്ച് ഫോട്ടോകളും വീഡിയോകളും പങ്കിടുക",
+ "shared_photos_and_videos_count": "{assetCount, plural, other {പങ്കിട്ട # ഫോട്ടോകളും വീഡിയോകളും.}}",
+ "shared_with_me": "എനിക്കായി പങ്കിട്ടത്",
+ "shared_with_partner": "{partner}-മായി പങ്കിട്ടു",
+ "sharing": "പങ്കിടൽ",
+ "sharing_enter_password": "ഈ പേജ് കാണുന്നതിന് ദയവായി പാസ്വേഡ് നൽകുക.",
+ "sharing_page_album": "പങ്കിട്ട ആൽബങ്ങൾ",
+ "sharing_page_description": "നിങ്ങളുടെ നെറ്റ്വർക്കിലെ ആളുകളുമായി ഫോട്ടോകളും വീഡിയോകളും പങ്കിടാൻ പങ്കിട്ട ആൽബങ്ങൾ ഉണ്ടാക്കുക.",
+ "sharing_page_empty_list": "ശൂന്യമായ ലിസ്റ്റ്",
+ "sharing_sidebar_description": "സൈഡ്ബാറിൽ 'പങ്കിടൽ' എന്നതിലേക്ക് ഒരു ലിങ്ക് പ്രദർശിപ്പിക്കുക",
+ "sharing_silver_appbar_create_shared_album": "പുതിയ പങ്കിട്ട ആൽബം",
+ "sharing_silver_appbar_share_partner": "പങ്കാളിയുമായി പങ്കിടുക",
+ "shift_to_permanent_delete": "അസറ്റ് ശാശ്വതമായി ഇല്ലാതാക്കാൻ ⇧ അമർത്തുക",
+ "show_album_options": "ആൽബം ഓപ്ഷനുകൾ കാണിക്കുക",
+ "show_albums": "ആൽബങ്ങൾ കാണിക്കുക",
+ "show_all_people": "എല്ലാ ആളുകളെയും കാണിക്കുക",
+ "show_and_hide_people": "ആളുകളെ കാണിക്കുകയും മറയ്ക്കുകയും ചെയ്യുക",
+ "show_file_location": "ഫയലിന്റെ സ്ഥാനം കാണിക്കുക",
+ "show_gallery": "ഗാലറി കാണിക്കുക",
+ "show_hidden_people": "മറച്ച ആളുകളെ കാണിക്കുക",
+ "show_in_timeline": "ടൈംലൈനിൽ കാണിക്കുക",
+ "show_in_timeline_setting_description": "ഈ ഉപയോക്താവിൽ നിന്നുള്ള ഫോട്ടോകളും വീഡിയോകളും നിങ്ങളുടെ ടൈംലൈനിൽ കാണിക്കുക",
+ "show_keyboard_shortcuts": "കീബോർഡ് കുറുക്കുവഴികൾ കാണിക്കുക",
+ "show_metadata": "മെറ്റാഡാറ്റ കാണിക്കുക",
+ "show_or_hide_info": "വിവരങ്ങൾ കാണിക്കുക അല്ലെങ്കിൽ മറയ്ക്കുക",
+ "show_password": "പാസ്വേഡ് കാണിക്കുക",
+ "show_person_options": "വ്യക്തിയുടെ ഓപ്ഷനുകൾ കാണിക്കുക",
+ "show_progress_bar": "പുരോഗതി ബാർ കാണിക്കുക",
+ "show_search_options": "തിരയൽ ഓപ്ഷനുകൾ കാണിക്കുക",
+ "show_shared_links": "പങ്കിട്ട ലിങ്കുകൾ കാണിക്കുക",
+ "show_slideshow_transition": "സ്ലൈഡ്ഷോ സംക്രമണം കാണിക്കുക",
+ "show_supporter_badge": "സഹായിയുടെ ബാഡ്ജ്",
+ "show_supporter_badge_description": "ഒരു സഹായിയുടെ ബാഡ്ജ് കാണിക്കുക",
+ "show_text_search_menu": "ടെക്സ്റ്റ് തിരയൽ മെനു കാണിക്കുക",
+ "shuffle": "ഷഫിൾ ചെയ്യുക",
+ "sidebar": "സൈഡ്ബാർ",
+ "sidebar_display_description": "സൈഡ്ബാറിലെ കാഴ്ചയിലേക്ക് ഒരു ലിങ്ക് പ്രദർശിപ്പിക്കുക",
+ "sign_out": "സൈൻ ഔട്ട്",
+ "sign_up": "സൈൻ അപ്പ് ചെയ്യുക",
+ "size": "വലിപ്പം",
+ "skip_to_content": "ഉള്ളടക്കത്തിലേക്ക് പോകുക",
+ "skip_to_folders": "ഫോൾഡറുകളിലേക്ക് പോകുക",
+ "skip_to_tags": "ടാഗുകളിലേക്ക് പോകുക",
+ "slideshow": "സ്ലൈഡ്ഷോ",
+ "slideshow_settings": "സ്ലൈഡ്ഷോ ക്രമീകരണങ്ങൾ",
+ "sort_albums_by": "ആൽബങ്ങളെ ഇതനുസരിച്ച് ക്രമീകരിക്കുക...",
+ "sort_created": "സൃഷ്ടിച്ച തീയതി",
+ "sort_items": "ഇനങ്ങളുടെ എണ്ണം",
+ "sort_modified": "മാറ്റം വരുത്തിയ തീയതി",
+ "sort_newest": "ഏറ്റവും പുതിയ ഫോട്ടോ",
+ "sort_oldest": "ഏറ്റവും പഴയ ഫോട്ടോ",
+ "sort_people_by_similarity": "സാമ്യം അനുസരിച്ച് ആളുകളെ ക്രമീകരിക്കുക",
+ "sort_recent": "ഏറ്റവും പുതിയ ഫോട്ടോ",
+ "sort_title": "ശീർഷകം",
+ "source": "ഉറവിടം",
+ "stack": "സ്റ്റാക്ക്",
+ "stack_action_prompt": "{count} എണ്ണം സ്റ്റാക്ക് ചെയ്തു",
+ "stack_duplicates": "ഡ്യൂപ്ലിക്കേറ്റുകൾ സ്റ്റാക്ക് ചെയ്യുക",
+ "stack_select_one_photo": "സ്റ്റാക്കിനായി ഒരു പ്രധാന ഫോട്ടോ തിരഞ്ഞെടുക്കുക",
+ "stack_selected_photos": "തിരഞ്ഞെടുത്ത ഫോട്ടോകൾ സ്റ്റാക്ക് ചെയ്യുക",
+ "stacked_assets_count": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} സ്റ്റാക്ക് ചെയ്തു",
+ "stacktrace": "സ്റ്റാക്ക്ട്രേസ്",
+ "start": "ആരംഭിക്കുക",
+ "start_date": "ആരംഭ തീയതി",
+ "start_date_before_end_date": "ആരംഭ തീയതി അവസാന തീയതിക്ക് മുമ്പായിരിക്കണം",
+ "state": "സംസ്ഥാനം",
+ "status": "നില",
+ "stop_casting": "കാസ്റ്റിംഗ് നിർത്തുക",
+ "stop_motion_photo": "ചലിക്കുന്ന ഫോട്ടോ നിർത്തുക",
+ "stop_photo_sharing": "നിങ്ങളുടെ ഫോട്ടോകൾ പങ്കിടുന്നത് നിർത്തണോ?",
+ "stop_photo_sharing_description": "{partner}-ക്ക് ഇനി നിങ്ങളുടെ ഫോട്ടോകൾ ആക്സസ് ചെയ്യാൻ കഴിയില്ല.",
+ "stop_sharing_photos_with_user": "ഈ ഉപയോക്താവുമായി നിങ്ങളുടെ ഫോട്ടോകൾ പങ്കിടുന്നത് നിർത്തുക",
+ "storage": "സംഭരണ സ്ഥലം",
+ "storage_label": "സ്റ്റോറേജ് ലേബൽ",
+ "storage_quota": "സ്റ്റോറേജ് ക്വാട്ട",
+ "storage_usage": "{available}-ൽ {used} ഉപയോഗിച്ചു",
+ "submit": "സമർപ്പിക്കുക",
+ "success": "വിജയം",
+ "suggestions": "നിർദ്ദേശങ്ങൾ",
+ "sunrise_on_the_beach": "ബീച്ചിലെ സൂര്യോദയം",
+ "support": "പിന്തുണ",
+ "support_and_feedback": "പിന്തുണയും അഭിപ്രായവും",
+ "support_third_party_description": "നിങ്ങളുടെ Immich ഇൻസ്റ്റാളേഷൻ ഒരു മൂന്നാം കക്ഷി പാക്കേജ് ചെയ്തതാണ്. നിങ്ങൾ അനുഭവിക്കുന്ന പ്രശ്നങ്ങൾ ആ പാക്കേജ് കാരണമാകാം, അതിനാൽ താഴെയുള്ള ലിങ്കുകൾ ഉപയോഗിച്ച് ആദ്യം അവരുമായി പ്രശ്നങ്ങൾ ഉന്നയിക്കുക.",
+ "swap_merge_direction": "ലയിപ്പിക്കൽ ദിശ മാറ്റുക",
+ "sync": "സിങ്ക്",
+ "sync_albums": "ആൽബങ്ങൾ സിങ്ക് ചെയ്യുക",
+ "sync_albums_manual_subtitle": "അപ്ലോഡ് ചെയ്ത എല്ലാ വീഡിയോകളും ഫോട്ടോകളും തിരഞ്ഞെടുത്ത ബാക്കപ്പ് ആൽബങ്ങളിലേക്ക് സിങ്ക് ചെയ്യുക",
+ "sync_local": "പ്രാദേശികമായി സിങ്ക് ചെയ്യുക",
+ "sync_remote": "റിമോട്ടായി സിങ്ക് ചെയ്യുക",
+ "sync_status": "സിങ്ക് നില",
+ "sync_status_subtitle": "സിങ്ക് സിസ്റ്റം കാണുക, കൈകാര്യം ചെയ്യുക",
+ "sync_upload_album_setting_subtitle": "നിങ്ങളുടെ ഫോട്ടോകളും വീഡിയോകളും Immich-ലെ തിരഞ്ഞെടുത്ത ആൽബങ്ങളിലേക്ക് ഉണ്ടാക്കി അപ്ലോഡ് ചെയ്യുക",
+ "tag": "ടാഗ്",
+ "tag_assets": "അസറ്റുകൾ ടാഗ് ചെയ്യുക",
+ "tag_created": "{tag} എന്ന ടാഗ് ഉണ്ടാക്കി",
+ "tag_feature_description": "യുക്തിസഹമായ ടാഗ് വിഷയങ്ങൾ അനുസരിച്ച് ഗ്രൂപ്പ് ചെയ്ത ഫോട്ടോകളും വീഡിയോകളും ബ്രൗസുചെയ്യുന്നു",
+ "tag_not_found_question": "ഒരു ടാഗ് കണ്ടെത്താൻ കഴിയുന്നില്ലേ? ഒരു പുതിയ ടാഗ് ഉണ്ടാക്കുക.",
+ "tag_people": "ആളുകളെ ടാഗ് ചെയ്യുക",
+ "tag_updated": "{tag} എന്ന ടാഗ് അപ്ഡേറ്റ് ചെയ്തു",
+ "tagged_assets": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} ടാഗ് ചെയ്തു",
+ "tags": "ടാഗുകൾ",
+ "tap_to_run_job": "ജോലി പ്രവർത്തിപ്പിക്കാൻ ടാപ്പുചെയ്യുക",
+ "template": "ടെംപ്ലേറ്റ്",
+ "theme": "തീം",
+ "theme_selection": "തീം തിരഞ്ഞെടുക്കൽ",
+ "theme_selection_description": "നിങ്ങളുടെ ബ്രൗസറിന്റെ സിസ്റ്റം മുൻഗണന അനുസരിച്ച് തീം ലൈറ്റ് അല്ലെങ്കിൽ ഡാർക്ക് ആയി യാന്ത്രികമായി സജ്ജമാക്കുക",
+ "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": "വർണ്ണാഭമായ ഇന്റർഫേസ്",
+ "theme_setting_image_viewer_quality_subtitle": "വിശദാംശ ഇമേജ് വ്യൂവറിന്റെ ഗുണമേന്മ ക്രമീകരിക്കുക",
+ "theme_setting_image_viewer_quality_title": "ഇമേജ് വ്യൂവർ ഗുണമേന്മ",
+ "theme_setting_primary_color_subtitle": "പ്രധാന പ്രവർത്തനങ്ങൾക്കും ആക്സന്റുകൾക്കുമായി ഒരു നിറം തിരഞ്ഞെടുക്കുക.",
+ "theme_setting_primary_color_title": "പ്രധാന നിറം",
+ "theme_setting_system_primary_color_title": "സിസ്റ്റം നിറം ഉപയോഗിക്കുക",
+ "theme_setting_system_theme_switch": "യാന്ത്രികം (സിസ്റ്റം ക്രമീകരണം പിന്തുടരുക)",
+ "theme_setting_theme_subtitle": "ആപ്പിന്റെ തീം ക്രമീകരണം തിരഞ്ഞെടുക്കുക",
+ "theme_setting_three_stage_loading_subtitle": "മൂന്ന്-ഘട്ട ലോഡിംഗ് പ്രകടനം വർദ്ധിപ്പിച്ചേക്കാം, പക്ഷേ നെറ്റ്വർക്ക് ലോഡ് ഗണ്യമായി വർദ്ധിപ്പിക്കുന്നു",
+ "theme_setting_three_stage_loading_title": "മൂന്ന്-ഘട്ട ലോഡിംഗ് പ്രവർത്തനക്ഷമമാക്കുക",
+ "they_will_be_merged_together": "അവയെ ഒരുമിച്ച് ലയിപ്പിക്കും",
+ "third_party_resources": "മൂന്നാം കക്ഷി ഉറവിടങ്ങൾ",
+ "time_based_memories": "സമയം അടിസ്ഥാനമാക്കിയുള്ള ഓർമ്മകൾ",
+ "timeline": "ടൈംലൈൻ",
+ "timezone": "സമയമേഖല",
+ "to_archive": "ആർക്കൈവ് ചെയ്യുക",
+ "to_change_password": "പാസ്വേഡ് മാറ്റുക",
+ "to_favorite": "പ്രിയപ്പെട്ടതാക്കുക",
+ "to_login": "ലോഗിൻ",
+ "to_multi_select": "ഒന്നിലധികം തിരഞ്ഞെടുക്കാൻ",
+ "to_parent": "പാരന്റിലേക്ക് പോകുക",
+ "to_select": "തിരഞ്ഞെടുക്കാൻ",
+ "to_trash": "ട്രാഷ് ചെയ്യുക",
+ "toggle_settings": "ക്രമീകരണങ്ങൾ ടോഗിൾ ചെയ്യുക",
+ "total": "ആകെ",
+ "total_usage": "ആകെ ഉപയോഗം",
+ "trash": "ട്രാഷ്",
+ "trash_action_prompt": "{count} എണ്ണം ട്രാഷിലേക്ക് മാറ്റി",
+ "trash_all": "എല്ലാം ട്രാഷ് ചെയ്യുക",
+ "trash_count": "ട്രാഷ് ({count, number})",
+ "trash_delete_asset": "അസറ്റ് ട്രാഷ് ചെയ്യുക/ഇല്ലാതാക്കുക",
+ "trash_emptied": "ട്രാഷ് ശൂന്യമാക്കി",
+ "trash_no_results_message": "ട്രാഷ് ചെയ്ത ഫോട്ടോകളും വീഡിയോകളും ഇവിടെ കാണിക്കും.",
+ "trash_page_delete_all": "എല്ലാം ഇല്ലാതാക്കുക",
+ "trash_page_empty_trash_dialog_content": "നിങ്ങളുടെ ട്രാഷ് ചെയ്ത അസറ്റുകൾ ശൂന്യമാക്കണോ? ഈ ഇനങ്ങൾ Immich-ൽ നിന്ന് ശാശ്വതമായി നീക്കം ചെയ്യപ്പെടും",
+ "trash_page_info": "ട്രാഷ് ചെയ്ത ഇനങ്ങൾ {days} ദിവസങ്ങൾക്ക് ശേഷം ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും",
+ "trash_page_no_assets": "ട്രാഷ് ചെയ്ത അസറ്റുകളൊന്നുമില്ല",
+ "trash_page_restore_all": "എല്ലാം പുനഃസ്ഥാപിക്കുക",
+ "trash_page_select_assets_btn": "അസറ്റുകൾ തിരഞ്ഞെടുക്കുക",
+ "trash_page_title": "ട്രാഷ് ({count})",
+ "trashed_items_will_be_permanently_deleted_after": "ട്രാഷ് ചെയ്ത ഇനങ്ങൾ {days, plural, one {# ദിവസത്തിന്} other {# ദിവസങ്ങൾക്ക്}} ശേഷം ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും.",
+ "troubleshoot": "ട്രബിൾഷൂട്ട്",
+ "type": "തരം",
+ "unable_to_change_pin_code": "പിൻ കോഡ് മാറ്റാൻ കഴിയില്ല",
+ "unable_to_setup_pin_code": "പിൻ കോഡ് സജ്ജീകരിക്കാൻ കഴിയില്ല",
+ "unarchive": "അൺആർക്കൈവ് ചെയ്യുക",
+ "unarchive_action_prompt": "{count} എണ്ണം ആർക്കൈവിൽ നിന്ന് നീക്കം ചെയ്തു",
+ "unarchived_count": "{count, plural, other {അൺആർക്കൈവ് ചെയ്തവ #}}",
+ "undo": "തിരികെചെയ്യുക",
+ "unfavorite": "പ്രിയപ്പെട്ടതല്ലാതാക്കുക",
+ "unfavorite_action_prompt": "{count} എണ്ണം പ്രിയപ്പെട്ടവയിൽ നിന്ന് നീക്കം ചെയ്തു",
+ "unhide_person": "വ്യക്തിയെ മറവിൽനിന്ന് മാറ്റുക",
+ "unknown": "അജ്ഞാതം",
+ "unknown_country": "അജ്ഞാത രാജ്യം",
+ "unknown_year": "അജ്ഞാത വർഷം",
+ "unlimited": "പരിധിയില്ലാത്തത്",
+ "unlink_motion_video": "ചലിക്കുന്ന വീഡിയോ അൺലിങ്ക് ചെയ്യുക",
+ "unlink_oauth": "OAuth അൺലിങ്ക് ചെയ്യുക",
+ "unlinked_oauth_account": "അൺലിങ്ക് ചെയ്ത OAuth അക്കൗണ്ട്",
+ "unmute_memories": "ഓർമ്മകൾ ശബ്ദമുള്ളതാക്കുക",
+ "unnamed_album": "പേരില്ലാത്ത ആൽബം",
+ "unnamed_album_delete_confirmation": "ഈ ആൽബം ഇല്ലാതാക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
+ "unnamed_share": "പേരില്ലാത്ത പങ്കിടൽ",
+ "unsaved_change": "സേവ് ചെയ്യാത്ത മാറ്റം",
+ "unselect_all": "എല്ലാം തിരഞ്ഞെടുത്തത് മാറ്റുക",
+ "unselect_all_duplicates": "എല്ലാ ഡ്യൂപ്ലിക്കേറ്റുകളും തിരഞ്ഞെടുത്തത് മാറ്റുക",
+ "unselect_all_in": "{group}-ലെ എല്ലാം തിരഞ്ഞെടുത്തത് മാറ്റുക",
+ "unstack": "അൺ-സ്റ്റാക്ക് ചെയ്യുക",
+ "unstack_action_prompt": "{count} എണ്ണം അൺ-സ്റ്റാക്ക് ചെയ്തു",
+ "unstacked_assets_count": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} അൺ-സ്റ്റാക്ക് ചെയ്തു",
+ "untagged": "ടാഗ് ചെയ്തിട്ടില്ല",
+ "up_next": "അടുത്തത്",
+ "update_location_action_prompt": "തിരഞ്ഞെടുത്ത {count} അസറ്റുകളുടെ സ്ഥാനം ഇതുപയോഗിച്ച് അപ്ഡേറ്റ് ചെയ്യുക:",
+ "updated_at": "അപ്ഡേറ്റ് ചെയ്തത്",
+ "updated_password": "പാസ്വേഡ് അപ്ഡേറ്റ് ചെയ്തു",
+ "upload": "അപ്ലോഡ്",
+ "upload_action_prompt": "{count} എണ്ണം അപ്ലോഡിനായി ക്യൂവിൽ ചേർത്തു",
+ "upload_concurrency": "അപ്ലോഡ് കോൺകറൻസി",
+ "upload_details": "അപ്ലോഡ് വിശദാംശങ്ങൾ",
+ "upload_dialog_info": "തിരഞ്ഞെടുത്ത അസറ്റ്(കൾ) സെർവറിലേക്ക് ബാക്കപ്പ് ചെയ്യണോ?",
+ "upload_dialog_title": "അസറ്റ് അപ്ലോഡ് ചെയ്യുക",
+ "upload_errors": "അപ്ലോഡ് {count, plural, one {# പിശകോടെ} other {# പിശകുകളോടെ}} പൂർത്തിയായി, പുതിയ അപ്ലോഡ് അസറ്റുകൾ കാണുന്നതിന് പേജ് പുതുക്കുക.",
+ "upload_finished": "അപ്ലോഡ് കഴിഞ്ഞു",
+ "upload_progress": "ശേഷിക്കുന്നത് {remaining, number} - പ്രോസസ്സ് ചെയ്തത് {processed, number}/{total, number}",
+ "upload_skipped_duplicates": "{count, plural, one {# ഡ്യൂപ്ലിക്കേറ്റ് അസറ്റ്} other {# ഡ്യൂപ്ലിക്കേറ്റ് അസറ്റുകൾ}} ഒഴിവാക്കി",
+ "upload_status_duplicates": "ഡ്യൂപ്ലിക്കേറ്റുകൾ",
+ "upload_status_errors": "പിശകുകൾ",
+ "upload_status_uploaded": "അപ്ലോഡ് ചെയ്തു",
+ "upload_success": "അപ്ലോഡ് വിജയിച്ചു, പുതിയ അപ്ലോഡ് അസറ്റുകൾ കാണുന്നതിന് പേജ് പുതുക്കുക.",
+ "upload_to_immich": "Immich-ലേക്ക് അപ്ലോഡ് ചെയ്യുക ({count})",
+ "uploading": "അപ്ലോഡ് ചെയ്യുന്നു",
+ "uploading_media": "മീഡിയ അപ്ലോഡ് ചെയ്യുന്നു",
+ "url": "യുആർഎൽ",
+ "usage": "ഉപയോഗം",
+ "use_biometric": "ബയോമെട്രിക് ഉപയോഗിക്കുക",
+ "use_current_connection": "നിലവിലെ കണക്ഷൻ ഉപയോഗിക്കുക",
+ "use_custom_date_range": "പകരം കസ്റ്റം തീയതി പരിധി ഉപയോഗിക്കുക",
+ "user": "ഉപയോക്താവ്",
+ "user_has_been_deleted": "ഈ ഉപയോക്താവിനെ ഇല്ലാതാക്കി.",
+ "user_id": "ഉപയോക്തൃ ഐഡി",
+ "user_liked": "{user} {type, select, photo {ഈ ഫോട്ടോ} video {ഈ വീഡിയോ} asset {ഈ അസറ്റ്} other {ഇത്}} ഇഷ്ടപ്പെട്ടു",
+ "user_pin_code_settings": "പിൻ കോഡ്",
+ "user_pin_code_settings_description": "നിങ്ങളുടെ പിൻ കോഡ് കൈകാര്യം ചെയ്യുക",
+ "user_privacy": "ഉപയോക്തൃ സ്വകാര്യത",
+ "user_purchase_settings": "വാങ്ങൽ",
+ "user_purchase_settings_description": "നിങ്ങളുടെ വാങ്ങൽ കൈകാര്യം ചെയ്യുക",
+ "user_role_set": "{user}-നെ {role} ആയി സജ്ജമാക്കി",
+ "user_usage_detail": "ഉപയോക്തൃ ഉപയോഗ വിശദാംശം",
+ "user_usage_stats": "അക്കൗണ്ട് ഉപയോഗ സ്ഥിതിവിവരക്കണക്കുകൾ",
+ "user_usage_stats_description": "അക്കൗണ്ട് ഉപയോഗ സ്ഥിതിവിവരക്കണക്കുകൾ കാണുക",
+ "username": "ഉപയോക്തൃനാമം",
+ "users": "ഉപയോക്താക്കൾ",
+ "users_added_to_album_count": "{count, plural, one {# ഉപയോക്താവിനെ} other {# ഉപയോക്താക്കളെ}} ആൽബത്തിലേക്ക് ചേർത്തു",
+ "utilities": "യൂട്ടിലിറ്റികൾ",
+ "validate": "സാധൂകരിക്കുക",
+ "validate_endpoint_error": "ദയവായി സാധുവായ ഒരു URL നൽകുക",
+ "variables": "വേരിയബിളുകൾ",
+ "version": "പതിപ്പ്",
+ "version_announcement_closing": "നിങ്ങളുടെ സുഹൃത്ത്, അലക്സ്",
+ "version_announcement_message": "നമസ്കാരം! Immich-ന്റെ ഒരു പുതിയ പതിപ്പ് ലഭ്യമാണ്. നിങ്ങളുടെ സജ്ജീകരണം ഏറ്റവും പുതിയതാണെന്ന് ഉറപ്പാക്കാൻ ദയവായി റിലീസ് നോട്ടുകൾ വായിക്കാൻ കുറച്ച് സമയമെടുക്കുക. ഇത് തെറ്റായ കോൺഫിഗറേഷനുകൾ ഒഴിവാക്കാൻ സഹായിക്കും, പ്രത്യേകിച്ചും നിങ്ങൾ വാച്ച്ടവർ അല്ലെങ്കിൽ നിങ്ങളുടെ Immich ഇൻസ്റ്റൻസ് യാന്ത്രികമായി അപ്ഡേറ്റ് ചെയ്യുന്ന ഏതെങ്കിലും സംവിധാനം ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ.",
+ "version_history": "പതിപ്പ് ചരിത്രം",
+ "version_history_item": "{date}-ന് {version} ഇൻസ്റ്റാൾ ചെയ്തു",
+ "video": "വീഡിയോ",
+ "video_hover_setting": "ഹോവർ ചെയ്യുമ്പോൾ വീഡിയോ തംബ്നെയിൽ പ്ലേ ചെയ്യുക",
+ "video_hover_setting_description": "മൗസ് ഒരു ഇനത്തിന് മുകളിലൂടെ ഹോവർ ചെയ്യുമ്പോൾ വീഡിയോ തംബ്നെയിൽ പ്ലേ ചെയ്യുക. പ്രവർത്തനരഹിതമാക്കിയാലും, പ്ലേ ഐക്കണിന് മുകളിലൂടെ ഹോവർ ചെയ്ത് പ്ലേബാക്ക് ആരംഭിക്കാൻ കഴിയും.",
+ "videos": "വീഡിയോകൾ",
+ "videos_count": "{count, plural, one {# വീഡിയോ} other {# വീഡിയോകൾ}}",
+ "view": "കാണുക",
+ "view_album": "ആൽബം കാണുക",
+ "view_all": "എല്ലാം കാണുക",
+ "view_all_users": "എല്ലാ ഉപയോക്താക്കളെയും കാണുക",
+ "view_details": "വിശദാംശങ്ങൾ കാണുക",
+ "view_in_timeline": "ടൈംലൈനിൽ കാണുക",
+ "view_link": "ലിങ്ക് കാണുക",
+ "view_links": "ലിങ്കുകൾ കാണുക",
+ "view_name": "കാണുക",
+ "view_next_asset": "അടുത്ത അസറ്റ് കാണുക",
+ "view_previous_asset": "മുമ്പത്തെ അസറ്റ് കാണുക",
+ "view_qr_code": "QR കോഡ് കാണുക",
+ "view_similar_photos": "സമാനമായ ഫോട്ടോകൾ കാണുക",
+ "view_stack": "സ്റ്റാക്ക് കാണുക",
+ "view_user": "ഉപയോക്താവിനെ കാണുക",
+ "viewer_remove_from_stack": "സ്റ്റാക്കിൽ നിന്ന് നീക്കം ചെയ്യുക",
+ "viewer_stack_use_as_main_asset": "പ്രധാന അസറ്റായി ഉപയോഗിക്കുക",
+ "viewer_unstack": "അൺ-സ്റ്റാക്ക് ചെയ്യുക",
+ "visibility_changed": "{count, plural, one {# വ്യക്തിയുടെ} other {# ആളുകളുടെ}} ദൃശ്യത മാറ്റി",
"waiting": "കാത്തിരിക്കുന്നു",
"warning": "മുന്നറിയിപ്പ്",
"week": "ആഴ്ച",
"welcome": "സ്വാഗതം",
+ "welcome_to_immich": "Immich-ലേക്ക് സ്വാഗതം",
+ "wifi_name": "വൈ-ഫൈയുടെ പേര്",
+ "wrong_pin_code": "തെറ്റായ പിൻ കോഡ്",
"year": "വർഷം",
- "yes": "അതെ"
+ "years_ago": "{years, plural, one {# വർഷം} other {# വർഷങ്ങൾ}} മുമ്പ്",
+ "yes": "അതെ",
+ "you_dont_have_any_shared_links": "നിങ്ങൾക്ക് പങ്കിട്ട ലിങ്കുകളൊന്നുമില്ല",
+ "your_wifi_name": "നിങ്ങളുടെ വൈ-ഫൈയുടെ പേര്",
+ "zoom_image": "ചിത്രം വലുതാക്കുക",
+ "zoom_to_bounds": "പരിധികളിലേക്ക് സൂം ചെയ്യുക"
}
diff --git a/i18n/nb_NO.json b/i18n/nb_NO.json
index 4162170885..621f67e1aa 100644
--- a/i18n/nb_NO.json
+++ b/i18n/nb_NO.json
@@ -23,23 +23,24 @@
"add_partner": "Legg til partner",
"add_path": "Legg til sti",
"add_photos": "Legg til bilder",
- "add_tag": "Legg til tagg",
+ "add_tag": "Legg til merkelapp",
"add_to": "Legg til i…",
"add_to_album": "Legg til album",
"add_to_album_bottom_sheet_added": "Lagt til i {album}",
"add_to_album_bottom_sheet_already_exists": "Allerede i {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Noen lokale elementer kunne ikke legges til i albumet",
"add_to_album_toggle": "Avhuking for {album}",
"add_to_albums": "Legg til i album",
"add_to_albums_count": "Legg til i albumer ({count})",
"add_to_shared_album": "Legg til delt album",
"add_url": "Legg til URL",
- "added_to_archive": "Lagt til i arkiv",
- "added_to_favorites": "Lagt til i favoritter",
+ "added_to_archive": "Lagt til i arkivet",
+ "added_to_favorites": "Lagt til favoritter",
"added_to_favorites_count": "Lagt til {count, number} i favoritter",
"admin": {
"add_exclusion_pattern_description": "Legg til ekskluderingsmønstre. Globbing med *, ** og ? støttes. For å ignorere alle filer i en hvilken som helst mappe som heter \"Raw\", bruk \"**/Raw/**\". For å ignorere alle filer som slutter på \".tif\", bruk \"**/*.tif\". For å ignorere en absolutt filplassering, bruk \"/filsti/til/ignorer/**\".",
"admin_user": "Administrasjonsbruker",
- "asset_offline_description": "Dette eksterne biblioteksobjektet finnes ikke lenger på disk og har blitt flyttet til papirkurven. Hvis filen ble flyttet innad i biblioteket, se etter det tilsvarende objektet i tidslinjen din. For å gjenopprette objektet, vennligst sørg for at filstien under er tilgjengelig for Immich og skann biblioteket.",
+ "asset_offline_description": "Dette eksterne bibliotekselementet finnes ikke lenger på disk og har blitt flyttet til papirkurven. Hvis filen ble flyttet innad i biblioteket, se etter det tilsvarende elementet i tidslinjen din. For å gjenopprette elementet, vennligst sørg for at filstien under er tilgjengelig for Immich og skann biblioteket.",
"authentication_settings": "Godkjenningsinnstillinger",
"authentication_settings_description": "Administrer passord, OAuth, og andre innstillinger for autentisering",
"authentication_settings_disable_all": "Er du sikker på at du ønsker å deaktivere alle innloggingsmetoder? Innlogging vil bli fullstendig deaktivert.",
@@ -59,12 +60,12 @@
"backup_settings_description": "Håndter innstillinger for database-dump.",
"cleared_jobs": "Ryddet opp jobber for: {job}",
"config_set_by_file": "Konfigurasjonen er for øyeblikket satt av en konfigurasjonsfil",
- "confirm_delete_library": "Er du sikker på at du vil slette biblioteket {library}?",
- "confirm_delete_library_assets": "Er du sikker på at du vil slette dette biblioteket? Dette vil slette alt innhold ({count, plural, one {# objekt} other {# objekter}}) og tilhørende eiendeler fra Immich og kan ikke angres. Filene vil forbli på disken.",
+ "confirm_delete_library": "Vil du virkelig slette biblioteket {library}?",
+ "confirm_delete_library_assets": "Vil du virkelig slette dette biblioteket? Dette vil slette alt innhold ({count, plural, one {# element} other {# elementer}}) og tilhørende eiendeler fra Immich og kan ikke angres. Filene vil forbli på disken.",
"confirm_email_below": "For å bekrefte, skriv inn \"{email}\" nedenfor",
- "confirm_reprocess_all_faces": "Er du sikker på at du vil behandle alle ansikter på nytt? Dette vil også fjerne navngitte personer.",
- "confirm_user_password_reset": "Er du sikker på at du vil tilbakestille passordet til {user}?",
- "confirm_user_pin_code_reset": "Er du sikker på at du vil tilbakestille PIN-koden til {user} ?",
+ "confirm_reprocess_all_faces": "Vil du virkelig behandle alle ansikter på nytt? Dette vil også fjerne navngitte personer.",
+ "confirm_user_password_reset": "Vil du virkelig tilbakestille passordet til {user}?",
+ "confirm_user_pin_code_reset": "Vil du virkelig tilbakestille PIN-koden til {user} ?",
"create_job": "Lag jobb",
"cron_expression": "Cron uttrykk",
"cron_expression_description": "Still inn skanneintervallet med cron-formatet. For mer informasjon henvises til f.eks. Crontab Guru",
@@ -189,9 +190,9 @@
"nightly_tasks_database_cleanup_setting": "Opprydningsjobber for databasen",
"nightly_tasks_database_cleanup_setting_description": "Rydder opp i gamle, utgåtte data fra databasen",
"nightly_tasks_generate_memories_setting": "Genererer minner",
- "nightly_tasks_generate_memories_setting_description": "Generer nye minner fra objekter",
+ "nightly_tasks_generate_memories_setting_description": "Generer nye minner fra elementer",
"nightly_tasks_missing_thumbnails_setting": "Generer manglende miniatyrbilder",
- "nightly_tasks_missing_thumbnails_setting_description": "Legg til objekter i kø som mangler miniatyrbilder for generering",
+ "nightly_tasks_missing_thumbnails_setting_description": "Legg til elementer i kø som mangler miniatyrbilder for generering",
"nightly_tasks_settings": "Innstillinger for nattjobber",
"nightly_tasks_settings_description": "Endre på nattjobber",
"nightly_tasks_start_time_setting": "Starttid",
@@ -275,7 +276,7 @@
"storage_template_hash_verification_enabled_description": "Aktiver hasjverifisering. Ikke deaktiver dette med mindre du er sikker på konsekvensene",
"storage_template_migration": "Implementer lagringsmal",
"storage_template_migration_description": "Bruk gjeldende {template} på tidligere opplastede bilder",
- "storage_template_migration_info": "Lagringsmalen vil endre filtypen til små bokstaver. Malendringer vil kun gjelde nye objekter. For å anvende malen på tidligere opplastede objekter, kjør {job}.",
+ "storage_template_migration_info": "Lagringsmalen vil endre filtypen til små bokstaver. Malendringer vil kun gjelde nye elementer. For å anvende malen på tidligere opplastede elementer, kjør {job}.",
"storage_template_migration_job": "Migreringsjobb for lagringsmal",
"storage_template_more_details": "For mer informasjon om denne funksjonen, se lagringsmalen og dens konsekvenser",
"storage_template_onboarding_description_v2": "Når aktivert vil denne funksjonen automatisk organisere filer basert på en brukerdefinert mal. For mer informasjon, se denne linken dokumentasjon.",
@@ -367,7 +368,7 @@
"trash_settings_description": "Administrer papirkurv-innstillinger",
"unlink_all_oauth_accounts": "Koble fra alle OAuth-kontoer",
"unlink_all_oauth_accounts_description": "Husk å koble fra alle OAuth-kontoer før du migrerer til ny leverandør.",
- "unlink_all_oauth_accounts_prompt": "Er du sikker på at du vil koble fra alle OAuth-kontoer? Dette vil nullstille OAuth ID for hver bruker, og kan ikke angres.",
+ "unlink_all_oauth_accounts_prompt": "Vil du virkelig koble fra alle OAuth-kontoer? Dette vil nullstille OAuth ID for hver bruker, og kan ikke angres.",
"user_cleanup_job": "Bruker opprydning",
"user_delete_delay": "{user}s konto og elementer vil legges i kø for permanent sletting om {delay, plural, one {# dag} other {# dager}}.",
"user_delete_delay_settings": "Sletteforsinkelse",
@@ -390,8 +391,8 @@
"video_conversion_job": "Transkod videoer",
"video_conversion_job_description": "Konverter videoer for bedre kompatibilitet med nettlesere og enheter"
},
- "admin_email": "Administrator E-post",
- "admin_password": "Administrator Passord",
+ "admin_email": "Administrator e-post",
+ "admin_password": "Administratorpassord",
"administration": "Administrasjon",
"advanced": "Avansert",
"advanced_settings_enable_alternate_media_filter_subtitle": "Bruk denne innstillingen for å filtrere mediefiler under synkronisering basert på alternative kriterier. Bruk kun denne innstillingen dersom man opplever problemer med at applikasjonen ikke oppdager alle album.",
@@ -413,33 +414,33 @@
"age_months": "Alder {months, plural, one {# måned} other {# måneder}}",
"age_year_months": "Alder 1 år, {months, plural, one {# måned} other {# måneder}}",
"age_years": "{years, plural, other {Alder #}}",
- "album_added": "Album lagt til",
+ "album_added": "Album opprettet",
"album_added_notification_setting_description": "Motta en e-postvarsling når du legges til i et delt album",
"album_cover_updated": "Albumomslag oppdatert",
- "album_delete_confirmation": "Er du sikker på at du vil slette albumet {album}?",
+ "album_delete_confirmation": "Vil du virkelig slette albumet {album}?",
"album_delete_confirmation_description": "Hvis dette albumet deles, vil andre brukere miste tilgangen til dette.",
"album_deleted": "Album slettet",
"album_info_card_backup_album_excluded": "EKSKLUDERT",
"album_info_card_backup_album_included": "INKLUDERT",
"album_info_updated": "Albuminformasjon oppdatert",
"album_leave": "Forlate album?",
- "album_leave_confirmation": "Er du sikker på at du vil forlate {album}?",
- "album_name": "Album Navn",
+ "album_leave_confirmation": "Vil du virkelig forlate {album}?",
+ "album_name": "Albumnavn",
"album_options": "Albumalternativer",
"album_remove_user": "Fjerne bruker?",
- "album_remove_user_confirmation": "Er du sikker på at du vil fjerne {user}?",
+ "album_remove_user_confirmation": "Vil du virkelig fjerne {user}?",
"album_search_not_found": "Ingen album ble funnet som traff ditt søk",
- "album_share_no_users": "Ser ut til at du har delt dette albumet med alle brukere, eller du ikke har noen brukere å dele det med.",
+ "album_share_no_users": "Dette albumet er allerede delt med du har delt dette albumet med alle brukere, eller du ikke har noen brukere å dele det med.",
"album_summary": "Oppsummering av album",
"album_updated": "Album oppdatert",
"album_updated_setting_description": "Motta e-postvarsling når et delt album får nye filer",
"album_user_left": "Forlot {album}",
"album_user_removed": "Fjernet {user}",
- "album_viewer_appbar_delete_confirm": "Er du sikker på at du vil slette dette albumet fra kontoen din?",
+ "album_viewer_appbar_delete_confirm": "Vil du virkelig slette dette albumet fra kontoen din?",
"album_viewer_appbar_share_err_delete": "Kunne ikke slette albumet",
"album_viewer_appbar_share_err_leave": "Kunne ikke forlate albumet",
- "album_viewer_appbar_share_err_remove": "Det oppstod et problem ved fjerning av objekter fra albumet",
- "album_viewer_appbar_share_err_title": "Feilet ved endring av albumtittel",
+ "album_viewer_appbar_share_err_remove": "Det oppstod et problem ved fjerning av elementer fra albumet",
+ "album_viewer_appbar_share_err_title": "Mislyktes ved endring av albumtittel",
"album_viewer_appbar_share_leave": "Forlat album",
"album_viewer_appbar_share_to": "Del til",
"album_viewer_page_share_add_users": "Legg til brukere",
@@ -460,11 +461,11 @@
"allow_public_user_to_upload": "Tillat uautentiserte brukere å laste opp",
"alt_text_qr_code": "QR-kodebilde",
"anti_clockwise": "Mot klokken",
- "api_key": "API Nøkkel",
+ "api_key": "API-nøkkel",
"api_key_description": "Denne verdien vil vises kun én gang. Pass på å kopiere den før du lukker vinduet.",
"api_key_empty": "API-nøkkelnavnet bør ikke være tomt",
"api_keys": "API-nøkler",
- "app_bar_signout_dialog_content": "Er du sikker på at du vil logge ut?",
+ "app_bar_signout_dialog_content": "Vil du virkelig logge ut?",
"app_bar_signout_dialog_ok": "Ja",
"app_bar_signout_dialog_title": "Logg ut",
"app_settings": "Appinstillinger",
@@ -473,16 +474,16 @@
"archive": "Arkiv",
"archive_action_prompt": "{count} lagt til i arkivet",
"archive_or_unarchive_photo": "Arkiver eller ta ut av arkivet",
- "archive_page_no_archived_assets": "Ingen arkiverte objekter funnet",
+ "archive_page_no_archived_assets": "Ingen arkiverte elementer funnet",
"archive_page_title": "Arkiv ({count})",
"archive_size": "Arkivstørrelse",
"archive_size_description": "Konfigurer arkivstørrelsen for nedlastinger (i GiB)",
"archived": "Arkivert",
"archived_count": "{count, plural, other {Arkivert #}}",
"are_these_the_same_person": "Er disse samme person?",
- "are_you_sure_to_do_this": "Er du sikker på at du vil gjøre dette?",
- "asset_action_delete_err_read_only": "Kan ikke slette objekt(er) med kun lese-rettighet, hopper over",
- "asset_action_share_err_offline": "Kan ikke hente offline objekt(er), hopper over",
+ "are_you_sure_to_do_this": "Vil du virkelig gjøre dette?",
+ "asset_action_delete_err_read_only": "Kunne ikke slette element(er) med kun lese-rettighet, hopper over",
+ "asset_action_share_err_offline": "Kunne ikke hente offline element(er), hopper over",
"asset_added_to_album": "Lagt til i album",
"asset_adding_to_album": "Legger til i album…",
"asset_description_updated": "Elementbeskrivelse har blitt oppdatert",
@@ -498,37 +499,37 @@
"asset_list_settings_subtitle": "Innstillinger for layout av fotorutenett",
"asset_list_settings_title": "Fotorutenett",
"asset_offline": "Fil utilgjengelig",
- "asset_offline_description": "Dette elementet er offline. Immich kan ikke aksessere dets lokasjon. Vennlist påse at elementet er tilgijengelig og skann så biblioteket på nytt.",
+ "asset_offline_description": "Dette elementet er offline. Immich kan ikke aksessere dets lokasjon. Vennligst påse at elementet er tilgjengelig og skann så biblioteket på nytt.",
"asset_restored_successfully": "Objekt(er) gjenopprettet",
"asset_skipped": "Hoppet over",
- "asset_skipped_in_trash": "I søppelbøtten",
+ "asset_skipped_in_trash": "I papirkurven",
"asset_trashed": "Objekt slettet",
- "asset_troubleshoot": "Feilsøk objekt",
+ "asset_troubleshoot": "Feilsøk element",
"asset_uploaded": "Lastet opp",
"asset_uploading": "Laster opp…",
"asset_viewer_settings_subtitle": "Endre dine visningsinnstillinger for galleriet",
"asset_viewer_settings_title": "Objektviser",
"assets": "Filer",
- "assets_added_count": "Lagt til {count, plural, one {# objekt} other {# objekter}}",
- "assets_added_to_album_count": "Lagt til {count, plural, one {# objekter} other {# objekt}} i album",
+ "assets_added_count": "Lagt til {count, plural, one {# element} other {# elementer}}",
+ "assets_added_to_album_count": "Lagt til {count, plural, one {# elementer} other {# element}} i album",
"assets_added_to_albums_count": "Lagt til {assetTotal, plural, one {# asset} other {# assets}} til {albumTotal, plural, one {# album} other {# albums}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Objektet} other {Objektene}} kan ikke legges til i albumet",
"assets_cannot_be_added_to_albums": "{count, plural, one {Asset} other {Assets}} kan ikke legges til i noen av albumene",
"assets_count": "{count, plural, one {# fil} other {# filer}}",
- "assets_deleted_permanently": "{count} objekt(er) slettet permanent",
- "assets_deleted_permanently_from_server": "{count} objekt(er) slettet permanent fra Immich-serveren",
+ "assets_deleted_permanently": "{count} element(er) slettet permanent",
+ "assets_deleted_permanently_from_server": "{count} element(er) slettet permanent fra Immich-serveren",
"assets_downloaded_failed": "{count, plural, one {Nedlasting av # fil - {error} fil feilet} other {Nedlastede # filer - {error} filer feilet}}",
"assets_downloaded_successfully": "{count, plural, one {Nedlastet # fil vellykket} other {Nedlastede # filer vellykket}}",
- "assets_moved_to_trash_count": "Flyttet {count, plural, one {# objekt} other {# objekter}} til søppel",
- "assets_permanently_deleted_count": "Slettet {count, plural, one {# objekt} other {# objekter}} permanent",
- "assets_removed_count": "Slettet {count, plural, one {# objekt} other {# objekter}}",
- "assets_removed_permanently_from_device": "{count} objekt(er) slettet permanent fra enheten din",
- "assets_restore_confirmation": "Er du sikker på at du vil gjenopprette alle slettede eiendeler? Denne handlingen kan ikke angres! Vær oppmerksom på at frakoblede ressurser ikke kan gjenopprettes på denne måten.",
- "assets_restored_count": "Gjenopprettet {count, plural, one {# objekt} other {# objekter}}",
- "assets_restored_successfully": "{count} objekt(er) gjenopprettet",
- "assets_trashed": "{count} objekt(er) slettet",
- "assets_trashed_count": "Kastet {count, plural, one {# objekt} other {# objekter}}",
- "assets_trashed_from_server": "{count} objekt(er) slettet fra Immich serveren",
+ "assets_moved_to_trash_count": "Flyttet {count, plural, one {# element} other {# elementer}} til søppel",
+ "assets_permanently_deleted_count": "Slettet {count, plural, one {# element} other {# elementer}} permanent",
+ "assets_removed_count": "Slettet {count, plural, one {# element} other {# elementer}}",
+ "assets_removed_permanently_from_device": "{count} element(er) slettet permanent fra enheten din",
+ "assets_restore_confirmation": "Vil du virkelig gjenopprette alle slettede eiendeler? Denne handlingen kan ikke angres! Vær oppmerksom på at frakoblede ressurser ikke kan gjenopprettes på denne måten.",
+ "assets_restored_count": "Gjenopprettet {count, plural, one {# element} other {# elementer}}",
+ "assets_restored_successfully": "{count} element(er) gjenopprettet",
+ "assets_trashed": "{count} element(er) slettet",
+ "assets_trashed_count": "Kastet {count, plural, one {# element} other {# elementer}}",
+ "assets_trashed_from_server": "{count} element(er) slettet fra Immich serveren",
"assets_were_part_of_album_count": "{count, plural, one {Objektet} other {Objektene}} er allerede lagt til i albumet",
"assets_were_part_of_albums_count": "{count, plural, one {Asset was} other {Assets were}} allerede inkludert i albumet",
"authorized_devices": "Autoriserte enheter",
@@ -547,15 +548,15 @@
"backup_album_selection_page_assets_scatter": "Objekter kan bli spredd over flere album. Album kan derfor bli inkludert eller ekskludert under sikkerhetskopieringen.",
"backup_album_selection_page_select_albums": "Velg album",
"backup_album_selection_page_selection_info": "Valginformasjon",
- "backup_album_selection_page_total_assets": "Totalt antall unike objekter",
+ "backup_album_selection_page_total_assets": "Totalt antall unike elementer",
"backup_albums_sync": "Synkronisering av sikkerhetskopialbum",
"backup_all": "Alle",
- "backup_background_service_backup_failed_message": "Sikkerhetskopiering av objekter feilet. Prøver på nytt…",
+ "backup_background_service_backup_failed_message": "Sikkerhetskopiering av elementer feilet. Prøver på nytt…",
"backup_background_service_connection_failed_message": "Tilkobling til server feilet. Prøver på nytt…",
"backup_background_service_current_upload_notification": "Laster opp {filename}",
- "backup_background_service_default_notification": "Ser etter nye objekter…",
- "backup_background_service_error_title": "Sikkerhetskopieringsfeil",
- "backup_background_service_in_progress_notification": "Sikkerhetskopierer objekter…",
+ "backup_background_service_default_notification": "Ser etter nye elementer…",
+ "backup_background_service_error_title": "Feil under sikkerhetskopiering",
+ "backup_background_service_in_progress_notification": "Sikkerhetskopierer elementer…",
"backup_background_service_upload_failure_notification": "Opplasting feilet {filename}",
"backup_controller_page_albums": "Sikkerhetskopier albumer",
"backup_controller_page_background_app_refresh_disabled_content": "Aktiver bakgrunnsoppdatering i Innstillinger > Generelt > Bakgrunnsoppdatering for å bruke sikkerhetskopiering i bakgrunnen.",
@@ -567,8 +568,8 @@
"backup_controller_page_background_battery_info_title": "Batterioptimalisering",
"backup_controller_page_background_charging": "Kun ved lading",
"backup_controller_page_background_configure_error": "Konfigurering av bakgrunnstjenesten feilet",
- "backup_controller_page_background_delay": "Forsink sikkerhetskopiering av nye objekter: {duration}",
- "backup_controller_page_background_description": "Skru på bakgrunnstjenesten for å automatisk sikkerhetskopiere alle nye objekter uten å måtte åpne appen",
+ "backup_controller_page_background_delay": "Forsink sikkerhetskopiering av nye elementer: {duration}",
+ "backup_controller_page_background_description": "Skru på bakgrunnstjenesten for å automatisk sikkerhetskopiere alle nye elementer uten å måtte åpne appen",
"backup_controller_page_background_is_off": "Automatisk sikkerhetskopiering i bakgrunnen er deaktivert",
"backup_controller_page_background_is_on": "Automatisk sikkerhetskopiering i bakgrunnen er aktivert",
"backup_controller_page_background_turn_off": "Skru av bakgrunnstjenesten",
@@ -578,9 +579,9 @@
"backup_controller_page_backup_selected": "Valgte: ",
"backup_controller_page_backup_sub": "Opplastede bilder og videoer",
"backup_controller_page_created": "Opprettet: {date}",
- "backup_controller_page_desc_backup": "Slå på sikkerhetskopiering i forgrunnen for automatisk å laste opp nye objekter til serveren når du åpner appen.",
+ "backup_controller_page_desc_backup": "Slå på sikkerhetskopiering i forgrunnen for automatisk å laste opp nye elementer til serveren når du åpner appen.",
"backup_controller_page_excluded": "Ekskludert: ",
- "backup_controller_page_failed": "Feilet ({count})",
+ "backup_controller_page_failed": "Mislyktes ({count})",
"backup_controller_page_filename": "Filnavn: {filename} [{size}]",
"backup_controller_page_id": "ID: {id}",
"backup_controller_page_info": "Informasjon om sikkerhetskopi",
@@ -597,8 +598,9 @@
"backup_controller_page_turn_off": "Slå av sikkerhetskopiering i forgrunnen",
"backup_controller_page_turn_on": "Slå på sikkerhetskopiering i forgrunnen",
"backup_controller_page_uploading_file_info": "Laster opp filinformasjon",
- "backup_err_only_album": "Kan ikke fjerne det eneste albumet",
- "backup_info_card_assets": "objekter",
+ "backup_err_only_album": "Kunne ikke fjerne det eneste albumet",
+ "backup_error_sync_failed": "Synkronisering feilet. Kunne ikke fortsette sikkerhetskopiering.",
+ "backup_info_card_assets": "elementer",
"backup_manual_cancelled": "Avbrutt",
"backup_manual_in_progress": "Opplasting er allerede i gang. Prøv igjen om litt",
"backup_manual_success": "Vellykket",
@@ -618,15 +620,15 @@
"bugs_and_feature_requests": "Feil og funksjonsforespørsler",
"build": "Bygg",
"build_image": "Lag Bilde",
- "bulk_delete_duplicates_confirmation": "Er du sikker på at du vil slette {count, plural, one {# duplisert fil} other {# dupliserte filer}}? Dette vil beholde største filen fra hver gruppe og vil permanent slette alle andre duplikater. Du kan ikke angre denne handlingen!",
- "bulk_keep_duplicates_confirmation": "Er du sikker på at du vil beholde {count, plural, one {# duplikat} other {# duplikater}}? Dette vil løse alle duplikatgrupper uten å slette noe.",
- "bulk_trash_duplicates_confirmation": "Er du sikker på ønsker å slette {count, plural, one {# duplisert objekt} other {# dupliserte objekter}}? Dette vil beholde største filen fra hver gruppe, samt slette alle andre duplikater.",
+ "bulk_delete_duplicates_confirmation": "Vil du virkelig slette {count, plural, one {# duplisert fil} other {# dupliserte filer}}? Dette vil beholde største filen fra hver gruppe og vil permanent slette alle andre duplikater. Du kan ikke angre denne handlingen!",
+ "bulk_keep_duplicates_confirmation": "Vil du virkelig beholde {count, plural, one {# duplikat} other {# duplikater}}? Dette vil løse alle duplikatgrupper uten å slette noe.",
+ "bulk_trash_duplicates_confirmation": "Vil du virkelig å slette {count, plural, one {# duplisert element} other {# dupliserte elementer}}? Dette vil beholde største filen fra hver gruppe, samt slette alle andre duplikater.",
"buy": "Kjøp Immich",
"cache_settings_clear_cache_button": "Tøm buffer",
"cache_settings_clear_cache_button_title": "Tømmer app-ens buffer. Dette vil ha betydelig innvirkning på appens ytelse inntil bufferen er gjenoppbygd.",
"cache_settings_duplicated_assets_clear_button": "TØM",
"cache_settings_duplicated_assets_subtitle": "Bilder og videoer som er ignorert av app'en",
- "cache_settings_duplicated_assets_title": "Dupliserte objekter ({count})",
+ "cache_settings_duplicated_assets_title": "Dupliserte elementer ({count})",
"cache_settings_statistics_album": "Bibliotekminiatyrbilder",
"cache_settings_statistics_full": "Originalbilder",
"cache_settings_statistics_shared": "Delte albumminiatyrbilder",
@@ -643,9 +645,9 @@
"cancel_search": "Avbryt søk",
"canceled": "Avbrutt",
"canceling": "Avbryter",
- "cannot_merge_people": "Kan ikke slå sammen personer",
+ "cannot_merge_people": "Kunne ikke slå sammen personer",
"cannot_undo_this_action": "Du kan ikke gjøre om denne handlingen!",
- "cannot_update_the_description": "Kan ikke oppdatere beskrivelsen",
+ "cannot_update_the_description": "Kunne ikke oppdatere beskrivelsen",
"cast": "Strøm",
"cast_description": "Konfigurer tilgjengelige cast-destinasjoner",
"change_date": "Endre dato",
@@ -655,21 +657,21 @@
"change_location": "Endre sted",
"change_name": "Endre navn",
"change_name_successfully": "Navneendring vellykket",
- "change_password": "Endre Passord",
+ "change_password": "Endre passord",
"change_password_description": "Dette er enten første gang du logger inn i systemet, eller det har blitt gjort en forespørsel om å endre passordet ditt. Vennligst skriv inn det nye passordet nedenfor.",
"change_password_form_confirm_password": "Bekreft passord",
"change_password_form_description": "Hei {name}!\n\nDette er enten første gang du logger på systemet, eller det er sendt en forespørsel om å endre passordet ditt. Vennligst skriv inn det nye passordet nedenfor.",
"change_password_form_new_password": "Nytt passord",
"change_password_form_password_mismatch": "Passordene stemmer ikke",
"change_password_form_reenter_new_password": "Skriv nytt passord igjen",
- "change_pin_code": "Endre PIN kode",
+ "change_pin_code": "Endre PIN-kode",
"change_your_password": "Endre passordet ditt",
"changed_visibility_successfully": "Endret synlighet vellykket",
"charging": "Lading",
"charging_requirement_mobile_backup": "Bakgrunnsbackup krever at enheten lader",
- "check_corrupt_asset_backup": "Sjekk etter korrupte backupobjekter",
+ "check_corrupt_asset_backup": "Sjekk etter korrupte backupelementer",
"check_corrupt_asset_backup_button": "Utfør sjekk",
- "check_corrupt_asset_backup_description": "Kjør denne sjekken kun over Wi-Fi og når alle objekter har blitt lastet opp. Denne sjekken kan ta noen minutter.",
+ "check_corrupt_asset_backup_description": "Kjør denne sjekken kun over Wi-Fi og når alle elementer har blitt lastet opp. Denne sjekken kan ta noen minutter.",
"check_logs": "Sjekk Logger",
"choose_matching_people_to_merge": "Velg personer som skal slås sammen",
"city": "By",
@@ -702,8 +704,8 @@
"completed": "Fullført",
"confirm": "Bekreft",
"confirm_admin_password": "Bekreft administratorpassord",
- "confirm_delete_face": "Er du sikker på at du vil slette {name} sitt ansikt fra ativia?",
- "confirm_delete_shared_link": "Er du sikker på at du vil slette denne delte lenken?",
+ "confirm_delete_face": "Vil du virkelig slette {name} sitt ansikt fra ativia?",
+ "confirm_delete_shared_link": "Vil du virkelig slette denne delte lenken?",
"confirm_keep_this_delete_others": "Alle andre ressurser i denne stabelen vil bli slettet bortsett fra denne ressursen. Er du sikker på at du vil fortsette?",
"confirm_new_pin_code": "Bekreft ny PIN kode",
"confirm_password": "Bekreft passord",
@@ -721,7 +723,7 @@
"control_bottom_app_bar_edit_time": "Endre Dato og tid",
"control_bottom_app_bar_share_link": "Del Lenke",
"control_bottom_app_bar_share_to": "Del til",
- "control_bottom_app_bar_trash_from_immich": "Flytt til søppelkasse",
+ "control_bottom_app_bar_trash_from_immich": "Flytt til papirkurv",
"copied_image_to_clipboard": "Bildet er kopiert til utklippstavlen.",
"copied_to_clipboard": "Kopiert til utklippstavlen!",
"copy_error": "Kopi feil",
@@ -736,9 +738,9 @@
"covers": "Omslag",
"create": "Opprett",
"create_album": "Opprett album",
- "create_album_page_untitled": "Uten navn",
+ "create_album_page_untitled": "Navnløst",
"create_library": "Opprett Bibliotek",
- "create_link": "Opprett link",
+ "create_link": "Opprett lenke",
"create_link_to_share": "Opprett delelink",
"create_link_to_share_description": "La alle med lenken se de(t) valgte bildet/bildene",
"create_new": "LAG NY",
@@ -747,8 +749,8 @@
"create_new_user": "Opprett ny bruker",
"create_shared_album_page_share_add_assets": "LEGG TIL OBJEKTER",
"create_shared_album_page_share_select_photos": "Velg bilder",
- "create_shared_link": "Opprett delt link",
- "create_tag": "Lag tag",
+ "create_shared_link": "Opprett delt lenke",
+ "create_tag": "Lag merkelapp",
"create_tag_description": "Lag en ny tag. For undertag, vennligst fullfør hele stien til taggen, inkludert forovervendt skråstrek.",
"create_user": "Opprett Bruker",
"created": "Opprettet",
@@ -782,23 +784,23 @@
"default_locale": "Standard språkinnstilling",
"default_locale_description": "Formater datoer og tall basert på nettleserens språkinnstilling",
"delete": "Slett",
- "delete_action_confirmation_message": "Er du sikker på at du vil slette dette objektet? Dette vil flytte objektet til søppelkassen og vil gi deg beskjed om du vil slette det lokalt",
+ "delete_action_confirmation_message": "Vil du virkelig slette dette elementet? Dette vil flytte elementet til papirkurvn og vil gi deg beskjed om du vil slette det lokalt",
"delete_action_prompt": "{count} slettet",
"delete_album": "Slett album",
- "delete_api_key_prompt": "Er du sikker på at du vil slette denne API-nøkkelen?",
- "delete_dialog_alert": "Disse objektene vil bli slettet permanent fra Immich og fra enheten din",
- "delete_dialog_alert_local": "Disse objektene vil bli permanent slettet fra enheten din, men vil fortsatt være tilgjengelige fra Immich serveren",
- "delete_dialog_alert_local_non_backed_up": "Noen av objektene er ikke sikkerhetskopiert til Immich og vil bli permanent fjernet fra enheten din",
- "delete_dialog_alert_remote": "Disse objektene vil bli permanent slettet fra Immich serveren",
+ "delete_api_key_prompt": "Vil du virkelig slette denne API-nøkkelen?",
+ "delete_dialog_alert": "Disse elementene vil bli slettet permanent fra Immich og fra enheten din",
+ "delete_dialog_alert_local": "Disse elementene vil bli permanent slettet fra enheten din, men vil fortsatt være tilgjengelige fra Immich serveren",
+ "delete_dialog_alert_local_non_backed_up": "Noen av elementene er ikke sikkerhetskopiert til Immich og vil bli permanent fjernet fra enheten din",
+ "delete_dialog_alert_remote": "Disse elementene vil bli permanent slettet fra Immich serveren",
"delete_dialog_ok_force": "Slett uansett",
"delete_dialog_title": "Slett permanent",
- "delete_duplicates_confirmation": "Er du sikker på at du vil slette disse duplikatene permanent?",
+ "delete_duplicates_confirmation": "Vil du virkelig slette disse duplikatene permanent?",
"delete_face": "Slett ansik",
"delete_key": "Slett nøkkel",
"delete_library": "Slett bibliotek",
"delete_link": "Slett lenke",
"delete_local_action_prompt": "{count} slettet lokalt",
- "delete_local_dialog_ok_backed_up_only": "Slett kun sikkerhetskopierte objekter",
+ "delete_local_dialog_ok_backed_up_only": "Slett kun sikkerhetskopierte elementer",
"delete_local_dialog_ok_force": "Slett uansett",
"delete_others": "Slett andre",
"delete_permanently": "Slett permanent",
@@ -806,7 +808,7 @@
"delete_shared_link": "Slett delt lenke",
"delete_shared_link_dialog_title": "Slett delt link",
"delete_tag": "Slett tag",
- "delete_tag_confirmation_prompt": "Er du sikker på at du vil slette {tagName} tag?",
+ "delete_tag_confirmation_prompt": "Vil du virkelig slette {tagName} tag?",
"delete_user": "Slett bruker",
"deleted_shared_link": "Slettet delt lenke",
"deletes_missing_assets": "Slett eiendeler som mangler fra disk",
@@ -831,7 +833,7 @@
"documentation": "Dokumentasjon",
"done": "Ferdig",
"download": "Last ned",
- "download_action_prompt": "Laster ned {count} objekter",
+ "download_action_prompt": "Laster ned {count} elementer",
"download_canceled": "Nedlasting avbrutt",
"download_complete": "Nedlasting fullført",
"download_enqueue": "Nedlasting satt i kø",
@@ -890,7 +892,7 @@
"email_notifications": "Epostvarsler",
"empty_folder": "Denne mappen er tom",
"empty_trash": "Tøm papirkurv",
- "empty_trash_confirmation": "Er du sikker på at du vil tømme søppelbøtta? Dette vil slette alle filene i søppelbøtta permanent fra Immich.\nDu kan ikke angre denne handlingen!",
+ "empty_trash_confirmation": "Vil du virkelig Tømme søppelbøtta? Dette vil slette alle filene i søppelbøtta permanent fra Immich.\nDu kan ikke angre denne handlingen!",
"enable": "Aktivere",
"enable_backup": "Aktiver backup",
"enable_biometric_auth_description": "Skriv inn PINkoden for å aktivere biometrisk autentisering",
@@ -901,7 +903,7 @@
"enter_your_pin_code": "Skriv inn din PIN kode",
"enter_your_pin_code_subtitle": "Skriv inn din PIN kode for å få tilgang til låst mappe",
"error": "Feil",
- "error_change_sort_album": "Feilet ved endring av sorteringsrekkefølge på albumer",
+ "error_change_sort_album": "Mislyktes ved endring av sorteringsrekkefølge på albumer",
"error_delete_face": "Feil ved sletting av ansikt fra aktivia",
"error_getting_places": "Feil ved henting av steder",
"error_loading_image": "Feil ved lasting av bilde",
@@ -910,16 +912,16 @@
"error_tag_face_bounding_box": "Feil ved merking av ansikt - klarte ikke å få koordinatene på omrisset",
"error_title": "Feil - Noe gikk galt",
"errors": {
- "cannot_navigate_next_asset": "Kan ikke navigere til neste fil",
- "cannot_navigate_previous_asset": "Kan ikke navigere til forrige fil",
- "cant_apply_changes": "Kan ikke legge til endringene",
- "cant_change_activity": "Kan ikke {enabled, select, true {disable} other {enable}} aktivitet",
- "cant_change_asset_favorite": "Kan ikke endre favoritt til filen",
- "cant_change_metadata_assets_count": "Kan ikke endre metadata for {count, plural, one {# objekt} other {# objekter}}",
- "cant_get_faces": "Kan ikke finne ansikter",
- "cant_get_number_of_comments": "Kan ikke hente antall kommentarer",
- "cant_search_people": "Kan ikke søke etter mennesker",
- "cant_search_places": "Kan ikke søke etter plasser",
+ "cannot_navigate_next_asset": "Kunne ikke navigere til neste fil",
+ "cannot_navigate_previous_asset": "Kunne ikke navigere til forrige fil",
+ "cant_apply_changes": "Kunne ikke legge til endringene",
+ "cant_change_activity": "Kunne ikke {enabled, select, true {disable} other {enable}} aktivitet",
+ "cant_change_asset_favorite": "Kunne ikke endre favoritt til filen",
+ "cant_change_metadata_assets_count": "Kunne ikke endre metadata for {count, plural, one {# element} other {# elementer}}",
+ "cant_get_faces": "Kunne ikke finne ansikter",
+ "cant_get_number_of_comments": "Kunne ikke hente antall kommentarer",
+ "cant_search_people": "Kunne ikke søke etter mennesker",
+ "cant_search_places": "Kunne ikke søke etter plasser",
"error_adding_assets_to_album": "Feil med å legge til bilder til album",
"error_adding_users_to_album": "Feil, kan ikke legge til brukere til album",
"error_deleting_shared_user": "Feil med å slette delt bruker",
@@ -930,17 +932,17 @@
"exclusion_pattern_already_exists": "Dette eksklusjonsmønsteret eksisterer allerede.",
"failed_to_create_album": "Feil med å lage album",
"failed_to_create_shared_link": "Feil med å lage delt lenke",
- "failed_to_edit_shared_link": "Feilet med å redigere delt lenke",
- "failed_to_get_people": "Feilet med å finne mennesker",
- "failed_to_keep_this_delete_others": "Feilet med å beholde dette bilde og slette de andre",
- "failed_to_load_asset": "Feilet med å laste bilder",
- "failed_to_load_assets": "Feilet med å laste bilde",
+ "failed_to_edit_shared_link": "Mislyktes med å redigere delt lenke",
+ "failed_to_get_people": "Mislyktes med å finne mennesker",
+ "failed_to_keep_this_delete_others": "Mislyktes med å beholde dette bilde og slette de andre",
+ "failed_to_load_asset": "Mislyktes med å laste bilder",
+ "failed_to_load_assets": "Mislyktes med å laste bilde",
"failed_to_load_notifications": "Kunne ikke laste inn varsler",
"failed_to_load_people": "Feilen med å laste mennesker",
- "failed_to_remove_product_key": "Feilet med å ta bort produkt nøkkel",
+ "failed_to_remove_product_key": "Mislyktes med å ta bort produkt nøkkel",
"failed_to_reset_pin_code": "Kunne ikke tilbakestille PIN-koden",
- "failed_to_stack_assets": "Feilet med å stable bilder",
- "failed_to_unstack_assets": "Feilet med å avstable bilder",
+ "failed_to_stack_assets": "Mislyktes med å stable bilder",
+ "failed_to_unstack_assets": "Mislyktes med å avstable bilder",
"failed_to_update_notification_status": "Kunne ikke oppdatere varslingsstatusen",
"import_path_already_exists": "Denne importstien eksisterer allerede.",
"incorrect_email_or_password": "Feil epost eller passord",
@@ -948,87 +950,87 @@
"profile_picture_transparent_pixels": "Profil bilde kan ikke ha gjennomsiktige piksler. Vennligst zoom inn og/eller flytt bilde.",
"quota_higher_than_disk_size": "Du har satt kvoten større enn diskstørrelsen",
"something_went_wrong": "Noe gikk galt",
- "unable_to_add_album_users": "Kan ikke legge til brukere i albumet",
- "unable_to_add_assets_to_shared_link": "Kan ikke legge til bilder til delt lenke",
- "unable_to_add_comment": "Kan ikke legge til kommentar",
- "unable_to_add_exclusion_pattern": "Kan ikke legge til eksklusjonsmønster",
- "unable_to_add_import_path": "Kan ikke legge til importsti",
- "unable_to_add_partners": "Kan ikke legge til partnere",
- "unable_to_add_remove_archive": "Kan ikke {archived, select, true {fjerne objekt fra} other {flytte objekt til}} arkivet",
- "unable_to_add_remove_favorites": "Kan ikke {favorite, select, true {legge til objekt til} other {fjerne objekt fra}} favoritter",
- "unable_to_archive_unarchive": "Kan ikke {archived, select, true {archive} other {unarchive}}",
- "unable_to_change_album_user_role": "Kan ikke endre brukerens rolle i albumet",
- "unable_to_change_date": "Kan ikke endre dato",
+ "unable_to_add_album_users": "Kunne ikke legge til brukere i albumet",
+ "unable_to_add_assets_to_shared_link": "Kunne ikke legge til bilder til delt lenke",
+ "unable_to_add_comment": "Kunne ikke legge til kommentar",
+ "unable_to_add_exclusion_pattern": "Kunne ikke legge til eksklusjonsmønster",
+ "unable_to_add_import_path": "Kunne ikke legge til importsti",
+ "unable_to_add_partners": "Kunne ikke legge til partnere",
+ "unable_to_add_remove_archive": "Kunne ikke {archived, select, true {fjerne element fra} other {flytte element til}} arkivet",
+ "unable_to_add_remove_favorites": "Kunne ikke {favorite, select, true {legge til element til} other {fjerne element fra}} favoritter",
+ "unable_to_archive_unarchive": "Kunne ikke {archived, select, true {archive} other {unarchive}}",
+ "unable_to_change_album_user_role": "Kunne ikke endre brukerens rolle i albumet",
+ "unable_to_change_date": "Kunne ikke endre dato",
"unable_to_change_description": "Klarte ikke å oppdatere beskrivelse",
- "unable_to_change_favorite": "Kan ikke endre favoritt for bildet",
- "unable_to_change_location": "Kan ikke endre plassering",
- "unable_to_change_password": "Kan ikke endre passord",
- "unable_to_change_visibility": "Kan ikke endre synlighet for {count, plural, one {# person} other {# people}}",
+ "unable_to_change_favorite": "Kunne ikke endre favoritt for bildet",
+ "unable_to_change_location": "Kunne ikke endre plassering",
+ "unable_to_change_password": "Kunne ikke endre passord",
+ "unable_to_change_visibility": "Kunne ikke endre synlighet for {count, plural, one {# person} other {# people}}",
"unable_to_complete_oauth_login": "Kunne ikke fullføre OAuth innlogging",
- "unable_to_connect": "Kan ikke koble til",
- "unable_to_copy_to_clipboard": "Kan ikke kopiere til utklippstavlen, sørg for at du får tilgang til siden via HTTPS",
- "unable_to_create_admin_account": "Kan ikke opprette administrator bruker",
- "unable_to_create_api_key": "Kan ikke opprette en ny API-nøkkel",
- "unable_to_create_library": "Kan ikke opprette bibliotek",
- "unable_to_create_user": "Kan ikke opprette bruker",
- "unable_to_delete_album": "Kan ikke slette album",
- "unable_to_delete_asset": "Kan ikke slette filen",
+ "unable_to_connect": "Kunne ikke koble til",
+ "unable_to_copy_to_clipboard": "Kunne ikke kopiere til utklippstavlen, sørg for at du får tilgang til siden via HTTPS",
+ "unable_to_create_admin_account": "Kunne ikke opprette administrator bruker",
+ "unable_to_create_api_key": "Kunne ikke opprette en ny API-nøkkel",
+ "unable_to_create_library": "Kunne ikke opprette bibliotek",
+ "unable_to_create_user": "Kunne ikke opprette bruker",
+ "unable_to_delete_album": "Kunne ikke slette album",
+ "unable_to_delete_asset": "Kunne ikke slette filen",
"unable_to_delete_assets": "Feil med å slette bilde",
- "unable_to_delete_exclusion_pattern": "Kan ikke slette eksklusjonsmønster",
- "unable_to_delete_import_path": "Kan ikke slette importsti",
- "unable_to_delete_shared_link": "Kan ikke slette delt lenke",
- "unable_to_delete_user": "Kan ikke slette bruker",
- "unable_to_download_files": "Kan ikke laste ned filer",
- "unable_to_edit_exclusion_pattern": "Kan ikke redigere eksklusjonsmønster",
- "unable_to_edit_import_path": "Kan ikke redigere importsti",
- "unable_to_empty_trash": "Kan ikke tømme papirkurven",
- "unable_to_enter_fullscreen": "Kan ikke gå inn i fullskjerm",
- "unable_to_exit_fullscreen": "Kan ikke gå ut fra fullskjerm",
- "unable_to_get_comments_number": "Kan ikke hente antall kommentarer",
- "unable_to_get_shared_link": "Kan ikke hente delt lenke",
- "unable_to_hide_person": "Kan ikke skjule person",
- "unable_to_link_motion_video": "Kan ikke lenke bevegelig video",
- "unable_to_link_oauth_account": "Kan ikke lenke til OAuth-konto",
- "unable_to_log_out_all_devices": "Kan ikke logge ut fra alle enheter",
- "unable_to_log_out_device": "Kan ikke logge ut av enhet",
- "unable_to_login_with_oauth": "Kan ikke logge inn med OAuth",
- "unable_to_play_video": "Kan ikke spille av video",
+ "unable_to_delete_exclusion_pattern": "Kunne ikke slette eksklusjonsmønster",
+ "unable_to_delete_import_path": "Kunne ikke slette importsti",
+ "unable_to_delete_shared_link": "Kunne ikke slette delt lenke",
+ "unable_to_delete_user": "Kunne ikke slette bruker",
+ "unable_to_download_files": "Kunne ikke laste ned filer",
+ "unable_to_edit_exclusion_pattern": "Kunne ikke redigere eksklusjonsmønster",
+ "unable_to_edit_import_path": "Kunne ikke redigere importsti",
+ "unable_to_empty_trash": "Kunne ikke Tømme papirkurven",
+ "unable_to_enter_fullscreen": "Kunne ikke gå inn i fullskjerm",
+ "unable_to_exit_fullscreen": "Kunne ikke gå ut fra fullskjerm",
+ "unable_to_get_comments_number": "Kunne ikke hente antall kommentarer",
+ "unable_to_get_shared_link": "Kunne ikke hente delt lenke",
+ "unable_to_hide_person": "Kunne ikke skjule person",
+ "unable_to_link_motion_video": "Kunne ikke lenke bevegelig video",
+ "unable_to_link_oauth_account": "Kunne ikke lenke til OAuth-konto",
+ "unable_to_log_out_all_devices": "Kunne ikke logge ut fra alle enheter",
+ "unable_to_log_out_device": "Kunne ikke logge ut av enhet",
+ "unable_to_login_with_oauth": "Kunne ikke logge inn med OAuth",
+ "unable_to_play_video": "Kunne ikke spille av video",
"unable_to_reassign_assets_existing_person": "Kunne ikke endre bruker på bildene til {name, select, null {an existing person} other {{name}}}",
"unable_to_reassign_assets_new_person": "Kunne ikke tildele bildene til en ny person",
- "unable_to_refresh_user": "Kan ikke oppdatere bruker",
- "unable_to_remove_album_users": "Kan ikke fjerne brukere fra album",
- "unable_to_remove_api_key": "Kan ikke fjerne API-nøkkel",
+ "unable_to_refresh_user": "Kunne ikke oppdatere bruker",
+ "unable_to_remove_album_users": "Kunne ikke fjerne brukere fra album",
+ "unable_to_remove_api_key": "Kunne ikke fjerne API-nøkkel",
"unable_to_remove_assets_from_shared_link": "Kunne ikke fjerne bilder fra delt lenke",
- "unable_to_remove_library": "Kan ikke fjerne bibliotek",
- "unable_to_remove_partner": "Kan ikke fjerne partner",
- "unable_to_remove_reaction": "Kan ikke fjerne reaksjon",
- "unable_to_reset_password": "Kan ikke tilbakestille passord",
+ "unable_to_remove_library": "Kunne ikke fjerne bibliotek",
+ "unable_to_remove_partner": "Kunne ikke fjerne partner",
+ "unable_to_remove_reaction": "Kunne ikke fjerne reaksjon",
+ "unable_to_reset_password": "Kunne ikke tilbakestille passord",
"unable_to_reset_pin_code": "Klarte ikke å resette PIN kode",
- "unable_to_resolve_duplicate": "Kan ikke løse duplikat",
- "unable_to_restore_assets": "Kan ikke gjenopprette filer",
- "unable_to_restore_trash": "Kan ikke gjenopprette papirkurven",
- "unable_to_restore_user": "Kan ikke gjenopprette bruker",
- "unable_to_save_album": "Kan ikke lagre album",
- "unable_to_save_api_key": "Kan ikke lagre API-nøkkel",
+ "unable_to_resolve_duplicate": "Kunne ikke løse duplikat",
+ "unable_to_restore_assets": "Kunne ikke gjenopprette filer",
+ "unable_to_restore_trash": "Kunne ikke gjenopprette papirkurven",
+ "unable_to_restore_user": "Kunne ikke gjenopprette bruker",
+ "unable_to_save_album": "Kunne ikke lagre album",
+ "unable_to_save_api_key": "Kunne ikke lagre API-nøkkel",
"unable_to_save_date_of_birth": "Kunne ikke lagre bursdag",
- "unable_to_save_name": "Kan ikke lagre navn",
- "unable_to_save_profile": "Kan ikke lagre profil",
- "unable_to_save_settings": "Kan ikke lagre instillinger",
- "unable_to_scan_libraries": "Kan ikke skanne biblioteker",
- "unable_to_scan_library": "Kan ikke skanne bibliotek",
+ "unable_to_save_name": "Kunne ikke lagre navn",
+ "unable_to_save_profile": "Kunne ikke lagre profil",
+ "unable_to_save_settings": "Kunne ikke lagre instillinger",
+ "unable_to_scan_libraries": "Kunne ikke skanne biblioteker",
+ "unable_to_scan_library": "Kunne ikke skanne bibliotek",
"unable_to_set_feature_photo": "Kunne ikke sette funksjonsbilde",
- "unable_to_set_profile_picture": "Kan ikke sette profilbilde",
- "unable_to_submit_job": "Kan ikke sende inn jobb",
- "unable_to_trash_asset": "Kan ikke flytte filen til papirkurven",
- "unable_to_unlink_account": "Kan ikke fjerne kobling til konto",
+ "unable_to_set_profile_picture": "Kunne ikke sette profilbilde",
+ "unable_to_submit_job": "Kunne ikke sende inn jobb",
+ "unable_to_trash_asset": "Kunne ikke flytte filen til papirkurven",
+ "unable_to_unlink_account": "Kunne ikke fjerne kobling til konto",
"unable_to_unlink_motion_video": "Kunne ikke ta på kobling på bevegelig video",
"unable_to_update_album_cover": "Kunne ikke oppdatere album bilde",
"unable_to_update_album_info": "Kunne ikke oppdatere informasjon i album",
- "unable_to_update_library": "Kan ikke oppdatere bibliotek",
- "unable_to_update_location": "Kan ikke oppdatere plassering",
- "unable_to_update_settings": "Kan ikke oppdatere innstillinger",
- "unable_to_update_timeline_display_status": "Kan ikke oppdatere visningsstatus for tidslinje",
- "unable_to_update_user": "Kan ikke oppdatere bruker",
+ "unable_to_update_library": "Kunne ikke oppdatere bibliotek",
+ "unable_to_update_location": "Kunne ikke oppdatere plassering",
+ "unable_to_update_settings": "Kunne ikke oppdatere innstillinger",
+ "unable_to_update_timeline_display_status": "Kunne ikke oppdatere visningsstatus for tidslinje",
+ "unable_to_update_user": "Kunne ikke oppdatere bruker",
"unable_to_upload_file": "Kunne ikke laste opp fil"
},
"exif": "EXIF",
@@ -1059,15 +1061,15 @@
"external_network": "Eksternt nettverk",
"external_network_sheet_info": "Når du ikke er på det foretrukne Wi-Fi-nettverket, vil appen koble seg til serveren via den første av URL-ene nedenfor den kan nå, fra topp til bunn",
"face_unassigned": "Ikke tilordnet",
- "failed": "Feilet",
+ "failed": "Mislyktes",
"failed_to_authenticate": "Kunne ikke autentisere",
- "failed_to_load_assets": "Feilet med å laste fil",
+ "failed_to_load_assets": "Mislyktes med å laste fil",
"failed_to_load_folder": "Kunne ikke laste inn mappe",
"favorite": "Favoritt",
"favorite_action_prompt": "{count} lagt til i favoritter",
"favorite_or_unfavorite_photo": "Merk som favoritt eller fjern som favoritt",
"favorites": "Favoritter",
- "favorites_page_no_favorites": "Ingen favorittobjekter funnet",
+ "favorites_page_no_favorites": "Ingen favorittelementer funnet",
"feature_photo_updated": "Fremhevet bilde oppdatert",
"features": "Funksjoner",
"features_in_development": "Funksjoner under utvikling",
@@ -1091,7 +1093,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Denne funksjonen laster eksterne ressurser fra Google for å fungere.",
"general": "Generelt",
- "geolocation_instruction_location": "Klikk på et objekt med GPS-koordinater for å bruke posisjonen, eller velg en posisjon direkte fra kartet",
+ "geolocation_instruction_location": "Klikk på et element med GPS-koordinater for å bruke posisjonen, eller velg en posisjon direkte fra kartet",
"get_help": "Få Hjelp",
"get_wifiname_error": "Kunne ikke hente Wi-Fi-navnet. Sørg for at du har gitt de nødvendige tillatelsene og er koblet til et Wi-Fi-nettverk",
"getting_started": "Kom i gang",
@@ -1110,8 +1112,8 @@
"haptic_feedback_switch": "Aktivert haptisk tilbakemelding",
"haptic_feedback_title": "Haptisk tilbakemelding",
"has_quota": "Kvote",
- "hash_asset": "Hash objekter",
- "hashed_assets": "Hashede objekter",
+ "hash_asset": "Hash elementer",
+ "hashed_assets": "Hashede elementer",
"hashing": "Hasher",
"header_settings_add_header_tip": "Legg til header",
"header_settings_field_validator_msg": "Verdi kan ikke være null",
@@ -1126,22 +1128,22 @@
"hide_password": "Skjul passord",
"hide_person": "Skjul person",
"hide_unnamed_people": "Skjul mennesker uten navn",
- "home_page_add_to_album_conflicts": "Lagt til {added} objekter til album {album}. {failed} objekter er allerede i albumet.",
- "home_page_add_to_album_err_local": "Kan ikke legge til lokale objekter til album enda, hopper over",
- "home_page_add_to_album_success": "Lagt til {added} objekter til album {album}.",
- "home_page_album_err_partner": "Kan ikke legge til partnerobjekter i album enda, hopper over",
- "home_page_archive_err_local": "Kan ikke arkivere lokale objekter enda, hopper over",
- "home_page_archive_err_partner": "Kan ikke arkivere partnerobjekter, hopper over",
+ "home_page_add_to_album_conflicts": "Lagt til {added} elementer til album {album}. {failed} elementer er allerede i albumet.",
+ "home_page_add_to_album_err_local": "Kunne ikke legge til lokale elementer til album enda, hopper over",
+ "home_page_add_to_album_success": "Lagt til {added} elementer til album {album}.",
+ "home_page_album_err_partner": "Kunne ikke legge til partnerelementer i album enda, hopper over",
+ "home_page_archive_err_local": "Kunne ikke arkivere lokale elementer enda, hopper over",
+ "home_page_archive_err_partner": "Kunne ikke arkivere partnerelementer, hopper over",
"home_page_building_timeline": "Genererer tidslinjen",
- "home_page_delete_err_partner": "Kan ikke slette partnerobjekter, hopper over",
- "home_page_delete_remote_err_local": "Lokale objekter i fjernslettingsvalgene, hopper over",
- "home_page_favorite_err_local": "Kan ikke sette favoritt på lokale objekter enda, hopper over",
- "home_page_favorite_err_partner": "Kan ikke merke partnerobjekter som favoritt enda, hopper over",
+ "home_page_delete_err_partner": "Kunne ikke slette partnerelementer, hopper over",
+ "home_page_delete_remote_err_local": "Lokale elementer i fjernslettingsvalgene, hopper over",
+ "home_page_favorite_err_local": "Kunne ikke sette favoritt på lokale elementer enda, hopper over",
+ "home_page_favorite_err_partner": "Kunne ikke merke partnerelementer som favoritt enda, hopper over",
"home_page_first_time_notice": "Hvis dette er første gangen du benytter appen, velg et album (eller flere) for sikkerhetskopiering, slik at tidslinjen kan fylles med dine bilder og videoer",
- "home_page_locked_error_local": "Kunne ikke flytte lokale objekter til låst mappe, hopper over",
- "home_page_locked_error_partner": "Kunne ikke flytte partner objekter til låst mappe, hopper over",
- "home_page_share_err_local": "Kan ikke dele lokale objekter via link, hopper over",
- "home_page_upload_err_limit": "Maksimalt 30 objekter kan lastes opp om gangen, hopper over",
+ "home_page_locked_error_local": "Kunne ikke flytte lokale elementer til låst mappe, hopper over",
+ "home_page_locked_error_partner": "Kunne ikke flytte partner elementer til låst mappe, hopper over",
+ "home_page_share_err_local": "Kunne ikke dele lokale elementer via link, hopper over",
+ "home_page_upload_err_limit": "Maksimalt 30 elementer kan lastes opp om gangen, hopper over",
"host": "Vert",
"hour": "Time",
"hours": "Timer",
@@ -1197,7 +1199,7 @@
"keep": "Behold",
"keep_all": "Behold alle",
"keep_this_delete_others": "Behold denne, slett de andre",
- "kept_this_deleted_others": "Behold denne filen og slett {count, plural, one {# objekt} other {# objekter}}",
+ "kept_this_deleted_others": "Behold denne filen og slett {count, plural, one {# element} other {# elementer}}",
"keyboard_shortcuts": "Tastatursnarveier",
"language": "Språk",
"language_no_results_subtitle": "Prøv å endre søkeord",
@@ -1218,7 +1220,7 @@
"library_options": "Bibliotekalternativer",
"library_page_device_albums": "Albumer på enheten",
"library_page_new_album": "Nytt album",
- "library_page_sort_asset_count": "Antall objekter",
+ "library_page_sort_asset_count": "Antall elementer",
"library_page_sort_created": "Nylig opplastet",
"library_page_sort_last_modified": "Sist endret",
"library_page_sort_title": "Albumtittel",
@@ -1233,8 +1235,8 @@
"loading": "Laster",
"loading_search_results_failed": "Klarte ikke å laste inn søkeresultater",
"local": "Lokal",
- "local_asset_cast_failed": "Kan ikke caste et bilde som ikke er lastet opp til serveren",
- "local_assets": "Lokale objekter",
+ "local_asset_cast_failed": "Kunne ikke caste et bilde som ikke er lastet opp til serveren",
+ "local_assets": "Lokale elementer",
"local_media_summary": "Oppsummering av lokale media",
"local_network": "Lokalt nettverk",
"local_network_sheet_info": "Appen vil koble til serveren via denne URL-en når du bruker det angitte Wi-Fi-nettverket",
@@ -1272,12 +1274,12 @@
"login_form_password_hint": "passord",
"login_form_save_login": "Forbli innlogget",
"login_form_server_empty": "Skriv inn en server-URL.",
- "login_form_server_error": "Kan ikke koble til server.",
+ "login_form_server_error": "Kunne ikke koble til server.",
"login_has_been_disabled": "Innlogging har blitt deaktivert.",
"login_password_changed_error": "Det skjedde en feil ved oppdatering av passordet",
"login_password_changed_success": "Passord oppdatert",
- "logout_all_device_confirmation": "Er du sikker på at du vil logge ut av alle enheter?",
- "logout_this_device_confirmation": "Er du sikker på at du vil logge ut av denne enheten?",
+ "logout_all_device_confirmation": "Vil du virkelig logge ut av alle enheter?",
+ "logout_this_device_confirmation": "Vil du virkelig logge ut av denne enheten?",
"logs": "Logger",
"longitude": "Lengdegrad",
"look": "Se",
@@ -1296,14 +1298,14 @@
"manage_your_oauth_connection": "Administrer tilkoblingen din med OAuth",
"map": "Kart",
"map_assets_in_bounds": "{count, plural, =0 {Ingen bilder i dette området} one {# photo} other {# photos}}",
- "map_cannot_get_user_location": "Kan ikke hente brukerlokasjon",
+ "map_cannot_get_user_location": "Kunne ikke hente brukerlokasjon",
"map_location_dialog_yes": "Ja",
"map_location_picker_page_use_location": "Bruk denne lokasjonen",
- "map_location_service_disabled_content": "Lokasjonstjeneste må være aktivert for å vise objekter fra din nåværende lokasjon. Vil du aktivere det nå?",
+ "map_location_service_disabled_content": "Lokasjonstjeneste må være aktivert for å vise elementer fra din nåværende lokasjon. Vil du aktivere det nå?",
"map_location_service_disabled_title": "Lokasjonstjeneste deaktivert",
"map_marker_for_images": "Kart makeringer for bilder tatt i {city}, {country}",
"map_marker_with_image": "Kartmarkør med bilde",
- "map_no_location_permission_content": "Lokasjonstilgang er påkrevet for å vise objekter fra din nåværende lokasjon. Vil du tillate det nå?",
+ "map_no_location_permission_content": "Lokasjonstilgang er påkrevet for å vise elementer fra din nåværende lokasjon. Vil du tillate det nå?",
"map_no_location_permission_title": "Lokasjonstilgang avvist",
"map_settings": "Kartinnstillinger",
"map_settings_dark_mode": "Mørk modus",
@@ -1321,7 +1323,7 @@
"mark_as_read": "Merk som lest",
"marked_all_as_read": "Merket alle som lest",
"matches": "Samsvarende",
- "matching_assets": "Matchende objekter",
+ "matching_assets": "Matchende elementer",
"media_type": "Mediatype",
"memories": "Minner",
"memories_all_caught_up": "Alt utført",
@@ -1351,11 +1353,11 @@
"move_to_lock_folder_action_prompt": "{count} lagt til i låst mappe",
"move_to_locked_folder": "Flytt til låst mappe",
"move_to_locked_folder_confirmation": "Disse bildene og videoene vil bli fjernet fra alle albumer, og kun tilgjengelige via den låste mappen",
- "moved_to_archive": "Flyttet {count, plural, one {# objekt} other {# objekter}} til arkivet",
- "moved_to_library": "Flyttet {count, plural, one {# objekt} other {# objekter}} til biblioteket",
+ "moved_to_archive": "Flyttet {count, plural, one {# element} other {# elementer}} til arkivet",
+ "moved_to_library": "Flyttet {count, plural, one {# element} other {# elementer}} til biblioteket",
"moved_to_trash": "Flyttet til papirkurven",
- "multiselect_grid_edit_date_time_err_read_only": "Kan ikke endre dato på objekt(er) med kun lese-rettigheter, hopper over",
- "multiselect_grid_edit_gps_err_read_only": "Kan ikke endre lokasjon på objekt(er) med kun lese-rettigheter, hopper over",
+ "multiselect_grid_edit_date_time_err_read_only": "Kunne ikke endre dato på element(er) med kun lese-rettigheter, hopper over",
+ "multiselect_grid_edit_gps_err_read_only": "Kunne ikke endre lokasjon på element(er) med kun lese-rettigheter, hopper over",
"mute_memories": "Demp minner",
"my_albums": "Mine album",
"name": "Navn",
@@ -1385,22 +1387,22 @@
"no_albums_yet": "Det ser ut som om du ikke har noen album enda.",
"no_archived_assets_message": "Arkiver bilder og videoer for å skjule dem fra visningen av bildene dine",
"no_assets_message": "KLIKK FOR Å LASTE OPP DITT FØRSTE BILDE",
- "no_assets_to_show": "Ingen objekter å vise",
+ "no_assets_to_show": "Ingen elementer å vise",
"no_cast_devices_found": "Ingen caste-enheter oppdaget",
- "no_checksum_local": "Ingen sjekksum tilgjengelig - Kan ikke hente lokale objekter",
- "no_checksum_remote": "Ingen sjekksum tilgjengelig - Kan ikke hente eksterne objekter",
+ "no_checksum_local": "Ingen sjekksum tilgjengelig - Kunne ikke hente lokale elementer",
+ "no_checksum_remote": "Ingen sjekksum tilgjengelig - Kunne ikke hente eksterne elementer",
"no_duplicates_found": "Ingen duplikater ble funnet.",
"no_exif_info_available": "Ingen EXIF-informasjon tilgjengelig",
"no_explore_results_message": "Last opp flere bilder for å utforske samlingen din.",
"no_favorites_message": "Legg til favoritter for å finne dine beste bilder og videoer raskt",
"no_libraries_message": "Opprett et eksternt bibliotek for å se bildene og videoene dine",
- "no_local_assets_found": "Ingen lokale objekter funnet med denne sjekksummen",
+ "no_local_assets_found": "Ingen lokale elementer funnet med denne sjekksummen",
"no_locked_photos_message": "Bilder og videoer i den låste mappen er skjult og vil ikke vises når du blar i biblioteket.",
"no_name": "Ingen navn",
"no_notifications": "Ingen varsler",
"no_people_found": "Ingen samsvarende personer funnet",
"no_places": "Ingen steder",
- "no_remote_assets_found": "Ingen eksterne objekter funnet med denne sjekksummen",
+ "no_remote_assets_found": "Ingen eksterne elementer funnet med denne sjekksummen",
"no_results": "Ingen resultater",
"no_results_description": "Prøv et synonym eller mer generelt søkeord",
"no_shared_albums_message": "Opprett et album for å dele bilder og videoer med personer i nettverket ditt",
@@ -1446,7 +1448,7 @@
"original": "original",
"other": "Annet",
"other_devices": "Andre enheter",
- "other_entities": "Andre objekter",
+ "other_entities": "Andre elementer",
"other_variables": "Andre variabler",
"owned": "Dine",
"owner": "Eier",
@@ -1486,10 +1488,10 @@
"permanent_deletion_warning": "Advarsel om permanent sletting",
"permanent_deletion_warning_setting_description": "Vis en advarsel ved permanent sletting av filer",
"permanently_delete": "Slett permanent",
- "permanently_delete_assets_count": "Slett {count, plural, one {objekt} other {objekter}} permanent",
- "permanently_delete_assets_prompt": "Er du sikker på at du vil permanent slette {count, plural, one {dette objektet?} other {disse # objektene?}} Dette vil også slette {count, plural, one {det fra dets} other {de fra deres}} album(er).",
+ "permanently_delete_assets_count": "Slett {count, plural, one {element} other {elementer}} permanent",
+ "permanently_delete_assets_prompt": "Vil du virkelig permanent slette {count, plural, one {dette elementet?} other {disse # elementene?}} Dette vil også slette {count, plural, one {det fra dets} other {de fra deres}} album(er).",
"permanently_deleted_asset": "Filen har blitt permanent slettet",
- "permanently_deleted_assets_count": "Permanent slett {count, plural, one {# objekt} other {# objekter}}",
+ "permanently_deleted_assets_count": "Permanent slett {count, plural, one {# element} other {# elementer}}",
"permission": "Tillatelse",
"permission_empty": "Dine tillatelser burde ikke være tomme",
"permission_onboarding_back": "Tilbake",
@@ -1562,7 +1564,7 @@
"purchase_button_reminder": "Påminn meg om 30 dager",
"purchase_button_remove_key": "Ta bort produktnøkkel",
"purchase_button_select": "Velg",
- "purchase_failed_activation": "Feilet med å aktivere! Vennligst sjekk eposten for riktig produktnøkkel!",
+ "purchase_failed_activation": "Mislyktes med å aktivere! Vennligst sjekk eposten for riktig produktnøkkel!",
"purchase_individual_description_1": "For en person",
"purchase_individual_description_2": "Støttespiller status",
"purchase_individual_title": "Individuell",
@@ -1576,14 +1578,14 @@
"purchase_per_server": "For hver server",
"purchase_per_user": "For hver bruker",
"purchase_remove_product_key": "Ta bor Produktnøkkel",
- "purchase_remove_product_key_prompt": "Er du sikker på at du vil ta bort produktnøkkelen?",
+ "purchase_remove_product_key_prompt": "Vil du virkelig ta bort produktnøkkelen?",
"purchase_remove_server_product_key": "Ta bort Server Produktnøkkel",
- "purchase_remove_server_product_key_prompt": "Er du sikker på at du vil ta bort Server Produktnøkkelen?",
+ "purchase_remove_server_product_key_prompt": "Vil du virkelig ta bort Server Produktnøkkelen?",
"purchase_server_description_1": "For hele serveren",
"purchase_server_description_2": "Støttespiller status",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Produktnøkkel for server er administrert av administratoren",
- "query_asset_id": "Forespør objektID",
+ "query_asset_id": "Forespør elementID",
"queue_status": "Kø {count}/{total}",
"rating": "Stjernevurdering",
"rating_clear": "Slett vurdering",
@@ -1595,8 +1597,8 @@
"readonly_mode_enabled": "Skrivebeskyttet modus aktivert",
"ready_for_upload": "Klar for opplasting",
"reassign": "Tilordne på nytt",
- "reassigned_assets_to_existing_person": "Flyttet {count, plural, one {# objekt} other {# objekter}} to {name, select, null {en eksisterende person} other {{name}}}",
- "reassigned_assets_to_new_person": "Flyttet {count, plural, one {# objekt} other {# objekter}} til en ny person",
+ "reassigned_assets_to_existing_person": "Flyttet {count, plural, one {# element} other {# elementer}} to {name, select, null {en eksisterende person} other {{name}}}",
+ "reassigned_assets_to_new_person": "Flyttet {count, plural, one {# element} other {# elementer}} til en ny person",
"reassing_hint": "Tilordne valgte eiendeler til en eksisterende person",
"recent": "Nylig",
"recent-albums": "Nylige album",
@@ -1617,11 +1619,11 @@
"refreshing_metadata": "Oppdaterer matadata",
"regenerating_thumbnails": "Regenererer miniatyrbilder",
"remote": "Eksternt",
- "remote_assets": "Eksterne objekter",
+ "remote_assets": "Eksterne elementer",
"remote_media_summary": "Oppsummering av eksterne media",
"remove": "Fjern",
- "remove_assets_album_confirmation": "Er du sikker på at du fil slette {count, plural, one {# objekt} other {# objekter}} fra albumet?",
- "remove_assets_shared_link_confirmation": "Er du sikker på at du vil slette {count, plural, one {# objekt} other {# objekter}} fra den delte lenken?",
+ "remove_assets_album_confirmation": "Er du sikker på at du fil slette {count, plural, one {# element} other {# elementer}} fra albumet?",
+ "remove_assets_shared_link_confirmation": "Vil du virkelig slette {count, plural, one {# element} other {# elementer}} fra den delte lenken?",
"remove_assets_title": "Vil du fjerne eiendeler?",
"remove_custom_date_range": "Fjern egendefinert datoperiode",
"remove_deleted_assets": "Fjern fra frakoblede filer",
@@ -1630,7 +1632,7 @@
"remove_from_favorites": "Fjern fra favoritter",
"remove_from_lock_folder_action_prompt": "{count} fjernet fra låst mappe",
"remove_from_locked_folder": "Fjern fra låst mappe",
- "remove_from_locked_folder_confirmation": "Er du sikker på at du vil flytte disse bildene og videoene ut av den låste mappen? De vil bli synlige i biblioteket.",
+ "remove_from_locked_folder_confirmation": "Vil du virkelig flytte disse bildene og videoene ut av den låste mappen? De vil bli synlige i biblioteket.",
"remove_from_shared_link": "Fjern fra delt lenke",
"remove_memory": "Slett minne",
"remove_photo_from_memory": "Slett bilde fra dette minne",
@@ -1643,7 +1645,7 @@
"removed_from_favorites_count": "{count, plural, other {Removed #}} fra favoritter",
"removed_memory": "Slettet minne",
"removed_photo_from_memory": "Slettet bilde fra minne",
- "removed_tagged_assets": "Fjern tag fra {count, plural, one {# objekt} other {# objekter}}",
+ "removed_tagged_assets": "Fjern tag fra {count, plural, one {# element} other {# elementer}}",
"rename": "Gi nytt navn",
"repair": "Reparer",
"repair_no_results_message": "Usporrede og savnede filer vil vises her",
@@ -1660,14 +1662,14 @@
"reset_pin_code_success": "PIN-koden er tilbakestilt",
"reset_pin_code_with_password": "Du kan alltid tilbakestiller PIN-koden med passordet ditt",
"reset_sqlite": "Reset SQLite Databasen",
- "reset_sqlite_confirmation": "Er du sikker på at du vil resette SQLite databasen? Du blir nødt til å logge ut og inn igjen for å resynkronisere data",
+ "reset_sqlite_confirmation": "Vil du virkelig resette SQLite databasen? Du blir nødt til å logge ut og inn igjen for å resynkronisere data",
"reset_sqlite_success": "Vellykket resetting av SQLite databasen",
"reset_to_default": "Tilbakestill til standard",
"resolve_duplicates": "Løs duplikater",
"resolved_all_duplicates": "Løste alle duplikater",
"restore": "Gjenopprett",
"restore_all": "Gjenopprett alle",
- "restore_trash_action_prompt": "{count} gjenopprettet fra søppelbøtten",
+ "restore_trash_action_prompt": "{count} gjenopprettet fra papirkurven",
"restore_user": "Gjenopprett bruker",
"restored_asset": "Gjenopprettet ressurs",
"resume": "Fortsett",
@@ -1723,7 +1725,7 @@
"search_options": "Søke alternativer",
"search_page_categories": "Kategorier",
"search_page_motion_photos": "Bevegelige bilder",
- "search_page_no_objects": "Ingen objektinfo tilgjengelig",
+ "search_page_no_objects": "Ingen elementinfo tilgjengelig",
"search_page_no_places": "Ingen stedsinformasjon er tilgjengelig",
"search_page_screenshots": "Skjermbilder",
"search_page_search_photos_videos": "Søk etter dine bilder og videoer",
@@ -1762,7 +1764,7 @@
"select_person_to_tag": "Velg en person å tagge",
"select_photos": "Velg bilder",
"select_trash_all": "Velg å flytte alt til papirkurven",
- "select_user_for_sharing_page_err_album": "Feilet ved oppretting av album",
+ "select_user_for_sharing_page_err_album": "Mislyktes ved oppretting av album",
"selected": "Valgt",
"selected_count": "{count, plural, other {# valgt}}",
"selected_gps_coordinates": "Valgte GPS-koordinater",
@@ -1798,10 +1800,10 @@
"setting_notifications_notify_minutes": "{count} minutter",
"setting_notifications_notify_never": "aldri",
"setting_notifications_notify_seconds": "{count} sekunder",
- "setting_notifications_single_progress_subtitle": "Detaljert opplastingsinformasjon per objekt",
+ "setting_notifications_single_progress_subtitle": "Detaljert opplastingsinformasjon per element",
"setting_notifications_single_progress_title": "Vis detaljert status på sikkerhetskopiering i bakgrunnen",
"setting_notifications_subtitle": "Juster notifikasjonsinnstillinger",
- "setting_notifications_total_progress_subtitle": "Total opplastingsstatus (fullført/totalt objekter)",
+ "setting_notifications_total_progress_subtitle": "Total opplastingsstatus (fullført/totalt elementer)",
"setting_notifications_total_progress_title": "Vis status på sikkerhetskopiering i bakgrunnen",
"setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_original_video_subtitle": "Når det streames en video fra serveren, spill originalkvaliteten selv om en omkodet versjon finnes. Dette kan medføre buffring. Videoer som er lagret lokalt på enheten spilles i originalkvalitet uavhengig av denne innstillingen.",
@@ -1811,7 +1813,7 @@
"settings_saved": "Innstillinger lagret",
"setup_pin_code": "Sett opp en PINkode",
"share": "Del",
- "share_action_prompt": "Delte {count} objekter",
+ "share_action_prompt": "Delte {count} elementer",
"share_add_photos": "Legg til bilder",
"share_assets_selected": "{count} valgt",
"share_dialog_preparing": "Forbereder ...",
@@ -1845,7 +1847,7 @@
"shared_link_edit_expire_after_option_year": "{count} år",
"shared_link_edit_password_hint": "Skriv inn dele-passord",
"shared_link_edit_submit_button": "Oppdater link",
- "shared_link_error_server_url_fetch": "Kan ikke hente server-url",
+ "shared_link_error_server_url_fetch": "Kunne ikke hente server-url",
"shared_link_expires_day": "Utgår om {count} dag",
"shared_link_expires_days": "Utgår om {count} dager",
"shared_link_expires_hour": "Utgår om {count} time",
@@ -1921,7 +1923,7 @@
"stack_duplicates": "Stable duplikater",
"stack_select_one_photo": "Velg hovedbilde for bildestabbel",
"stack_selected_photos": "Stable valgte bilder",
- "stacked_assets_count": "Stable {count, plural, one {# objekt} other {# objekter}}",
+ "stacked_assets_count": "Stable {count, plural, one {# element} other {# elementer}}",
"stacktrace": "Stakkspor",
"start": "Start",
"start_date": "Startdato",
@@ -1960,15 +1962,15 @@
"tag_not_found_question": "Finner du ikke en merke? Opprett en nytt merke.",
"tag_people": "Tag Folk",
"tag_updated": "Oppdater merke: {tag}",
- "tagged_assets": "Merket {count, plural, one {# objekt} other {# objekter}}",
+ "tagged_assets": "Merket {count, plural, one {# element} other {# elementer}}",
"tags": "Merker",
"tap_to_run_job": "Trykk for å kjøre jobben",
"template": "Mal",
"theme": "Tema",
"theme_selection": "Temavalg",
"theme_selection_description": "Automatisk sett tema til lys eller mørk basert på nettleserens systeminnstilling",
- "theme_setting_asset_list_storage_indicator_title": "Vis lagringsindiaktor på objekter i fotorutenettet",
- "theme_setting_asset_list_tiles_per_row_title": "Antall objekter per rad ({count})",
+ "theme_setting_asset_list_storage_indicator_title": "Vis lagringsindiaktor på elementer i fotorutenettet",
+ "theme_setting_asset_list_tiles_per_row_title": "Antall elementer per rad ({count})",
"theme_setting_colorful_interface_subtitle": "Angi primærfarge til bakgrunner.",
"theme_setting_colorful_interface_title": "Fargefullt grensesnitt",
"theme_setting_image_viewer_quality_subtitle": "Juster kvaliteten på bilder i detaljvisning",
@@ -2000,15 +2002,15 @@
"trash_action_prompt": "{count} flyttet til søppel",
"trash_all": "Slett alt",
"trash_count": "Slett {count, number}",
- "trash_delete_asset": "Slett objekt",
- "trash_emptied": "Søppelbøtte tømt",
+ "trash_delete_asset": "Slett element",
+ "trash_emptied": "Søppelbøtte Tømt",
"trash_no_results_message": "Her vises bilder og videoer som er flyttet til papirkurven.",
"trash_page_delete_all": "Slett alt",
- "trash_page_empty_trash_dialog_content": "Vil du tømme søppelbøtten? Objektene vil bli permanent fjernet fra Immich",
- "trash_page_info": "Objekter i søppelbøtten blir permanent fjernet etter {days} dager",
- "trash_page_no_assets": "Ingen forkastede objekter",
+ "trash_page_empty_trash_dialog_content": "Vil du Tømme papirkurven? Objektene vil bli permanent fjernet fra Immich",
+ "trash_page_info": "Objekter i papirkurven blir permanent fjernet etter {days} dager",
+ "trash_page_no_assets": "Ingen forkastede elementer",
"trash_page_restore_all": "Gjenopprett alt",
- "trash_page_select_assets_btn": "Velg objekter",
+ "trash_page_select_assets_btn": "Velg elementer",
"trash_page_title": "Søppelbøtte ({count})",
"trashed_items_will_be_permanently_deleted_after": "Elementer i papirkurven vil bli permanent slettet etter {days, plural, one {# dag} other {# dager}}.",
"troubleshoot": "Feilsøk",
@@ -2031,7 +2033,7 @@
"unlinked_oauth_account": "Koblet fra OAuth-konto",
"unmute_memories": "Opphev demping av minner",
"unnamed_album": "Navnløst album",
- "unnamed_album_delete_confirmation": "Er du sikker på at du vil slette dette albumet?",
+ "unnamed_album_delete_confirmation": "Vil du virkelig slette dette albumet?",
"unnamed_share": "Deling uten navn",
"unsaved_change": "Ulagrede endringer",
"unselect_all": "Fjern alle valg",
@@ -2039,22 +2041,22 @@
"unselect_all_in": "Fjern velging av alle i {group}",
"unstack": "avstable",
"unstack_action_prompt": "{count} ustakket",
- "unstacked_assets_count": "Ikke stablet {count, plural, one {# objekt} other {# objekter}}",
+ "unstacked_assets_count": "Ikke stablet {count, plural, one {# element} other {# elementer}}",
"untagged": "Umerket",
"up_next": "Neste",
- "update_location_action_prompt": "Oppdater plasseringen til {count} valgte objekter med:",
+ "update_location_action_prompt": "Oppdater plasseringen til {count} valgte elementer med:",
"updated_at": "Oppdatert",
"updated_password": "Passord oppdatert",
"upload": "Last opp",
"upload_action_prompt": "{count} i kø for opplasting",
"upload_concurrency": "Samtidig opplastning",
"upload_details": "Opplastingsdetaljer",
- "upload_dialog_info": "Vil du utføre backup av valgte objekt(er) til serveren?",
- "upload_dialog_title": "Last opp objekt",
+ "upload_dialog_info": "Vil du utføre backup av valgte element(er) til serveren?",
+ "upload_dialog_title": "Last opp element",
"upload_errors": "Opplasting fullført med {count, plural, one {# error} other {# errors}}, oppdater siden for å se nye opplastingsressurser.",
"upload_finished": "Opplasting fullført",
"upload_progress": "Gjenstående {remaining, number} – behandlet {processed, number}/{total, number}",
- "upload_skipped_duplicates": "Hoppet over {count, plural, one {# duplisert objekt} other {# dupliserte objekter}}",
+ "upload_skipped_duplicates": "Hoppet over {count, plural, one {# duplisert element} other {# dupliserte elementer}}",
"upload_status_duplicates": "Duplikater",
"upload_status_errors": "Feil",
"upload_status_uploaded": "Opplastet",
@@ -2070,7 +2072,7 @@
"user": "Bruker",
"user_has_been_deleted": "Denne brukeren har blitt slettet.",
"user_id": "Bruker ID",
- "user_liked": "{user} likte {type, select, photo {dette bildet} video {denne videoen} asset {dette objektet} other {dette}}",
+ "user_liked": "{user} likte {type, select, photo {dette bildet} video {denne videoen} asset {dette elementet} other {dette}}",
"user_pin_code_settings": "PINkode",
"user_pin_code_settings_description": "Håndter din PINkode",
"user_privacy": "Personverninnstillinger",
@@ -2113,7 +2115,7 @@
"view_stack": "Vis stabel",
"view_user": "Vis bruker",
"viewer_remove_from_stack": "Fjern fra stabling",
- "viewer_stack_use_as_main_asset": "Bruk som hovedobjekt",
+ "viewer_stack_use_as_main_asset": "Bruk som hovedelement",
"viewer_unstack": "avstable",
"visibility_changed": "Synlighet endret for {count, plural, one {# person} other {# people}}",
"waiting": "Venter",
diff --git a/i18n/nl.json b/i18n/nl.json
index 0b5ae82326..55e934736c 100644
--- a/i18n/nl.json
+++ b/i18n/nl.json
@@ -28,6 +28,7 @@
"add_to_album": "Aan album toevoegen",
"add_to_album_bottom_sheet_added": "Toegevoegd aan {album}",
"add_to_album_bottom_sheet_already_exists": "Staat al in {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Sommige lokale items konden niet aan album toegevoegd worden",
"add_to_album_toggle": "Selectie inschakelen voor {album}",
"add_to_albums": "Toevoegen aan albums",
"add_to_albums_count": "Toevoegen aan albums ({count})",
@@ -415,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",
@@ -598,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",
@@ -733,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",
@@ -819,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",
@@ -839,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",
@@ -1022,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",
@@ -1748,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}",
@@ -1777,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",
@@ -2106,14 +2108,14 @@
"view_link": "Bekijk link",
"view_links": "Links bekijken",
"view_name": "Bekijken",
- "view_next_asset": "Bekijk volgende item",
- "view_previous_asset": "Bekijk vorige item",
+ "view_next_asset": "Bekijk volgend item",
+ "view_previous_asset": "Bekijk vorig item",
"view_qr_code": "QR-code bekijken",
"view_similar_photos": "Bekijk vergelijkbare foto's",
"view_stack": "Bekijk stapel",
"view_user": "Bekijk gebruiker",
- "viewer_remove_from_stack": "Verwijder van Stapel",
- "viewer_stack_use_as_main_asset": "Gebruik als Hoofd Item",
+ "viewer_remove_from_stack": "Verwijder van stapel",
+ "viewer_stack_use_as_main_asset": "Zet bovenaan de stapel",
"viewer_unstack": "Ontstapel",
"visibility_changed": "Zichtbaarheid gewijzigd voor {count, plural, one {# persoon} other {# mensen}}",
"waiting": "Wachtend",
diff --git a/i18n/pl.json b/i18n/pl.json
index 04337fcebf..a97ea701d0 100644
--- a/i18n/pl.json
+++ b/i18n/pl.json
@@ -28,6 +28,7 @@
"add_to_album": "Dodaj do albumu",
"add_to_album_bottom_sheet_added": "Dodano do {album}",
"add_to_album_bottom_sheet_already_exists": "Już jest w {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Niektóre lokalne zasoby nie mogły zostać dodane do albumu",
"add_to_album_toggle": "Przełącz wybieranie dla {album}",
"add_to_albums": "Dodaj do albumów",
"add_to_albums_count": "Dodaj do albumów ({count})",
@@ -598,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",
@@ -1694,7 +1696,7 @@
"search_albums": "Przeszukaj albumy",
"search_by_context": "Wyszukaj według treści",
"search_by_description": "Wyszukaj według opisu",
- "search_by_description_example": "Jednodniowa wycieczka górska w Bieszczady",
+ "search_by_description_example": "Całodniowa wycieczka w Bieszczady",
"search_by_filename": "Szukaj według nazwy pliku lub rozszerzenia",
"search_by_filename_example": "np. IMG_1234.JPG lub PNG",
"search_camera_make": "Wyszukaj markę aparatu...",
diff --git a/i18n/pt.json b/i18n/pt.json
index 4859e7e9a6..6bd4a786dd 100644
--- a/i18n/pt.json
+++ b/i18n/pt.json
@@ -28,6 +28,7 @@
"add_to_album": "Adicionar ao álbum",
"add_to_album_bottom_sheet_added": "Adicionado a {album}",
"add_to_album_bottom_sheet_already_exists": "Já existe em {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Alguns conteúdos locais não puderam ser adicionados no álbum",
"add_to_album_toggle": "Alternar seleção para {album}",
"add_to_albums": "Adicionar aos álbuns",
"add_to_albums_count": "Adicionar aos álbuns ({count})",
@@ -125,10 +126,11 @@
"logging_settings": "Registo",
"machine_learning_availability_checks": "Verificação de disponibilidade",
"machine_learning_availability_checks_description": "Detectar automaticamente e dar preferência aos servidores de aprendizagem automática disponíveis",
- "machine_learning_availability_checks_enabled": "Activar confirmações de disponibilidade",
+ "machine_learning_availability_checks_enabled": "Ativar confirmações de disponibilidade",
"machine_learning_availability_checks_interval": "Confirmação de intervalo",
"machine_learning_availability_checks_interval_description": "Intervalo, em milisegundos, entre confirmações de disponibilidade",
"machine_learning_availability_checks_timeout": "Tempo limite para requisição",
+ "machine_learning_availability_checks_timeout_description": "Tempo limite em milissegundos para verificações de disponibilidade",
"machine_learning_clip_model": "Modelo CLIP",
"machine_learning_clip_model_description": "O nome do modelo CLIP definido aqui. Tome nota de que é necessário voltar a executar a tarefa de \"Pesquisa Inteligente\" para todas as imagens depois de alterar o modelo.",
"machine_learning_duplicate_detection": "Deteção de Itens Duplicados",
@@ -366,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 {user} serão agendados para eliminação permanente dentro de {delay, plural, one {# dia} other {# dias}}.",
"user_delete_delay_settings": "Atraso de eliminação",
@@ -400,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": "Activa o modo somente leitura, onde as fotos podem ser visualizadas. Recursos como selecionar várias imagens, partilhar, transmitir e excluir ficam deactivados. Activar/Desactivar 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",
@@ -501,6 +503,8 @@
"asset_restored_successfully": "Arquivo restaurado com sucesso",
"asset_skipped": "Ignorado",
"asset_skipped_in_trash": "Na reciclagem",
+ "asset_trashed": "Ficheiro apagado",
+ "asset_troubleshoot": "Resolução de problemas com conteúdos",
"asset_uploaded": "Enviado",
"asset_uploading": "A enviar…",
"asset_viewer_settings_subtitle": "Gerenciar as configurações do visualizador da galeria",
@@ -508,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",
@@ -527,15 +531,17 @@
"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",
"autoplay_slideshow": "Apresentação automática de diapositivos",
"back": "Voltar",
"back_close_deselect": "Voltar, fechar ou desmarcar",
+ "background_backup_running_error": "Com a cópia de segurança de fundo em execução, não é possível inicar uma manual",
"background_location_permission": "Permissão de localização em segundo plano",
"background_location_permission_content": "Para que seja possível trocar a URL quando estiver executando em segundo plano, o Immich deve *sempre* ter a permissão de localização precisa para que o aplicativo consiga ler o nome da rede Wi-Fi",
+ "background_options": "Opções de fundo",
"backup": "Cópia de segurança",
"backup_album_selection_page_albums_device": "Álbuns no dispositivo ({count})",
"backup_album_selection_page_albums_tap": "Toque para incluir, duplo toque para excluir",
@@ -543,6 +549,7 @@
"backup_album_selection_page_select_albums": "Selecione Álbuns",
"backup_album_selection_page_selection_info": "Informações da Seleção",
"backup_album_selection_page_total_assets": "Total de arquivos únicos",
+ "backup_albums_sync": "Cópia de segurança de sincronização de álbuns",
"backup_all": "Tudo",
"backup_background_service_backup_failed_message": "Ocorreu um erro ao efetuar cópia de segurança dos ficheiros. A tentar de novo…",
"backup_background_service_connection_failed_message": "Ocorreu um erro na ligação ao servidor. A tentar de novo…",
@@ -582,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",
@@ -592,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",
@@ -659,6 +667,8 @@
"change_pin_code": "Alterar código PIN",
"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 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.",
@@ -745,6 +755,7 @@
"create_user": "Criar utilizador",
"created": "Criado",
"created_at": "Criado a",
+ "creating_linked_albums": "A criar albuns ligados...",
"crop": "Cortar",
"curated_object_page_title": "Objetos",
"current_device": "Dispositivo atual",
@@ -894,7 +905,9 @@
"error": "Erro",
"error_change_sort_album": "Ocorreu um erro ao mudar a ordem de exibição",
"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 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",
@@ -927,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",
@@ -936,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",
@@ -1059,6 +1072,7 @@
"favorites_page_no_favorites": "Nenhum favorito encontrado",
"feature_photo_updated": "Foto principal atualizada",
"features": "Funcionalidades",
+ "features_in_development": "Funcionalidades em Desenvolvimento",
"features_setting_description": "Configurar as funcionalidades da aplicação",
"file_name": "Nome do ficheiro",
"file_name_or_extension": "Nome do ficheiro ou extensão",
@@ -1074,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",
@@ -1212,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",
@@ -1223,6 +1237,7 @@
"local": "Local",
"local_asset_cast_failed": "Não é possível transmitir um ficheiro que não tenha sido enviado antes para o servidor",
"local_assets": "Ficheiros Locais",
+ "local_media_summary": "Sumário de conteúdo local",
"local_network": "Rede local",
"local_network_sheet_info": "O aplicativo irá se conectar ao servidor através desta URL quando estiver na rede Wi-Fi especificada",
"location_permission": "Permissão de localização",
@@ -1234,12 +1249,13 @@
"location_picker_longitude_hint": "Digite a longitude",
"lock": "Trancar",
"locked_folder": "Pasta Trancada",
+ "log_detail_title": "Detalhes de registo",
"log_out": "Sair",
"log_out_all_devices": "Terminar a sessão de todos os dispositivos",
"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",
@@ -1248,7 +1264,7 @@
"login_form_endpoint_url": "URL do servidor",
"login_form_err_http": "Por favor especifique http:// ou https://",
"login_form_err_invalid_email": "Email Inválido",
- "login_form_err_invalid_url": "URL inválida",
+ "login_form_err_invalid_url": "URL inválido",
"login_form_err_leading_whitespace": "Espaço em branco no início",
"login_form_err_trailing_whitespace": "Espaço em branco no fim",
"login_form_failed_get_oauth_server_config": "Ocorreu um erro ao iniciar sessão com o OAuth, verifique o URL do servidor",
@@ -1264,11 +1280,12 @@
"login_password_changed_success": "Palavra-passe atualizada com sucesso",
"logout_all_device_confirmation": "Tem a certeza de que deseja terminar a sessão em todos os dispositivos?",
"logout_this_device_confirmation": "Tem a certeza de que deseja terminar a sessão deste dispositivo?",
+ "logs": "Logs",
"longitude": "Longitude",
"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",
@@ -1280,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",
@@ -1306,6 +1323,7 @@
"mark_as_read": "Marcar como lido",
"marked_all_as_read": "Tudo marcado como lido",
"matches": "Correspondências",
+ "matching_assets": "Conteúdos coincidentes",
"media_type": "Tipo de média",
"memories": "Memórias",
"memories_all_caught_up": "Finalizamos por hoje",
@@ -1344,11 +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_requirements_updated": "Requisitos de rede alterados, redefinindo fila de backup",
- "networking_settings": "Conexões",
- "networking_subtitle": "Gerencie a conexão do servidor",
+ "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, 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",
@@ -1356,6 +1375,7 @@
"new_person": "Nova Pessoa",
"new_pin_code": "Novo código PIN",
"new_pin_code_subtitle": "Esta é a primeira vez que acede à pasta trancada. Crie um código PIN para aceder a esta página de forma segura",
+ "new_timeline": "Nova Linha do Tempo",
"new_user_created": "Novo utilizador criado",
"new_version_available": "NOVA VERSÃO DISPONÍVEL",
"newest_first": "Mais recente primeiro",
@@ -1369,20 +1389,25 @@
"no_assets_message": "FAÇA CLIQUE PARA CARREGAR A SUA PRIMEIRA FOTO",
"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",
"no_uploads_in_progress": "Nenhum carregamento em curso",
+ "not_available": "N/A",
"not_in_any_album": "Não está em nenhum álbum",
"not_selected": "Não selecionado",
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar o Rótulo de Armazenamento a ficheiros carregados anteriormente, execute o",
@@ -1478,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.",
@@ -1504,6 +1529,7 @@
"port": "Porta",
"preferences_settings_subtitle": "Gerenciar preferências do aplicativo",
"preferences_settings_title": "Preferências",
+ "preparing": "A Preparar",
"preset": "Predefinição",
"preview": "Pré-visualizar",
"previous": "Anterior",
@@ -1520,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}",
@@ -1547,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",
@@ -1559,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",
@@ -1567,8 +1593,9 @@
"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 desactivado",
- "readonly_mode_enabled": "Modo somente leitura activado",
+ "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}}}",
"reassigned_assets_to_new_person": "Reatribuído {count, plural, one {# ficheiro} other {# ficheiros}} a uma nova pessoa",
@@ -1593,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?",
@@ -1630,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",
@@ -1645,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",
@@ -1833,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.}}",
@@ -1868,6 +1896,7 @@
"show_slideshow_transition": "Mostrar transições no Modo de Apresentação",
"show_supporter_badge": "Emblema de apoiante",
"show_supporter_badge_description": "Mostrar um emblema de apoiante",
+ "show_text_search_menu": "Mostrar menu de pesquisa de texto",
"shuffle": "Aleatório",
"sidebar": "Barra lateral",
"sidebar_display_description": "Mostrar um link para a vista na barra lateral",
@@ -1898,6 +1927,7 @@
"stacktrace": "Stacktrace",
"start": "Iniciar",
"start_date": "Data de início",
+ "start_date_before_end_date": "A data de início deve ser anterior à data de fim",
"state": "Estado/Distrito",
"status": "Estado",
"stop_casting": "Parar transmissão",
@@ -1922,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",
@@ -2014,7 +2044,7 @@
"unstacked_assets_count": "Desempilhados {count, plural, one {# ficheiro} other {# ficheiros}}",
"untagged": "Marcador removido",
"up_next": "A seguir",
- "update_location_action_prompt": "Actualize a localização de {count} activos seleccionados com:",
+ "update_location_action_prompt": "Atualize a localização de {count} ficheiros selecionados com:",
"updated_at": "Atualizado a",
"updated_password": "Palavra-passe atualizada",
"upload": "Carregar",
@@ -2100,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"
}
diff --git a/i18n/pt_BR.json b/i18n/pt_BR.json
index d6ead94cd6..a4d590bc2c 100644
--- a/i18n/pt_BR.json
+++ b/i18n/pt_BR.json
@@ -28,6 +28,7 @@
"add_to_album": "Adicionar ao álbum",
"add_to_album_bottom_sheet_added": "Adicionado ao {album}",
"add_to_album_bottom_sheet_already_exists": "Já existe em {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Alguns arquivos / mídias não puderam ser adicionados ao álbum",
"add_to_album_toggle": "Alternar a seleção de {album}",
"add_to_albums": "Adicionar aos álbuns",
"add_to_albums_count": "Adicionar aos álbuns ({count})",
@@ -598,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",
diff --git a/i18n/ro.json b/i18n/ro.json
index 637460ae34..71784cfcf9 100644
--- a/i18n/ro.json
+++ b/i18n/ro.json
@@ -1,12 +1,12 @@
{
"about": "Despre",
"account": "Cont",
- "account_settings": "Setări Cont",
+ "account_settings": "Setări cont",
"acknowledge": "Văzut",
"action": "Acţiune",
"action_common_update": "Actualizează",
"actions": "Acţiuni",
- "active": "Activ",
+ "active": "Active",
"activity": "Activitate",
"activity_changed": "Activitatea este {enabled, select, true {activată} other {dezactivată}}",
"add": "Adaugă",
@@ -28,6 +28,7 @@
"add_to_album": "Adaugă în album",
"add_to_album_bottom_sheet_added": "Adăugat în {album}",
"add_to_album_bottom_sheet_already_exists": "Deja în {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Unele resurse locale nu au putut fi adăugate la album",
"add_to_album_toggle": "Selectează/deselectează {album}",
"add_to_albums": "Adaugă la albume",
"add_to_albums_count": "Adaugă la albume ({count})",
@@ -40,12 +41,12 @@
"add_exclusion_pattern_description": "Adăugați modele de excludere. Globing folosind *, ** și ? este suportat. Pentru a ignora toate fișierele din orice director numit „Raw”, utilizați „**/Raw/**”. Pentru a ignora toate fișierele care se termină în „.tif”, utilizați „**/*.tif”. Pentru a ignora o cale absolută, utilizați „/path/to/ignore/**”.",
"admin_user": "Utilizator admin",
"asset_offline_description": "Acest material din biblioteca externă nu se mai găsește pe disc și a fost mutat în coșul de gunoi. Dacă fișierul a fost mutat în bibliotecă, verificați cronologia pentru noul material corespunzător. Pentru a restabili acest material, asigurați-vă că calea fișierului de mai jos poate fi accesată de Immich și scanați biblioteca.",
- "authentication_settings": "Setări de Autentificare",
+ "authentication_settings": "Setări de autentificare",
"authentication_settings_description": "Gestionează parola, OAuth și alte setări de autentificare",
"authentication_settings_disable_all": "Ești sigur că vrei sa dezactivezi toate metodele de autentificare? Autentificarea va fi complet dezactivată.",
"authentication_settings_reenable": "Pentru a reactiva, folosește Comandă Server.",
"background_task_job": "Activități de Fundal",
- "backup_database": "Salvare Bază de Date",
+ "backup_database": "Salvare bază de date",
"backup_database_enable_description": "Activare salvarea bazei de date",
"backup_keep_last_amount": "Număr de copii de rezervă anterioare de păstrat",
"backup_onboarding_1_description": "copie externă în cloud sau într-o altă locație fizică.",
@@ -72,9 +73,9 @@
"disable_login": "Dezactivați autentificarea",
"duplicate_detection_job_description": "Rulați învățarea automată pe materiale pentru a detecta imagini similare. Se bazează pe Căutare Inteligentă",
"exclusion_pattern_description": "Modelele de excludere vă permit să ignorați fișierele și folderele atunci când vă scanați biblioteca. Acest lucru este util dacă aveți foldere care conțin fișiere pe care nu doriți să le importați, cum ar fi fișierele RAW.",
- "external_library_management": "Managementul Bibliotecii Externe",
+ "external_library_management": "Gestionarea bibliotecilor externe",
"face_detection": "Detecție facială",
- "face_detection_description": "Detectează fețele din fișiere folosind învățare automată. Pentru videoclipuri, este luată în considerare doar miniatura. „Reînprospătează” (re)procesează toate fișierele. „Resetează” adaugă în coadă fișierele care nu au fost încă procesate. Fețele detectate vor fi puse în coadă pentru recunoașterea facială după finalizarea detectării feței, grupându-le în persoane existente sau noi.",
+ "face_detection_description": "Detectează fețele din fișiere folosind învățare automată. Pentru videoclipuri, este luată în considerare doar miniatura. „Reîmprospătează” (re)procesează toate fișierele. „Resetează” adaugă în coadă fișierele care nu au fost încă procesate. Fețele detectate vor fi puse în coadă pentru recunoașterea facială după finalizarea detectării feței, grupându-le în persoane existente sau noi.",
"facial_recognition_job_description": "Grupați fețele detectate în persoane. Acest pas rulează după ce Detectarea Feței este finalizată. „Resetează” (re)grupează toate fețele. „Lipsă” adaugă în coadă fețe care nu au o persoană desemnată.",
"failed_job_command": "Comanda {command} a eșuat pentru jobul: {job}",
"force_delete_user_warning": "AVERTISMENT: Acest lucru va elimina imediat utilizatorul și toate activele sale. Acest lucru nu poate fi anulat și fișierele nu pot fi recuperate.",
@@ -91,30 +92,30 @@
"image_prefer_wide_gamut_setting_description": "Utilizați Display P3 pentru miniaturi. Acest lucru păstrează mai bine vibrația imaginilor cu spații de culoare largi, dar imaginile pot apărea diferit pe dispozitivele cu o versiune mai veche de browser. Imaginile sRGB sunt păstrate ca sRGB pentru a evita schimbările de culoare.",
"image_preview_description": "Imagine de dimensiune medie cu metadate eliminate, utilizată la vizualizarea unui singur element și pentru învățarea automată",
"image_preview_quality_description": "Calitatea previzualizării de la 1 la 100. O valoare mai mare oferă o calitate mai bună, dar produce fișiere mai mari și poate reduce receptivitatea aplicației. Setarea unei valori scăzute poate afecta calitatea învățării automate.",
- "image_preview_title": "Previzualizați Setările",
+ "image_preview_title": "Previzualizați setările",
"image_quality": "Calitate",
"image_resolution": "Rezolutie",
"image_resolution_description": "Rezoluțiile mai mari pot păstra mai multe detalii, dar necesită mai mult timp pentru a fi codificate, au dimensiuni mai mari ale fișierelor și pot reduce răspunsul aplicației.",
- "image_settings": "Setări Imagine",
+ "image_settings": "Setări imagine",
"image_settings_description": "Gestionează calitatea și rezoluția imaginilor generate",
"image_thumbnail_description": "Miniatură mică cu metadate eliminate, utilizată la vizualizarea grupurilor de fotografii, cum ar fi în cronologia principală",
"image_thumbnail_quality_description": "Calitatea miniaturii de la 1 la 100. O valoare mai mare oferă o calitate mai bună, dar produce fișiere mai mari și poate reduce receptivitatea aplicației.",
- "image_thumbnail_title": "Setari Miniaturi",
+ "image_thumbnail_title": "Setari miniaturi",
"job_concurrency": "Concurență {job}",
"job_created": "Sarcină creată",
"job_not_concurrency_safe": "Această sarcină nu este sigură pentru a rula în concurență.",
- "job_settings": "Setări Sarcină",
+ "job_settings": "Setări sarcină",
"job_settings_description": "Administrează concurența sarcinilor",
- "job_status": "Starea Sarcinii",
+ "job_status": "Starea sarcinii",
"jobs_delayed": "{jobCount, plural, other {# întârziat}}",
"jobs_failed": "{jobCount, plural, other {# eșuat}}",
- "library_created": "Librărie creată:{library}",
+ "library_created": "Librărie creată: {library}",
"library_deleted": "Bibliotecă ștearsă",
"library_import_path_description": "Specificați un folder pentru a îl importa. Acest folder, inclusiv sub-folderele, vor fi scanate pentru imagini și videoclipuri.",
- "library_scanning": "Scanare Periodică",
+ "library_scanning": "Scanare periodică",
"library_scanning_description": "Configurează scanarea periodică pentru bibliotecă",
"library_scanning_enable_description": "Activează scanarea periodică pentru bibliotecă",
- "library_settings": "Bibliotecă Externă",
+ "library_settings": "Bibliotecă externă",
"library_settings_description": "Administrează setările pentru biblioteci externe",
"library_tasks_description": "Scanează bibliotecile externe de active noi sau modificate",
"library_watching_enable_description": "Urmărește bibliotecile externe pentru schimbări ale fișierelor",
@@ -128,9 +129,11 @@
"machine_learning_availability_checks_enabled": "Activează verificare disponibilitate",
"machine_learning_availability_checks_interval": "Interval verificare",
"machine_learning_availability_checks_interval_description": "Interval in milisecunde între verificările de disponibilitate",
+ "machine_learning_availability_checks_timeout": "Timp de expirare cerere",
+ "machine_learning_availability_checks_timeout_description": "Timp de așteptare în milisecunde pentru verificările de disponibilitate",
"machine_learning_clip_model": "Model CLIP",
"machine_learning_clip_model_description": "Numele unui model CLIP listat aici. Rețineți că trebuie să rulați din nou funcția „Smart Search” pentru toate imaginile la schimbarea unui model.",
- "machine_learning_duplicate_detection": "Detectare Duplicate",
+ "machine_learning_duplicate_detection": "Detectare duplicate",
"machine_learning_duplicate_detection_enabled": "Activează detectarea duplicatelor",
"machine_learning_duplicate_detection_enabled_description": "Dacă este dezactivată, elementele identice vor fi în continuare de-duplicate.",
"machine_learning_duplicate_detection_setting_description": "Utilizați încorporările CLIP pentru a găsi dubluri probabile",
@@ -157,11 +160,11 @@
"machine_learning_smart_search_enabled": "Activați căutarea inteligentă",
"machine_learning_smart_search_enabled_description": "Dacă este dezactivată, imaginile nu vor fi codificate pentru căutarea inteligentă.",
"machine_learning_url_description": "URL-ul serverului de învățare automată. Dacă sunt furnizate mai multe URL-uri, fiecare server va fi încercat pe rând, până când unul răspunde cu succes, în ordine de la primul până la ultimul. Serverele care nu răspund vor fi ignorate temporar până revin online.",
- "manage_concurrency": "Gestionarea Simultaneității",
+ "manage_concurrency": "Gestionarea simultaneității",
"manage_log_settings": "Administrați setările jurnalului",
"map_dark_style": "Mod întunecat",
"map_enable_description": "Activați funcțiile hărții",
- "map_gps_settings": "Setări Hartă & GPS",
+ "map_gps_settings": "Setări hartă & GPS",
"map_gps_settings_description": "Gestionare setări Hartă & GPS (localizare inversă)",
"map_implications": "Caracteristica hărții se bazează pe un serviciu extern de planșe (tiles.immich.cloud)",
"map_light_style": "Mod deschis",
@@ -178,7 +181,7 @@
"metadata_extraction_job_description": "Extragere informații metadate din fiecare fișier cum ar fi localizare GPS, fețe și rezoluție,",
"metadata_faces_import_setting": "Activare import fețe",
"metadata_faces_import_setting_description": "Importă fețe din datele EXIF ale imaginii și din fișiere tip \"sidecar\"",
- "metadata_settings": "Setări Metadate",
+ "metadata_settings": "Setări metadate",
"metadata_settings_description": "Gestionează setările pentru metadate",
"migration_job": "Migrare",
"migration_job_description": "Migrați miniaturile pentru elemente și fețe la cea mai recentă structură de foldere",
@@ -256,7 +259,7 @@
"send_welcome_email": "Trimite email de bun-venit",
"server_external_domain_settings": "Domeniu extern",
"server_external_domain_settings_description": "Domeniu pentru distribuire publicǎ a scurtǎturilor, incluzând http(s)://",
- "server_public_users": "Utilizatori Publici",
+ "server_public_users": "Utilizatori publici",
"server_public_users_description": "Toți utilizatorii (nume și e-mail) sunt listați atunci când adăugați un utilizator la albumele partajate. Când este dezactivată, lista de utilizatori va fi disponibilă numai pentru utilizatorii admin.",
"server_settings": "Setǎri Server",
"server_settings_description": "Gestioneazǎ setǎrile serverului",
@@ -278,7 +281,7 @@
"storage_template_more_details": "Pentru mai multe detalii despre aceasta caracteristică, accesați Șablon stocare si implicațiile",
"storage_template_onboarding_description_v2": "Când este activată, această funcție va organiza automat fișierele pe baza șablonului definit de către utilizator. Pentru mai multe informații, accesează documentația.",
"storage_template_path_length": "Limita de lungime pentru calea aproximativă: {length, number}/{limit, number}",
- "storage_template_settings": "Șablon Stocare",
+ "storage_template_settings": "Șablon stocare",
"storage_template_settings_description": "Gestionează structura folderelor și numele fișierelor pentru elementele încărcate",
"storage_template_user_label": "{label} este eticheta de stocare a utilizatorului",
"system_settings": "Setǎri de Sistem",
@@ -294,9 +297,9 @@
"template_settings_description": "Gestionați șabloanele personalizate pentru notificări",
"theme_custom_css_settings": "CSS personalizat",
"theme_custom_css_settings_description": "Foile de stil în cascadă (CSS) permit personalizarea designului Immich.",
- "theme_settings": "Setări Temă",
+ "theme_settings": "Setări temă",
"theme_settings_description": "Gestionează personalizarea interfeței web Immich",
- "thumbnail_generation_job": "Generare Miniaturi",
+ "thumbnail_generation_job": "Generare miniaturi",
"thumbnail_generation_job_description": "Generează miniaturi mari, mici și estompate pentru fiecare resursă, precum și miniaturi pentru fiecare persoană",
"transcoding_acceleration_api": "API de accelerare",
"transcoding_acceleration_api_description": "API-ul care va interacționa cu dispozitivul tău pentru a accelera transcodarea. Această setare este 'cel mai bun efort': va reveni la transcodarea software în caz de eșec. VP9 poate funcționa sau nu, în funcție de hardware-ul tău.",
@@ -322,7 +325,7 @@
"transcoding_disabled_description": "Nu transcodifică niciun videoclip; acest lucru poate afecta redarea pe anumite dispozitive",
"transcoding_encoding_options": "Opțiuni codificare",
"transcoding_encoding_options_description": "Setează codecuri , calitatea, rezoluția și alte opțiuni pentru videoclipuri codificare",
- "transcoding_hardware_acceleration": "Accelerare Hardware",
+ "transcoding_hardware_acceleration": "Accelerare hardware",
"transcoding_hardware_acceleration_description": "Experimental: transcodare mai rapidă, dar poate reduce calitatea la aceeași rată de biți",
"transcoding_hardware_decoding": "Decodare hardware",
"transcoding_hardware_decoding_setting_description": "Se aplică doar pentru NVENC, QSV și RKMPP. Activează accelerarea completă în loc de doar accelerarea codificării. S-ar putea să nu funcționeze pentru toate videoclipurile.",
@@ -342,7 +345,7 @@
"transcoding_reference_frames": "Cadre de referință",
"transcoding_reference_frames_description": "Numărul de cadre de referință atunci când se comprimă un cadru dat. Valorile mai mari îmbunătățesc eficiența compresiei, dar încetinesc codarea. 0 setează această valoare automat.",
"transcoding_required_description": "Numai videoclipuri care nu sunt într-un format acceptat",
- "transcoding_settings": "Setări de Transcodare Video",
+ "transcoding_settings": "Setări de transcodare video",
"transcoding_settings_description": "Gestionează care videoclipuri să transcodam și cum să le procesam",
"transcoding_target_resolution": "Rezoluția țintă",
"transcoding_target_resolution_description": "Rezoluțiile mai mari pot păstra mai multe detalii, dar necesită mai mult timp pentru codare, au dimensiuni mai mari ale fișierelor și pot reduce răspunsul aplicației.",
@@ -373,23 +376,23 @@
"user_delete_immediately": "Contul și resursele utilizatorului {user} vor fi puse în coadă pentru ștergere permanentă imediat.",
"user_delete_immediately_checkbox": "Pune utilizatorul și resursele în coadă pentru ștergere imediată",
"user_details": "Detalii utilizator",
- "user_management": "Gestionarea Utilizatorilor",
+ "user_management": "Gestionarea utilizatorilor",
"user_password_has_been_reset": "Parola utilizatorului a fost resetată:",
"user_password_reset_description": "Vă rugăm să furnizați utilizatorului parola temporară și să îi informați că va trebui să o schimbe la următoarea autentificare.",
"user_restore_description": "Contul utilizatorului {user} va fi restaurat.",
"user_restore_scheduled_removal": "Restaurare utilizator - ștergere programată pe {date, date, long}",
- "user_settings": "Setǎri Utilizator",
+ "user_settings": "Setǎri utilizator",
"user_settings_description": "Gestioneazǎ setǎrile utilizatorului",
"user_successfully_removed": "Utilizatorul {email} a fost eliminat cu succes.",
"version_check_enabled_description": "Activează verificarea versiunii",
"version_check_implications": "Funcția de verificare a versiunii se bazează pe comunicarea periodică cu github.com",
- "version_check_settings": "Verificare Versiune",
+ "version_check_settings": "Verificare versiune",
"version_check_settings_description": "Activeazǎ/dezactiveazǎ notificarea unei noi versiuni",
"video_conversion_job": "Transcodați videoclipuri",
"video_conversion_job_description": "Transcodați videoclipurile pentru o compatibilitate mai mare cu browserele și dispozitivele"
},
- "admin_email": "E-mail Administrator",
- "admin_password": "Parolă Administrator",
+ "admin_email": "E-mail administrator",
+ "admin_password": "Parolă administrator",
"administration": "Administrare",
"advanced": "Avansat",
"advanced_settings_enable_alternate_media_filter_subtitle": "Utilizați această opțiune pentru a filtra conținutul media în timpul sincronizării pe baza unor criterii alternative. Încercați numai dacă întâmpinați probleme cu aplicația la detectarea tuturor albumelor.",
@@ -399,7 +402,7 @@
"advanced_settings_prefer_remote_title": "Preferă fotografii la distanță",
"advanced_settings_proxy_headers_subtitle": "Definește antetele proxy pe care Immich ar trebui să le trimită cu fiecare solicitare de rețea",
"advanced_settings_proxy_headers_title": "Antete Proxy",
- "advanced_settings_readonly_mode_subtitle": "Activează modul doar-citire, în care fotografiile pot fi doar vizualizate, iar acțiuni precum selectarea mai multor imagini, partajarea, redarea pe alt dispozitiv sau ștergerea sunt dezactivate. Activează/Dezactivează modul doar-citire din avatarul utilizatorului de pe ecranul principal.",
+ "advanced_settings_readonly_mode_subtitle": "Activează modul doar-citire, în care fotografiile pot fi doar vizualizate, iar acțiuni precum selectarea mai multor imagini, partajarea, redarea pe alt dispozitiv sau ștergerea sunt dezactivate. Activează/Dezactivează modul doar-citire din avatarul utilizatorului de pe ecranul principal",
"advanced_settings_readonly_mode_title": "Mod doar-citire",
"advanced_settings_self_signed_ssl_subtitle": "Omite verificare certificate SSL pentru distinația server-ului, necesar pentru certificate auto-semnate.",
"advanced_settings_self_signed_ssl_title": "Permite certificate SSL auto-semnate",
@@ -465,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ă",
@@ -528,6 +531,7 @@
"assets_trashed_count": "Mutat în coșul de gunoi {count, plural, one {# resursă} other {# resurse}}",
"assets_trashed_from_server": "{count} resursă(e) eliminate de pe serverul Immich",
"assets_were_part_of_album_count": "{count, plural, one {Resursa era} other {Resursele erau}} deja parte din album",
+ "assets_were_part_of_albums_count": "{count, plural, one {Asset was} other {Assets were}} deja parte din albume",
"authorized_devices": "Dispozitive Autorizate",
"automatic_endpoint_switching_subtitle": "Conectează-te local prin rețeaua Wi‐Fi configurată când este valabilă și prin rețele alternative în caz contrar",
"automatic_endpoint_switching_title": "Alternare URL automată",
@@ -537,6 +541,7 @@
"background_backup_running_error": "Procesul de backup în fundal este activ, nu se poate porni backup manual",
"background_location_permission": "Permisiune locație în fundal",
"background_location_permission_content": "Pentru a putea schimba rețeaua activă în fundal, Immich are nevoie de acces *permanent* la locația precisă pentru a citi numele rețelei Wi-Fi",
+ "background_options": "Opțiuni de fundal",
"backup": "Backup",
"backup_album_selection_page_albums_device": "Albume în dispozitiv ({count})",
"backup_album_selection_page_albums_tap": "Apasă odata pentru a include, de două ori pentru a exclude",
@@ -544,6 +549,7 @@
"backup_album_selection_page_select_albums": "Selectează albume",
"backup_album_selection_page_selection_info": "Informații selecție",
"backup_album_selection_page_total_assets": "Total resurse unice",
+ "backup_albums_sync": "Sincronizarea albumelor de backup",
"backup_all": "Toate",
"backup_background_service_backup_failed_message": "Eșuare backup resurse. Reîncercare…",
"backup_background_service_connection_failed_message": "Conectare la server eșuată. Reîncercare…",
@@ -583,7 +589,7 @@
"backup_controller_page_remainder": "Rămas(e)",
"backup_controller_page_remainder_sub": "Fotografii și videoclipuri din selecție rămase pentru backup",
"backup_controller_page_server_storage": "Stocare server",
- "backup_controller_page_start_backup": "Începe backup",
+ "backup_controller_page_start_backup": "Începe copia de rezervă",
"backup_controller_page_status_off": "Backup-ul automat în prim-plan este oprit",
"backup_controller_page_status_on": "Backup-ul automat în prim-plan este pornit",
"backup_controller_page_storage_format": "{used} din {total} folosit",
@@ -593,12 +599,14 @@
"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",
"backup_manual_success": "Succes",
"backup_manual_title": "Status încărcare",
- "backup_options_page_title": "Opțiuni Backup",
+ "backup_options": "Opțiuni copie de rezervă",
+ "backup_options_page_title": "Opțiuni copie de rezervă",
"backup_setting_subtitle": "Schimbă opțiuni pentru backup în prim-plan și în fundal",
"backup_settings_subtitle": "Gestionați setările de încărcare",
"backward": "În sens invers",
@@ -609,7 +617,7 @@
"birthdate_saved": "Data nașterii salvată cu succes",
"birthdate_set_description": "Data nașterii este utilizată pentru a calcula vârsta acestei persoane la momentul realizării fotografiei.",
"blurred_background": "Fundal neclar",
- "bugs_and_feature_requests": "Erori și Solicitări de Caracteristici",
+ "bugs_and_feature_requests": "Erori și solicitări de caracteristici",
"build": "Versiunea",
"build_image": "Versiune Imagine",
"bulk_delete_duplicates_confirmation": "Ești sigur că vrei să ștergi în masă {count, plural, one {# resursă duplicată} other {# resurse duplicate}}? Aceasta va păstra cea mai mare resursă din fiecare grup și va șterge permanent toate celelalte duplicate. Nu poți anula această acțiune!",
@@ -659,6 +667,8 @@
"change_pin_code": "Schimbă codul PIN",
"change_your_password": "Schimbă-ți parola",
"changed_visibility_successfully": "Schimbare vizibilitate cu succes",
+ "charging": "Încărcare",
+ "charging_requirement_mobile_backup": "Pentru copia de rezervă în fundal, dispozitivul trebuie să fie în curs de încărcare",
"check_corrupt_asset_backup": "Verifică copii de rezervă a resurselor corupte",
"check_corrupt_asset_backup_button": "Efectuează verificarea",
"check_corrupt_asset_backup_description": "Rulează această verificare doar prin Wi-Fi și doar după ce toate resursele au fost salvate în copia de rezerva. Procedura poate dura câteva minute.",
@@ -710,7 +720,7 @@
"control_bottom_app_bar_delete_from_immich": "Șterge din Immich",
"control_bottom_app_bar_delete_from_local": "Șterge din dispozitiv",
"control_bottom_app_bar_edit_location": "Editează locație",
- "control_bottom_app_bar_edit_time": "Editează Data și Ora",
+ "control_bottom_app_bar_edit_time": "Editează data și ora",
"control_bottom_app_bar_share_link": "Partajează linkul",
"control_bottom_app_bar_share_to": "Distribuire către",
"control_bottom_app_bar_trash_from_immich": "Mută în coș",
@@ -745,6 +755,7 @@
"create_user": "Creează utilizator",
"created": "Creat",
"created_at": "Creat",
+ "creating_linked_albums": "Crearea albumelor cu link...",
"crop": "Decupează",
"curated_object_page_title": "Obiecte",
"current_device": "Dispozitiv curent",
@@ -764,6 +775,7 @@
"date_of_birth_saved": "Data nașterii salvată cu succes",
"date_range": "Interval de date",
"day": "Zi",
+ "days": "Zile",
"deduplicate_all": "Deduplicați Toate",
"deduplication_criteria_1": "Marimea imagini în octeți",
"deduplication_criteria_2": "Numărul de date EXIF",
@@ -848,10 +860,12 @@
"edit": "Editare",
"edit_album": "Editare album",
"edit_avatar": "Editare avatar",
- "edit_birthday": "Editează ziua de naștere",
+ "edit_birthday": "Modifică ziua de naștere",
"edit_date": "Editare dată",
"edit_date_and_time": "Editare dată și oră",
"edit_date_and_time_action_prompt": "{count} data și ora modificării",
+ "edit_date_and_time_by_offset": "Schimbă data prin decalaj",
+ "edit_date_and_time_by_offset_interval": "Noul interval de date: {from} - {to}",
"edit_description": "Editează descrierea",
"edit_description_prompt": "Vă rugăm să selectați o descriere nouă:",
"edit_exclusion_pattern": "Editarea modelului de excludere",
@@ -861,7 +875,7 @@
"edit_key": "Tastă de editare",
"edit_link": "Editare link",
"edit_location": "Editare locație",
- "edit_location_action_prompt": "{count} locație(i) editată(e)",
+ "edit_location_action_prompt": "{count} locație(i) modificată(e)",
"edit_location_dialog_title": "Locație",
"edit_name": "Editare nume",
"edit_people": "Editare persoane",
@@ -891,7 +905,9 @@
"error": "Eroare",
"error_change_sort_album": "Nu s-a putut modifica ordinea de sortare a albumului",
"error_delete_face": "Eroare la ștergerea feței din activ",
+ "error_getting_places": "Eroare la obținerea locațiilor",
"error_loading_image": "Eroare la încărcarea imaginii",
+ "error_loading_partners": "Eroare la încărcarea partenerilor: {error}",
"error_saving_image": "Eroare: {error}",
"error_tag_face_bounding_box": "Eroare la etichetarea feței - nu se pot obține coordonatele casetei de delimitare",
"error_title": "Eroare - ceva nu a mers",
@@ -924,6 +940,7 @@
"failed_to_load_notifications": "Nu s-au putut încărca notificările",
"failed_to_load_people": "Eșec la încărcarea persoanelor",
"failed_to_remove_product_key": "Eșec la eliminarea cheii de produs",
+ "failed_to_reset_pin_code": "Nu s-a reușit resetarea codului PIN",
"failed_to_stack_assets": "Eșec la combinarea resurselor",
"failed_to_unstack_assets": "Eșec la desfășurarea resurselor",
"failed_to_update_notification_status": "Nu s-a putut actualiza starea notificării",
@@ -932,6 +949,7 @@
"paths_validation_failed": "{paths, plural, one {# cale} other {# căi}} nu a trecut validarea",
"profile_picture_transparent_pixels": "Pozele de profil nu pot avea pixeli transparenți. Te rugăm să mărești imaginea și/sau să o muți.",
"quota_higher_than_disk_size": "Ați stabilit o valoare a spațiului de stocare mai mare decât dimensiunea discului",
+ "something_went_wrong": "Ceva nu a mers bine",
"unable_to_add_album_users": "Imposibil de adăugat utilizatori în album",
"unable_to_add_assets_to_shared_link": "Imposibil de adăugat resurse la link-ul partajat",
"unable_to_add_comment": "Imposibil de adăugat comentariu",
@@ -1039,7 +1057,7 @@
"export_database_description": "Exportați baza de date SQLite",
"extension": "Extensie",
"external": "Extern",
- "external_libraries": "Biblioteci Externe",
+ "external_libraries": "Biblioteci externe",
"external_network": "Rețea externă",
"external_network_sheet_info": "Când nu se află în rețeaua Wi-Fi preferată, aplicația se va conecta la server prin prima dintre adresele URL de mai jos pe care o poate accesa, începând de sus în jos",
"face_unassigned": "Nealocat",
@@ -1054,6 +1072,7 @@
"favorites_page_no_favorites": "Nu au fost găsite resurse favorite",
"feature_photo_updated": "Fotografie caracteristică actualizată",
"features": "Caracteristici",
+ "features_in_development": "Funcții în dezvoltare",
"features_setting_description": "Gestionați funcțiile aplicației",
"file_name": "Nume de fișier",
"file_name_or_extension": "Numele sau extensia fișierului",
@@ -1063,21 +1082,26 @@
"filter_people": "Filtrați persoanele",
"filter_places": "Filtrează locurile",
"find_them_fast": "Găsiți-le rapid prin căutare după nume",
+ "first": "Primul",
"fix_incorrect_match": "Remediați potrivirea incorectă",
"folder": "Dosar",
"folder_not_found": "Dosar negăsit",
"folders": "Foldere",
"folders_feature_description": "Răsfoire în conținutul folderului pentru fotografiile și videoclipurile din sistemul de fișiere",
+ "forgot_pin_code_question": "Ai uitat codul PIN?",
"forward": "Redirecționare",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Această funcție încarcă resurse externe de la Google pentru a funcționa.",
"general": "General",
+ "geolocation_instruction_location": "Apasă pe o resursă cu coordonate GPS pentru a folosi locația sa, sau selectează direct o locație de pe hartă",
"get_help": "Obțineți Ajutor",
"get_wifiname_error": "Nu s-a putut obține numele rețelei Wi-Fi. Asigurați-vă că ați acordat permisiunile necesare și că sunteți conectat la o rețea Wi-Fi",
"getting_started": "Noțiuni de Bază",
"go_back": "Întoarcere",
"go_to_folder": "Accesați folderul",
"go_to_search": "Spre căutare",
+ "gps": "GPS",
+ "gps_missing": "Fără GPS",
"grant_permission": "Acordați permisiunea",
"group_albums_by": "Grupați albume de...",
"group_country": "Grupare după țară",
@@ -1088,6 +1112,9 @@
"haptic_feedback_switch": "Activează feedback-ul haptic",
"haptic_feedback_title": "Feedback haptic",
"has_quota": "Are spațiu de stocare",
+ "hash_asset": "Hash-ul resursei",
+ "hashed_assets": "Resurse hashed",
+ "hashing": "Generare hash",
"header_settings_add_header_tip": "Adăugați antet",
"header_settings_field_validator_msg": "Valoarea nu poate fi goală",
"header_settings_header_name_input": "Numele antetului",
@@ -1114,11 +1141,12 @@
"home_page_favorite_err_partner": "Momentan nu se pot adăuga fișierele partenerului la favorite, omitere",
"home_page_first_time_notice": "Dacă este prima dată când utilizezi aplicația, te rugăm să te asiguri că alegi unul sau mai multe albume de backup, astfel încât cronologia să poată fi populată cu fotografiile și videoclipurile din aceste albume",
"home_page_locked_error_local": "Nu se pot muta resursele locale în folderul blocat, se omit",
- "home_page_locked_error_partner": "Nu se pot muta materialele partenerului în folderul blocat, se omit.",
+ "home_page_locked_error_partner": "Nu se pot muta resursele partenerului în folderul blocat, se omit.",
"home_page_share_err_local": "Nu se pot distribui fișiere locale prin link, omitere",
"home_page_upload_err_limit": "Se pot încărca maxim 30 de resurse odată, omitere",
"host": "Gazdă",
"hour": "Oră",
+ "hours": "Ore",
"id": "ID",
"idle": "Inactiv",
"ignore_icloud_photos": "Ignoră fotografiile din iCloud",
@@ -1178,10 +1206,13 @@
"language_no_results_title": "Nu au fost găsite limbi",
"language_search_hint": "Căutați limbi...",
"language_setting_description": "Selectați limba preferată",
+ "large_files": "Fișiere mari",
+ "last": "Ultimul",
"last_seen": "Văzut ultima dată",
"latest_version": "Ultima Versiune",
"latitude": "Latitudine",
"leave": "Părăsiți",
+ "leave_album": "Părăsește albumul",
"lens_model": "Model obiectiv",
"let_others_respond": "Permite altora să răspundă",
"level": "Nivel",
@@ -1195,6 +1226,7 @@
"library_page_sort_title": "Titlu album",
"licenses": "Licențe",
"light": "Lumină",
+ "like": "Îmi place",
"like_deleted": "Preferat șters",
"link_motion_video": "Link video în mișcare",
"link_to_oauth": "Link către OAuth",
@@ -1205,6 +1237,7 @@
"local": "Local",
"local_asset_cast_failed": "Nu se poate converti un element care nu este încărcat pe server",
"local_assets": "Asset-uri locale",
+ "local_media_summary": "Rezumatul fișierelor media locale",
"local_network": "Rețea locală",
"local_network_sheet_info": "Aplicația se va conecta la server prin intermediul acestei adrese URL atunci când utilizează rețeaua Wi-Fi specificată",
"location_permission": "Permisiunea de locație",
@@ -1216,6 +1249,7 @@
"location_picker_longitude_hint": "Introdu longitudinea aici",
"lock": "Blocare",
"locked_folder": "Dosar blocat",
+ "log_detail_title": "Detalii jurnal",
"log_out": "Deconectare",
"log_out_all_devices": "Deconectați-vă de la toate dispozitivele",
"logged_in_as": "Conectat ca {user}",
@@ -1246,6 +1280,7 @@
"login_password_changed_success": "Parola a fost actualizată cu succes",
"logout_all_device_confirmation": "Sigur doriți să deconectați toate dispozitivele?",
"logout_this_device_confirmation": "Sigur doriți să deconectați acest dispozitiv?",
+ "logs": "Jurnale",
"longitude": "Longitudine",
"look": "Examinare",
"loop_videos": "Buclă videoclipuri",
@@ -1253,6 +1288,7 @@
"main_branch_warning": "Utilizați o versiune de dezvoltare; vă recomandăm insistent să utilizați o versiune de lansare!",
"main_menu": "Meniu principal",
"make": "Face",
+ "manage_geolocation": "Gestionați locația",
"manage_shared_links": "Administrați link-urile distribuite",
"manage_sharing_with_partners": "Gestionați partajarea cu partenerii",
"manage_the_app_settings": "Gestionați setările aplicației",
@@ -1261,7 +1297,7 @@
"manage_your_devices": "Gestionați-vă dispozitivele conectate",
"manage_your_oauth_connection": "Gestionați-vă conexiunea OAuth",
"map": "Hartă",
- "map_assets_in_bounds": "{count, plural, one {# poză} other {# poze}}",
+ "map_assets_in_bounds": "{count, plural, =0 {Nu există fotografii în această zonă} one {# fotografie} other {# fotografii}}",
"map_cannot_get_user_location": "Nu se poate obține locația utilizatorului",
"map_location_dialog_yes": "Da",
"map_location_picker_page_use_location": "Folosește această locație",
@@ -1287,6 +1323,7 @@
"mark_as_read": "Marchează ca citit",
"marked_all_as_read": "Marcate toate ca citite",
"matches": "Corespunde",
+ "matching_assets": "Resurse similare",
"media_type": "Tip media",
"memories": "Amintiri",
"memories_all_caught_up": "Sunteți la zi",
@@ -1304,7 +1341,8 @@
"merge_people_successfully": "Persoane îmbinate cu succes",
"merged_people_count": "Imbinate {count, plural, one {# persoană} other {# persoane}}",
"minimize": "Minimizare",
- "minute": "Minute",
+ "minute": "Minut",
+ "minutes": "Minute",
"missing": "Lipsă",
"model": "Model",
"month": "Lună",
@@ -1324,6 +1362,10 @@
"my_albums": "Albumele mele",
"name": "Nume",
"name_or_nickname": "Nume sau poreclǎ",
+ "network_requirement_photos_upload": "Utilizați datele mobile pentru a face copii de rezervă ale fotografiilor",
+ "network_requirement_videos_upload": "Utilizați datele mobile pentru a face copii de rezervă ale videoclipurilor",
+ "network_requirements": "Cerințe privind rețeaua",
+ "network_requirements_updated": "Cerințele rețelei s-au modificat, resetarea cozii copiei de rezervă",
"networking_settings": "Rețele",
"networking_subtitle": "Gestionați setările endpoint-ului serverului",
"never": "Niciodată",
@@ -1333,6 +1375,7 @@
"new_person": "Persoanǎ nouǎ",
"new_pin_code": "Cod PIN nou",
"new_pin_code_subtitle": "Aceasta este prima dată când accesați folderul blocat. Creați un cod PIN pentru a accesa în siguranță această pagină",
+ "new_timeline": "Noua cronologie",
"new_user_created": "Utilizator nou creat",
"new_version_available": "VERSIUNE NOUĂ DISPONIBILĂ",
"newest_first": "Cel mai nou primul",
@@ -1346,20 +1389,25 @@
"no_assets_message": "CLICK PENTRU A ÎNCĂRCA PRIMA TA FOTOGRAFIE",
"no_assets_to_show": "Nicio resursă de afișat",
"no_cast_devices_found": "Nu s-au găsit dispozitive de difuzare",
+ "no_checksum_local": "Nu există checksum – nu se pot prelua resursele locale",
+ "no_checksum_remote": "Nu există checksum – nu se pot prelua resursele la distanță",
"no_duplicates_found": "Nu au fost găsite duplicate.",
"no_exif_info_available": "Nu există informații exif disponibile",
"no_explore_results_message": "Încarcați mai multe fotografii pentru a vă explora colecția.",
"no_favorites_message": "Adăugați favorite pentru a găsi rapid cele mai bune fotografii și videoclipuri",
"no_libraries_message": "Creați o bibliotecă externă pentru a vă vizualiza fotografiile și videoclipurile",
+ "no_local_assets_found": "Nicio resursă locală găsită cu acest checksum",
"no_locked_photos_message": "Fotografiile și videoclipurile din folderul blocat sunt ascunse și nu vor apărea atunci când răsfoiți sau căutați în bibliotecă.",
"no_name": "Fără Nume",
"no_notifications": "Nicio notificare",
"no_people_found": "Nu au fost găsite persoane potrivite căutării",
"no_places": "Nu există locuri",
+ "no_remote_assets_found": "Nicio resursă de la distanță găsită cu acest checksum",
"no_results": "Fără rezultate",
"no_results_description": "Încercați un sinonim sau un cuvânt cheie mai general",
"no_shared_albums_message": "Creați un album pentru a partaja fotografii și videoclipuri cu persoanele din rețeaua dvs",
"no_uploads_in_progress": "Nicio încărcare în curs",
+ "not_available": "N/A",
"not_in_any_album": "Nu există în niciun album",
"not_selected": "Neselectat",
"note_apply_storage_label_to_previously_uploaded assets": "Notă: Pentru a aplica eticheta de stocare la resursele încărcate anterior, rulați",
@@ -1375,6 +1423,7 @@
"oauth": "OAuth",
"official_immich_resources": "Resurse Oficiale Immich",
"offline": "Offline",
+ "offset": "Decalaj",
"ok": "Bine",
"oldest_first": "Cel mai vechi mai întâi",
"on_this_device": "Pe acest dispozitiv",
@@ -1393,6 +1442,8 @@
"open_the_search_filters": "Deschideți filtrele de căutare",
"options": "Opțiuni",
"or": "sau",
+ "organize_into_albums": "Organizați în albume",
+ "organize_into_albums_description": "Pune fotografiile existente în albume folosind setările curente de sincronizare",
"organize_your_library": "Organizează-ți biblioteca",
"original": "original",
"other": "Alte",
@@ -1452,6 +1503,9 @@
"permission_onboarding_permission_limited": "Permisiune limitată. Pentru a permite Immich să facă copii de siguranță și să gestioneze întreaga colecție de galerii, acordă permisiuni pentru fotografii și videoclipuri în Setări.",
"permission_onboarding_request": "Immich necesită permisiunea de a vizualiza fotografiile și videoclipurile tale.",
"person": "Persoanǎ",
+ "person_age_months": "{months, plural, one {# month} other {# months}} vechime",
+ "person_age_year_months": "1 year, {months, plural, one {# month} other {# months}} vechime",
+ "person_age_years": "{years, plural, other {# years}} vechime",
"person_birthdate": "Născut pe {date}",
"person_hidden": "{name}{hidden, select, true { (ascuns)} other {}}",
"photo_shared_all_users": "Se pare că ți-ai partajat fotografiile tuturor utilizatorilor sau că nu ai niciun utilizator căruia să le distribui.",
@@ -1475,6 +1529,7 @@
"port": "Port",
"preferences_settings_subtitle": "Gestionați preferințele aplicației",
"preferences_settings_title": "Preferințe",
+ "preparing": "Se prepară",
"preset": "Presetat",
"preview": "Previzualizare",
"previous": "Anterior",
@@ -1491,6 +1546,7 @@
"profile_drawer_client_out_of_date_minor": "Aplicația nu folosește ultima versiune. Te rugăm să actualizezi la ultima versiune minoră.",
"profile_drawer_client_server_up_to_date": "Aplicația client și server-ul sunt actualizate",
"profile_drawer_github": "GitHub",
+ "profile_drawer_readonly_mode": "Mod doar citire activat. Ține apăsat pe pictograma avatarului utilizatorului pentru a ieși.",
"profile_drawer_server_out_of_date_major": "Server-ul nu folosește ultima versiune. Te rugăm să actualizezi la ultima versiune majoră.",
"profile_drawer_server_out_of_date_minor": "Server-ul nu folosește ultima versiune. Te rugăm să actulizezi la ultima versiune minoră.",
"profile_image_of_user": "Imagine de profil a lui {user}",
@@ -1529,6 +1585,7 @@
"purchase_server_description_2": "Statutul de suporter",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Cheia de produs a serverului este gestionată de administrator",
+ "query_asset_id": "Interoghează ID-ul resursei",
"queue_status": "Se pun în coadă {count}/{total}",
"rating": "Evaluare cu stele",
"rating_clear": "Anulați evaluarea",
@@ -1536,6 +1593,9 @@
"rating_description": "Afișați evaluarea EXIF în panoul de informații",
"reaction_options": "Opțiuni de reacție",
"read_changelog": "Citiți Jurnalul de Modificări",
+ "readonly_mode_disabled": "Modul doar citire dezactivat",
+ "readonly_mode_enabled": "Modul doar citire activat",
+ "ready_for_upload": "Pregătit pentru încărcare",
"reassign": "Reatribuiți",
"reassigned_assets_to_existing_person": "Re-alocat {count, plural, one {# resursă} other {# resurse}} to {name, select, null {unei persoane existente} other {{name}}}",
"reassigned_assets_to_new_person": "Re-alocat {count, plural, one {# resursă} other {# resurse}} unei noi persoane",
@@ -1560,6 +1620,7 @@
"regenerating_thumbnails": "Se regenerează miniaturile",
"remote": "De la distanță",
"remote_assets": "Elemente la distanță",
+ "remote_media_summary": "Rezumat media de la distanță",
"remove": "Eliminați",
"remove_assets_album_confirmation": "Sigur doriți să eliminați {count, plural, one {# resursă} other {# resurse}} din album?",
"remove_assets_shared_link_confirmation": "Sigur doriți să eliminați {count, plural, one {# resursă} other {# resurse}} din acest link comun?",
@@ -1597,6 +1658,9 @@
"reset_password": "Resetare parolă",
"reset_people_visibility": "Resetați vizibilitatea persoanelor",
"reset_pin_code": "Resetare cod PIN",
+ "reset_pin_code_description": "Dacă ți-ai uitat codul PIN, poți contacta administratorul serverului pentru a-l reseta",
+ "reset_pin_code_success": "Codul PIN a fost resetat cu succes",
+ "reset_pin_code_with_password": "Puteți reseta oricând codul PIN cu ajutorul parolei",
"reset_sqlite": "Resetare bază de date SQLite",
"reset_sqlite_confirmation": "Sigur doriți să resetați baza de date SQLite? Va trebui să vă deconectați și să vă conectați din nou pentru a resincroniza datele",
"reset_sqlite_success": "Resetarea cu succes a bazei de date SQLite",
@@ -1609,8 +1673,10 @@
"restore_user": "Restabiliți utilizatorul",
"restored_asset": "Resursă restaurată",
"resume": "Reluare",
+ "resume_paused_jobs": "Reluați {count, plural, one {# paused job} other {# paused jobs}}",
"retry_upload": "Reîncercați încărcarea",
"review_duplicates": "Examinați duplicatele",
+ "review_large_files": "Revizuirea fișierelor mari",
"role": "Rol",
"role_editor": "Editor",
"role_viewer": "Vizualizator",
@@ -1622,7 +1688,7 @@
"saved_settings": "Setări salvate",
"say_something": "Spuneți ceva",
"scaffold_body_error_occurred": "A apărut o eroare",
- "scan_all_libraries": "Scanați Toate Bibliotecile",
+ "scan_all_libraries": "Scanați toate bibliotecile",
"scan_library": "Scanare",
"scan_settings": "Setări Scanare",
"scanning_for_album": "Se scanează după album...",
@@ -1701,6 +1767,7 @@
"select_user_for_sharing_page_err_album": "Creare album eșuată",
"selected": "Selectat",
"selected_count": "{count, plural, other {# selectat}}",
+ "selected_gps_coordinates": "Coordonate GPS selectate",
"send_message": "Trimiteți mesaj",
"send_welcome_email": "Trimiteți email de bun venit",
"server_endpoint": "Endpoint server",
@@ -1709,7 +1776,7 @@
"server_offline": "Serverul este offline",
"server_online": "Server online",
"server_privacy": "Confidențialitatea serverului",
- "server_stats": "Statistici Server",
+ "server_stats": "Statistici server",
"server_version": "Versiune Server",
"set": "Setați",
"set_as_album_cover": "Setați ca și copertă a albumului",
@@ -1768,6 +1835,7 @@
"shared_link_clipboard_copied_massage": "Copiat în clipboard",
"shared_link_clipboard_text": "Link: {link}\nParolă: {password}",
"shared_link_create_error": "Eroare în timpul creării linkului de distribuire",
+ "shared_link_custom_url_description": "Accesează acest link partajat cu un URL personalizat",
"shared_link_edit_description_hint": "Introdu descrierea distribuirii",
"shared_link_edit_expire_after_option_day": "1 zi",
"shared_link_edit_expire_after_option_days": "{count} zile",
@@ -1793,6 +1861,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Administrează link-urile distribuite",
"shared_link_options": "Opțiuni de link partajat",
+ "shared_link_password_description": "Solicită o parolă pentru a accesa acest link partajat",
"shared_links": "Link-uri distribuite",
"shared_links_description": "Partajare imagini și clipuri printr-un link",
"shared_photos_and_videos_count": "{assetCount, plural, other {# fotografii și videoclipuri partajate.}}",
@@ -1827,6 +1896,7 @@
"show_slideshow_transition": "Afișați tranziția de prezentare",
"show_supporter_badge": "Insigna suporterului",
"show_supporter_badge_description": "Arată o insignă de suporter",
+ "show_text_search_menu": "Afișează meniul de căutare text",
"shuffle": "Amestecați",
"sidebar": "Bara laterală",
"sidebar_display_description": "Afișați un link către vizualizare în bara laterală",
@@ -1842,6 +1912,7 @@
"sort_created": "Data creării",
"sort_items": "Numărul de articole",
"sort_modified": "Data modificării",
+ "sort_newest": "Cea mai nouă fotografie",
"sort_oldest": "Cea mai veche fotografie",
"sort_people_by_similarity": "Sortează oameni după asemanare",
"sort_recent": "Cea mai recentă fotografie",
@@ -1856,6 +1927,7 @@
"stacktrace": "Urmă stivă",
"start": "Început",
"start_date": "Data de începere",
+ "start_date_before_end_date": "Data de început trebuie să fie înainte de data de sfârșit",
"state": "Situaţie",
"status": "Stare",
"stop_casting": "Opriți difuzarea",
@@ -1880,6 +1952,8 @@
"sync_albums_manual_subtitle": "Sincronizează toate videoclipurile și fotografiile încărcate cu albumele de rezervă selectate",
"sync_local": "Sincronizare locală",
"sync_remote": "Sincronizare la distanță",
+ "sync_status": "Status-ul sincronizării",
+ "sync_status_subtitle": "Vizualizează și gestionează sistemul de sincronizare",
"sync_upload_album_setting_subtitle": "Creează și încarcă fotografiile și videoclipurile tale în albumele selectate de pe Immich",
"tag": "Etichetă",
"tag_assets": "Eticheta resurselor",
@@ -1917,7 +1991,9 @@
"to_change_password": "Schimbaţi parola",
"to_favorite": "Favorit",
"to_login": "Conectare",
+ "to_multi_select": "pentru selecție multiplă",
"to_parent": "Du-te la părinte",
+ "to_select": "a selecta",
"to_trash": "Coș de gunoi",
"toggle_settings": "Activați setările",
"total": "Total",
@@ -1937,6 +2013,7 @@
"trash_page_select_assets_btn": "Selectează resurse",
"trash_page_title": "Coș ({count})",
"trashed_items_will_be_permanently_deleted_after": "Elementele din coșul de gunoi vor fi șterse definitiv după {days, plural, one {# zi} other {# zile}}.",
+ "troubleshoot": "Depanați",
"type": "Tip",
"unable_to_change_pin_code": "Nu se poate schimba codul PIN",
"unable_to_setup_pin_code": "Nu se poate configura codul PIN",
@@ -1963,10 +2040,11 @@
"unselect_all_duplicates": "Deselectați toate duplicatele",
"unselect_all_in": "Deselectați toate din {group}",
"unstack": "Dezasamblați",
- "unstack_action_prompt": "{count} unstacked",
+ "unstack_action_prompt": "{count} neîmpachetate",
"unstacked_assets_count": "Nestivuit {count, plural, one {# resursă} other {# resurse}}",
"untagged": "Neetichetat",
"up_next": "Mai departe",
+ "update_location_action_prompt": "Actualizează locația pentru {count} resurse selectate cu:",
"updated_at": "Actualizat",
"updated_password": "Parolă actualizată",
"upload": "Încărcați",
@@ -2033,13 +2111,14 @@
"view_next_asset": "Vizualizați următoarea resursă",
"view_previous_asset": "Vizualizați resursa anterioară",
"view_qr_code": "Vezi cod QR",
+ "view_similar_photos": "Vizualizați poze similare",
"view_stack": "Vizualizați Stiva",
"view_user": "Vizualizare utilizator",
"viewer_remove_from_stack": "Șterge din grup",
"viewer_stack_use_as_main_asset": "Folosește ca resursă principală",
"viewer_unstack": "Anulează grup",
"visibility_changed": "Vizibilitatea schimbată pentru {count, plural, one {# persoană} other {# persoane}}",
- "waiting": "Așteptați",
+ "waiting": "În așteptare",
"warning": "Avertisment",
"week": "Sǎptǎmânǎ",
"welcome": "Bun venit",
@@ -2051,5 +2130,6 @@
"yes": "Da",
"you_dont_have_any_shared_links": "Nu aveți linkuri partajate",
"your_wifi_name": "Numele rețelei tale WiFi",
- "zoom_image": "Măriți Imaginea"
+ "zoom_image": "Măriți Imaginea",
+ "zoom_to_bounds": "Mărește la margini"
}
diff --git a/i18n/ru.json b/i18n/ru.json
index 60c271af16..51d80614d3 100644
--- a/i18n/ru.json
+++ b/i18n/ru.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,7 +40,7 @@
"admin": {
"add_exclusion_pattern_description": "Добавьте шаблоны исключений. Поддерживаются символы подстановки *, ** и ?. Чтобы игнорировать все файлы в любом каталоге с именем \"Raw\", укажите \"**/Raw/**\". Чтобы игнорировать все файлы, заканчивающиеся на \".tif\", используйте \"**/*.tif\". Чтобы игнорировать путь целиком, укажите \"/path/to/ignore/**\".",
"admin_user": "Администратор",
- "asset_offline_description": "Этот файл внешней библиотеки не был найден на диске и был перемещён в корзину. Если файл был перемещён внутри библиотеки, проверьте временную шкалу, чтобы найти новый соответствующий ресурс. Чтобы восстановить файл, убедитесь, что путь ниже доступен для Immich и выполните сканирование библиотеки.",
+ "asset_offline_description": "Этот объект из внешней библиотеки не был обнаружен на диске и поэтому перемещён в корзину. Если файл объекта был перемещён внутри библиотеки, проверьте временную шкалу, чтобы найти новый соответствующий объект. Чтобы восстановить файл, убедитесь, что следующий путь доступен для Immich, и выполните сканирование библиотеки.",
"authentication_settings": "Настройки аутентификации",
"authentication_settings_description": "Управление паролями, OAuth и другими настройками аутентификации",
"authentication_settings_disable_all": "Вы уверены, что хотите отключить все методы входа? Вход будет полностью отключен.",
@@ -77,7 +78,7 @@
"face_detection_description": "Обнаруживает лица на объектах с использованием машинного обучения. Для видео анализируется только миниатюра. Кнопка \"Обновить\" запускает повторную обработку всех объектов. \"Сброс\" — дополнительно удаляет все имеющиеся данные о лицах. \"Отсутствующие\" — ставит в очередь объекты, которые ещё не были обработаны. Обнаруженные лица помещаются в очередь для задачи Распознавание лиц и последующей их привязки к существующим или новым людям.",
"facial_recognition_job_description": "Группирует и назначает обнаруженные лица людям. Выполняется после завершения задачи Обнаружение лиц. Кнопка \"Сброс\" (пере)назначает все лица. \"Отсутствующие\" — добавляет в очередь обработки лица, не привязанные к человеку.",
"failed_job_command": "Команда {command} не выполнена для задачи: {job}",
- "force_delete_user_warning": "ПРЕДУПРЕЖДЕНИЕ: Это приведет к немедленному удалению пользователя и его ресурсов. Это действие невозможно отменить, и файлы не могут быть восстановлены.",
+ "force_delete_user_warning": "ПРЕДУПРЕЖДЕНИЕ: Это приведет к немедленному удалению пользователя и всех его объектов. Это действие невозможно отменить, файлы не смогут быть восстановлены.",
"image_format": "Формат",
"image_format_description": "WebP создает файлы меньшего размера, чем JPEG, но кодирует медленнее.",
"image_fullsize_description": "Полноразмерное изображение без метаданных, используется при увеличении",
@@ -275,7 +276,7 @@
"storage_template_hash_verification_enabled_description": "Включает проверку хеша, не отключайте её, если не уверены в последствиях",
"storage_template_migration": "Применение шаблона хранилища",
"storage_template_migration_description": "Применяет текущий {template} к ранее загруженным объектам",
- "storage_template_migration_info": "Расширения файлов всегда будут сохраняться в нижнем регистре. Изменения в шаблоне будут применяться только к новым ресурсам. Чтобы применить шаблон к ранее загруженным ресурсам, запустите {job}.",
+ "storage_template_migration_info": "Расширения файлов всегда будут сохраняться в нижнем регистре. Изменения в шаблоне будут применяться только к новым объектам. Чтобы применить шаблон к ранее загруженным объектам, запустите {job}.",
"storage_template_migration_job": "Задача по применению шаблона хранилища",
"storage_template_more_details": "Для получения дополнительной информации об этой функции обратитесь к разделам документации Шаблон хранилища и Структура хранения файлов",
"storage_template_onboarding_description_v2": "Если эта функция включена, она автоматически организует файлы на основе заданного пользователем шаблона. Для получения дополнительной информации обратитесь к документации.",
@@ -425,7 +426,7 @@
"album_leave": "Покинуть альбом?",
"album_leave_confirmation": "Вы уверены, что хотите покинуть {album}?",
"album_name": "Название альбома",
- "album_options": "Действия с альбомом",
+ "album_options": "Параметры альбома",
"album_remove_user": "Удалить пользователя?",
"album_remove_user_confirmation": "Вы уверены, что хотите удалить пользователя {user}?",
"album_search_not_found": "Не найдено альбомов по вашему запросу",
@@ -506,8 +507,8 @@
"asset_troubleshoot": "Данные для диагностики",
"asset_uploaded": "Загружено",
"asset_uploading": "Загрузка…",
- "asset_viewer_settings_subtitle": "Настройка параметров отображения",
- "asset_viewer_settings_title": "Просмотр изображений",
+ "asset_viewer_settings_subtitle": "Параметры отображения",
+ "asset_viewer_settings_title": "Просмотр объектов",
"assets": "Объекты",
"assets_added_count": "{count, plural, one {Добавлен # объект} many {Добавлено # объектов} other {Добавлено # объекта}}",
"assets_added_to_album_count": "В альбом {count, plural, one {добавлен # объект} many {добавлено # объектов} other {добавлено # объекта}}",
@@ -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": "Загрузка в процессе. Попробуйте позже",
@@ -703,7 +705,7 @@
"confirm": "Подтвердить",
"confirm_admin_password": "Подтвердите пароль администратора",
"confirm_delete_face": "Удалить лицо человека {name} из этого объекта?",
- "confirm_delete_shared_link": "Вы уверены, что хотите удалить эту публичную ссылку?",
+ "confirm_delete_shared_link": "Вы действительно хотите удалить эту публичную ссылку?",
"confirm_keep_this_delete_others": "Все остальные объекты в группе будут удалены, кроме этого объекта. Вы уверены, что хотите продолжить?",
"confirm_new_pin_code": "Подтвердите новый PIN-код",
"confirm_password": "Подтвердите пароль",
@@ -718,19 +720,19 @@
"control_bottom_app_bar_delete_from_immich": "Удалить из Immich",
"control_bottom_app_bar_delete_from_local": "Удалить с устройства",
"control_bottom_app_bar_edit_location": "Изменить место",
- "control_bottom_app_bar_edit_time": "Изменить дату и время",
- "control_bottom_app_bar_share_link": "Поделиться ссылкой",
+ "control_bottom_app_bar_edit_time": "Изменить дату",
+ "control_bottom_app_bar_share_link": "Создать ссылку",
"control_bottom_app_bar_share_to": "Поделиться с",
"control_bottom_app_bar_trash_from_immich": "В корзину",
"copied_image_to_clipboard": "Изображение скопировано в буфер обмена.",
"copied_to_clipboard": "Скопировано в буфер обмена!",
- "copy_error": "Ошибка копирования",
+ "copy_error": "Скопировать ошибку",
"copy_file_path": "Копировать путь к файлу",
"copy_image": "Копировать",
"copy_link": "Копировать ссылку",
"copy_link_to_clipboard": "Скопировать ссылку в буфер обмена",
"copy_password": "Скопировать пароль",
- "copy_to_clipboard": "Скопировать настройки в буфер обмена",
+ "copy_to_clipboard": "Скопировать в буфер обмена",
"country": "Страна",
"cover": "Обложка",
"covers": "Обложки",
@@ -740,7 +742,7 @@
"create_library": "Создать библиотеку",
"create_link": "Создать ссылку",
"create_link_to_share": "Создать ссылку общего доступа",
- "create_link_to_share_description": "Разрешить всем, у кого есть ссылка, просмотреть выбранные фотографии",
+ "create_link_to_share_description": "Разрешить всем, у кого есть ссылка, просматривать выбранные фотографии",
"create_new": "СОЗДАТЬ НОВЫЙ",
"create_new_person": "Добавить нового человека",
"create_new_person_hint": "Назначить выбранные объекты на нового человека",
@@ -765,7 +767,7 @@
"daily_title_text_date": "E, MMM dd",
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "Тёмная",
- "dark_theme": "Тёмная тема",
+ "dark_theme": "Включить/выключить тёмную тему",
"date_after": "Дата после",
"date_and_time": "Дата и Время",
"date_before": "Дата до",
@@ -911,22 +913,22 @@
"error_title": "Ошибка - Что-то пошло не так",
"errors": {
"cannot_navigate_next_asset": "Не удалось перейти к следующему объекту",
- "cannot_navigate_previous_asset": "Не удалось перейти к предыдущему ресурсу",
+ "cannot_navigate_previous_asset": "Не удалось перейти к предыдущему объекту",
"cant_apply_changes": "Не удается применить изменения",
"cant_change_activity": "Не удается {enabled, select, true {отключить} other {включить}} активность",
- "cant_change_asset_favorite": "Не удалось изменить статус \"избранное\" для ресурса",
+ "cant_change_asset_favorite": "Не удалось изменить статус \"Избранное\" для объекта",
"cant_change_metadata_assets_count": "Не удалось изменить метаданные у {count, plural, one {# объекта} other {# объектов}}",
"cant_get_faces": "Не удается получить лица",
"cant_get_number_of_comments": "Не удается получить количество комментариев",
"cant_search_people": "Не удается выполнить поиск людей",
"cant_search_places": "Не удается выполнить поиск мест",
- "error_adding_assets_to_album": "Ошибка при добавлении ресурсов в альбом",
+ "error_adding_assets_to_album": "Ошибка при добавлении объектов в альбом",
"error_adding_users_to_album": "Ошибка при добавлении пользователей в альбом",
"error_deleting_shared_user": "Ошибка при удалении пользователя с общим доступом",
"error_downloading": "Ошибка при загрузке {filename}",
"error_hiding_buy_button": "Ошибка скрытия кнопки",
- "error_removing_assets_from_album": "Ошибка при удалении ресурсов из альбома, проверьте консоль для получения дополнительной информации",
- "error_selecting_all_assets": "Ошибка при выборе всех ресурсов",
+ "error_removing_assets_from_album": "Ошибка при удалении объектов из альбома, проверьте консоль для получения дополнительной информации",
+ "error_selecting_all_assets": "Ошибка при выборе всех объектов",
"exclusion_pattern_already_exists": "Такая модель исключения уже существует.",
"failed_to_create_album": "Не удалось создать альбом",
"failed_to_create_shared_link": "Не удалось создать публичную ссылку",
@@ -1347,9 +1349,9 @@
"monthly_title_text_date_format": "MMMM y",
"more": "Дополнительные действия",
"move": "Переместить",
- "move_off_locked_folder": "Переместить из личной папки",
+ "move_off_locked_folder": "Убрать из личной папки",
"move_to_lock_folder_action_prompt": "Объекты добавлены в личную папку ({count} шт.)",
- "move_to_locked_folder": "Переместить в личную папку",
+ "move_to_locked_folder": "В личную папку",
"move_to_locked_folder_confirmation": "Эти фото и видео будут удалены из всех альбомов и будут доступны только в личной папке",
"moved_to_archive": "{count, plural, one {# объект перемещён} many {# объектов перемещены} other {# объекта перемещены}} в архив",
"moved_to_library": "{count, plural, one {# объект перемещён} many {# объектов перемещены} other {# объекта перемещены}} в библиотеку",
@@ -1408,7 +1410,7 @@
"not_available": "Нет данных",
"not_in_any_album": "Ни в одном альбоме",
"not_selected": "Не выбрано",
- "note_apply_storage_label_to_previously_uploaded assets": "Примечание: Чтобы применить метку хранилища к ранее загруженным ресурсам, запустите",
+ "note_apply_storage_label_to_previously_uploaded assets": "Примечание: Чтобы применить метку хранилища к ранее загруженным объектам, запустите",
"notes": "Примечание",
"nothing_here_yet": "Здесь пока ничего нет",
"notification_permission_dialog_content": "Чтобы включить уведомления, перейдите в «Настройки» и выберите «Разрешить».",
@@ -1539,7 +1541,7 @@
"primary": "Главное",
"privacy": "Конфиденциальность",
"profile": "Профиль",
- "profile_drawer_app_logs": "Журнал",
+ "profile_drawer_app_logs": "Журнал событий",
"profile_drawer_client_out_of_date_major": "Версия мобильного приложения устарела. Пожалуйста, обновите его.",
"profile_drawer_client_out_of_date_minor": "Версия мобильного приложения устарела. Пожалуйста, обновите его.",
"profile_drawer_client_server_up_to_date": "Клиент и сервер обновлены",
@@ -1590,14 +1592,14 @@
"rating_count": "{count, plural, one {# звезда} many {# звезд} other {# звезды}}",
"rating_description": "Система оценки объектов в панели информации",
"reaction_options": "Действия с отметкой",
- "read_changelog": "Прочитать список изменений",
+ "read_changelog": "История релизов",
"readonly_mode_disabled": "Режим «только просмотр» отключён",
"readonly_mode_enabled": "Режим «только просмотр» включён",
"ready_for_upload": "Готово к загрузке",
"reassign": "Переназначить",
"reassigned_assets_to_existing_person": "Лица на {count, plural, one {# объекте} other {# объектах}} переназначены на {name, select, null {другого человека} other {человека с именем {name}}}",
"reassigned_assets_to_new_person": "Лица на {count, plural, one {# объекте} other {# объектах}} переназначены на нового человека",
- "reassing_hint": "Назначить выбранные ресурсы указанному человеку",
+ "reassing_hint": "Назначить выбранные объекты указанному человеку",
"recent": "Недавние",
"recent-albums": "Недавние альбомы",
"recent_searches": "Недавние поисковые запросы",
@@ -1630,7 +1632,7 @@
"remove_from_favorites": "Удалить из избранного",
"remove_from_lock_folder_action_prompt": "Объекты удалены из личной папки ({count} шт.)",
"remove_from_locked_folder": "Удалить из личной папки",
- "remove_from_locked_folder_confirmation": "Вы действительно хотите переместить эти фото и видео из личной папки? Они станут доступны в вашей библиотеке.",
+ "remove_from_locked_folder_confirmation": "Вы хотите убрать выделенные объекты из личной папки? Они снова станут доступны в вашей библиотеке.",
"remove_from_shared_link": "Удалить из публичной ссылки",
"remove_memory": "Удалить воспоминание",
"remove_photo_from_memory": "Удалить фото из воспоминания",
@@ -1777,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": "Установить дату рождения",
@@ -1791,7 +1793,7 @@
"setting_image_viewer_preview_title": "Загружать уменьшенное изображение",
"setting_image_viewer_title": "Изображения",
"setting_languages_apply": "Применить",
- "setting_languages_subtitle": "Изменить язык приложения",
+ "setting_languages_subtitle": "Изменение языка приложения",
"setting_notifications_notify_failures_grace_period": "Уведомлять об ошибках фонового резервного копирования: {duration}",
"setting_notifications_notify_hours": "{count} ч.",
"setting_notifications_notify_immediately": "немедленно",
@@ -1800,7 +1802,7 @@
"setting_notifications_notify_seconds": "{count} сек.",
"setting_notifications_single_progress_subtitle": "Подробная информация о ходе загрузки для каждого объекта",
"setting_notifications_single_progress_title": "Показать ход выполнения фонового резервного копирования",
- "setting_notifications_subtitle": "Настройка параметров уведомлений",
+ "setting_notifications_subtitle": "Параметры уведомлений",
"setting_notifications_total_progress_subtitle": "Общий прогресс загрузки (выполнено/всего объектов)",
"setting_notifications_total_progress_title": "Показать общий прогресс фонового резервного копирования",
"setting_video_viewer_looping_title": "Циклическое воспроизведение",
@@ -1833,17 +1835,17 @@
"shared_link_clipboard_copied_massage": "Скопировано в буфер обмена",
"shared_link_clipboard_text": "Ссылка: {link}\nПароль: {password}",
"shared_link_create_error": "Ошибка при создании публичной ссылки",
- "shared_link_custom_url_description": "Доступ к этой общей ссылке с помощью заданного пользователем URL-адреса",
- "shared_link_edit_description_hint": "Введите описание публичного доступа",
+ "shared_link_custom_url_description": "Пользовательский URL-адрес общего доступа",
+ "shared_link_edit_description_hint": "Введите описание",
"shared_link_edit_expire_after_option_day": "1 день",
"shared_link_edit_expire_after_option_days": "{count} дней",
"shared_link_edit_expire_after_option_hour": "1 час",
"shared_link_edit_expire_after_option_hours": "{count} часов",
"shared_link_edit_expire_after_option_minute": "1 минуту",
"shared_link_edit_expire_after_option_minutes": "{count} минут",
- "shared_link_edit_expire_after_option_months": "{count} месяцев",
+ "shared_link_edit_expire_after_option_months": "{count} месяца",
"shared_link_edit_expire_after_option_year": "{count} лет",
- "shared_link_edit_password_hint": "Введите пароль для публичного доступа",
+ "shared_link_edit_password_hint": "Защитите доступ паролем",
"shared_link_edit_submit_button": "Обновить ссылку",
"shared_link_error_server_url_fetch": "Невозможно запросить URL с сервера",
"shared_link_expires_day": "Истечёт через {count} день",
@@ -1859,7 +1861,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Управление публичными ссылками",
"shared_link_options": "Действия со ссылкой",
- "shared_link_password_description": "Требовать пароль для доступа к этой общей ссылке",
+ "shared_link_password_description": "Требовать пароль для доступа к объектам",
"shared_links": "Публичные ссылки",
"shared_links_description": "Делитесь фотографиями и видео по ссылке",
"shared_photos_and_videos_count": "{assetCount, plural, other {# фото и видео.}}",
@@ -1874,7 +1876,7 @@
"sharing_silver_appbar_create_shared_album": "Создать общий альбом",
"sharing_silver_appbar_share_partner": "Поделиться с партнёром",
"shift_to_permanent_delete": "нажмите ⇧ чтобы удалить объект навсегда",
- "show_album_options": "Показать параметры альбома",
+ "show_album_options": "Действия с альбомом",
"show_albums": "Показать альбомы",
"show_all_people": "Показать всех людей",
"show_and_hide_people": "Показать и скрыть людей",
@@ -1967,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": "Цвет фона",
diff --git a/i18n/sk.json b/i18n/sk.json
index 6c009deea1..de8f12dfa5 100644
--- a/i18n/sk.json
+++ b/i18n/sk.json
@@ -28,6 +28,7 @@
"add_to_album": "Pridať do albumu",
"add_to_album_bottom_sheet_added": "Pridané do {album}",
"add_to_album_bottom_sheet_already_exists": "Už je v {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Niektoré lokálne súbory nebolo možné pridať do albumu",
"add_to_album_toggle": "Prepnúť výber pre {album}",
"add_to_albums": "Pridať do albumov",
"add_to_albums_count": "Pridať do albumov ({count})",
@@ -496,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é",
@@ -598,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",
diff --git a/i18n/sl.json b/i18n/sl.json
index 23701836f2..bcea0de5cf 100644
--- a/i18n/sl.json
+++ b/i18n/sl.json
@@ -28,6 +28,7 @@
"add_to_album": "Dodaj v album",
"add_to_album_bottom_sheet_added": "Dodano v {album}",
"add_to_album_bottom_sheet_already_exists": "Že v {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Nekaterih lokalnih sredstev ni bilo mogoče dodati v album",
"add_to_album_toggle": "Preklopi izbiro za {album}",
"add_to_albums": "Dodaj v albume",
"add_to_albums_count": "Dodaj v albume ({count})",
@@ -598,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",
diff --git a/i18n/sv.json b/i18n/sv.json
index 6acee96f66..fba673610a 100644
--- a/i18n/sv.json
+++ b/i18n/sv.json
@@ -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",
diff --git a/i18n/ta.json b/i18n/ta.json
index f8996ad44b..e97b4b4b72 100644
--- a/i18n/ta.json
+++ b/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": "மீண்டும் இயக்க, சர்வர் கட்டளை பயன்படுத்தவும்.",
+ "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": "மீண்டும் செயல்படுத்த, சேவையகம் கட்டளை பயன்படுத்தவும்.",
"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": "உங்கள் தரவை பாதுகாப்பதற்காக ஒரு 3-2-1 காப்புப் பிரதி பரிந்துரைக்கப்படுகிறது. முழுமையான காப்பு பாதுகாப்பு தீர்விற்காக, நீங்கள் பதிவேற்றிய புகைப்படங்கள்/வீடியோக்கள் மற்றும் 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": "ஏற்கனவே முன்னேற்றத்தில் பதிவேற்றவும். சிறிது நேரம் கழித்து முயற்சிக்கவும்",
diff --git a/i18n/tr.json b/i18n/tr.json
index 710d20a580..a962420980 100644
--- a/i18n/tr.json
+++ b/i18n/tr.json
@@ -20,7 +20,7 @@
"add_import_path": "İçe aktarma yolu ekle",
"add_location": "Konum ekle",
"add_more_users": "Daha fazla kullanıcı ekle",
- "add_partner": "Partner ekle",
+ "add_partner": "Ortak ekle",
"add_path": "Yol ekle",
"add_photos": "Fotoğraf ekle",
"add_tag": "Etiket ekle",
@@ -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",
@@ -1117,7 +1119,7 @@
"header_settings_field_validator_msg": "Değer boş olamaz",
"header_settings_header_name_input": "Header adı",
"header_settings_header_value_input": "Header değeri",
- "headers_settings_tile_subtitle": "Uygulamanın her ağ isteğiyle birlikte göndermesi gereken proxy header'ları tanımlayın",
+ "headers_settings_tile_subtitle": "Uygulamanın her ağ isteğinde göndermesi gereken proxy başlıklarını tanımlayın",
"headers_settings_tile_title": "Özel proxy headers",
"hi_user": "Merhaba {name} {email}",
"hide_all_people": "Tüm kişileri gizle",
@@ -1129,11 +1131,11 @@
"home_page_add_to_album_conflicts": "{album} albümüne {added} öğe eklendi. {failed} öğe zaten albümdeydi.",
"home_page_add_to_album_err_local": "Yerel öğeler henüz albümlere eklenemiyor, atlanıyor",
"home_page_add_to_album_success": "{album} albümüne {added} öğe eklendi.",
- "home_page_album_err_partner": "Partner öğeler henüz bir albüme eklenemiyor, atlanıyor",
+ "home_page_album_err_partner": "Ortak öğeler henüz bir albüme eklenemiyor, atlanıyor",
"home_page_archive_err_local": "Yerel öğeler henüz arşivlenemiyor, atlanıyor",
- "home_page_archive_err_partner": "Partner öğeler henüz arşivlenemiyor, atlanıyor",
+ "home_page_archive_err_partner": "Ortak öğeler henüz arşivlenemiyor, atlanıyor",
"home_page_building_timeline": "Zaman çizelgesi oluşturuluyor",
- "home_page_delete_err_partner": "Partner öğeler silinemez, atlanıyor",
+ "home_page_delete_err_partner": "Ortak öğeler silinemez, atlanıyor",
"home_page_delete_remote_err_local": "Uzaktan silme seçimindeki yerel öğeler atlanıyor",
"home_page_favorite_err_local": "Yerel öğeler henüz favorilere eklenemiyor, atlanıyor",
"home_page_favorite_err_partner": "Ortak öğeler henüz favorilere eklenemiyor, atlanıyor",
@@ -1236,7 +1238,7 @@
"local_asset_cast_failed": "Sunucuya yüklenmemiş bir öğe yansıtılamaz",
"local_assets": "Yerel Öğeler",
"local_media_summary": "Yerel Medya Özeti",
- "local_network": "Yerel Wi-Fi",
+ "local_network": "Yerel ağ",
"local_network_sheet_info": "Uygulama belirlenmiş Wi-Fi ağını kullanırken bu URL üzerinden sunucuya bağlanacaktır",
"location_permission": "Konum izni",
"location_permission_content": "Otomatik geçiş özelliğinin çalışabilmesi için Immich'in mevcut Wi-Fi ağının adını bilmesi, bunu sağlamak için de tam konum iznine ihtiyacı vardır",
@@ -1313,7 +1315,7 @@
"map_settings_date_range_option_years": "Son {years} yıl",
"map_settings_dialog_title": "Harita Ayarları",
"map_settings_include_show_archived": "Arşivdekileri dahil et",
- "map_settings_include_show_partners": "Partnerleri Dahil Et",
+ "map_settings_include_show_partners": "Ortakları Dahil Et",
"map_settings_only_show_favorites": "Sadece Favorileri Göster",
"map_settings_theme_settings": "Harita Teması",
"map_zoom_to_see_photos": "Fotoğrafları görmek için uzaklaştırın",
@@ -1456,13 +1458,13 @@
"partner_can_access_location": "Fotoğraf ve videolarınızın çekildiği konum",
"partner_list_user_photos": "{user} fotoğrafları",
"partner_list_view_all": "Tümünü gör",
- "partner_page_empty_message": "Fotoğraflarınız henüz hiçbir partnerle paylaşılmadı.",
+ "partner_page_empty_message": "Fotoğraflarınız henüz hiçbir ortakla paylaşılmadı.",
"partner_page_no_more_users": "Eklenecek başka kullanıcı yok",
- "partner_page_partner_add_failed": "Partner eklenemedi",
- "partner_page_select_partner": "Partner seç",
+ "partner_page_partner_add_failed": "Ortak eklenemedi",
+ "partner_page_select_partner": "Ortak seç",
"partner_page_shared_to_title": "Paylaşıldı",
"partner_page_stop_sharing_content": "{partner} artık fotoğraflarınıza erişemeyecek.",
- "partner_sharing": "Ortak paylaşımı",
+ "partner_sharing": "Ortak Paylaşımı",
"partners": "Ortaklar",
"password": "Şifre",
"password_does_not_match": "Şifre eşleşmiyor",
@@ -1785,7 +1787,7 @@
"set_slideshow_to_fullscreen": "Slayt gösterisini tam ekran yap",
"set_stack_primary_asset": "Birincil öğe olarak ayarla",
"setting_image_viewer_help": "Görüntüleyici önce küçük resmi gösterir, ardından orta boy önizlemeyi (etkinleştirilmişse) ve son olarak orijinali (etkinleştirilmişse) gösterir.",
- "setting_image_viewer_original_subtitle": "Orijinal tam çözünürlüklü görüntüyü göstermek için etkinleştirin. Veri kullanımını azaltmak için devre dışı bırakın (hem ağ hem de cihaz önbelleği).",
+ "setting_image_viewer_original_subtitle": "Orijinal tam çözünürlüklü görüntüyü (büyük!) yüklemek için etkinleştirin. Veri kullanımını azaltmak için devre dışı bırakın (hem ağ hem de cihaz önbelleği).",
"setting_image_viewer_original_title": "Orijinal görüntüyü göster",
"setting_image_viewer_preview_subtitle": "Orta çözünürlüklü bir görüntü göstermek için etkinleştirin. Orijinali doğrudan göstermek veya yalnızca küçük resmi kullanmak için devre dışı bırakın.",
"setting_image_viewer_preview_title": "Önizleme görüntüsü göster",
@@ -1872,7 +1874,7 @@
"sharing_page_empty_list": "LİSTEYİ BOŞALT",
"sharing_sidebar_description": "Yan panelde paylaşılanlara kısa yol göster",
"sharing_silver_appbar_create_shared_album": "Yeni paylaşılan albüm",
- "sharing_silver_appbar_share_partner": "Partnerle paylaş",
+ "sharing_silver_appbar_share_partner": "Ortakla paylaş",
"shift_to_permanent_delete": "Öğeyi kalıcı olarak silmek için ⇧ tuşuna basın",
"show_album_options": "Albüm ayarlarını göster",
"show_albums": "Albümleri göster",
@@ -1978,7 +1980,7 @@
"theme_setting_system_primary_color_title": "Sistem rengini kullan",
"theme_setting_system_theme_switch": "Otomatik (sistem ayarına göre)",
"theme_setting_theme_subtitle": "Uygulama teması seç",
- "theme_setting_three_stage_loading_subtitle": "Üç aşamalı yükleme, yükleme performansını artırabilir ancak önemli ölçüde daha yüksek ağ yüküne sebep olur",
+ "theme_setting_three_stage_loading_subtitle": "Üç aşamalı yükleme, yükleme performansını artırabilir ancak ağ yükünü önemli ölçüde artırır",
"theme_setting_three_stage_loading_title": "Üç aşamalı yüklemeyi etkinleştir",
"they_will_be_merged_together": "Birlikte birleştirilecekler",
"third_party_resources": "Üçüncü taraf kaynaklar",
@@ -2083,7 +2085,7 @@
"username": "Kullanıcı adı",
"users": "Kullanıcılar",
"users_added_to_album_count": "Albüme {count, plural, one {# user} other {# users}} eklendi",
- "utilities": "Yardımcı Uygulamalar",
+ "utilities": "Yardımcı Programlar",
"validate": "Doğrula",
"validate_endpoint_error": "Lütfen geçerli bir URL girin",
"variables": "Değişkenler",
diff --git a/i18n/uk.json b/i18n/uk.json
index f34f581315..a664fc9aa0 100644
--- a/i18n/uk.json
+++ b/i18n/uk.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})",
@@ -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": "Завантаження вже відбувається. Спробуйте згодом",
diff --git a/i18n/zh_Hant.json b/i18n/zh_Hant.json
index b972639153..1f57b2a7ae 100644
--- a/i18n/zh_Hant.json
+++ b/i18n/zh_Hant.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})個項目加入相簿",
@@ -123,6 +124,13 @@
"logging_enable_description": "啟用日誌記錄",
"logging_level_description": "啟用時的日誌層級。",
"logging_settings": "日誌",
+ "machine_learning_availability_checks": "可用性檢查",
+ "machine_learning_availability_checks_description": "自動檢測並優先選擇可用的機器學習服務器",
+ "machine_learning_availability_checks_enabled": "啟用可用性檢查",
+ "machine_learning_availability_checks_interval": "檢查間隔",
+ "machine_learning_availability_checks_interval_description": "可用性檢查之間的間隔(毫秒)",
+ "machine_learning_availability_checks_timeout": "請求超時",
+ "machine_learning_availability_checks_timeout_description": "可用性檢查超時(毫秒)",
"machine_learning_clip_model": "CLIP 模型",
"machine_learning_clip_model_description": "這裡有份 CLIP 模型名單。注意:更換模型後須對所有圖片重新執行「智慧搜尋」任務。",
"machine_learning_duplicate_detection": "重複項目偵測",
@@ -423,6 +431,7 @@
"album_remove_user_confirmation": "確定要移除 {user} 嗎?",
"album_search_not_found": "找不到符合搜尋條件的相簿",
"album_share_no_users": "看來您與所有使用者共享了這本相簿,或沒有其他使用者可供分享。",
+ "album_summary": "相册摘要",
"album_updated": "更新相簿時",
"album_updated_setting_description": "當共享相簿有新項目時用電子郵件通知我",
"album_user_left": "離開 {album}",
@@ -461,6 +470,7 @@
"app_bar_signout_dialog_title": "登出",
"app_settings": "應用程式設定",
"appears_in": "出現於",
+ "apply_count": "應用({count, number})",
"archive": "封存",
"archive_action_prompt": "已將 ({count}) 個加入進封存",
"archive_or_unarchive_photo": "封存或取消封存照片",
@@ -493,6 +503,8 @@
"asset_restored_successfully": "媒體復原成功",
"asset_skipped": "已跳過",
"asset_skipped_in_trash": "已在垃圾桶",
+ "asset_trashed": "資產被丟棄",
+ "asset_troubleshoot": "資產故障排除",
"asset_uploaded": "已上傳",
"asset_uploading": "上傳中…",
"asset_viewer_settings_subtitle": "管理您的媒體庫檢視器設定",
@@ -526,8 +538,10 @@
"autoplay_slideshow": "自動播放幻燈片",
"back": "返回",
"back_close_deselect": "返回、關閉及取消選取",
+ "background_backup_running_error": "後臺備份當前正在運行,無法啟動手動備份",
"background_location_permission": "背景存取位置權限",
"background_location_permission_content": "為了在背景執行時切換網路,Immich 必須始終具有精確位置存取權限,才能讀取 Wi-Fi 網路名稱",
+ "background_options": "背景選項",
"backup": "備份",
"backup_album_selection_page_albums_device": "裝置上的相簿({count})",
"backup_album_selection_page_albums_tap": "點一下以選取,點兩下以排除",
@@ -535,6 +549,7 @@
"backup_album_selection_page_select_albums": "選取相簿",
"backup_album_selection_page_selection_info": "選取資訊",
"backup_album_selection_page_total_assets": "總不重複媒體數",
+ "backup_albums_sync": "備份相册同步",
"backup_all": "全部",
"backup_background_service_backup_failed_message": "備份媒體失敗。正在重試…",
"backup_background_service_connection_failed_message": "連線伺服器失敗。正在重試…",
@@ -584,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": "上傳正在進行中,請稍後再試",
@@ -651,6 +667,8 @@
"change_pin_code": "變更 PIN 碼",
"change_your_password": "變更您的密碼",
"changed_visibility_successfully": "已成功變更可見性",
+ "charging": "充電",
+ "charging_requirement_mobile_backup": "後臺備份要求設備正在充電",
"check_corrupt_asset_backup": "檢查損毀的備份項目",
"check_corrupt_asset_backup_button": "執行檢查",
"check_corrupt_asset_backup_description": "僅在連接 Wi-Fi 且所有媒體已完成備份後執行此檢查。此程序可能需要數分鐘。",
@@ -737,6 +755,7 @@
"create_user": "建立使用者",
"created": "建立於",
"created_at": "建立於",
+ "creating_linked_albums": "創建連結相册 ...",
"crop": "裁剪",
"curated_object_page_title": "事物",
"current_device": "目前裝置",
@@ -886,7 +905,9 @@
"error": "錯誤",
"error_change_sort_album": "變更相簿排序失敗",
"error_delete_face": "從媒體刪除臉孔時失敗",
+ "error_getting_places": "獲取位置時出錯",
"error_loading_image": "圖片載入錯誤",
+ "error_loading_partners": "加載合作夥伴時出錯:{error}",
"error_saving_image": "錯誤:{error}",
"error_tag_face_bounding_box": "標記臉部錯誤 - 無法取得邊界框坐標",
"error_title": "錯誤 - 發生錯誤",
@@ -1051,6 +1072,7 @@
"favorites_page_no_favorites": "未找到收藏項目",
"feature_photo_updated": "特色照片已更新",
"features": "功能",
+ "features_in_development": "發展中的特點",
"features_setting_description": "管理應用程式功能",
"file_name": "檔案名稱",
"file_name_or_extension": "檔案名稱或副檔名",
@@ -1078,6 +1100,8 @@
"go_back": "返回",
"go_to_folder": "前往資料夾",
"go_to_search": "前往搜尋",
+ "gps": "GPS",
+ "gps_missing": "無GPS",
"grant_permission": "授予權限",
"group_albums_by": "分類群組的方式...",
"group_country": "按照國家分類",
@@ -1213,6 +1237,7 @@
"local": "本地",
"local_asset_cast_failed": "無法轉換未上傳至伺服器的項目",
"local_assets": "本地項目",
+ "local_media_summary": "當地媒體摘要",
"local_network": "本地網路",
"local_network_sheet_info": "當使用指定的 Wi-Fi 網路時,應用程式將透過此網址連線至伺服器",
"location_permission": "位置權限",
@@ -1224,6 +1249,7 @@
"location_picker_longitude_hint": "請在此處輸入您的經度值",
"lock": "鎖定",
"locked_folder": "鎖定的資料夾",
+ "log_detail_title": "日誌詳細資訊",
"log_out": "登出",
"log_out_all_devices": "登出所有裝置",
"logged_in_as": "以{user}身分登入",
@@ -1254,6 +1280,7 @@
"login_password_changed_success": "密碼更新成功",
"logout_all_device_confirmation": "您確定要登出所有裝置嗎?",
"logout_this_device_confirmation": "要登出這臺裝置嗎?",
+ "logs": "日誌",
"longitude": "經度",
"look": "樣貌",
"loop_videos": "重播影片",
@@ -1296,6 +1323,7 @@
"mark_as_read": "標記為已讀",
"marked_all_as_read": "已全部標記為已讀",
"matches": "相符",
+ "matching_assets": "匹配資產",
"media_type": "媒體類型",
"memories": "回憶",
"memories_all_caught_up": "已全部看完",
@@ -1336,6 +1364,7 @@
"name_or_nickname": "名稱或暱稱",
"network_requirement_photos_upload": "使用行動網路流量備份照片",
"network_requirement_videos_upload": "使用行動網路流量備份影片",
+ "network_requirements": "網絡要求",
"network_requirements_updated": "網絡需求已變更,現重置備份佇列",
"networking_settings": "網路",
"networking_subtitle": "管理伺服器端點設定",
@@ -1346,6 +1375,7 @@
"new_person": "新的人物",
"new_pin_code": "新 PIN 碼",
"new_pin_code_subtitle": "這是您第一次存取鎖定的資料夾。建立 PIN 碼以安全存取此頁面",
+ "new_timeline": "新時間軸",
"new_user_created": "已建立新使用者",
"new_version_available": "新版本已發布",
"newest_first": "最新優先",
@@ -1359,20 +1389,25 @@
"no_assets_message": "按這裡上傳您的第一張照片",
"no_assets_to_show": "無項目展示",
"no_cast_devices_found": "沒有找到 Google Cast 裝置",
+ "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": "*註:執行套用儲存標籤前先上傳項目",
@@ -1407,6 +1442,8 @@
"open_the_search_filters": "開啟搜尋篩選器",
"options": "選項",
"or": "或",
+ "organize_into_albums": "整理成相册",
+ "organize_into_albums_description": "使用當前同步設定將現有照片放入相册",
"organize_your_library": "整理您的圖庫",
"original": "原圖",
"other": "其他",
@@ -1492,6 +1529,7 @@
"port": "埠口",
"preferences_settings_subtitle": "管理應用程式偏好設定",
"preferences_settings_title": "偏好設定",
+ "preparing": "準備",
"preset": "預設",
"preview": "預覽",
"previous": "上一張",
@@ -1557,6 +1595,7 @@
"read_changelog": "閱覽變更日誌",
"readonly_mode_disabled": "唯讀模式已關閉",
"readonly_mode_enabled": "唯讀模式已開啟",
+ "ready_for_upload": "已準備好上傳",
"reassign": "重新指定",
"reassigned_assets_to_existing_person": "已將 {count, plural, other {# 個檔案}}重新指定給{name, select, null {現有的人} other {{name}}}",
"reassigned_assets_to_new_person": "已將 {count, plural, other {# 個檔案}}重新指定給一位新人物",
@@ -1581,6 +1620,7 @@
"regenerating_thumbnails": "重新產生縮圖中",
"remote": "遠端",
"remote_assets": "遠端項目",
+ "remote_media_summary": "遠程媒體摘要",
"remove": "移除",
"remove_assets_album_confirmation": "確定要從相簿中移除 {count, plural, other {# 個檔案}}嗎?",
"remove_assets_shared_link_confirmation": "確定刪除共享連結中{count, plural, other {# 個項目}}嗎?",
@@ -1727,7 +1767,7 @@
"select_user_for_sharing_page_err_album": "新增相簿失敗",
"selected": "已選擇",
"selected_count": "{count, plural, other {選了 # 項}}",
- "selected_gps_coordinates": "已選擇的 GPS 座標",
+ "selected_gps_coordinates": "選定的GPS座標",
"send_message": "傳訊息",
"send_welcome_email": "傳送歡迎電子郵件",
"server_endpoint": "伺服器端點",
@@ -1856,6 +1896,7 @@
"show_slideshow_transition": "顯示幻燈片轉場",
"show_supporter_badge": "擁護者徽章",
"show_supporter_badge_description": "顯示擁護者徽章",
+ "show_text_search_menu": "顯示文字蒐索選單",
"shuffle": "隨機排序",
"sidebar": "側邊欄",
"sidebar_display_description": "在側邊欄中顯示鏈結",
@@ -1886,6 +1927,7 @@
"stacktrace": "堆疊追蹤",
"start": "開始",
"start_date": "開始日期",
+ "start_date_before_end_date": "開始日期必須早於結束日期",
"state": "地區",
"status": "狀態",
"stop_casting": "停止casting",
@@ -2088,5 +2130,6 @@
"yes": "是",
"you_dont_have_any_shared_links": "您沒有任何共享連結",
"your_wifi_name": "您的 Wi-Fi 名稱",
- "zoom_image": "縮放圖片"
+ "zoom_image": "縮放圖片",
+ "zoom_to_bounds": "縮放到邊界"
}
diff --git a/i18n/zh_SIMPLIFIED.json b/i18n/zh_SIMPLIFIED.json
index 5b29640d63..3ed4a14a2b 100644
--- a/i18n/zh_SIMPLIFIED.json
+++ b/i18n/zh_SIMPLIFIED.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}个)",
@@ -464,7 +465,7 @@
"api_key_description": "该应用密钥只会显示一次。请确保在关闭窗口前复制下来。",
"api_key_empty": "API 密钥名称不可为空",
"api_keys": "API 密钥",
- "app_bar_signout_dialog_content": "确定退出登录?",
+ "app_bar_signout_dialog_content": "是否确定退出登录?",
"app_bar_signout_dialog_ok": "是",
"app_bar_signout_dialog_title": "退出登录",
"app_settings": "应用设置",
@@ -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": "上传正在进行中,请稍后再试",
@@ -1898,7 +1900,7 @@
"shuffle": "随机",
"sidebar": "侧边栏",
"sidebar_display_description": "在侧边栏中显示链接",
- "sign_out": "注销",
+ "sign_out": "退出登录",
"sign_up": "注册",
"size": "大小",
"skip_to_content": "跳转到内容",
diff --git a/machine-learning/pyproject.toml b/machine-learning/pyproject.toml
index 07ebc83330..9eb4f7c0f6 100644
--- a/machine-learning/pyproject.toml
+++ b/machine-learning/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "immich-ml"
-version = "1.143.1"
+version = "2.0.1"
description = ""
authors = [{ name = "Hau Tran", email = "alex.tran1502@gmail.com" }]
requires-python = ">=3.10,<4.0"
diff --git a/misc/release/pump-version.sh b/misc/release/pump-version.sh
index 8c4c772bd9..65a2e70e50 100755
--- a/misc/release/pump-version.sh
+++ b/misc/release/pump-version.sh
@@ -80,7 +80,7 @@ if [ "$CURRENT_SERVER" != "$NEXT_SERVER" ]; then
jq --arg version "$NEXT_SERVER" '.version = $version' e2e/package.json > e2e/package.json.tmp && mv e2e/package.json.tmp e2e/package.json
pnpm install --frozen-lockfile --prefix e2e
- uvx --from=toml-cli toml set --toml-path=machine-learning/pyproject.toml project.version "$SERVER_PUMP"
+ uvx --from=toml-cli toml set --toml-path=machine-learning/pyproject.toml project.version "$NEXT_SERVER"
fi
if [ "$CURRENT_MOBILE" != "$NEXT_MOBILE" ]; then
diff --git a/mise.toml b/mise.toml
index 51dc3b1606..2008fa5e4a 100644
--- a/mise.toml
+++ b/mise.toml
@@ -1,5 +1,5 @@
[tools]
-node = "22.19.0"
+node = "22.20.0"
flutter = "3.35.4"
pnpm = "10.15.1"
@@ -315,7 +315,12 @@ run = [
alias = "mobile:codegen"
description = "Execute build_runner to auto-generate dart code"
dir = "mobile"
-sources = ["pubspec.yaml", "build.yaml", "lib/**/*.dart"]
+sources = [
+ "pubspec.yaml",
+ "build.yaml",
+ "lib/**/*.dart",
+ "infrastructure/**/*.drift",
+]
outputs = { auto = true }
run = "dart run build_runner build --delete-conflicting-outputs"
diff --git a/mobile/README.md b/mobile/README.md
index 436b0a4c34..59b2d9340c 100644
--- a/mobile/README.md
+++ b/mobile/README.md
@@ -84,4 +84,4 @@ Below is how your code needs to be structured:
## Contributing
-Please refer to the [architecture](https://immich.app/docs/developer/architecture/) for contributing to the mobile app!
+Please refer to the [architecture](https://docs.immich.app/developer/architecture/) for contributing to the mobile app!
diff --git a/mobile/android/app/src/main/kotlin/app/alextran/immich/ImmichApp.kt b/mobile/android/app/src/main/kotlin/app/alextran/immich/ImmichApp.kt
index 5a3b0e1f3d..4474c63e09 100644
--- a/mobile/android/app/src/main/kotlin/app/alextran/immich/ImmichApp.kt
+++ b/mobile/android/app/src/main/kotlin/app/alextran/immich/ImmichApp.kt
@@ -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)
}
}
diff --git a/mobile/android/app/src/main/kotlin/app/alextran/immich/background/BackgroundEngineLock.kt b/mobile/android/app/src/main/kotlin/app/alextran/immich/background/BackgroundEngineLock.kt
index d8afe32b5c..504267a4e5 100644
--- a/mobile/android/app/src/main/kotlin/app/alextran/immich/background/BackgroundEngineLock.kt
+++ b/mobile/android/app/src/main/kotlin/app/alextran/immich/background/BackgroundEngineLock.kt
@@ -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")
+ }
}
diff --git a/mobile/android/fastlane/Fastfile b/mobile/android/fastlane/Fastfile
index 1ce506c73d..cbc2440fa9 100644
--- a/mobile/android/fastlane/Fastfile
+++ b/mobile/android/fastlane/Fastfile
@@ -35,8 +35,8 @@ platform :android do
task: 'bundle',
build_type: 'Release',
properties: {
- "android.injected.version.code" => 3017,
- "android.injected.version.name" => "1.143.1",
+ "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')
diff --git a/mobile/drift_schemas/main/drift_schema_v12.json b/mobile/drift_schemas/main/drift_schema_v12.json
new file mode 100644
index 0000000000..1c100ab37f
--- /dev/null
+++ b/mobile/drift_schemas/main/drift_schema_v12.json
@@ -0,0 +1 @@
+{"_meta":{"description":"This file contains a serialized version of schema entities for drift.","version":"1.2.0"},"options":{"store_date_time_values_as_text":true},"entities":[{"id":0,"references":[],"type":"table","data":{"name":"user_entity","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"email","getter_name":"email","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"has_profile_image","getter_name":"hasProfileImage","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"has_profile_image\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"has_profile_image\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"profile_changed_at","getter_name":"profileChangedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"avatar_color","getter_name":"avatarColor","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(AvatarColor.values)","dart_type_name":"AvatarColor"}}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":1,"references":[0],"type":"table","data":{"name":"remote_asset_entity","was_declared_in_moor":false,"columns":[{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"type","getter_name":"type","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(AssetType.values)","dart_type_name":"AssetType"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"updated_at","getter_name":"updatedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"width","getter_name":"width","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"height","getter_name":"height","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"duration_in_seconds","getter_name":"durationInSeconds","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"checksum","getter_name":"checksum","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_favorite","getter_name":"isFavorite","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_favorite\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_favorite\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"owner_id","getter_name":"ownerId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES user_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES user_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"local_date_time","getter_name":"localDateTime","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"thumb_hash","getter_name":"thumbHash","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"deleted_at","getter_name":"deletedAt","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"live_photo_video_id","getter_name":"livePhotoVideoId","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"visibility","getter_name":"visibility","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(AssetVisibility.values)","dart_type_name":"AssetVisibility"}},{"name":"stack_id","getter_name":"stackId","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"library_id","getter_name":"libraryId","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":2,"references":[0],"type":"table","data":{"name":"stack_entity","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"updated_at","getter_name":"updatedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"owner_id","getter_name":"ownerId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES user_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES user_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"primary_asset_id","getter_name":"primaryAssetId","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":3,"references":[],"type":"table","data":{"name":"local_asset_entity","was_declared_in_moor":false,"columns":[{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"type","getter_name":"type","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(AssetType.values)","dart_type_name":"AssetType"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"updated_at","getter_name":"updatedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"width","getter_name":"width","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"height","getter_name":"height","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"duration_in_seconds","getter_name":"durationInSeconds","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"checksum","getter_name":"checksum","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_favorite","getter_name":"isFavorite","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_favorite\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_favorite\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"orientation","getter_name":"orientation","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":4,"references":[0,1],"type":"table","data":{"name":"remote_album_entity","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"description","getter_name":"description","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'\\'')","default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"updated_at","getter_name":"updatedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"owner_id","getter_name":"ownerId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES user_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES user_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"thumbnail_asset_id","getter_name":"thumbnailAssetId","moor_type":"string","nullable":true,"customConstraints":null,"defaultConstraints":"REFERENCES remote_asset_entity (id) ON DELETE SET NULL","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES remote_asset_entity (id) ON DELETE SET NULL"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"is_activity_enabled","getter_name":"isActivityEnabled","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_activity_enabled\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_activity_enabled\" IN (0, 1))"},"default_dart":"const CustomExpression('1')","default_client_dart":null,"dsl_features":[]},{"name":"order","getter_name":"order","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(AlbumAssetOrder.values)","dart_type_name":"AlbumAssetOrder"}}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":5,"references":[4],"type":"table","data":{"name":"local_album_entity","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"updated_at","getter_name":"updatedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"backup_selection","getter_name":"backupSelection","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(BackupSelection.values)","dart_type_name":"BackupSelection"}},{"name":"is_ios_shared_album","getter_name":"isIosSharedAlbum","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_ios_shared_album\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_ios_shared_album\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"linked_remote_album_id","getter_name":"linkedRemoteAlbumId","moor_type":"string","nullable":true,"customConstraints":null,"defaultConstraints":"REFERENCES remote_album_entity (id) ON DELETE SET NULL","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES remote_album_entity (id) ON DELETE SET NULL"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"marker","getter_name":"marker_","moor_type":"bool","nullable":true,"customConstraints":null,"defaultConstraints":"CHECK (\"marker\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"marker\" IN (0, 1))"},"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":6,"references":[3,5],"type":"table","data":{"name":"local_album_asset_entity","was_declared_in_moor":false,"columns":[{"name":"asset_id","getter_name":"assetId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES local_asset_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES local_asset_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"album_id","getter_name":"albumId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES local_album_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES local_album_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"marker","getter_name":"marker_","moor_type":"bool","nullable":true,"customConstraints":null,"defaultConstraints":"CHECK (\"marker\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"marker\" IN (0, 1))"},"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["asset_id","album_id"]}},{"id":7,"references":[3],"type":"index","data":{"on":3,"name":"idx_local_asset_checksum","sql":"CREATE INDEX IF NOT EXISTS idx_local_asset_checksum ON local_asset_entity (checksum)","unique":false,"columns":[]}},{"id":8,"references":[1],"type":"index","data":{"on":1,"name":"idx_remote_asset_owner_checksum","sql":"CREATE INDEX IF NOT EXISTS idx_remote_asset_owner_checksum ON remote_asset_entity (owner_id, checksum)","unique":false,"columns":[]}},{"id":9,"references":[1],"type":"index","data":{"on":1,"name":"UQ_remote_assets_owner_checksum","sql":"CREATE UNIQUE INDEX IF NOT EXISTS UQ_remote_assets_owner_checksum\nON remote_asset_entity (owner_id, checksum)\nWHERE (library_id IS NULL);\n","unique":true,"columns":[]}},{"id":10,"references":[1],"type":"index","data":{"on":1,"name":"UQ_remote_assets_owner_library_checksum","sql":"CREATE UNIQUE INDEX IF NOT EXISTS UQ_remote_assets_owner_library_checksum\nON remote_asset_entity (owner_id, library_id, checksum)\nWHERE (library_id IS NOT NULL);\n","unique":true,"columns":[]}},{"id":11,"references":[1],"type":"index","data":{"on":1,"name":"idx_remote_asset_checksum","sql":"CREATE INDEX IF NOT EXISTS idx_remote_asset_checksum ON remote_asset_entity (checksum)","unique":false,"columns":[]}},{"id":12,"references":[],"type":"table","data":{"name":"auth_user_entity","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"email","getter_name":"email","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_admin","getter_name":"isAdmin","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_admin\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_admin\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"has_profile_image","getter_name":"hasProfileImage","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"has_profile_image\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"has_profile_image\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"profile_changed_at","getter_name":"profileChangedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"avatar_color","getter_name":"avatarColor","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(AvatarColor.values)","dart_type_name":"AvatarColor"}},{"name":"quota_size_in_bytes","getter_name":"quotaSizeInBytes","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"quota_usage_in_bytes","getter_name":"quotaUsageInBytes","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"pin_code","getter_name":"pinCode","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":13,"references":[0],"type":"table","data":{"name":"user_metadata_entity","was_declared_in_moor":false,"columns":[{"name":"user_id","getter_name":"userId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES user_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES user_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"key","getter_name":"key","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(UserMetadataKey.values)","dart_type_name":"UserMetadataKey"}},{"name":"value","getter_name":"value","moor_type":"blob","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"userMetadataConverter","dart_type_name":"Map"}}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["user_id","key"]}},{"id":14,"references":[0],"type":"table","data":{"name":"partner_entity","was_declared_in_moor":false,"columns":[{"name":"shared_by_id","getter_name":"sharedById","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES user_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES user_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"shared_with_id","getter_name":"sharedWithId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES user_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES user_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"in_timeline","getter_name":"inTimeline","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"in_timeline\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"in_timeline\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["shared_by_id","shared_with_id"]}},{"id":15,"references":[1],"type":"table","data":{"name":"remote_exif_entity","was_declared_in_moor":false,"columns":[{"name":"asset_id","getter_name":"assetId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES remote_asset_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES remote_asset_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"city","getter_name":"city","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"state","getter_name":"state","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"country","getter_name":"country","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"date_time_original","getter_name":"dateTimeOriginal","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"description","getter_name":"description","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"height","getter_name":"height","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"width","getter_name":"width","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"exposure_time","getter_name":"exposureTime","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"f_number","getter_name":"fNumber","moor_type":"double","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"file_size","getter_name":"fileSize","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"focal_length","getter_name":"focalLength","moor_type":"double","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"latitude","getter_name":"latitude","moor_type":"double","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"longitude","getter_name":"longitude","moor_type":"double","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"iso","getter_name":"iso","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"make","getter_name":"make","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"model","getter_name":"model","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"lens","getter_name":"lens","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"orientation","getter_name":"orientation","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"time_zone","getter_name":"timeZone","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rating","getter_name":"rating","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"projection_type","getter_name":"projectionType","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["asset_id"]}},{"id":16,"references":[1,4],"type":"table","data":{"name":"remote_album_asset_entity","was_declared_in_moor":false,"columns":[{"name":"asset_id","getter_name":"assetId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES remote_asset_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES remote_asset_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"album_id","getter_name":"albumId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES remote_album_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES remote_album_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["asset_id","album_id"]}},{"id":17,"references":[4,0],"type":"table","data":{"name":"remote_album_user_entity","was_declared_in_moor":false,"columns":[{"name":"album_id","getter_name":"albumId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES remote_album_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES remote_album_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"user_id","getter_name":"userId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES user_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES user_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"role","getter_name":"role","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(AlbumUserRole.values)","dart_type_name":"AlbumUserRole"}}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["album_id","user_id"]}},{"id":18,"references":[0],"type":"table","data":{"name":"memory_entity","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"updated_at","getter_name":"updatedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"deleted_at","getter_name":"deletedAt","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"owner_id","getter_name":"ownerId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES user_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES user_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"type","getter_name":"type","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(MemoryTypeEnum.values)","dart_type_name":"MemoryTypeEnum"}},{"name":"data","getter_name":"data","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_saved","getter_name":"isSaved","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_saved\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_saved\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"memory_at","getter_name":"memoryAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"seen_at","getter_name":"seenAt","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"show_at","getter_name":"showAt","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"hide_at","getter_name":"hideAt","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":19,"references":[1,18],"type":"table","data":{"name":"memory_asset_entity","was_declared_in_moor":false,"columns":[{"name":"asset_id","getter_name":"assetId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES remote_asset_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES remote_asset_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"memory_id","getter_name":"memoryId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES memory_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES memory_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["asset_id","memory_id"]}},{"id":20,"references":[0],"type":"table","data":{"name":"person_entity","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"updated_at","getter_name":"updatedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CURRENT_TIMESTAMP')","default_client_dart":null,"dsl_features":[]},{"name":"owner_id","getter_name":"ownerId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES user_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES user_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"face_asset_id","getter_name":"faceAssetId","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_favorite","getter_name":"isFavorite","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_favorite\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_favorite\" IN (0, 1))"},"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_hidden","getter_name":"isHidden","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_hidden\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_hidden\" IN (0, 1))"},"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"color","getter_name":"color","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"birth_date","getter_name":"birthDate","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":21,"references":[1,20],"type":"table","data":{"name":"asset_face_entity","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"asset_id","getter_name":"assetId","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES remote_asset_entity (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES remote_asset_entity (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"person_id","getter_name":"personId","moor_type":"string","nullable":true,"customConstraints":null,"defaultConstraints":"REFERENCES person_entity (id) ON DELETE SET NULL","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES person_entity (id) ON DELETE SET NULL"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"image_width","getter_name":"imageWidth","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"image_height","getter_name":"imageHeight","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"bounding_box_x1","getter_name":"boundingBoxX1","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"bounding_box_y1","getter_name":"boundingBoxY1","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"bounding_box_x2","getter_name":"boundingBoxX2","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"bounding_box_y2","getter_name":"boundingBoxY2","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"source_type","getter_name":"sourceType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":22,"references":[],"type":"table","data":{"name":"store_entity","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"string_value","getter_name":"stringValue","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"int_value","getter_name":"intValue","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[],"strict":true,"explicit_pk":["id"]}},{"id":23,"references":[15],"type":"index","data":{"on":15,"name":"idx_lat_lng","sql":"CREATE INDEX IF NOT EXISTS idx_lat_lng ON remote_exif_entity (latitude, longitude)","unique":false,"columns":[]}}]}
\ No newline at end of file
diff --git a/mobile/ios/Runner.xcodeproj/project.pbxproj b/mobile/ios/Runner.xcodeproj/project.pbxproj
index cb9dbc60bd..6403a0ab4b 100644
--- a/mobile/ios/Runner.xcodeproj/project.pbxproj
+++ b/mobile/ios/Runner.xcodeproj/project.pbxproj
@@ -705,7 +705,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 226;
+ CURRENT_PROJECT_VERSION = 230;
CUSTOM_GROUP_ID = group.app.immich.share;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO;
@@ -849,7 +849,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 226;
+ CURRENT_PROJECT_VERSION = 230;
CUSTOM_GROUP_ID = group.app.immich.share;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO;
@@ -879,7 +879,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 226;
+ CURRENT_PROJECT_VERSION = 230;
CUSTOM_GROUP_ID = group.app.immich.share;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO;
@@ -913,7 +913,7 @@
CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 226;
+ CURRENT_PROJECT_VERSION = 230;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -956,7 +956,7 @@
CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 226;
+ CURRENT_PROJECT_VERSION = 230;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -996,7 +996,7 @@
CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 226;
+ CURRENT_PROJECT_VERSION = 230;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -1035,7 +1035,7 @@
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 226;
+ CURRENT_PROJECT_VERSION = 230;
CUSTOM_GROUP_ID = group.app.immich.share;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -1079,7 +1079,7 @@
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 226;
+ CURRENT_PROJECT_VERSION = 230;
CUSTOM_GROUP_ID = group.app.immich.share;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -1120,7 +1120,7 @@
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 226;
+ CURRENT_PROJECT_VERSION = 230;
CUSTOM_GROUP_ID = group.app.immich.share;
DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
diff --git a/mobile/ios/Runner/Info.plist b/mobile/ios/Runner/Info.plist
index 93a10c1a79..e9912f260c 100644
--- a/mobile/ios/Runner/Info.plist
+++ b/mobile/ios/Runner/Info.plist
@@ -80,7 +80,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 1.143.1
+ 2.0.0
CFBundleSignature
????
CFBundleURLTypes
@@ -107,7 +107,7 @@
CFBundleVersion
- 226
+ 230
FLTEnableImpeller
ITSAppUsesNonExemptEncryption
diff --git a/mobile/ios/fastlane/Fastfile b/mobile/ios/fastlane/Fastfile
index 998f78f768..f72597fe33 100644
--- a/mobile/ios/fastlane/Fastfile
+++ b/mobile/ios/fastlane/Fastfile
@@ -22,7 +22,7 @@ platform :ios do
path: "./Runner.xcodeproj",
)
increment_version_number(
- version_number: "1.143.1"
+ version_number: "2.0.1"
)
increment_build_number(
build_number: latest_testflight_build_number + 1,
diff --git a/mobile/lib/domain/services/asset.service.dart b/mobile/lib/domain/services/asset.service.dart
index 84f675f68b..7f8ade313c 100644
--- a/mobile/lib/domain/services/asset.service.dart
+++ b/mobile/lib/domain/services/asset.service.dart
@@ -84,8 +84,8 @@ class AssetService {
return 1.0;
}
- Future> getPlaces() {
- return _remoteAssetRepository.getPlaces();
+ Future> getPlaces(String userId) {
+ return _remoteAssetRepository.getPlaces(userId);
}
Future<(int local, int remote)> getAssetCounts() async {
diff --git a/mobile/lib/domain/services/background_worker.service.dart b/mobile/lib/domain/services/background_worker.service.dart
index 4e9291a1fc..0548a45bf7 100644
--- a/mobile/lib/domain/services/background_worker.service.dart
+++ b/mobile/lib/domain/services/background_worker.service.dart
@@ -28,7 +28,6 @@ import 'package:immich_mobile/repositories/file_media.repository.dart';
import 'package:immich_mobile/services/app_settings.service.dart';
import 'package:immich_mobile/services/auth.service.dart';
import 'package:immich_mobile/services/localization.service.dart';
-import 'package:immich_mobile/services/server_info.service.dart';
import 'package:immich_mobile/services/upload.service.dart';
import 'package:immich_mobile/utils/bootstrap.dart';
import 'package:immich_mobile/utils/debug_print.dart';
@@ -130,30 +129,33 @@ class BackgroundWorkerBgService extends BackgroundWorkerFlutterApi {
@override
Future onAndroidUpload() async {
+ _logger.info('Android background processing started');
+ final sw = Stopwatch()..start();
try {
- _logger.info('Android background processing started');
- final sw = Stopwatch()..start();
-
- await _syncAssets(hashTimeout: Duration(minutes: _isBackupEnabled ? 3 : 6));
+ if (!await _syncAssets(hashTimeout: Duration(minutes: _isBackupEnabled ? 3 : 6))) {
+ _logger.warning("Remote sync did not complete successfully, skipping backup");
+ return;
+ }
await _handleBackup();
-
- sw.stop();
- _logger.info("Android background processing completed in ${sw.elapsed.inSeconds}s");
} catch (error, stack) {
_logger.severe("Failed to complete Android background processing", error, stack);
} finally {
+ sw.stop();
+ _logger.info("Android background processing completed in ${sw.elapsed.inSeconds}s");
await _cleanup();
}
}
@override
Future onIosUpload(bool isRefresh, int? maxSeconds) async {
+ _logger.info('iOS background upload started with maxSeconds: ${maxSeconds}s');
+ final sw = Stopwatch()..start();
try {
- _logger.info('iOS background upload started with maxSeconds: ${maxSeconds}s');
- final sw = Stopwatch()..start();
-
final timeout = isRefresh ? const Duration(seconds: 5) : Duration(minutes: _isBackupEnabled ? 3 : 6);
- await _syncAssets(hashTimeout: timeout);
+ if (!await _syncAssets(hashTimeout: timeout)) {
+ _logger.warning("Remote sync did not complete successfully, skipping backup");
+ return;
+ }
final backupFuture = _handleBackup();
if (maxSeconds != null) {
@@ -161,12 +163,11 @@ class BackgroundWorkerBgService extends BackgroundWorkerFlutterApi {
} else {
await backupFuture;
}
-
- sw.stop();
- _logger.info("iOS background upload completed in ${sw.elapsed.inSeconds}s");
} catch (error, stack) {
_logger.severe("Failed to complete iOS background upload", error, stack);
} finally {
+ sw.stop();
+ _logger.info("iOS background upload completed in ${sw.elapsed.inSeconds}s");
await _cleanup();
}
}
@@ -227,29 +228,20 @@ class BackgroundWorkerBgService extends BackgroundWorkerFlutterApi {
}
if (!_isBackupEnabled) {
- _logger.info("[_handleBackup 1] Backup is disabled. Skipping backup routine");
+ _logger.info("Backup is disabled. Skipping backup routine");
return;
}
- _logger.info("[_handleBackup 2] Enqueuing assets for backup from the background service");
-
final currentUser = _ref?.read(currentUserProvider);
if (currentUser == null) {
- _logger.warning("[_handleBackup 3] No current user found. Skipping backup from background");
+ _logger.warning("No current user found. Skipping backup from background");
return;
}
- _logger.info("[_handleBackup 4] Resume backup from background");
if (Platform.isIOS) {
return _ref?.read(driftBackupProvider.notifier).handleBackupResume(currentUser.id);
}
- final canPing = await _ref?.read(serverInfoServiceProvider).ping() ?? false;
- if (!canPing) {
- _logger.warning("[_handleBackup 5] Server is not reachable. Skipping backup from background");
- return;
- }
-
final networkCapabilities = await _ref?.read(connectivityApiProvider).getCapabilities() ?? [];
return _ref
?.read(uploadServiceProvider)
@@ -261,15 +253,15 @@ class BackgroundWorkerBgService extends BackgroundWorkerFlutterApi {
);
}
- Future _syncAssets({Duration? hashTimeout}) async {
+ Future _syncAssets({Duration? hashTimeout}) async {
await _ref?.read(backgroundSyncProvider).syncLocal();
if (_isCleanedUp) {
- return;
+ return false;
}
- await _ref?.read(backgroundSyncProvider).syncRemote();
+ final isSuccess = await _ref?.read(backgroundSyncProvider).syncRemote() ?? false;
if (_isCleanedUp) {
- return;
+ return isSuccess;
}
var hashFuture = _ref?.read(backgroundSyncProvider).hashAssets();
@@ -283,6 +275,7 @@ class BackgroundWorkerBgService extends BackgroundWorkerFlutterApi {
}
await hashFuture;
+ return isSuccess;
}
}
diff --git a/mobile/lib/domain/services/local_sync.service.dart b/mobile/lib/domain/services/local_sync.service.dart
index d333af7481..ca356c80d8 100644
--- a/mobile/lib/domain/services/local_sync.service.dart
+++ b/mobile/lib/domain/services/local_sync.service.dart
@@ -281,7 +281,7 @@ extension on Iterable {
(e) => LocalAlbum(
id: e.id,
name: e.name,
- updatedAt: tryFromSecondsSinceEpoch(e.updatedAt) ?? DateTime.now(),
+ updatedAt: tryFromSecondsSinceEpoch(e.updatedAt, isUtc: true) ?? DateTime.timestamp(),
assetCount: e.assetCount,
),
).toList();
@@ -296,8 +296,8 @@ extension on Iterable {
name: e.name,
checksum: null,
type: AssetType.values.elementAtOrNull(e.type) ?? AssetType.other,
- createdAt: tryFromSecondsSinceEpoch(e.createdAt) ?? DateTime.now(),
- updatedAt: tryFromSecondsSinceEpoch(e.updatedAt) ?? DateTime.now(),
+ createdAt: tryFromSecondsSinceEpoch(e.createdAt, isUtc: true) ?? DateTime.timestamp(),
+ updatedAt: tryFromSecondsSinceEpoch(e.updatedAt, isUtc: true) ?? DateTime.timestamp(),
width: e.width,
height: e.height,
durationInSeconds: e.durationInSeconds,
diff --git a/mobile/lib/domain/services/sync_stream.service.dart b/mobile/lib/domain/services/sync_stream.service.dart
index 6c8e444d50..bec7e6afda 100644
--- a/mobile/lib/domain/services/sync_stream.service.dart
+++ b/mobile/lib/domain/services/sync_stream.service.dart
@@ -23,7 +23,7 @@ class SyncStreamService {
bool get isCancelled => _cancelChecker?.call() ?? false;
- Future sync() async {
+ Future sync() async {
_logger.info("Remote sync request for user");
// Start the sync stream and handle events
bool shouldReset = false;
@@ -32,6 +32,7 @@ class SyncStreamService {
_logger.info("Resetting sync state as requested by server");
await _syncApiRepository.streamChanges(_handleEvents);
}
+ return true;
}
Future _handleEvents(List events, Function() abort, Function() reset) async {
diff --git a/mobile/lib/domain/services/timeline.service.dart b/mobile/lib/domain/services/timeline.service.dart
index ab623720b7..bf354847c3 100644
--- a/mobile/lib/domain/services/timeline.service.dart
+++ b/mobile/lib/domain/services/timeline.service.dart
@@ -59,7 +59,8 @@ class TimelineFactory {
TimelineService fromAssets(List assets) => TimelineService(_timelineRepository.fromAssets(assets));
- TimelineService map(LatLngBounds bounds) => TimelineService(_timelineRepository.map(bounds, groupBy));
+ TimelineService map(String userId, LatLngBounds bounds) =>
+ TimelineService(_timelineRepository.map(userId, bounds, groupBy));
}
class TimelineService {
diff --git a/mobile/lib/domain/utils/background_sync.dart b/mobile/lib/domain/utils/background_sync.dart
index ffbb020345..38e249b9f1 100644
--- a/mobile/lib/domain/utils/background_sync.dart
+++ b/mobile/lib/domain/utils/background_sync.dart
@@ -6,11 +6,12 @@ import 'package:immich_mobile/utils/isolate.dart';
import 'package:worker_manager/worker_manager.dart';
typedef SyncCallback = void Function();
+typedef SyncCallbackWithResult = void Function(T result);
typedef SyncErrorCallback = void Function(String error);
class BackgroundSyncManager {
final SyncCallback? onRemoteSyncStart;
- final SyncCallback? onRemoteSyncComplete;
+ final SyncCallbackWithResult? onRemoteSyncComplete;
final SyncErrorCallback? onRemoteSyncError;
final SyncCallback? onLocalSyncStart;
@@ -21,7 +22,7 @@ class BackgroundSyncManager {
final SyncCallback? onHashingComplete;
final SyncErrorCallback? onHashingError;
- Cancelable? _syncTask;
+ Cancelable? _syncTask;
Cancelable? _syncWebsocketTask;
Cancelable? _deviceAlbumSyncTask;
Cancelable? _linkedAlbumSyncTask;
@@ -144,9 +145,9 @@ class BackgroundSyncManager {
});
}
- Future syncRemote() {
+ Future syncRemote() {
if (_syncTask != null) {
- return _syncTask!.future;
+ return _syncTask!.future.then((result) => result ?? false).catchError((_) => false);
}
onRemoteSyncStart?.call();
@@ -156,13 +157,18 @@ class BackgroundSyncManager {
debugLabel: 'remote-sync',
);
return _syncTask!
- .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;
});
}
diff --git a/mobile/lib/extensions/string_extensions.dart b/mobile/lib/extensions/string_extensions.dart
index 6cd6e1e4b4..ae31565044 100644
--- a/mobile/lib/extensions/string_extensions.dart
+++ b/mobile/lib/extensions/string_extensions.dart
@@ -1,3 +1,5 @@
+import 'dart:convert';
+
extension StringExtension on String {
String capitalize() {
return split(" ").map((str) => str.isEmpty ? str : str[0].toUpperCase() + str.substring(1)).join(" ");
@@ -23,3 +25,11 @@ extension DurationExtension on String {
return int.parse(this);
}
}
+
+Map? tryJsonDecode(dynamic json) {
+ try {
+ return jsonDecode(json) as Map;
+ } catch (e) {
+ return null;
+ }
+}
diff --git a/mobile/lib/infrastructure/repositories/backup.repository.dart b/mobile/lib/infrastructure/repositories/backup.repository.dart
index cc6fd7dfe3..0241711d4b 100644
--- a/mobile/lib/infrastructure/repositories/backup.repository.dart
+++ b/mobile/lib/infrastructure/repositories/backup.repository.dart
@@ -81,7 +81,7 @@ class DriftBackupRepository extends DriftDatabaseRepository {
);
}
- Future> getCandidates(String userId) async {
+ Future> getCandidates(String userId, {bool onlyHashed = true}) async {
final selectedAlbumIds = _db.localAlbumEntity.selectOnly(distinct: true)
..addColumns([_db.localAlbumEntity.id])
..where(_db.localAlbumEntity.backupSelection.equalsValue(BackupSelection.selected));
@@ -89,7 +89,6 @@ class DriftBackupRepository extends DriftDatabaseRepository {
final query = _db.localAssetEntity.select()
..where(
(lae) =>
- lae.checksum.isNotNull() &
existsQuery(
_db.localAlbumAssetEntity.selectOnly()
..addColumns([_db.localAlbumAssetEntity.assetId])
@@ -109,6 +108,10 @@ class DriftBackupRepository extends DriftDatabaseRepository {
)
..orderBy([(localAsset) => OrderingTerm.desc(localAsset.createdAt)]);
+ if (onlyHashed) {
+ query.where((lae) => lae.checksum.isNotNull());
+ }
+
return query.map((localAsset) => localAsset.toDto()).get();
}
}
diff --git a/mobile/lib/infrastructure/repositories/db.repository.dart b/mobile/lib/infrastructure/repositories/db.repository.dart
index 65d26d9747..7291c3a97b 100644
--- a/mobile/lib/infrastructure/repositories/db.repository.dart
+++ b/mobile/lib/infrastructure/repositories/db.repository.dart
@@ -93,7 +93,7 @@ class Drift extends $Drift implements IDatabaseRepository {
}
@override
- int get schemaVersion => 11;
+ int get schemaVersion => 12;
@override
MigrationStrategy get migration => MigrationStrategy(
@@ -159,6 +159,25 @@ class Drift extends $Drift implements IDatabaseRepository {
from10To11: (m, v11) async {
await m.addColumn(v11.localAlbumAssetEntity, v11.localAlbumAssetEntity.marker_);
},
+ from11To12: (m, v12) async {
+ final localToUTCMapping = {
+ v12.localAssetEntity: [v12.localAssetEntity.createdAt, v12.localAssetEntity.updatedAt],
+ v12.localAlbumEntity: [v12.localAlbumEntity.updatedAt],
+ };
+
+ for (final entry in localToUTCMapping.entries) {
+ final table = entry.key;
+ await m.alterTable(
+ TableMigration(
+ table,
+ columnTransformer: {
+ for (final column in entry.value)
+ column: column.modify(const DateTimeModifier.utc()).strftime('%Y-%m-%dT%H:%M:%fZ'),
+ },
+ ),
+ );
+ }
+ },
),
);
diff --git a/mobile/lib/infrastructure/repositories/db.repository.steps.dart b/mobile/lib/infrastructure/repositories/db.repository.steps.dart
index 7910d9fcee..c973cd6f13 100644
--- a/mobile/lib/infrastructure/repositories/db.repository.steps.dart
+++ b/mobile/lib/infrastructure/repositories/db.repository.steps.dart
@@ -4659,6 +4659,384 @@ class Shape22 extends i0.VersionedTable {
columnsByName['marker']! as i1.GeneratedColumn;
}
+final class Schema12 extends i0.VersionedSchema {
+ Schema12({required super.database}) : super(version: 12);
+ @override
+ late final List entities = [
+ userEntity,
+ remoteAssetEntity,
+ stackEntity,
+ localAssetEntity,
+ remoteAlbumEntity,
+ localAlbumEntity,
+ localAlbumAssetEntity,
+ idxLocalAssetChecksum,
+ idxRemoteAssetOwnerChecksum,
+ uQRemoteAssetsOwnerChecksum,
+ uQRemoteAssetsOwnerLibraryChecksum,
+ idxRemoteAssetChecksum,
+ authUserEntity,
+ userMetadataEntity,
+ partnerEntity,
+ remoteExifEntity,
+ remoteAlbumAssetEntity,
+ remoteAlbumUserEntity,
+ memoryEntity,
+ memoryAssetEntity,
+ personEntity,
+ assetFaceEntity,
+ storeEntity,
+ idxLatLng,
+ ];
+ late final Shape20 userEntity = Shape20(
+ source: i0.VersionedTable(
+ entityName: 'user_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [
+ _column_0,
+ _column_1,
+ _column_3,
+ _column_84,
+ _column_85,
+ _column_91,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape17 remoteAssetEntity = Shape17(
+ source: i0.VersionedTable(
+ entityName: 'remote_asset_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [
+ _column_1,
+ _column_8,
+ _column_9,
+ _column_5,
+ _column_10,
+ _column_11,
+ _column_12,
+ _column_0,
+ _column_13,
+ _column_14,
+ _column_15,
+ _column_16,
+ _column_17,
+ _column_18,
+ _column_19,
+ _column_20,
+ _column_21,
+ _column_86,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape3 stackEntity = Shape3(
+ source: i0.VersionedTable(
+ entityName: 'stack_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [_column_0, _column_9, _column_5, _column_15, _column_75],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape2 localAssetEntity = Shape2(
+ source: i0.VersionedTable(
+ entityName: 'local_asset_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [
+ _column_1,
+ _column_8,
+ _column_9,
+ _column_5,
+ _column_10,
+ _column_11,
+ _column_12,
+ _column_0,
+ _column_22,
+ _column_14,
+ _column_23,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape9 remoteAlbumEntity = Shape9(
+ source: i0.VersionedTable(
+ entityName: 'remote_album_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [
+ _column_0,
+ _column_1,
+ _column_56,
+ _column_9,
+ _column_5,
+ _column_15,
+ _column_57,
+ _column_58,
+ _column_59,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape19 localAlbumEntity = Shape19(
+ source: i0.VersionedTable(
+ entityName: 'local_album_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [
+ _column_0,
+ _column_1,
+ _column_5,
+ _column_31,
+ _column_32,
+ _column_90,
+ _column_33,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape22 localAlbumAssetEntity = Shape22(
+ source: i0.VersionedTable(
+ entityName: 'local_album_asset_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(asset_id, album_id)'],
+ columns: [_column_34, _column_35, _column_33],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ final i1.Index idxLocalAssetChecksum = i1.Index(
+ 'idx_local_asset_checksum',
+ 'CREATE INDEX IF NOT EXISTS idx_local_asset_checksum ON local_asset_entity (checksum)',
+ );
+ final i1.Index idxRemoteAssetOwnerChecksum = i1.Index(
+ 'idx_remote_asset_owner_checksum',
+ 'CREATE INDEX IF NOT EXISTS idx_remote_asset_owner_checksum ON remote_asset_entity (owner_id, checksum)',
+ );
+ final i1.Index uQRemoteAssetsOwnerChecksum = i1.Index(
+ 'UQ_remote_assets_owner_checksum',
+ 'CREATE UNIQUE INDEX IF NOT EXISTS UQ_remote_assets_owner_checksum ON remote_asset_entity (owner_id, checksum) WHERE(library_id IS NULL)',
+ );
+ final i1.Index uQRemoteAssetsOwnerLibraryChecksum = i1.Index(
+ 'UQ_remote_assets_owner_library_checksum',
+ 'CREATE UNIQUE INDEX IF NOT EXISTS UQ_remote_assets_owner_library_checksum ON remote_asset_entity (owner_id, library_id, checksum) WHERE(library_id IS NOT NULL)',
+ );
+ final i1.Index idxRemoteAssetChecksum = i1.Index(
+ 'idx_remote_asset_checksum',
+ 'CREATE INDEX IF NOT EXISTS idx_remote_asset_checksum ON remote_asset_entity (checksum)',
+ );
+ late final Shape21 authUserEntity = Shape21(
+ source: i0.VersionedTable(
+ entityName: 'auth_user_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [
+ _column_0,
+ _column_1,
+ _column_3,
+ _column_2,
+ _column_84,
+ _column_85,
+ _column_92,
+ _column_93,
+ _column_7,
+ _column_94,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape4 userMetadataEntity = Shape4(
+ source: i0.VersionedTable(
+ entityName: 'user_metadata_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(user_id, "key")'],
+ columns: [_column_25, _column_26, _column_27],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape5 partnerEntity = Shape5(
+ source: i0.VersionedTable(
+ entityName: 'partner_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(shared_by_id, shared_with_id)'],
+ columns: [_column_28, _column_29, _column_30],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape8 remoteExifEntity = Shape8(
+ source: i0.VersionedTable(
+ entityName: 'remote_exif_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(asset_id)'],
+ columns: [
+ _column_36,
+ _column_37,
+ _column_38,
+ _column_39,
+ _column_40,
+ _column_41,
+ _column_11,
+ _column_10,
+ _column_42,
+ _column_43,
+ _column_44,
+ _column_45,
+ _column_46,
+ _column_47,
+ _column_48,
+ _column_49,
+ _column_50,
+ _column_51,
+ _column_52,
+ _column_53,
+ _column_54,
+ _column_55,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape7 remoteAlbumAssetEntity = Shape7(
+ source: i0.VersionedTable(
+ entityName: 'remote_album_asset_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(asset_id, album_id)'],
+ columns: [_column_36, _column_60],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape10 remoteAlbumUserEntity = Shape10(
+ source: i0.VersionedTable(
+ entityName: 'remote_album_user_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(album_id, user_id)'],
+ columns: [_column_60, _column_25, _column_61],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape11 memoryEntity = Shape11(
+ source: i0.VersionedTable(
+ entityName: 'memory_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [
+ _column_0,
+ _column_9,
+ _column_5,
+ _column_18,
+ _column_15,
+ _column_8,
+ _column_62,
+ _column_63,
+ _column_64,
+ _column_65,
+ _column_66,
+ _column_67,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape12 memoryAssetEntity = Shape12(
+ source: i0.VersionedTable(
+ entityName: 'memory_asset_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(asset_id, memory_id)'],
+ columns: [_column_36, _column_68],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape14 personEntity = Shape14(
+ source: i0.VersionedTable(
+ entityName: 'person_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [
+ _column_0,
+ _column_9,
+ _column_5,
+ _column_15,
+ _column_1,
+ _column_69,
+ _column_71,
+ _column_72,
+ _column_73,
+ _column_74,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape15 assetFaceEntity = Shape15(
+ source: i0.VersionedTable(
+ entityName: 'asset_face_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [
+ _column_0,
+ _column_36,
+ _column_76,
+ _column_77,
+ _column_78,
+ _column_79,
+ _column_80,
+ _column_81,
+ _column_82,
+ _column_83,
+ ],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ late final Shape18 storeEntity = Shape18(
+ source: i0.VersionedTable(
+ entityName: 'store_entity',
+ withoutRowId: true,
+ isStrict: true,
+ tableConstraints: ['PRIMARY KEY(id)'],
+ columns: [_column_87, _column_88, _column_89],
+ attachedDatabase: database,
+ ),
+ alias: null,
+ );
+ final i1.Index idxLatLng = i1.Index(
+ 'idx_lat_lng',
+ 'CREATE INDEX IF NOT EXISTS idx_lat_lng ON remote_exif_entity (latitude, longitude)',
+ );
+}
+
i0.MigrationStepWithVersion migrationSteps({
required Future Function(i1.Migrator m, Schema2 schema) from1To2,
required Future Function(i1.Migrator m, Schema3 schema) from2To3,
@@ -4670,6 +5048,7 @@ i0.MigrationStepWithVersion migrationSteps({
required Future Function(i1.Migrator m, Schema9 schema) from8To9,
required Future Function(i1.Migrator m, Schema10 schema) from9To10,
required Future Function(i1.Migrator m, Schema11 schema) from10To11,
+ required Future Function(i1.Migrator m, Schema12 schema) from11To12,
}) {
return (currentVersion, database) async {
switch (currentVersion) {
@@ -4723,6 +5102,11 @@ i0.MigrationStepWithVersion migrationSteps({
final migrator = i1.Migrator(database, schema);
await from10To11(migrator, schema);
return 11;
+ case 11:
+ final schema = Schema12(database: database);
+ final migrator = i1.Migrator(database, schema);
+ await from11To12(migrator, schema);
+ return 12;
default:
throw ArgumentError.value('Unknown migration from $currentVersion');
}
@@ -4740,6 +5124,7 @@ i1.OnUpgrade stepByStep({
required Future Function(i1.Migrator m, Schema9 schema) from8To9,
required Future Function(i1.Migrator m, Schema10 schema) from9To10,
required Future Function(i1.Migrator m, Schema11 schema) from10To11,
+ required Future Function(i1.Migrator m, Schema12 schema) from11To12,
}) => i0.VersionedSchema.stepByStepHelper(
step: migrationSteps(
from1To2: from1To2,
@@ -4752,5 +5137,6 @@ i1.OnUpgrade stepByStep({
from8To9: from8To9,
from9To10: from9To10,
from10To11: from10To11,
+ from11To12: from11To12,
),
);
diff --git a/mobile/lib/infrastructure/repositories/remote_album.repository.dart b/mobile/lib/infrastructure/repositories/remote_album.repository.dart
index 5dfe4ac9b3..22d4715c1e 100644
--- a/mobile/lib/infrastructure/repositories/remote_album.repository.dart
+++ b/mobile/lib/infrastructure/repositories/remote_album.repository.dart
@@ -62,7 +62,7 @@ class DriftRemoteAlbumRepository extends DriftDatabaseRepository {
.toDto(
assetCount: row.read(assetCount) ?? 0,
ownerName: row.read(_db.userEntity.name)!,
- isShared: row.read(_db.remoteAlbumUserEntity.userId.count(distinct: true))! > 2,
+ isShared: row.read(_db.remoteAlbumUserEntity.userId.count(distinct: true))! > 0,
),
)
.get();
@@ -107,7 +107,7 @@ class DriftRemoteAlbumRepository extends DriftDatabaseRepository {
.toDto(
assetCount: row.read(assetCount) ?? 0,
ownerName: row.read(_db.userEntity.name)!,
- isShared: row.read(_db.remoteAlbumUserEntity.userId.count(distinct: true))! > 2,
+ isShared: row.read(_db.remoteAlbumUserEntity.userId.count(distinct: true))! > 0,
),
)
.getSingleOrNull();
@@ -305,8 +305,9 @@ class DriftRemoteAlbumRepository extends DriftDatabaseRepository {
.readTable(_db.remoteAlbumEntity)
.toDto(
ownerName: row.read(_db.userEntity.name)!,
- isShared: row.read(_db.remoteAlbumUserEntity.userId.count(distinct: true))! > 2,
+ isShared: row.read(_db.remoteAlbumUserEntity.userId.count(distinct: true))! > 0,
);
+
return album;
}).watchSingleOrNull();
}
diff --git a/mobile/lib/infrastructure/repositories/remote_asset.repository.dart b/mobile/lib/infrastructure/repositories/remote_asset.repository.dart
index 092bb728d9..be55c21afc 100644
--- a/mobile/lib/infrastructure/repositories/remote_asset.repository.dart
+++ b/mobile/lib/infrastructure/repositories/remote_asset.repository.dart
@@ -81,9 +81,11 @@ class RemoteAssetRepository extends DriftDatabaseRepository {
.getSingleOrNull();
}
- Future> getPlaces() {
+ Future> getPlaces(String userId) {
final asset = Subquery(
- _db.remoteAssetEntity.select()..orderBy([(row) => OrderingTerm.desc(row.createdAt)]),
+ _db.remoteAssetEntity.select()
+ ..where((row) => row.ownerId.equals(userId))
+ ..orderBy([(row) => OrderingTerm.desc(row.createdAt)]),
"asset",
);
diff --git a/mobile/lib/infrastructure/repositories/sync_api.repository.dart b/mobile/lib/infrastructure/repositories/sync_api.repository.dart
index 3969286d28..8bf2e80579 100644
--- a/mobile/lib/infrastructure/repositories/sync_api.repository.dart
+++ b/mobile/lib/infrastructure/repositories/sync_api.repository.dart
@@ -110,7 +110,6 @@ class SyncApiRepository {
await onData(_parseLines(lines), abort, reset);
}
} catch (error, stack) {
- _logger.severe("Error processing stream", error, stack);
return Future.error(error, stack);
} finally {
client.close();
diff --git a/mobile/lib/infrastructure/repositories/sync_stream.repository.dart b/mobile/lib/infrastructure/repositories/sync_stream.repository.dart
index f4720fb110..3f74fe25d1 100644
--- a/mobile/lib/infrastructure/repositories/sync_stream.repository.dart
+++ b/mobile/lib/infrastructure/repositories/sync_stream.repository.dart
@@ -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();
});
diff --git a/mobile/lib/infrastructure/repositories/timeline.repository.dart b/mobile/lib/infrastructure/repositories/timeline.repository.dart
index 033c146f97..05928d938f 100644
--- a/mobile/lib/infrastructure/repositories/timeline.repository.dart
+++ b/mobile/lib/infrastructure/repositories/timeline.repository.dart
@@ -43,7 +43,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
}
return _db.mergedAssetDrift.mergedBucket(userIds: userIds, groupBy: groupBy.index).map((row) {
- final date = row.bucketDate.dateFmt(groupBy);
+ final date = row.bucketDate.truncateDate(groupBy);
return TimeBucket(date: date, assetCount: row.assetCount);
}).watch();
}
@@ -123,7 +123,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
..orderBy([OrderingTerm.desc(dateExp)]);
return query.map((row) {
- final timeline = row.read(dateExp)!.dateFmt(groupBy);
+ final timeline = row.read(dateExp)!.truncateDate(groupBy);
final assetCount = row.read(assetCountExp)!;
return TimeBucket(date: timeline, assetCount: assetCount);
}).watch();
@@ -199,7 +199,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
}
return query.map((row) {
- final timeline = row.read(dateExp)!.dateFmt(groupBy);
+ final timeline = row.read(dateExp)!.truncateDate(groupBy);
final assetCount = row.read(assetCountExp)!;
return TimeBucket(date: timeline, assetCount: assetCount);
}).watch();
@@ -328,7 +328,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
..orderBy([OrderingTerm.desc(dateExp)]);
return query.map((row) {
- final timeline = row.read(dateExp)!.dateFmt(groupBy);
+ final timeline = row.read(dateExp)!.truncateDate(groupBy);
final assetCount = row.read(assetCountExp)!;
return TimeBucket(date: timeline, assetCount: assetCount);
}).watch();
@@ -399,7 +399,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
..orderBy([OrderingTerm.desc(dateExp)]);
return query.map((row) {
- final timeline = row.read(dateExp)!.dateFmt(groupBy);
+ final timeline = row.read(dateExp)!.truncateDate(groupBy);
final assetCount = row.read(assetCountExp)!;
return TimeBucket(date: timeline, assetCount: assetCount);
}).watch();
@@ -431,12 +431,16 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
return query.map((row) => row.readTable(_db.remoteAssetEntity).toDto()).get();
}
- TimelineQuery map(LatLngBounds bounds, GroupAssetsBy groupBy) => (
- bucketSource: () => _watchMapBucket(bounds, groupBy: groupBy),
- assetSource: (offset, count) => _getMapBucketAssets(bounds, offset: offset, count: count),
+ TimelineQuery map(String userId, LatLngBounds bounds, GroupAssetsBy groupBy) => (
+ bucketSource: () => _watchMapBucket(userId, bounds, groupBy: groupBy),
+ assetSource: (offset, count) => _getMapBucketAssets(userId, bounds, offset: offset, count: count),
);
- Stream> _watchMapBucket(LatLngBounds bounds, {GroupAssetsBy groupBy = GroupAssetsBy.day}) {
+ Stream> _watchMapBucket(
+ String userId,
+ LatLngBounds bounds, {
+ GroupAssetsBy groupBy = GroupAssetsBy.day,
+ }) {
if (groupBy == GroupAssetsBy.none) {
// TODO: Support GroupAssetsBy.none
throw UnsupportedError("GroupAssetsBy.none is not supported for _watchMapBucket");
@@ -455,7 +459,8 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
),
])
..where(
- _db.remoteExifEntity.inBounds(bounds) &
+ _db.remoteAssetEntity.ownerId.equals(userId) &
+ _db.remoteExifEntity.inBounds(bounds) &
_db.remoteAssetEntity.visibility.equalsValue(AssetVisibility.timeline) &
_db.remoteAssetEntity.deletedAt.isNull(),
)
@@ -463,13 +468,18 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
..orderBy([OrderingTerm.desc(dateExp)]);
return query.map((row) {
- final timeline = row.read(dateExp)!.dateFmt(groupBy);
+ final timeline = row.read(dateExp)!.truncateDate(groupBy);
final assetCount = row.read(assetCountExp)!;
return TimeBucket(date: timeline, assetCount: assetCount);
}).watch();
}
- Future> _getMapBucketAssets(LatLngBounds bounds, {required int offset, required int count}) {
+ Future> _getMapBucketAssets(
+ String userId,
+ LatLngBounds bounds, {
+ required int offset,
+ required int count,
+ }) {
final query =
_db.remoteAssetEntity.select().join([
innerJoin(
@@ -479,7 +489,8 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
),
])
..where(
- _db.remoteExifEntity.inBounds(bounds) &
+ _db.remoteAssetEntity.ownerId.equals(userId) &
+ _db.remoteExifEntity.inBounds(bounds) &
_db.remoteAssetEntity.visibility.equalsValue(AssetVisibility.timeline) &
_db.remoteAssetEntity.deletedAt.isNull(),
)
@@ -520,7 +531,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
..orderBy([OrderingTerm.desc(dateExp)]);
return query.map((row) {
- final timeline = row.read(dateExp)!.dateFmt(groupBy);
+ final timeline = row.read(dateExp)!.truncateDate(groupBy);
final assetCount = row.read(assetCountExp)!;
return TimeBucket(date: timeline, assetCount: assetCount);
}).watch();
@@ -586,7 +597,7 @@ extension on Expression {
}
extension on String {
- DateTime dateFmt(GroupAssetsBy groupBy) {
+ DateTime truncateDate(GroupAssetsBy groupBy) {
final format = switch (groupBy) {
GroupAssetsBy.day || GroupAssetsBy.auto => "y-M-d",
GroupAssetsBy.month => "y-M",
diff --git a/mobile/lib/pages/backup/drift_backup.page.dart b/mobile/lib/pages/backup/drift_backup.page.dart
index 30782726e2..2e7c3e946c 100644
--- a/mobile/lib/pages/backup/drift_backup.page.dart
+++ b/mobile/lib/pages/backup/drift_backup.page.dart
@@ -1,3 +1,5 @@
+import 'dart:async';
+
import 'package:auto_route/auto_route.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
@@ -8,6 +10,7 @@ import 'package:immich_mobile/entities/store.entity.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/extensions/theme_extensions.dart';
import 'package:immich_mobile/extensions/translate_extensions.dart';
+import 'package:immich_mobile/generated/intl_keys.g.dart';
import 'package:immich_mobile/presentation/widgets/backup/backup_toggle_button.widget.dart';
import 'package:immich_mobile/providers/background_sync.provider.dart';
import 'package:immich_mobile/providers/backup/backup_album.provider.dart';
@@ -16,8 +19,7 @@ import 'package:immich_mobile/providers/sync_status.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/widgets/backup/backup_info_card.dart';
-import 'dart:async';
-
+import 'package:logging/logging.dart';
import 'package:wakelock_plus/wakelock_plus.dart';
@RoutePage()
@@ -29,6 +31,8 @@ class DriftBackupPage extends ConsumerStatefulWidget {
}
class _DriftBackupPageState extends ConsumerState {
+ bool? syncSuccess;
+
@override
void initState() {
super.initState();
@@ -42,7 +46,10 @@ class _DriftBackupPageState extends ConsumerState {
WidgetsBinding.instance.addPostFrameCallback((_) async {
await ref.read(driftBackupProvider.notifier).getBackupStatus(currentUser.id);
- await ref.read(backgroundSyncProvider).syncRemote();
+
+ ref.read(driftBackupProvider.notifier).updateSyncing(true);
+ syncSuccess = await ref.read(backgroundSyncProvider).syncRemote();
+ ref.read(driftBackupProvider.notifier).updateSyncing(false);
if (mounted) {
await ref.read(driftBackupProvider.notifier).getBackupStatus(currentUser.id);
@@ -63,7 +70,10 @@ class _DriftBackupPageState extends ConsumerState {
.where((album) => album.backupSelection == BackupSelection.selected)
.toList();
+ final error = ref.watch(driftBackupProvider.select((p) => p.error));
+
final backupNotifier = ref.read(driftBackupProvider.notifier);
+ final backupSyncManager = ref.read(backgroundSyncProvider);
Future startBackup() async {
final currentUser = Store.tryGet(StoreKey.currentUser);
@@ -71,7 +81,18 @@ class _DriftBackupPageState extends ConsumerState {
return;
}
+ if (syncSuccess == null) {
+ ref.read(driftBackupProvider.notifier).updateSyncing(true);
+ syncSuccess = await backupSyncManager.syncRemote();
+ ref.read(driftBackupProvider.notifier).updateSyncing(false);
+ }
+
await backupNotifier.getBackupStatus(currentUser.id);
+
+ if (syncSuccess == false) {
+ Logger("DriftBackupPage").warning("Remote sync did not complete successfully, skipping backup");
+ return;
+ }
await backupNotifier.startBackup(currentUser.id);
}
@@ -113,7 +134,33 @@ class _DriftBackupPageState extends ConsumerState {
const _BackupCard(),
const _RemainderCard(),
const Divider(),
- BackupToggleButton(onStart: () async => await startBackup(), onStop: () async => await stopBackup()),
+ BackupToggleButton(
+ onStart: () async => await startBackup(),
+ onStop: () async {
+ syncSuccess = null;
+ await stopBackup();
+ },
+ ),
+ switch (error) {
+ BackupError.none => const SizedBox.shrink(),
+ BackupError.syncFailed => Padding(
+ padding: const EdgeInsets.only(top: 10),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Icon(Icons.warning_rounded, color: context.colorScheme.error, fill: 1),
+ const SizedBox(width: 8),
+ Text(
+ IntlKeys.backup_error_sync_failed.t(),
+ style: context.textTheme.bodyMedium?.copyWith(color: context.colorScheme.error),
+ textAlign: TextAlign.center,
+ ),
+ ],
+ ),
+ ),
+ },
TextButton.icon(
icon: const Icon(Icons.info_outline_rounded),
onPressed: () => context.pushRoute(const DriftUploadDetailRoute()),
diff --git a/mobile/lib/pages/backup/drift_backup_album_selection.page.dart b/mobile/lib/pages/backup/drift_backup_album_selection.page.dart
index 368341f24a..cae9f0a408 100644
--- a/mobile/lib/pages/backup/drift_backup_album_selection.page.dart
+++ b/mobile/lib/pages/backup/drift_backup_album_selection.page.dart
@@ -18,6 +18,7 @@ import 'package:immich_mobile/providers/user.provider.dart';
import 'package:immich_mobile/services/app_settings.service.dart';
import 'package:immich_mobile/widgets/backup/drift_album_info_list_tile.dart';
import 'package:immich_mobile/widgets/common/search_field.dart';
+import 'package:logging/logging.dart';
@RoutePage()
class DriftBackupAlbumSelectionPage extends ConsumerStatefulWidget {
@@ -112,7 +113,17 @@ class _DriftBackupAlbumSelectionPageState extends ConsumerState backgroundSync.hashAssets()));
if (isBackupEnabled) {
- unawaited(backupNotifier.cancel().whenComplete(() => backupNotifier.startBackup(user.id)));
+ unawaited(
+ backupNotifier.cancel().whenComplete(
+ () => backgroundSync.syncRemote().then((success) {
+ if (success) {
+ return backupNotifier.startBackup(user.id);
+ } else {
+ Logger('DriftBackupAlbumSelectionPage').warning('Background sync failed, not starting backup');
+ }
+ }),
+ ),
+ );
}
}
diff --git a/mobile/lib/pages/backup/drift_backup_options.page.dart b/mobile/lib/pages/backup/drift_backup_options.page.dart
index 92f911ae1e..1e5c326478 100644
--- a/mobile/lib/pages/backup/drift_backup_options.page.dart
+++ b/mobile/lib/pages/backup/drift_backup_options.page.dart
@@ -1,3 +1,5 @@
+import 'dart:async';
+
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
@@ -5,10 +7,12 @@ import 'package:immich_mobile/domain/models/store.model.dart';
import 'package:immich_mobile/entities/store.entity.dart';
import 'package:immich_mobile/extensions/translate_extensions.dart';
import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/providers/background_sync.provider.dart';
import 'package:immich_mobile/providers/backup/drift_backup.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
import 'package:immich_mobile/services/app_settings.service.dart';
import 'package:immich_mobile/widgets/settings/backup_settings/drift_backup_settings.dart';
+import 'package:logging/logging.dart';
@RoutePage()
class DriftBackupOptionsPage extends ConsumerWidget {
@@ -54,9 +58,18 @@ class DriftBackupOptionsPage extends ConsumerWidget {
);
final backupNotifier = ref.read(driftBackupProvider.notifier);
- backupNotifier.cancel().then((_) {
- backupNotifier.startBackup(currentUser.id);
- });
+ final backgroundSync = ref.read(backgroundSyncProvider);
+ unawaited(
+ backupNotifier.cancel().whenComplete(
+ () => backgroundSync.syncRemote().then((success) {
+ if (success) {
+ return backupNotifier.startBackup(currentUser.id);
+ } else {
+ Logger('DriftBackupOptionsPage').warning('Background sync failed, not starting backup');
+ }
+ }),
+ ),
+ );
}
},
child: Scaffold(
diff --git a/mobile/lib/pages/backup/drift_upload_detail.page.dart b/mobile/lib/pages/backup/drift_upload_detail.page.dart
index bececddc7f..80956b708f 100644
--- a/mobile/lib/pages/backup/drift_upload_detail.page.dart
+++ b/mobile/lib/pages/backup/drift_upload_detail.page.dart
@@ -1,12 +1,12 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/extensions/translate_extensions.dart';
-import 'package:immich_mobile/providers/backup/drift_backup.provider.dart';
-import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
-import 'package:immich_mobile/providers/infrastructure/asset.provider.dart';
import 'package:immich_mobile/presentation/widgets/images/thumbnail.widget.dart';
+import 'package:immich_mobile/providers/backup/drift_backup.provider.dart';
+import 'package:immich_mobile/providers/infrastructure/asset.provider.dart';
import 'package:immich_mobile/utils/bytes_units.dart';
import 'package:path/path.dart' as path;
@@ -82,6 +82,7 @@ class DriftUploadDetailPage extends ConsumerWidget {
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
+ spacing: 4,
children: [
Text(
path.basename(item.filename),
@@ -89,7 +90,13 @@ class DriftUploadDetailPage extends ConsumerWidget {
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
- const SizedBox(height: 4),
+ if (item.error != null)
+ Text(
+ item.error!,
+ style: context.textTheme.bodySmall?.copyWith(
+ color: context.colorScheme.onErrorContainer.withValues(alpha: 0.6),
+ ),
+ ),
Text(
'Tap for more details',
style: context.textTheme.bodySmall?.copyWith(
diff --git a/mobile/lib/pages/common/settings.page.dart b/mobile/lib/pages/common/settings.page.dart
index b23c420971..0fe2ccec09 100644
--- a/mobile/lib/pages/common/settings.page.dart
+++ b/mobile/lib/pages/common/settings.page.dart
@@ -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,
);
}
}
diff --git a/mobile/lib/pages/common/splash_screen.page.dart b/mobile/lib/pages/common/splash_screen.page.dart
index aa4d142381..29b3dcd3be 100644
--- a/mobile/lib/pages/common/splash_screen.page.dart
+++ b/mobile/lib/pages/common/splash_screen.page.dart
@@ -62,14 +62,23 @@ class SplashScreenPageState extends ConsumerState {
infoProvider.getServerInfo();
if (Store.isBetaTimelineEnabled) {
- await Future.wait([backgroundManager.syncLocal(), backgroundManager.syncRemote()]);
+ bool syncSuccess = false;
await Future.wait([
- backgroundManager.hashAssets().then((_) {
- _resumeBackup(backupProvider);
- }),
- _resumeBackup(backupProvider),
+ backgroundManager.syncLocal(),
+ backgroundManager.syncRemote().then((success) => syncSuccess = success),
]);
+ if (syncSuccess) {
+ await Future.wait([
+ backgroundManager.hashAssets().then((_) {
+ _resumeBackup(backupProvider);
+ }),
+ _resumeBackup(backupProvider),
+ ]);
+ } else {
+ await backgroundManager.hashAssets();
+ }
+
if (Store.get(StoreKey.syncAlbums, false)) {
await backgroundManager.syncLinkedAlbum();
}
diff --git a/mobile/lib/presentation/widgets/action_buttons/unstack_action_button.widget.dart b/mobile/lib/presentation/widgets/action_buttons/unstack_action_button.widget.dart
index ecc8a39c74..a07803ace5 100644
--- a/mobile/lib/presentation/widgets/action_buttons/unstack_action_button.widget.dart
+++ b/mobile/lib/presentation/widgets/action_buttons/unstack_action_button.widget.dart
@@ -36,7 +36,7 @@ class UnStackActionButton extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
return BaseActionButton(
- iconData: Icons.filter_none_rounded,
+ iconData: Icons.layers_clear_outlined,
label: "unstack".t(context: context),
onPressed: () => _onTap(context, ref),
);
diff --git a/mobile/lib/presentation/widgets/album/album_selector.widget.dart b/mobile/lib/presentation/widgets/album/album_selector.widget.dart
index f79b4bd7b1..bffe3d3941 100644
--- a/mobile/lib/presentation/widgets/album/album_selector.widget.dart
+++ b/mobile/lib/presentation/widgets/album/album_selector.widget.dart
@@ -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];
diff --git a/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet.widget.dart
index 7431290ad8..39f8e5ae69 100644
--- a/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet.widget.dart
+++ b/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet.widget.dart
@@ -51,6 +51,7 @@ class AssetDetailBottomSheet extends ConsumerWidget {
isArchived: isArchived,
isTrashEnabled: isTrashEnable,
isInLockedView: isInLockedView,
+ isStacked: asset.hasRemote && (asset as RemoteAsset).stackId != null,
currentAlbum: currentAlbum,
advancedTroubleshooting: advancedTroubleshooting,
source: ActionSource.viewer,
@@ -185,6 +186,7 @@ class _AssetDetailBottomSheet extends ConsumerWidget {
color: context.textTheme.bodyMedium?.color?.withAlpha(155),
),
),
+ const SizedBox(height: 64),
],
);
}
diff --git a/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet/sheet_people_details.widget.dart b/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet/sheet_people_details.widget.dart
index fee34bca1b..64f22eca92 100644
--- a/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet/sheet_people_details.widget.dart
+++ b/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet/sheet_people_details.widget.dart
@@ -11,8 +11,8 @@ import 'package:immich_mobile/providers/infrastructure/people.provider.dart';
import 'package:immich_mobile/providers/routes.provider.dart';
import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/services/api.service.dart';
-import 'package:immich_mobile/utils/people.utils.dart';
import 'package:immich_mobile/utils/image_url_builder.dart';
+import 'package:immich_mobile/utils/people.utils.dart';
class SheetPeopleDetails extends ConsumerStatefulWidget {
const SheetPeopleDetails({super.key});
@@ -158,11 +158,14 @@ class _PeopleAvatar extends StatelessWidget {
maxLines: 1,
),
if (person.birthDate != null)
- Text(
- formatAge(person.birthDate!, assetFileCreatedAt),
- textAlign: TextAlign.center,
- style: context.textTheme.bodyMedium?.copyWith(
- color: context.textTheme.bodyMedium?.color?.withAlpha(175),
+ FittedBox(
+ fit: BoxFit.scaleDown,
+ child: Text(
+ formatAge(person.birthDate!, assetFileCreatedAt),
+ textAlign: TextAlign.center,
+ style: context.textTheme.bodyMedium?.copyWith(
+ color: context.textTheme.bodyMedium?.color?.withAlpha(175),
+ ),
),
),
],
diff --git a/mobile/lib/presentation/widgets/asset_viewer/top_app_bar.widget.dart b/mobile/lib/presentation/widgets/asset_viewer/top_app_bar.widget.dart
index 0159e04c4e..10c9821eb0 100644
--- a/mobile/lib/presentation/widgets/asset_viewer/top_app_bar.widget.dart
+++ b/mobile/lib/presentation/widgets/asset_viewer/top_app_bar.widget.dart
@@ -57,7 +57,7 @@ class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
final isCasting = ref.watch(castProvider.select((c) => c.isCasting));
final actions = [
- if (asset.hasRemote) const DownloadActionButton(source: ActionSource.viewer, menuItem: true),
+ if (asset.isRemoteOnly) const DownloadActionButton(source: ActionSource.viewer, menuItem: true),
if (isCasting || (asset.hasRemote)) const CastActionButton(menuItem: true),
if (album != null && album.isActivityEnabled && album.isShared)
IconButton(
diff --git a/mobile/lib/presentation/widgets/backup/backup_toggle_button.widget.dart b/mobile/lib/presentation/widgets/backup/backup_toggle_button.widget.dart
index a74c169224..8d374f74ff 100644
--- a/mobile/lib/presentation/widgets/backup/backup_toggle_button.widget.dart
+++ b/mobile/lib/presentation/widgets/backup/backup_toggle_button.widget.dart
@@ -65,7 +65,9 @@ class BackupToggleButtonState extends ConsumerState with Sin
final uploadTasks = ref.watch(driftBackupProvider.select((state) => state.uploadItems));
- final isUploading = uploadTasks.isNotEmpty;
+ final isSyncing = ref.watch(driftBackupProvider.select((state) => state.isSyncing));
+
+ final isProcessing = uploadTasks.isNotEmpty || isSyncing;
return AnimatedBuilder(
animation: _animationController,
@@ -129,7 +131,7 @@ class BackupToggleButtonState extends ConsumerState with Sin
],
),
),
- child: isUploading
+ child: isProcessing
? const SizedBox(width: 24, height: 24, child: CircularProgressIndicator(strokeWidth: 2))
: Icon(Icons.cloud_upload_outlined, color: context.primaryColor, size: 24),
),
diff --git a/mobile/lib/presentation/widgets/bottom_sheet/archive_bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/bottom_sheet/archive_bottom_sheet.widget.dart
index 558df4e496..f40e189e18 100644
--- a/mobile/lib/presentation/widgets/bottom_sheet/archive_bottom_sheet.widget.dart
+++ b/mobile/lib/presentation/widgets/bottom_sheet/archive_bottom_sheet.widget.dart
@@ -13,6 +13,7 @@ import 'package:immich_mobile/presentation/widgets/action_buttons/share_link_act
import 'package:immich_mobile/presentation/widgets/action_buttons/stack_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/trash_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/unarchive_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/bottom_sheet/base_bottom_sheet.widget.dart';
import 'package:immich_mobile/providers/server_info.provider.dart';
@@ -44,6 +45,7 @@ class ArchiveBottomSheet extends ConsumerWidget {
const EditLocationActionButton(source: ActionSource.timeline),
const MoveToLockFolderActionButton(source: ActionSource.timeline),
if (multiselect.selectedAssets.length > 1) const StackActionButton(source: ActionSource.timeline),
+ if (multiselect.hasStacked) const UnStackActionButton(source: ActionSource.timeline),
],
if (multiselect.hasLocal) ...[
const DeleteLocalActionButton(source: ActionSource.timeline),
diff --git a/mobile/lib/presentation/widgets/bottom_sheet/favorite_bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/bottom_sheet/favorite_bottom_sheet.widget.dart
index a162dbbfb2..b2502127d4 100644
--- a/mobile/lib/presentation/widgets/bottom_sheet/favorite_bottom_sheet.widget.dart
+++ b/mobile/lib/presentation/widgets/bottom_sheet/favorite_bottom_sheet.widget.dart
@@ -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';
@@ -13,10 +16,14 @@ import 'package:immich_mobile/presentation/widgets/action_buttons/share_link_act
import 'package:immich_mobile/presentation/widgets/action_buttons/stack_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/trash_action_button.widget.dart';
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});
@@ -26,9 +33,42 @@ class FavoriteBottomSheet extends ConsumerWidget {
final multiselect = ref.watch(multiSelectProvider);
final isTrashEnable = ref.watch(serverInfoProvider.select((state) => state.serverFeatures.trash));
+ Future addAssetsToAlbum(RemoteAlbum album) async {
+ final selectedAssets = multiselect.selectedAssets;
+ if (selectedAssets.isEmpty) {
+ return;
+ }
+
+ final remoteAssets = selectedAssets.whereType();
+ 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),
@@ -44,12 +84,16 @@ class FavoriteBottomSheet extends ConsumerWidget {
const EditLocationActionButton(source: ActionSource.timeline),
const MoveToLockFolderActionButton(source: ActionSource.timeline),
if (multiselect.selectedAssets.length > 1) const StackActionButton(source: ActionSource.timeline),
+ if (multiselect.hasStacked) const UnStackActionButton(source: ActionSource.timeline),
],
if (multiselect.hasLocal) ...[
const DeleteLocalActionButton(source: ActionSource.timeline),
const UploadActionButton(source: ActionSource.timeline),
],
],
+ slivers: multiselect.hasRemote
+ ? [const AddToAlbumHeader(), AlbumSelector(onAlbumSelected: addAssetsToAlbum)]
+ : [],
);
}
}
diff --git a/mobile/lib/presentation/widgets/bottom_sheet/general_bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/bottom_sheet/general_bottom_sheet.widget.dart
index e50ed47368..9436707c84 100644
--- a/mobile/lib/presentation/widgets/bottom_sheet/general_bottom_sheet.widget.dart
+++ b/mobile/lib/presentation/widgets/bottom_sheet/general_bottom_sheet.widget.dart
@@ -20,6 +20,7 @@ import 'package:immich_mobile/presentation/widgets/action_buttons/share_action_b
import 'package:immich_mobile/presentation/widgets/action_buttons/share_link_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/stack_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/trash_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';
@@ -117,6 +118,7 @@ class _GeneralBottomSheetState extends ConsumerState {
const EditLocationActionButton(source: ActionSource.timeline),
const MoveToLockFolderActionButton(source: ActionSource.timeline),
if (multiselect.selectedAssets.length > 1) const StackActionButton(source: ActionSource.timeline),
+ if (multiselect.hasStacked) const UnStackActionButton(source: ActionSource.timeline),
const DeleteActionButton(source: ActionSource.timeline),
],
if (multiselect.hasLocal || multiselect.hasMerged) const DeleteLocalActionButton(source: ActionSource.timeline),
diff --git a/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart
index dc5fdbe78d..ac3772a02b 100644
--- a/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart
+++ b/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart
@@ -5,6 +5,7 @@ import 'package:immich_mobile/presentation/widgets/bottom_sheet/base_bottom_shee
import 'package:immich_mobile/presentation/widgets/map/map.state.dart';
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
class MapBottomSheet extends StatelessWidget {
const MapBottomSheet({super.key});
@@ -32,8 +33,13 @@ class _ScopedMapTimeline extends StatelessWidget {
return ProviderScope(
overrides: [
timelineServiceProvider.overrideWith((ref) {
+ final user = ref.watch(currentUserProvider);
+ if (user == null) {
+ throw Exception('User must be logged in to access archive');
+ }
+
final bounds = ref.watch(mapStateProvider).bounds;
- final timelineService = ref.watch(timelineFactoryProvider).map(bounds);
+ final timelineService = ref.watch(timelineFactoryProvider).map(user.id, bounds);
ref.onDispose(timelineService.dispose);
return timelineService;
}),
diff --git a/mobile/lib/presentation/widgets/bottom_sheet/remote_album_bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/bottom_sheet/remote_album_bottom_sheet.widget.dart
index 1dcc52f349..0ab419a56b 100644
--- a/mobile/lib/presentation/widgets/bottom_sheet/remote_album_bottom_sheet.widget.dart
+++ b/mobile/lib/presentation/widgets/bottom_sheet/remote_album_bottom_sheet.widget.dart
@@ -17,6 +17,7 @@ import 'package:immich_mobile/presentation/widgets/action_buttons/share_action_b
import 'package:immich_mobile/presentation/widgets/action_buttons/share_link_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/stack_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/trash_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';
@@ -102,6 +103,7 @@ class _RemoteAlbumBottomSheetState extends ConsumerState
const EditLocationActionButton(source: ActionSource.timeline),
const MoveToLockFolderActionButton(source: ActionSource.timeline),
if (multiselect.selectedAssets.length > 1) const StackActionButton(source: ActionSource.timeline),
+ if (multiselect.hasStacked) const UnStackActionButton(source: ActionSource.timeline),
],
if (multiselect.hasLocal) ...[
const DeleteLocalActionButton(source: ActionSource.timeline),
diff --git a/mobile/lib/presentation/widgets/images/image_provider.dart b/mobile/lib/presentation/widgets/images/image_provider.dart
index ab5ead5ca5..810340aeb8 100644
--- a/mobile/lib/presentation/widgets/images/image_provider.dart
+++ b/mobile/lib/presentation/widgets/images/image_provider.dart
@@ -123,28 +123,14 @@ ImageProvider getFullImageProvider(BaseAsset asset, {Size size = const Size(1080
return provider;
}
-ImageProvider getThumbnailImageProvider({BaseAsset? asset, String? remoteId, Size size = kThumbnailResolution}) {
- assert(asset != null || remoteId != null, 'Either asset or remoteId must be provided');
-
- if (remoteId != null) {
- return RemoteThumbProvider(assetId: remoteId);
- }
-
- if (_shouldUseLocalAsset(asset!)) {
+ImageProvider? getThumbnailImageProvider(BaseAsset asset, {Size size = kThumbnailResolution}) {
+ if (_shouldUseLocalAsset(asset)) {
final id = asset is LocalAsset ? asset.id : (asset as RemoteAsset).localId!;
return LocalThumbProvider(id: id, size: size, assetType: asset.type);
}
- final String assetId;
- if (asset is LocalAsset && asset.hasRemote) {
- assetId = asset.remoteId!;
- } else if (asset is RemoteAsset) {
- assetId = asset.id;
- } else {
- throw ArgumentError("Unsupported asset type: ${asset.runtimeType}");
- }
-
- return RemoteThumbProvider(assetId: assetId);
+ final assetId = asset is RemoteAsset ? asset.id : (asset as LocalAsset).remoteId;
+ return assetId != null ? RemoteThumbProvider(assetId: assetId) : null;
}
bool _shouldUseLocalAsset(BaseAsset asset) =>
diff --git a/mobile/lib/presentation/widgets/images/thumbnail.widget.dart b/mobile/lib/presentation/widgets/images/thumbnail.widget.dart
index 3832029702..92b1bb2544 100644
--- a/mobile/lib/presentation/widgets/images/thumbnail.widget.dart
+++ b/mobile/lib/presentation/widgets/images/thumbnail.widget.dart
@@ -5,7 +5,6 @@ import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/extensions/theme_extensions.dart';
import 'package:immich_mobile/presentation/widgets/images/image_provider.dart';
-import 'package:immich_mobile/presentation/widgets/images/local_image_provider.dart';
import 'package:immich_mobile/presentation/widgets/images/remote_image_provider.dart';
import 'package:immich_mobile/presentation/widgets/images/thumb_hash_provider.dart';
import 'package:immich_mobile/presentation/widgets/timeline/constants.dart';
@@ -39,14 +38,7 @@ class Thumbnail extends StatefulWidget {
),
_ => null,
},
- imageProvider = switch (asset) {
- RemoteAsset() =>
- asset.localId == null
- ? RemoteThumbProvider(assetId: asset.id)
- : LocalThumbProvider(id: asset.localId!, size: size, assetType: asset.type),
- LocalAsset() => LocalThumbProvider(id: asset.id, size: size, assetType: asset.type),
- _ => null,
- };
+ imageProvider = asset == null ? null : getThumbnailImageProvider(asset, size: size);
@override
State createState() => _ThumbnailState();
diff --git a/mobile/lib/presentation/widgets/images/thumbnail_tile.widget.dart b/mobile/lib/presentation/widgets/images/thumbnail_tile.widget.dart
index cfcb7a8985..5359391261 100644
--- a/mobile/lib/presentation/widgets/images/thumbnail_tile.widget.dart
+++ b/mobile/lib/presentation/widgets/images/thumbnail_tile.widget.dart
@@ -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;
@@ -54,10 +54,8 @@ class ThumbnailTile extends ConsumerWidget {
)
: const BoxDecoration();
- final hasStack = asset is RemoteAsset && asset.stackId != null;
-
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: [
@@ -77,21 +75,10 @@ class ThumbnailTile extends ConsumerWidget {
child: Thumbnail.fromAsset(asset: asset, size: size),
),
),
- if (hasStack)
+ if (asset != null)
Align(
alignment: Alignment.topRight,
- child: Padding(
- padding: EdgeInsets.only(right: 10.0, top: asset.isVideo ? 24.0 : 6.0),
- child: const _TileOverlayIcon(Icons.burst_mode_rounded),
- ),
- ),
- if (asset != null && asset.isVideo)
- Align(
- alignment: Alignment.topRight,
- child: Padding(
- padding: const EdgeInsets.only(right: 10.0, top: 6.0),
- child: _VideoIndicator(asset.duration),
- ),
+ child: _AssetTypeIcons(asset: asset),
),
if (storageIndicator && asset != null)
switch (asset.storage) {
@@ -214,3 +201,34 @@ class _TileOverlayIcon extends StatelessWidget {
);
}
}
+
+class _AssetTypeIcons extends StatelessWidget {
+ final BaseAsset asset;
+
+ const _AssetTypeIcons({required this.asset});
+
+ @override
+ Widget build(BuildContext context) {
+ final hasStack = asset is RemoteAsset && (asset as RemoteAsset).stackId != null;
+ final isLivePhoto = asset is RemoteAsset && asset.livePhotoVideoId != null;
+
+ return Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.end,
+ children: [
+ if (asset.isVideo)
+ Padding(padding: const EdgeInsets.only(right: 10.0, top: 6.0), child: _VideoIndicator(asset.duration)),
+ if (hasStack)
+ const Padding(
+ padding: EdgeInsets.only(right: 10.0, top: 6.0),
+ child: _TileOverlayIcon(Icons.burst_mode_rounded),
+ ),
+ if (isLivePhoto)
+ const Padding(
+ padding: EdgeInsets.only(right: 10.0, top: 6.0),
+ child: _TileOverlayIcon(Icons.motion_photos_on_rounded),
+ ),
+ ],
+ );
+ }
+}
diff --git a/mobile/lib/presentation/widgets/map/map.widget.dart b/mobile/lib/presentation/widgets/map/map.widget.dart
index 1d285f0441..c1d5bf6464 100644
--- a/mobile/lib/presentation/widgets/map/map.widget.dart
+++ b/mobile/lib/presentation/widgets/map/map.widget.dart
@@ -185,6 +185,8 @@ class _Map extends StatelessWidget {
initialCameraPosition: initialLocation == null
? const CameraPosition(target: LatLng(0, 0), zoom: 0)
: CameraPosition(target: initialLocation, zoom: MapUtils.mapZoomToAssetLevel),
+ compassEnabled: false,
+ rotateGesturesEnabled: false,
styleString: style,
onMapCreated: onMapCreated,
onStyleLoadedCallback: onMapReady,
diff --git a/mobile/lib/presentation/widgets/timeline/timeline.state.dart b/mobile/lib/presentation/widgets/timeline/timeline.state.dart
index b3aec23f7f..1e1d4130f7 100644
--- a/mobile/lib/presentation/widgets/timeline/timeline.state.dart
+++ b/mobile/lib/presentation/widgets/timeline/timeline.state.dart
@@ -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,
});
diff --git a/mobile/lib/presentation/widgets/timeline/timeline.widget.dart b/mobile/lib/presentation/widgets/timeline/timeline.widget.dart
index 83e679b8c1..e8832173a1 100644
--- a/mobile/lib/presentation/widgets/timeline/timeline.widget.dart
+++ b/mobile/lib/presentation/widgets/timeline/timeline.widget.dart
@@ -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,
diff --git a/mobile/lib/providers/app_life_cycle.provider.dart b/mobile/lib/providers/app_life_cycle.provider.dart
index ec6495440a..3b51874ab5 100644
--- a/mobile/lib/providers/app_life_cycle.provider.dart
+++ b/mobile/lib/providers/app_life_cycle.provider.dart
@@ -148,17 +148,21 @@ class AppLifeCycleNotifier extends StateNotifier {
final isAlbumLinkedSyncEnable = _ref.read(appSettingsServiceProvider).getSetting(AppSettingsEnum.syncAlbums);
try {
+ bool syncSuccess = false;
await Future.wait([
_safeRun(backgroundManager.syncLocal(), "syncLocal"),
- _safeRun(backgroundManager.syncRemote(), "syncRemote"),
- ]);
-
- await Future.wait([
- _safeRun(backgroundManager.hashAssets(), "hashAssets").then((_) {
- _resumeBackup();
- }),
- _resumeBackup(),
+ _safeRun(backgroundManager.syncRemote().then((success) => syncSuccess = success), "syncRemote"),
]);
+ if (syncSuccess) {
+ await Future.wait([
+ _safeRun(backgroundManager.hashAssets(), "hashAssets").then((_) {
+ _resumeBackup();
+ }),
+ _resumeBackup(),
+ ]);
+ } else {
+ await _safeRun(backgroundManager.hashAssets(), "hashAssets");
+ }
if (isAlbumLinkedSyncEnable) {
await _safeRun(backgroundManager.syncLinkedAlbum(), "syncLinkedAlbum");
diff --git a/mobile/lib/providers/background_sync.provider.dart b/mobile/lib/providers/background_sync.provider.dart
index e6e83b64df..a61cd93022 100644
--- a/mobile/lib/providers/background_sync.provider.dart
+++ b/mobile/lib/providers/background_sync.provider.dart
@@ -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((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,
diff --git a/mobile/lib/providers/backup/drift_backup.provider.dart b/mobile/lib/providers/backup/drift_backup.provider.dart
index fb6a94b0cb..f52fc654f2 100644
--- a/mobile/lib/providers/backup/drift_backup.provider.dart
+++ b/mobile/lib/providers/backup/drift_backup.provider.dart
@@ -7,6 +7,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/constants.dart';
import 'package:immich_mobile/domain/models/album/local_album.model.dart';
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
+import 'package:immich_mobile/extensions/string_extensions.dart';
import 'package:immich_mobile/infrastructure/repositories/backup.repository.dart';
import 'package:immich_mobile/providers/infrastructure/asset.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
@@ -35,6 +36,7 @@ class DriftUploadStatus {
final int fileSize;
final String networkSpeedAsString;
final bool? isFailed;
+ final String? error;
const DriftUploadStatus({
required this.taskId,
@@ -43,6 +45,7 @@ class DriftUploadStatus {
required this.fileSize,
required this.networkSpeedAsString,
this.isFailed,
+ this.error,
});
DriftUploadStatus copyWith({
@@ -52,6 +55,7 @@ class DriftUploadStatus {
int? fileSize,
String? networkSpeedAsString,
bool? isFailed,
+ String? error,
}) {
return DriftUploadStatus(
taskId: taskId ?? this.taskId,
@@ -60,12 +64,13 @@ class DriftUploadStatus {
fileSize: fileSize ?? this.fileSize,
networkSpeedAsString: networkSpeedAsString ?? this.networkSpeedAsString,
isFailed: isFailed ?? this.isFailed,
+ error: error ?? this.error,
);
}
@override
String toString() {
- return 'DriftUploadStatus(taskId: $taskId, filename: $filename, progress: $progress, fileSize: $fileSize, networkSpeedAsString: $networkSpeedAsString, isFailed: $isFailed)';
+ return 'DriftUploadStatus(taskId: $taskId, filename: $filename, progress: $progress, fileSize: $fileSize, networkSpeedAsString: $networkSpeedAsString, isFailed: $isFailed, error: $error)';
}
@override
@@ -77,7 +82,8 @@ class DriftUploadStatus {
other.progress == progress &&
other.fileSize == fileSize &&
other.networkSpeedAsString == networkSpeedAsString &&
- other.isFailed == isFailed;
+ other.isFailed == isFailed &&
+ other.error == error;
}
@override
@@ -87,10 +93,13 @@ class DriftUploadStatus {
progress.hashCode ^
fileSize.hashCode ^
networkSpeedAsString.hashCode ^
- isFailed.hashCode;
+ isFailed.hashCode ^
+ error.hashCode;
}
}
+enum BackupError { none, syncFailed }
+
class DriftBackupState {
final int totalCount;
final int backupCount;
@@ -100,7 +109,9 @@ class DriftBackupState {
final int enqueueCount;
final int enqueueTotalCount;
+ final bool isSyncing;
final bool isCanceling;
+ final BackupError error;
final Map uploadItems;
@@ -112,7 +123,9 @@ class DriftBackupState {
required this.enqueueCount,
required this.enqueueTotalCount,
required this.isCanceling,
+ required this.isSyncing,
required this.uploadItems,
+ this.error = BackupError.none,
});
DriftBackupState copyWith({
@@ -123,7 +136,9 @@ class DriftBackupState {
int? enqueueCount,
int? enqueueTotalCount,
bool? isCanceling,
+ bool? isSyncing,
Map? uploadItems,
+ BackupError? error,
}) {
return DriftBackupState(
totalCount: totalCount ?? this.totalCount,
@@ -133,13 +148,15 @@ class DriftBackupState {
enqueueCount: enqueueCount ?? this.enqueueCount,
enqueueTotalCount: enqueueTotalCount ?? this.enqueueTotalCount,
isCanceling: isCanceling ?? this.isCanceling,
+ isSyncing: isSyncing ?? this.isSyncing,
uploadItems: uploadItems ?? this.uploadItems,
+ error: error ?? this.error,
);
}
@override
String toString() {
- return 'DriftBackupState(totalCount: $totalCount, backupCount: $backupCount, remainderCount: $remainderCount, processingCount: $processingCount, enqueueCount: $enqueueCount, enqueueTotalCount: $enqueueTotalCount, isCanceling: $isCanceling, uploadItems: $uploadItems)';
+ return 'DriftBackupState(totalCount: $totalCount, backupCount: $backupCount, remainderCount: $remainderCount, processingCount: $processingCount, enqueueCount: $enqueueCount, enqueueTotalCount: $enqueueTotalCount, isCanceling: $isCanceling, isSyncing: $isSyncing, uploadItems: $uploadItems, error: $error)';
}
@override
@@ -154,7 +171,9 @@ class DriftBackupState {
other.enqueueCount == enqueueCount &&
other.enqueueTotalCount == enqueueTotalCount &&
other.isCanceling == isCanceling &&
- mapEquals(other.uploadItems, uploadItems);
+ other.isSyncing == isSyncing &&
+ mapEquals(other.uploadItems, uploadItems) &&
+ other.error == error;
}
@override
@@ -166,7 +185,9 @@ class DriftBackupState {
enqueueCount.hashCode ^
enqueueTotalCount.hashCode ^
isCanceling.hashCode ^
- uploadItems.hashCode;
+ isSyncing.hashCode ^
+ uploadItems.hashCode ^
+ error.hashCode;
}
}
@@ -185,7 +206,9 @@ class DriftBackupNotifier extends StateNotifier {
enqueueCount: 0,
enqueueTotalCount: 0,
isCanceling: false,
+ isSyncing: false,
uploadItems: {},
+ error: BackupError.none,
),
) {
{
@@ -238,7 +261,23 @@ class DriftBackupNotifier extends StateNotifier {
return;
}
- state = state.copyWith(uploadItems: {...state.uploadItems, taskId: currentItem.copyWith(isFailed: true)});
+ String? error;
+ final exception = update.exception;
+ if (exception != null && exception is TaskHttpException) {
+ final message = tryJsonDecode(exception.description)?['message'] as String?;
+ if (message != null) {
+ final responseCode = exception.httpResponseCode;
+ error = "${exception.exceptionType}, response code $responseCode: $message";
+ }
+ }
+ error ??= update.exception?.toString();
+
+ state = state.copyWith(
+ uploadItems: {
+ ...state.uploadItems,
+ taskId: currentItem.copyWith(isFailed: true, error: error),
+ },
+ );
_logger.fine("Upload failed for taskId: $taskId, exception: ${update.exception}");
break;
@@ -303,7 +342,16 @@ class DriftBackupNotifier extends StateNotifier {
);
}
+ void updateError(BackupError error) async {
+ state = state.copyWith(error: error);
+ }
+
+ void updateSyncing(bool isSyncing) async {
+ state = state.copyWith(isSyncing: isSyncing);
+ }
+
Future startBackup(String userId) {
+ state = state.copyWith(error: BackupError.none);
return _uploadService.startBackup(userId, _updateEnqueueCount);
}
@@ -313,7 +361,7 @@ class DriftBackupNotifier extends StateNotifier {
Future cancel() async {
dPrint(() => "Canceling backup tasks...");
- state = state.copyWith(enqueueCount: 0, enqueueTotalCount: 0, isCanceling: true);
+ state = state.copyWith(enqueueCount: 0, enqueueTotalCount: 0, isCanceling: true, error: BackupError.none);
final activeTaskCount = await _uploadService.cancelBackup();
@@ -329,6 +377,7 @@ class DriftBackupNotifier extends StateNotifier {
Future handleBackupResume(String userId) async {
_logger.info("Resuming backup tasks...");
+ state = state.copyWith(error: BackupError.none);
final tasks = await _uploadService.getActiveTasks(kBackupGroup);
_logger.info("Found ${tasks.length} tasks");
@@ -356,7 +405,7 @@ final driftBackupCandidateProvider = FutureProvider.autoDispose
return [];
}
- return ref.read(backupRepositoryProvider).getCandidates(user.id);
+ return ref.read(backupRepositoryProvider).getCandidates(user.id, onlyHashed: false);
});
final driftCandidateBackupAlbumInfoProvider = FutureProvider.autoDispose.family, String>((
diff --git a/mobile/lib/providers/infrastructure/action.provider.dart b/mobile/lib/providers/infrastructure/action.provider.dart
index 9a343aa358..77ac6595a7 100644
--- a/mobile/lib/providers/infrastructure/action.provider.dart
+++ b/mobile/lib/providers/infrastructure/action.provider.dart
@@ -3,7 +3,10 @@ import 'package:background_downloader/background_downloader.dart';
import 'package:flutter/material.dart';
import 'package:immich_mobile/constants/enums.dart';
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
+import 'package:immich_mobile/domain/services/asset.service.dart';
import 'package:immich_mobile/models/download/livephotos_medatada.model.dart';
+import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_viewer.state.dart';
+import 'package:immich_mobile/providers/infrastructure/asset.provider.dart';
import 'package:immich_mobile/providers/infrastructure/asset_viewer/current_asset.provider.dart';
import 'package:immich_mobile/providers/timeline/multiselect.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
@@ -36,6 +39,7 @@ class ActionNotifier extends Notifier {
late ActionService _service;
late UploadService _uploadService;
late DownloadService _downloadService;
+ late AssetService _assetService;
ActionNotifier() : super();
@@ -43,6 +47,7 @@ class ActionNotifier extends Notifier {
void build() {
_uploadService = ref.watch(uploadServiceProvider);
_service = ref.watch(actionServiceProvider);
+ _assetService = ref.watch(assetServiceProvider);
_downloadService = ref.watch(downloadServiceProvider);
_downloadService.onImageDownloadStatus = _downloadImageCallback;
_downloadService.onVideoDownloadStatus = _downloadVideoCallback;
@@ -335,6 +340,14 @@ class ActionNotifier extends Notifier {
final assets = _getOwnedRemoteAssetsForSource(source);
try {
await _service.unStack(assets.map((e) => e.stackId).nonNulls.toList());
+ if (source == ActionSource.viewer) {
+ final updatedParent = await _assetService.getRemoteAsset(assets.first.id);
+ if (updatedParent != null) {
+ ref.read(currentAssetNotifier.notifier).setAsset(updatedParent);
+ ref.read(assetViewerProvider.notifier).setAsset(updatedParent);
+ }
+ }
+
return ActionResult(count: assets.length, success: true);
} catch (error, stack) {
_logger.severe('Failed to unstack assets', error, stack);
diff --git a/mobile/lib/providers/infrastructure/asset.provider.dart b/mobile/lib/providers/infrastructure/asset.provider.dart
index 102e6aa60c..4b51ce33bd 100644
--- a/mobile/lib/providers/infrastructure/asset.provider.dart
+++ b/mobile/lib/providers/infrastructure/asset.provider.dart
@@ -3,6 +3,7 @@ import 'package:immich_mobile/domain/services/asset.service.dart';
import 'package:immich_mobile/infrastructure/repositories/local_asset.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/remote_asset.repository.dart';
import 'package:immich_mobile/providers/infrastructure/db.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
final localAssetRepository = Provider(
(ref) => DriftLocalAssetRepository(ref.watch(driftProvider)),
@@ -19,9 +20,13 @@ final assetServiceProvider = Provider(
),
);
-final placesProvider = FutureProvider>(
- (ref) => AssetService(
- remoteAssetRepository: ref.watch(remoteAssetRepositoryProvider),
- localAssetRepository: ref.watch(localAssetRepository),
- ).getPlaces(),
-);
+final placesProvider = FutureProvider>((ref) {
+ final assetService = ref.watch(assetServiceProvider);
+ final auth = ref.watch(currentUserProvider);
+
+ if (auth == null) {
+ return Future.value(const []);
+ }
+
+ return assetService.getPlaces(auth.id);
+});
diff --git a/mobile/lib/providers/timeline/multiselect.provider.dart b/mobile/lib/providers/timeline/multiselect.provider.dart
index e225e0c98d..6949413cd9 100644
--- a/mobile/lib/providers/timeline/multiselect.provider.dart
+++ b/mobile/lib/providers/timeline/multiselect.provider.dart
@@ -28,6 +28,8 @@ class MultiSelectState {
bool get hasRemote =>
selectedAssets.any((asset) => asset.storage == AssetState.remote || asset.storage == AssetState.merged);
+ bool get hasStacked => selectedAssets.any((asset) => asset is RemoteAsset && asset.stackId != null);
+
bool get hasLocal => selectedAssets.any((asset) => asset.storage == AssetState.local);
bool get hasMerged => selectedAssets.any((asset) => asset.storage == AssetState.merged);
diff --git a/mobile/lib/repositories/asset_media.repository.dart b/mobile/lib/repositories/asset_media.repository.dart
index bfcf7060e0..28a4ad661a 100644
--- a/mobile/lib/repositories/asset_media.repository.dart
+++ b/mobile/lib/repositories/asset_media.repository.dart
@@ -8,6 +8,7 @@ import 'package:immich_mobile/domain/models/store.model.dart';
import 'package:immich_mobile/entities/asset.entity.dart' as asset_entity;
import 'package:immich_mobile/entities/store.entity.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
+import 'package:immich_mobile/extensions/platform_extensions.dart';
import 'package:immich_mobile/extensions/response_extensions.dart';
import 'package:immich_mobile/repositories/asset_api.repository.dart';
import 'package:immich_mobile/utils/hash.dart';
@@ -72,6 +73,7 @@ class AssetMediaRepository {
// TODO: make this more efficient
Future shareAssets(List assets, BuildContext context) async {
final downloadedXFiles = [];
+ final tempFiles = [];
for (var asset in assets) {
final localId = (asset is LocalAsset)
@@ -82,6 +84,9 @@ class AssetMediaRepository {
if (localId != null) {
File? f = await AssetEntity(id: localId, width: 1, height: 1, typeInt: 0).originFile;
downloadedXFiles.add(XFile(f!.path));
+ if (CurrentPlatform.isIOS) {
+ tempFiles.add(f);
+ }
} else if (asset is RemoteAsset) {
final tempDir = await getTemporaryDirectory();
final name = asset.name;
@@ -95,6 +100,7 @@ class AssetMediaRepository {
await tempFile.writeAsBytes(res.bodyBytes);
downloadedXFiles.add(XFile(tempFile.path));
+ tempFiles.add(tempFile);
} else {
_log.warning("Asset type not supported for sharing: $asset");
continue;
@@ -113,9 +119,9 @@ class AssetMediaRepository {
downloadedXFiles,
sharePositionOrigin: Rect.fromPoints(Offset.zero, Offset(size.width / 3, size.height)),
).then((result) async {
- for (var file in downloadedXFiles) {
+ for (var file in tempFiles) {
try {
- await File(file.path).delete();
+ await file.delete();
} catch (e) {
_log.warning("Failed to delete temporary file: ${file.path}", e);
}
diff --git a/mobile/lib/services/server_info.service.dart b/mobile/lib/services/server_info.service.dart
index 0bce9366d2..460e135421 100644
--- a/mobile/lib/services/server_info.service.dart
+++ b/mobile/lib/services/server_info.service.dart
@@ -14,15 +14,6 @@ class ServerInfoService {
const ServerInfoService(this._apiService);
- Future ping() async {
- try {
- await _apiService.serverInfoApi.pingServer().timeout(const Duration(seconds: 5));
- return true;
- } catch (e) {
- return false;
- }
- }
-
Future getDiskInfo() async {
try {
final dto = await _apiService.serverInfoApi.getStorage();
diff --git a/mobile/lib/utils/action_button.utils.dart b/mobile/lib/utils/action_button.utils.dart
index 090aeeeaa7..c5a2583531 100644
--- a/mobile/lib/utils/action_button.utils.dart
+++ b/mobile/lib/utils/action_button.utils.dart
@@ -16,6 +16,7 @@ import 'package:immich_mobile/presentation/widgets/action_buttons/share_action_b
import 'package:immich_mobile/presentation/widgets/action_buttons/share_link_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/trash_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/unarchive_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';
class ActionButtonContext {
@@ -24,6 +25,7 @@ class ActionButtonContext {
final bool isArchived;
final bool isTrashEnabled;
final bool isInLockedView;
+ final bool isStacked;
final RemoteAlbum? currentAlbum;
final bool advancedTroubleshooting;
final ActionSource source;
@@ -33,6 +35,7 @@ class ActionButtonContext {
required this.isOwner,
required this.isArchived,
required this.isTrashEnabled,
+ required this.isStacked,
required this.isInLockedView,
required this.currentAlbum,
required this.advancedTroubleshooting,
@@ -55,6 +58,7 @@ enum ActionButtonType {
deleteLocal,
upload,
removeFromAlbum,
+ unstack,
likeActivity;
bool shouldShow(ActionButtonContext context) {
@@ -110,6 +114,10 @@ enum ActionButtonType {
context.isOwner && //
!context.isInLockedView && //
context.currentAlbum != null,
+ ActionButtonType.unstack =>
+ context.isOwner && //
+ !context.isInLockedView && //
+ context.isStacked,
ActionButtonType.likeActivity =>
!context.isInLockedView &&
context.currentAlbum != null &&
@@ -138,28 +146,13 @@ enum ActionButtonType {
source: context.source,
),
ActionButtonType.likeActivity => const LikeActivityActionButton(),
+ ActionButtonType.unstack => UnStackActionButton(source: context.source),
};
}
}
class ActionButtonBuilder {
- static const List _actionTypes = [
- ActionButtonType.advancedInfo,
- ActionButtonType.share,
- ActionButtonType.shareLink,
- ActionButtonType.likeActivity,
- ActionButtonType.archive,
- ActionButtonType.unarchive,
- ActionButtonType.download,
- ActionButtonType.trash,
- ActionButtonType.deletePermanent,
- ActionButtonType.delete,
- ActionButtonType.moveToLockFolder,
- ActionButtonType.removeFromLockFolder,
- ActionButtonType.deleteLocal,
- ActionButtonType.upload,
- ActionButtonType.removeFromAlbum,
- ];
+ static const List _actionTypes = ActionButtonType.values;
static List build(ActionButtonContext context) {
return _actionTypes.where((type) => type.shouldShow(context)).map((type) => type.buildButton(context)).toList();
diff --git a/mobile/lib/utils/datetime_helpers.dart b/mobile/lib/utils/datetime_helpers.dart
index 829f71c37e..c13c8ca312 100644
--- a/mobile/lib/utils/datetime_helpers.dart
+++ b/mobile/lib/utils/datetime_helpers.dart
@@ -1,7 +1,7 @@
const int _maxMillisecondsSinceEpoch = 8640000000000000; // 275760-09-13
const int _minMillisecondsSinceEpoch = -62135596800000; // 0001-01-01
-DateTime? tryFromSecondsSinceEpoch(int? secondsSinceEpoch) {
+DateTime? tryFromSecondsSinceEpoch(int? secondsSinceEpoch, {bool isUtc = false}) {
if (secondsSinceEpoch == null) {
return null;
}
@@ -12,7 +12,7 @@ DateTime? tryFromSecondsSinceEpoch(int? secondsSinceEpoch) {
}
try {
- return DateTime.fromMillisecondsSinceEpoch(milliSeconds);
+ return DateTime.fromMillisecondsSinceEpoch(milliSeconds, isUtc: isUtc);
} catch (e) {
return null;
}
diff --git a/mobile/lib/utils/isolate.dart b/mobile/lib/utils/isolate.dart
index e8b7d410f4..1ccf00d58b 100644
--- a/mobile/lib/utils/isolate.dart
+++ b/mobile/lib/utils/isolate.dart
@@ -32,6 +32,7 @@ Cancelable runInIsolateGentle({
}
return workerManager.executeGentle((cancelledChecker) async {
+ T? result;
await runZonedGuarded(
() async {
BackgroundIsolateBinaryMessenger.ensureInitialized(token);
@@ -53,7 +54,7 @@ Cancelable runInIsolateGentle({
try {
HttpSSLOptions.apply(applyNative: false);
- return await computation(ref);
+ result = await computation(ref);
} on CanceledError {
log.warning("Computation cancelled ${debugLabel == null ? '' : ' for $debugLabel'}");
} catch (error, stack) {
@@ -83,12 +84,11 @@ Cancelable runInIsolateGentle({
await Future.delayed(const Duration(seconds: 2));
}
}
- return null;
},
(error, stack) {
dPrint(() => "Error in isolate $debugLabel zone: $error, $stack");
},
);
- return null;
+ return result;
});
}
diff --git a/mobile/lib/widgets/common/immich_sliver_app_bar.dart b/mobile/lib/widgets/common/immich_sliver_app_bar.dart
index 09c0518a23..90c213599c 100644
--- a/mobile/lib/widgets/common/immich_sliver_app_bar.dart
+++ b/mobile/lib/widgets/common/immich_sliver_app_bar.dart
@@ -9,8 +9,8 @@ import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/models/server_info/server_info.model.dart';
import 'package:immich_mobile/providers/backup/drift_backup.provider.dart';
import 'package:immich_mobile/providers/cast.provider.dart';
-import 'package:immich_mobile/providers/infrastructure/setting.provider.dart';
import 'package:immich_mobile/providers/infrastructure/readonly_mode.provider.dart';
+import 'package:immich_mobile/providers/infrastructure/setting.provider.dart';
import 'package:immich_mobile/providers/server_info.provider.dart';
import 'package:immich_mobile/providers/sync_status.provider.dart';
import 'package:immich_mobile/providers/timeline/multiselect.provider.dart';
@@ -162,40 +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 indicatorIcon = _getBackupBadgeIcon(context, ref);
- final badgeBackground = context.colorScheme.surfaceContainer;
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));
@@ -207,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(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(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();
diff --git a/mobile/lib/widgets/settings/beta_timeline_list_tile.dart b/mobile/lib/widgets/settings/beta_timeline_list_tile.dart
index 326d6c49d1..1fefb3dcfa 100644
--- a/mobile/lib/widgets/settings/beta_timeline_list_tile.dart
+++ b/mobile/lib/widgets/settings/beta_timeline_list_tile.dart
@@ -1,12 +1,10 @@
import 'package:auto_route/auto_route.dart';
-import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/extensions/translate_extensions.dart';
import 'package:immich_mobile/providers/app_settings.provider.dart';
import 'package:immich_mobile/providers/auth.provider.dart';
-import 'package:immich_mobile/providers/server_info.provider.dart';
import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/services/app_settings.service.dart';
@@ -16,10 +14,9 @@ class BetaTimelineListTile extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final betaTimelineValue = ref.watch(appSettingsServiceProvider).getSetting(AppSettingsEnum.betaTimeline);
- final serverInfo = ref.watch(serverInfoProvider);
final auth = ref.watch(authProvider);
- if (!auth.isAuthenticated || (serverInfo.serverVersion.minor < 136 && kReleaseMode)) {
+ if (!auth.isAuthenticated) {
return const SizedBox.shrink();
}
diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md
index 665bcb7e62..4a7d516a9d 100644
--- a/mobile/openapi/README.md
+++ b/mobile/openapi/README.md
@@ -3,7 +3,7 @@ Immich API
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
-- API version: 1.143.1
+- API version: 2.0.1
- Generator version: 7.8.0
- Build package: org.openapitools.codegen.languages.DartClientCodegen
diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml
index 3b6dbd310f..565306229a 100644
--- a/mobile/pubspec.yaml
+++ b/mobile/pubspec.yaml
@@ -2,7 +2,7 @@ name: immich_mobile
description: Immich - selfhosted backup media file on mobile phone
publish_to: 'none'
-version: 1.143.1+3017
+version: 2.0.1+3021
environment:
sdk: '>=3.8.0 <4.0.0'
diff --git a/mobile/test/drift/main/generated/schema.dart b/mobile/test/drift/main/generated/schema.dart
index 1d78a44317..073a86078f 100644
--- a/mobile/test/drift/main/generated/schema.dart
+++ b/mobile/test/drift/main/generated/schema.dart
@@ -14,6 +14,7 @@ import 'schema_v8.dart' as v8;
import 'schema_v9.dart' as v9;
import 'schema_v10.dart' as v10;
import 'schema_v11.dart' as v11;
+import 'schema_v12.dart' as v12;
class GeneratedHelper implements SchemaInstantiationHelper {
@override
@@ -41,10 +42,12 @@ class GeneratedHelper implements SchemaInstantiationHelper {
return v10.DatabaseAtV10(db);
case 11:
return v11.DatabaseAtV11(db);
+ case 12:
+ return v12.DatabaseAtV12(db);
default:
throw MissingSchemaException(version, versions);
}
}
- static const versions = const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
+ static const versions = const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
}
diff --git a/mobile/test/drift/main/generated/schema_v12.dart b/mobile/test/drift/main/generated/schema_v12.dart
new file mode 100644
index 0000000000..c42df284ec
--- /dev/null
+++ b/mobile/test/drift/main/generated/schema_v12.dart
@@ -0,0 +1,7198 @@
+// dart format width=80
+// GENERATED CODE, DO NOT EDIT BY HAND.
+// ignore_for_file: type=lint
+import 'package:drift/drift.dart';
+
+class UserEntity extends Table with TableInfo {
+ @override
+ final GeneratedDatabase attachedDatabase;
+ final String? _alias;
+ UserEntity(this.attachedDatabase, [this._alias]);
+ late final GeneratedColumn id = GeneratedColumn(
+ 'id',
+ aliasedName,
+ false,
+ type: DriftSqlType.string,
+ requiredDuringInsert: true,
+ );
+ late final GeneratedColumn name = GeneratedColumn(
+ 'name',
+ aliasedName,
+ false,
+ type: DriftSqlType.string,
+ requiredDuringInsert: true,
+ );
+ late final GeneratedColumn email = GeneratedColumn(
+ 'email',
+ aliasedName,
+ false,
+ type: DriftSqlType.string,
+ requiredDuringInsert: true,
+ );
+ late final GeneratedColumn hasProfileImage = GeneratedColumn(
+ 'has_profile_image',
+ aliasedName,
+ false,
+ type: DriftSqlType.bool,
+ requiredDuringInsert: false,
+ defaultConstraints: GeneratedColumn.constraintIsAlways(
+ 'CHECK ("has_profile_image" IN (0, 1))',
+ ),
+ defaultValue: const CustomExpression('0'),
+ );
+ late final GeneratedColumn profileChangedAt =
+ GeneratedColumn(
+ 'profile_changed_at',
+ aliasedName,
+ false,
+ type: DriftSqlType.dateTime,
+ requiredDuringInsert: false,
+ defaultValue: const CustomExpression('CURRENT_TIMESTAMP'),
+ );
+ late final GeneratedColumn avatarColor = GeneratedColumn(
+ 'avatar_color',
+ aliasedName,
+ false,
+ type: DriftSqlType.int,
+ requiredDuringInsert: false,
+ defaultValue: const CustomExpression('0'),
+ );
+ @override
+ List get $columns => [
+ id,
+ name,
+ email,
+ hasProfileImage,
+ profileChangedAt,
+ avatarColor,
+ ];
+ @override
+ String get aliasedName => _alias ?? actualTableName;
+ @override
+ String get actualTableName => $name;
+ static const String $name = 'user_entity';
+ @override
+ Set get $primaryKey => {id};
+ @override
+ UserEntityData map(Map data, {String? tablePrefix}) {
+ final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
+ return UserEntityData(
+ id: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}id'],
+ )!,
+ name: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}name'],
+ )!,
+ email: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}email'],
+ )!,
+ hasProfileImage: attachedDatabase.typeMapping.read(
+ DriftSqlType.bool,
+ data['${effectivePrefix}has_profile_image'],
+ )!,
+ profileChangedAt: attachedDatabase.typeMapping.read(
+ DriftSqlType.dateTime,
+ data['${effectivePrefix}profile_changed_at'],
+ )!,
+ avatarColor: attachedDatabase.typeMapping.read(
+ DriftSqlType.int,
+ data['${effectivePrefix}avatar_color'],
+ )!,
+ );
+ }
+
+ @override
+ UserEntity createAlias(String alias) {
+ return UserEntity(attachedDatabase, alias);
+ }
+
+ @override
+ bool get withoutRowId => true;
+ @override
+ bool get isStrict => true;
+}
+
+class UserEntityData extends DataClass implements Insertable {
+ final String id;
+ final String name;
+ final String email;
+ final bool hasProfileImage;
+ final DateTime profileChangedAt;
+ final int avatarColor;
+ const UserEntityData({
+ required this.id,
+ required this.name,
+ required this.email,
+ required this.hasProfileImage,
+ required this.profileChangedAt,
+ required this.avatarColor,
+ });
+ @override
+ Map toColumns(bool nullToAbsent) {
+ final map = {};
+ map['id'] = Variable(id);
+ map['name'] = Variable(name);
+ map['email'] = Variable(email);
+ map['has_profile_image'] = Variable(hasProfileImage);
+ map['profile_changed_at'] = Variable(profileChangedAt);
+ map['avatar_color'] = Variable(avatarColor);
+ return map;
+ }
+
+ factory UserEntityData.fromJson(
+ Map json, {
+ ValueSerializer? serializer,
+ }) {
+ serializer ??= driftRuntimeOptions.defaultSerializer;
+ return UserEntityData(
+ id: serializer.fromJson(json['id']),
+ name: serializer.fromJson(json['name']),
+ email: serializer.fromJson(json['email']),
+ hasProfileImage: serializer.fromJson(json['hasProfileImage']),
+ profileChangedAt: serializer.fromJson(json['profileChangedAt']),
+ avatarColor: serializer.fromJson(json['avatarColor']),
+ );
+ }
+ @override
+ Map toJson({ValueSerializer? serializer}) {
+ serializer ??= driftRuntimeOptions.defaultSerializer;
+ return {
+ 'id': serializer.toJson(id),
+ 'name': serializer.toJson(name),
+ 'email': serializer.toJson(email),
+ 'hasProfileImage': serializer.toJson(hasProfileImage),
+ 'profileChangedAt': serializer.toJson(profileChangedAt),
+ 'avatarColor': serializer.toJson(avatarColor),
+ };
+ }
+
+ UserEntityData copyWith({
+ String? id,
+ String? name,
+ String? email,
+ bool? hasProfileImage,
+ DateTime? profileChangedAt,
+ int? avatarColor,
+ }) => UserEntityData(
+ id: id ?? this.id,
+ name: name ?? this.name,
+ email: email ?? this.email,
+ hasProfileImage: hasProfileImage ?? this.hasProfileImage,
+ profileChangedAt: profileChangedAt ?? this.profileChangedAt,
+ avatarColor: avatarColor ?? this.avatarColor,
+ );
+ UserEntityData copyWithCompanion(UserEntityCompanion data) {
+ return UserEntityData(
+ id: data.id.present ? data.id.value : this.id,
+ name: data.name.present ? data.name.value : this.name,
+ email: data.email.present ? data.email.value : this.email,
+ hasProfileImage: data.hasProfileImage.present
+ ? data.hasProfileImage.value
+ : this.hasProfileImage,
+ profileChangedAt: data.profileChangedAt.present
+ ? data.profileChangedAt.value
+ : this.profileChangedAt,
+ avatarColor: data.avatarColor.present
+ ? data.avatarColor.value
+ : this.avatarColor,
+ );
+ }
+
+ @override
+ String toString() {
+ return (StringBuffer('UserEntityData(')
+ ..write('id: $id, ')
+ ..write('name: $name, ')
+ ..write('email: $email, ')
+ ..write('hasProfileImage: $hasProfileImage, ')
+ ..write('profileChangedAt: $profileChangedAt, ')
+ ..write('avatarColor: $avatarColor')
+ ..write(')'))
+ .toString();
+ }
+
+ @override
+ int get hashCode => Object.hash(
+ id,
+ name,
+ email,
+ hasProfileImage,
+ profileChangedAt,
+ avatarColor,
+ );
+ @override
+ bool operator ==(Object other) =>
+ identical(this, other) ||
+ (other is UserEntityData &&
+ other.id == this.id &&
+ other.name == this.name &&
+ other.email == this.email &&
+ other.hasProfileImage == this.hasProfileImage &&
+ other.profileChangedAt == this.profileChangedAt &&
+ other.avatarColor == this.avatarColor);
+}
+
+class UserEntityCompanion extends UpdateCompanion {
+ final Value id;
+ final Value name;
+ final Value email;
+ final Value hasProfileImage;
+ final Value profileChangedAt;
+ final Value avatarColor;
+ const UserEntityCompanion({
+ this.id = const Value.absent(),
+ this.name = const Value.absent(),
+ this.email = const Value.absent(),
+ this.hasProfileImage = const Value.absent(),
+ this.profileChangedAt = const Value.absent(),
+ this.avatarColor = const Value.absent(),
+ });
+ UserEntityCompanion.insert({
+ required String id,
+ required String name,
+ required String email,
+ this.hasProfileImage = const Value.absent(),
+ this.profileChangedAt = const Value.absent(),
+ this.avatarColor = const Value.absent(),
+ }) : id = Value(id),
+ name = Value(name),
+ email = Value(email);
+ static Insertable custom({
+ Expression? id,
+ Expression? name,
+ Expression? email,
+ Expression? hasProfileImage,
+ Expression? profileChangedAt,
+ Expression? avatarColor,
+ }) {
+ return RawValuesInsertable({
+ if (id != null) 'id': id,
+ if (name != null) 'name': name,
+ if (email != null) 'email': email,
+ if (hasProfileImage != null) 'has_profile_image': hasProfileImage,
+ if (profileChangedAt != null) 'profile_changed_at': profileChangedAt,
+ if (avatarColor != null) 'avatar_color': avatarColor,
+ });
+ }
+
+ UserEntityCompanion copyWith({
+ Value? id,
+ Value? name,
+ Value? email,
+ Value? hasProfileImage,
+ Value? profileChangedAt,
+ Value? avatarColor,
+ }) {
+ return UserEntityCompanion(
+ id: id ?? this.id,
+ name: name ?? this.name,
+ email: email ?? this.email,
+ hasProfileImage: hasProfileImage ?? this.hasProfileImage,
+ profileChangedAt: profileChangedAt ?? this.profileChangedAt,
+ avatarColor: avatarColor ?? this.avatarColor,
+ );
+ }
+
+ @override
+ Map toColumns(bool nullToAbsent) {
+ final map = {};
+ if (id.present) {
+ map['id'] = Variable(id.value);
+ }
+ if (name.present) {
+ map['name'] = Variable(name.value);
+ }
+ if (email.present) {
+ map['email'] = Variable(email.value);
+ }
+ if (hasProfileImage.present) {
+ map['has_profile_image'] = Variable(hasProfileImage.value);
+ }
+ if (profileChangedAt.present) {
+ map['profile_changed_at'] = Variable(profileChangedAt.value);
+ }
+ if (avatarColor.present) {
+ map['avatar_color'] = Variable(avatarColor.value);
+ }
+ return map;
+ }
+
+ @override
+ String toString() {
+ return (StringBuffer('UserEntityCompanion(')
+ ..write('id: $id, ')
+ ..write('name: $name, ')
+ ..write('email: $email, ')
+ ..write('hasProfileImage: $hasProfileImage, ')
+ ..write('profileChangedAt: $profileChangedAt, ')
+ ..write('avatarColor: $avatarColor')
+ ..write(')'))
+ .toString();
+ }
+}
+
+class RemoteAssetEntity extends Table
+ with TableInfo {
+ @override
+ final GeneratedDatabase attachedDatabase;
+ final String? _alias;
+ RemoteAssetEntity(this.attachedDatabase, [this._alias]);
+ late final GeneratedColumn name = GeneratedColumn(
+ 'name',
+ aliasedName,
+ false,
+ type: DriftSqlType.string,
+ requiredDuringInsert: true,
+ );
+ late final GeneratedColumn type = GeneratedColumn(
+ 'type',
+ aliasedName,
+ false,
+ type: DriftSqlType.int,
+ requiredDuringInsert: true,
+ );
+ late final GeneratedColumn createdAt = GeneratedColumn(
+ 'created_at',
+ aliasedName,
+ false,
+ type: DriftSqlType.dateTime,
+ requiredDuringInsert: false,
+ defaultValue: const CustomExpression('CURRENT_TIMESTAMP'),
+ );
+ late final GeneratedColumn updatedAt = GeneratedColumn(
+ 'updated_at',
+ aliasedName,
+ false,
+ type: DriftSqlType.dateTime,
+ requiredDuringInsert: false,
+ defaultValue: const CustomExpression('CURRENT_TIMESTAMP'),
+ );
+ late final GeneratedColumn width = GeneratedColumn(
+ 'width',
+ aliasedName,
+ true,
+ type: DriftSqlType.int,
+ requiredDuringInsert: false,
+ );
+ late final GeneratedColumn height = GeneratedColumn(
+ 'height',
+ aliasedName,
+ true,
+ type: DriftSqlType.int,
+ requiredDuringInsert: false,
+ );
+ late final GeneratedColumn durationInSeconds = GeneratedColumn(
+ 'duration_in_seconds',
+ aliasedName,
+ true,
+ type: DriftSqlType.int,
+ requiredDuringInsert: false,
+ );
+ late final GeneratedColumn id = GeneratedColumn(
+ 'id',
+ aliasedName,
+ false,
+ type: DriftSqlType.string,
+ requiredDuringInsert: true,
+ );
+ late final GeneratedColumn checksum = GeneratedColumn(
+ 'checksum',
+ aliasedName,
+ false,
+ type: DriftSqlType.string,
+ requiredDuringInsert: true,
+ );
+ late final GeneratedColumn isFavorite = GeneratedColumn(
+ 'is_favorite',
+ aliasedName,
+ false,
+ type: DriftSqlType.bool,
+ requiredDuringInsert: false,
+ defaultConstraints: GeneratedColumn.constraintIsAlways(
+ 'CHECK ("is_favorite" IN (0, 1))',
+ ),
+ defaultValue: const CustomExpression('0'),
+ );
+ late final GeneratedColumn ownerId = GeneratedColumn(
+ 'owner_id',
+ aliasedName,
+ false,
+ type: DriftSqlType.string,
+ requiredDuringInsert: true,
+ defaultConstraints: GeneratedColumn.constraintIsAlways(
+ 'REFERENCES user_entity (id) ON DELETE CASCADE',
+ ),
+ );
+ late final GeneratedColumn localDateTime =
+ GeneratedColumn(
+ 'local_date_time',
+ aliasedName,
+ true,
+ type: DriftSqlType.dateTime,
+ requiredDuringInsert: false,
+ );
+ late final GeneratedColumn thumbHash = GeneratedColumn(
+ 'thumb_hash',
+ aliasedName,
+ true,
+ type: DriftSqlType.string,
+ requiredDuringInsert: false,
+ );
+ late final GeneratedColumn deletedAt = GeneratedColumn(
+ 'deleted_at',
+ aliasedName,
+ true,
+ type: DriftSqlType.dateTime,
+ requiredDuringInsert: false,
+ );
+ late final GeneratedColumn livePhotoVideoId = GeneratedColumn(
+ 'live_photo_video_id',
+ aliasedName,
+ true,
+ type: DriftSqlType.string,
+ requiredDuringInsert: false,
+ );
+ late final GeneratedColumn visibility = GeneratedColumn(
+ 'visibility',
+ aliasedName,
+ false,
+ type: DriftSqlType.int,
+ requiredDuringInsert: true,
+ );
+ late final GeneratedColumn stackId = GeneratedColumn(
+ 'stack_id',
+ aliasedName,
+ true,
+ type: DriftSqlType.string,
+ requiredDuringInsert: false,
+ );
+ late final GeneratedColumn libraryId = GeneratedColumn(
+ 'library_id',
+ aliasedName,
+ true,
+ type: DriftSqlType.string,
+ requiredDuringInsert: false,
+ );
+ @override
+ List get $columns => [
+ name,
+ type,
+ createdAt,
+ updatedAt,
+ width,
+ height,
+ durationInSeconds,
+ id,
+ checksum,
+ isFavorite,
+ ownerId,
+ localDateTime,
+ thumbHash,
+ deletedAt,
+ livePhotoVideoId,
+ visibility,
+ stackId,
+ libraryId,
+ ];
+ @override
+ String get aliasedName => _alias ?? actualTableName;
+ @override
+ String get actualTableName => $name;
+ static const String $name = 'remote_asset_entity';
+ @override
+ Set get $primaryKey => {id};
+ @override
+ RemoteAssetEntityData map(Map data, {String? tablePrefix}) {
+ final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
+ return RemoteAssetEntityData(
+ name: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}name'],
+ )!,
+ type: attachedDatabase.typeMapping.read(
+ DriftSqlType.int,
+ data['${effectivePrefix}type'],
+ )!,
+ createdAt: attachedDatabase.typeMapping.read(
+ DriftSqlType.dateTime,
+ data['${effectivePrefix}created_at'],
+ )!,
+ updatedAt: attachedDatabase.typeMapping.read(
+ DriftSqlType.dateTime,
+ data['${effectivePrefix}updated_at'],
+ )!,
+ width: attachedDatabase.typeMapping.read(
+ DriftSqlType.int,
+ data['${effectivePrefix}width'],
+ ),
+ height: attachedDatabase.typeMapping.read(
+ DriftSqlType.int,
+ data['${effectivePrefix}height'],
+ ),
+ durationInSeconds: attachedDatabase.typeMapping.read(
+ DriftSqlType.int,
+ data['${effectivePrefix}duration_in_seconds'],
+ ),
+ id: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}id'],
+ )!,
+ checksum: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}checksum'],
+ )!,
+ isFavorite: attachedDatabase.typeMapping.read(
+ DriftSqlType.bool,
+ data['${effectivePrefix}is_favorite'],
+ )!,
+ ownerId: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}owner_id'],
+ )!,
+ localDateTime: attachedDatabase.typeMapping.read(
+ DriftSqlType.dateTime,
+ data['${effectivePrefix}local_date_time'],
+ ),
+ thumbHash: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}thumb_hash'],
+ ),
+ deletedAt: attachedDatabase.typeMapping.read(
+ DriftSqlType.dateTime,
+ data['${effectivePrefix}deleted_at'],
+ ),
+ livePhotoVideoId: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}live_photo_video_id'],
+ ),
+ visibility: attachedDatabase.typeMapping.read(
+ DriftSqlType.int,
+ data['${effectivePrefix}visibility'],
+ )!,
+ stackId: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}stack_id'],
+ ),
+ libraryId: attachedDatabase.typeMapping.read(
+ DriftSqlType.string,
+ data['${effectivePrefix}library_id'],
+ ),
+ );
+ }
+
+ @override
+ RemoteAssetEntity createAlias(String alias) {
+ return RemoteAssetEntity(attachedDatabase, alias);
+ }
+
+ @override
+ bool get withoutRowId => true;
+ @override
+ bool get isStrict => true;
+}
+
+class RemoteAssetEntityData extends DataClass
+ implements Insertable {
+ final String name;
+ final int type;
+ final DateTime createdAt;
+ final DateTime updatedAt;
+ final int? width;
+ final int? height;
+ final int? durationInSeconds;
+ final String id;
+ final String checksum;
+ final bool isFavorite;
+ final String ownerId;
+ final DateTime? localDateTime;
+ final String? thumbHash;
+ final DateTime? deletedAt;
+ final String? livePhotoVideoId;
+ final int visibility;
+ final String? stackId;
+ final String? libraryId;
+ const RemoteAssetEntityData({
+ required this.name,
+ required this.type,
+ required this.createdAt,
+ required this.updatedAt,
+ this.width,
+ this.height,
+ this.durationInSeconds,
+ required this.id,
+ required this.checksum,
+ required this.isFavorite,
+ required this.ownerId,
+ this.localDateTime,
+ this.thumbHash,
+ this.deletedAt,
+ this.livePhotoVideoId,
+ required this.visibility,
+ this.stackId,
+ this.libraryId,
+ });
+ @override
+ Map toColumns(bool nullToAbsent) {
+ final map = {};
+ map['name'] = Variable(name);
+ map['type'] = Variable(type);
+ map['created_at'] = Variable(createdAt);
+ map['updated_at'] = Variable(updatedAt);
+ if (!nullToAbsent || width != null) {
+ map['width'] = Variable(width);
+ }
+ if (!nullToAbsent || height != null) {
+ map['height'] = Variable(height);
+ }
+ if (!nullToAbsent || durationInSeconds != null) {
+ map['duration_in_seconds'] = Variable(durationInSeconds);
+ }
+ map['id'] = Variable(id);
+ map['checksum'] = Variable(checksum);
+ map['is_favorite'] = Variable(isFavorite);
+ map['owner_id'] = Variable(ownerId);
+ if (!nullToAbsent || localDateTime != null) {
+ map['local_date_time'] = Variable(localDateTime);
+ }
+ if (!nullToAbsent || thumbHash != null) {
+ map['thumb_hash'] = Variable(thumbHash);
+ }
+ if (!nullToAbsent || deletedAt != null) {
+ map['deleted_at'] = Variable(deletedAt);
+ }
+ if (!nullToAbsent || livePhotoVideoId != null) {
+ map['live_photo_video_id'] = Variable(livePhotoVideoId);
+ }
+ map['visibility'] = Variable(visibility);
+ if (!nullToAbsent || stackId != null) {
+ map['stack_id'] = Variable(stackId);
+ }
+ if (!nullToAbsent || libraryId != null) {
+ map['library_id'] = Variable(libraryId);
+ }
+ return map;
+ }
+
+ factory RemoteAssetEntityData.fromJson(
+ Map json, {
+ ValueSerializer? serializer,
+ }) {
+ serializer ??= driftRuntimeOptions.defaultSerializer;
+ return RemoteAssetEntityData(
+ name: serializer.fromJson(json['name']),
+ type: serializer.fromJson(json['type']),
+ createdAt: serializer.fromJson(json['createdAt']),
+ updatedAt: serializer.fromJson(json['updatedAt']),
+ width: serializer.fromJson(json['width']),
+ height: serializer.fromJson(json['height']),
+ durationInSeconds: serializer.fromJson(json['durationInSeconds']),
+ id: serializer.fromJson(json['id']),
+ checksum: serializer.fromJson(json['checksum']),
+ isFavorite: serializer.fromJson(json['isFavorite']),
+ ownerId: serializer.fromJson(json['ownerId']),
+ localDateTime: serializer.fromJson