diff --git a/mobile/assets/i18n/en-US.json b/mobile/assets/i18n/en-US.json index 47ab78b095..ebcf7999f4 100644 --- a/mobile/assets/i18n/en-US.json +++ b/mobile/assets/i18n/en-US.json @@ -54,7 +54,14 @@ "asset_list_layout_sub_title": "Layout", "asset_list_settings_subtitle": "Photo grid layout settings", "asset_list_settings_title": "Photo Grid", + "asset_restored_successfully": "Asset restored successfully", "asset_viewer_settings_title": "Asset Viewer", + "assets_deleted_permanently": "{} asset(s) deleted permanently", + "assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server", + "assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device", + "assets_restored_successfully": "{} asset(s) restored successfully", + "assets_trashed": "{} asset(s) trashed", + "assets_trashed_from_server": "{} asset(s) trashed from the Immich server", "backup_album_selection_page_albums_device": "Albums on device ({})", "backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude", "backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.", @@ -448,15 +455,18 @@ "setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)", "setting_notifications_total_progress_title": "Show background backup total progress", "setting_pages_app_bar_settings": "Settings", - "settings_require_restart": "Please restart Immich to apply this setting", "setting_video_viewer_looping_subtitle": "Enable to automatically loop a video in the detail viewer.", "setting_video_viewer_looping_title": "Looping", "setting_video_viewer_title": "Videos", + "settings_require_restart": "Please restart Immich to apply this setting", "share_add": "Add", "share_add_photos": "Add photos", "share_add_title": "Add a title", "share_assets_selected": "{} selected", "share_create_album": "Create album", + "share_dialog_preparing": "Preparing...", + "share_done": "Done", + "share_invite": "Invite to album", "shared_album_activities_input_disable": "Comment is disabled", "shared_album_activities_input_hint": "Say something", "shared_album_activity_remove_content": "Do you want to delete this activity?", @@ -468,7 +478,6 @@ "shared_album_section_people_action_remove_user": "Remove user from album", "shared_album_section_people_owner_label": "Owner", "shared_album_section_people_title": "PEOPLE", - "share_dialog_preparing": "Preparing...", "shared_link_app_bar_title": "Shared Links", "shared_link_clipboard_copied_massage": "Copied to clipboard", "shared_link_clipboard_text": "Link: {}\nPassword: {}", @@ -514,27 +523,25 @@ "shared_link_info_chip_upload": "Upload", "shared_link_manage_links": "Manage Shared links", "shared_link_public_album": "Public album", - "share_done": "Done", - "share_invite": "Invite to album", "sharing_page_album": "Shared albums", "sharing_page_description": "Create shared albums to share photos and videos with people in your network.", "sharing_page_empty_list": "EMPTY LIST", "sharing_silver_appbar_create_shared_album": "New shared album", - "sharing_silver_appbar_shared_links": "Shared links", "sharing_silver_appbar_share_partner": "Share with partner", + "sharing_silver_appbar_shared_links": "Shared links", "tab_controller_nav_library": "Library", "tab_controller_nav_photos": "Photos", "tab_controller_nav_search": "Search", "tab_controller_nav_sharing": "Sharing", "theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles", "theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})", + "theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.", + "theme_setting_colorful_interface_title": "Colorful interface", "theme_setting_dark_mode_switch": "Dark mode", "theme_setting_image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer", "theme_setting_image_viewer_quality_title": "Image viewer quality", - "theme_setting_primary_color_title": "Primary color", "theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.", - "theme_setting_colorful_interface_title": "Colorful interface", - "theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.", + "theme_setting_primary_color_title": "Primary color", "theme_setting_system_primary_color_title": "Use system color", "theme_setting_system_theme_switch": "Automatic (Follow system setting)", "theme_setting_theme_subtitle": "Choose the app's theme setting", @@ -542,6 +549,7 @@ "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_title": "Enable three-stage loading", "translated_text_options": "Options", + "trash_emptied": "Emptied trash", "trash_page_delete": "Delete", "trash_page_delete_all": "Delete All", "trash_page_empty_trash_btn": "Empty trash", @@ -567,4 +575,4 @@ "viewer_remove_from_stack": "Remove from Stack", "viewer_stack_use_as_main_asset": "Use as Main Asset", "viewer_unstack": "Un-Stack" -} +} \ No newline at end of file diff --git a/mobile/lib/pages/library/trash.page.dart b/mobile/lib/pages/library/trash.page.dart index 3bba2f2dfe..61c87e19a1 100644 --- a/mobile/lib/pages/library/trash.page.dart +++ b/mobile/lib/pages/library/trash.page.dart @@ -44,7 +44,7 @@ class TrashPage extends HookConsumerWidget { if (context.mounted) { ImmichToast.show( context: context, - msg: 'Emptied trash', + msg: 'trash_emptied'.tr(), gravity: ToastGravity.BOTTOM, ); } @@ -71,13 +71,11 @@ class TrashPage extends HookConsumerWidget { .removeAssets(selection.value); if (isRemoved) { - final assetOrAssets = - selection.value.length > 1 ? 'assets' : 'asset'; if (context.mounted) { ImmichToast.show( context: context, - msg: - '${selection.value.length} $assetOrAssets deleted permanently', + msg: 'assets_deleted_permanently' + .tr(args: ["${selection.value.length}"]), gravity: ToastGravity.BOTTOM, ); } @@ -114,12 +112,11 @@ class TrashPage extends HookConsumerWidget { .read(trashProvider.notifier) .restoreAssets(selection.value); - final assetOrAssets = selection.value.length > 1 ? 'assets' : 'asset'; if (result && context.mounted) { ImmichToast.show( context: context, - msg: - '${selection.value.length} $assetOrAssets restored successfully', + msg: 'assets_restored_successfully' + .tr(args: ["${selection.value.length}"]), gravity: ToastGravity.BOTTOM, ); } diff --git a/mobile/lib/widgets/asset_grid/multiselect_grid.dart b/mobile/lib/widgets/asset_grid/multiselect_grid.dart index 23ee771627..e50a9a5ece 100644 --- a/mobile/lib/widgets/asset_grid/multiselect_grid.dart +++ b/mobile/lib/widgets/asset_grid/multiselect_grid.dart @@ -190,11 +190,12 @@ class MultiselectGrid extends HookConsumerWidget { .deleteAssets(toDelete, force: force); if (isDeleted) { - final assetOrAssets = toDelete.length > 1 ? 'assets' : 'asset'; - final trashOrRemoved = force ? 'deleted permanently' : 'trashed'; ImmichToast.show( context: context, - msg: '${selection.value.length} $assetOrAssets $trashOrRemoved', + msg: force + ? 'assets_deleted_permanently' + .tr(args: ["${selection.value.length}"]) + : 'assets_trashed'.tr(args: ["${selection.value.length}"]), gravity: ToastGravity.BOTTOM, ); selectionEnabledHook.value = false; @@ -213,11 +214,10 @@ class MultiselectGrid extends HookConsumerWidget { .read(assetProvider.notifier) .deleteLocalOnlyAssets(localIds, onlyBackedUp: onlyBackedUp); if (isDeleted) { - final assetOrAssets = localIds.length > 1 ? 'assets' : 'asset'; ImmichToast.show( context: context, - msg: - '${localIds.length} $assetOrAssets removed permanently from your device', + msg: 'assets_removed_permanently_from_device' + .tr(args: ["${localIds.length}"]), gravity: ToastGravity.BOTTOM, ); selectionEnabledHook.value = false; @@ -239,12 +239,12 @@ class MultiselectGrid extends HookConsumerWidget { .read(assetProvider.notifier) .deleteRemoteOnlyAssets(toDelete, force: force); if (isDeleted) { - final assetOrAssets = toDelete.length > 1 ? 'assets' : 'asset'; - final trashOrRemoved = force ? 'deleted permanently' : 'trashed'; ImmichToast.show( context: context, - msg: - '${toDelete.length} $assetOrAssets $trashOrRemoved from the Immich server', + msg: force + ? 'assets_deleted_permanently_from_server' + .tr(args: ["${toDelete.length}"]) + : 'assets_trashed_from_server'.tr(args: ["${toDelete.length}"]), gravity: ToastGravity.BOTTOM, ); } diff --git a/mobile/lib/widgets/asset_viewer/gallery_app_bar.dart b/mobile/lib/widgets/asset_viewer/gallery_app_bar.dart index 9bd6ff1102..fde0d2e82d 100644 --- a/mobile/lib/widgets/asset_viewer/gallery_app_bar.dart +++ b/mobile/lib/widgets/asset_viewer/gallery_app_bar.dart @@ -1,4 +1,5 @@ import 'package:auto_route/auto_route.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -56,7 +57,7 @@ class GalleryAppBar extends ConsumerWidget { if (result && context.mounted) { ImmichToast.show( context: context, - msg: 'asset restored successfully', + msg: 'asset_restored_successfully'.tr(), gravity: ToastGravity.BOTTOM, ); }