1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2024-12-29 15:11:58 +00:00

fix(mobile): search filter translation + fixes (#11141)

translation + fixes
This commit is contained in:
waclaw66 2024-07-26 23:32:19 +02:00 committed by GitHub
parent f92aee204e
commit 4b2bc8e4ce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 70 additions and 33 deletions

View file

@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Already in {album}",
@ -146,6 +148,7 @@
"common_create_new_album": "Create new album", "common_create_new_album": "Create new album",
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.", "common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"common_shared": "Shared", "common_shared": "Shared",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Add to album", "control_bottom_app_bar_add_to_album": "Add to album",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} items",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} items · Shared",
@ -203,6 +206,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No favorite assets found",
"favorites_page_title": "Favorites", "favorites_page_title": "Favorites",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@ -230,6 +234,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error", "image_viewer_page_state_provider_share_error": "Share Error",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
@ -311,6 +317,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancel",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Settings",
@ -354,17 +361,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Search your photos", "search_bar_hint": "Search your photos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categories", "search_page_categories": "Categories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favorites",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Motion Photos",
@ -418,15 +438,18 @@
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)", "setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
"setting_notifications_total_progress_title": "Show background backup total progress", "setting_notifications_total_progress_title": "Show background backup total progress",
"setting_pages_app_bar_settings": "Settings", "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_subtitle": "Enable to automatically loop a video in the detail viewer.",
"setting_video_viewer_looping_title": "Looping", "setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_title": "Videos", "setting_video_viewer_title": "Videos",
"settings_require_restart": "Please restart Immich to apply this setting",
"share_add": "Add", "share_add": "Add",
"share_add_photos": "Add photos", "share_add_photos": "Add photos",
"share_add_title": "Add a title", "share_add_title": "Add a title",
"share_assets_selected": "{} selected", "share_assets_selected": "{} selected",
"share_create_album": "Create album", "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_disable": "Comment is disabled",
"shared_album_activities_input_hint": "Say something", "shared_album_activities_input_hint": "Say something",
"shared_album_activity_remove_content": "Do you want to delete this activity?", "shared_album_activity_remove_content": "Do you want to delete this activity?",
@ -438,7 +461,6 @@
"shared_album_section_people_action_remove_user": "Remove user from album", "shared_album_section_people_action_remove_user": "Remove user from album",
"shared_album_section_people_owner_label": "Owner", "shared_album_section_people_owner_label": "Owner",
"shared_album_section_people_title": "PEOPLE", "shared_album_section_people_title": "PEOPLE",
"share_dialog_preparing": "Preparing...",
"shared_link_app_bar_title": "Shared Links", "shared_link_app_bar_title": "Shared Links",
"shared_link_clipboard_copied_massage": "Copied to clipboard", "shared_link_clipboard_copied_massage": "Copied to clipboard",
"shared_link_clipboard_text": "Link: {}\nPassword: {}", "shared_link_clipboard_text": "Link: {}\nPassword: {}",
@ -484,14 +506,12 @@
"shared_link_info_chip_upload": "Upload", "shared_link_info_chip_upload": "Upload",
"shared_link_manage_links": "Manage Shared links", "shared_link_manage_links": "Manage Shared links",
"shared_link_public_album": "Public album", "shared_link_public_album": "Public album",
"share_done": "Done",
"share_invite": "Invite to album",
"sharing_page_album": "Shared albums", "sharing_page_album": "Shared albums",
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.", "sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
"sharing_page_empty_list": "EMPTY LIST", "sharing_page_empty_list": "EMPTY LIST",
"sharing_silver_appbar_create_shared_album": "New shared album", "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_share_partner": "Share with partner",
"sharing_silver_appbar_shared_links": "Shared links",
"tab_controller_nav_library": "Library", "tab_controller_nav_library": "Library",
"tab_controller_nav_photos": "Photos", "tab_controller_nav_photos": "Photos",
"tab_controller_nav_search": "Search", "tab_controller_nav_search": "Search",

View file

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
@ -114,7 +115,7 @@ class SearchInputPage extends HookConsumerWidget {
); );
peopleCurrentFilterWidget.value = Text( peopleCurrentFilterWidget.value = Text(
value.map((e) => e.name != '' ? e.name : "No name").join(', '), value.map((e) => e.name != '' ? e.name : 'no_name'.tr()).join(', '),
style: context.textTheme.labelLarge, style: context.textTheme.labelLarge,
); );
} }
@ -134,7 +135,7 @@ class SearchInputPage extends HookConsumerWidget {
child: FractionallySizedBox( child: FractionallySizedBox(
heightFactor: 0.8, heightFactor: 0.8,
child: FilterBottomSheetScaffold( child: FilterBottomSheetScaffold(
title: 'Select people', title: 'search_filter_people_title'.tr(),
expanded: true, expanded: true,
onSearch: search, onSearch: search,
onClear: handleClear, onClear: handleClear,
@ -190,7 +191,7 @@ class SearchInputPage extends HookConsumerWidget {
isScrollControlled: true, isScrollControlled: true,
isDismissible: false, isDismissible: false,
child: FilterBottomSheetScaffold( child: FilterBottomSheetScaffold(
title: 'Select location', title: 'search_filter_location_title'.tr(),
onSearch: search, onSearch: search,
onClear: handleClear, onClear: handleClear,
child: Padding( child: Padding(
@ -241,7 +242,7 @@ class SearchInputPage extends HookConsumerWidget {
isScrollControlled: true, isScrollControlled: true,
isDismissible: false, isDismissible: false,
child: FilterBottomSheetScaffold( child: FilterBottomSheetScaffold(
title: 'Select camera type', title: 'search_filter_camera_title'.tr(),
onSearch: search, onSearch: search,
onClear: handleClear, onClear: handleClear,
child: Padding( child: Padding(
@ -268,14 +269,14 @@ class SearchInputPage extends HookConsumerWidget {
start: filter.value.date.takenAfter ?? lastDate, start: filter.value.date.takenAfter ?? lastDate,
end: filter.value.date.takenBefore ?? lastDate, end: filter.value.date.takenBefore ?? lastDate,
), ),
helpText: 'Select a date range', helpText: 'search_filter_date_title'.tr(),
cancelText: 'Cancel', cancelText: 'action_common_cancel'.tr(),
confirmText: 'Select', confirmText: 'action_common_select'.tr(),
saveText: 'Save', saveText: 'action_common_save'.tr(),
errorFormatText: 'Invalid date format', errorFormatText: 'invalid_date_format'.tr(),
errorInvalidText: 'Invalid date', errorInvalidText: 'invalid_date'.tr(),
fieldStartHintText: 'Start date', fieldStartHintText: 'start_date'.tr(),
fieldEndHintText: 'End date', fieldEndHintText: 'end_date'.tr(),
initialEntryMode: DatePickerEntryMode.input, initialEntryMode: DatePickerEntryMode.input,
); );
@ -305,12 +306,17 @@ class SearchInputPage extends HookConsumerWidget {
// If date range is less than 24 hours, set the end date to the end of the day // If date range is less than 24 hours, set the end date to the end of the day
if (date.end.difference(date.start).inHours < 24) { if (date.end.difference(date.start).inHours < 24) {
dateRangeCurrentFilterWidget.value = Text( dateRangeCurrentFilterWidget.value = Text(
date.start.toLocal().toIso8601String().split('T').first, DateFormat.yMMMd().format(date.start.toLocal()),
style: context.textTheme.labelLarge, style: context.textTheme.labelLarge,
); );
} else { } else {
dateRangeCurrentFilterWidget.value = Text( dateRangeCurrentFilterWidget.value = Text(
'${date.start.toLocal().toIso8601String().split('T').first} to ${date.end.toLocal().toIso8601String().split('T').first}', 'search_filter_date_interval'.tr(
namedArgs: {
"start": DateFormat.yMMMd().format(date.start.toLocal()),
"end": DateFormat.yMMMd().format(date.end.toLocal()),
},
),
style: context.textTheme.labelLarge, style: context.textTheme.labelLarge,
); );
} }
@ -326,7 +332,11 @@ class SearchInputPage extends HookConsumerWidget {
); );
mediaTypeCurrentFilterWidget.value = Text( mediaTypeCurrentFilterWidget.value = Text(
assetType == AssetType.image ? 'Image' : 'Video', assetType == AssetType.image
? 'search_filter_media_type_image'.tr()
: assetType == AssetType.video
? 'search_filter_media_type_video'.tr()
: 'search_filter_media_type_all'.tr(),
style: context.textTheme.labelLarge, style: context.textTheme.labelLarge,
); );
} }
@ -343,7 +353,7 @@ class SearchInputPage extends HookConsumerWidget {
showFilterBottomSheet( showFilterBottomSheet(
context: context, context: context,
child: FilterBottomSheetScaffold( child: FilterBottomSheetScaffold(
title: 'Select media type', title: 'search_filter_media_type_title'.tr(),
onSearch: search, onSearch: search,
onClear: handleClear, onClear: handleClear,
child: MediaTypePicker( child: MediaTypePicker(
@ -367,7 +377,10 @@ class SearchInputPage extends HookConsumerWidget {
isNotInAlbum: value, isNotInAlbum: value,
), ),
); );
if (value) filterText.add('Not in album'); if (value) {
filterText
.add('search_filter_display_option_not_in_album'.tr());
}
break; break;
case DisplayOption.archive: case DisplayOption.archive:
filter.value = filter.value.copyWith( filter.value = filter.value.copyWith(
@ -375,7 +388,9 @@ class SearchInputPage extends HookConsumerWidget {
isArchive: value, isArchive: value,
), ),
); );
if (value) filterText.add('Archive'); if (value) {
filterText.add('search_filter_display_option_archive'.tr());
}
break; break;
case DisplayOption.favorite: case DisplayOption.favorite:
filter.value = filter.value.copyWith( filter.value = filter.value.copyWith(
@ -383,7 +398,9 @@ class SearchInputPage extends HookConsumerWidget {
isFavorite: value, isFavorite: value,
), ),
); );
if (value) filterText.add('Favorite'); if (value) {
filterText.add('search_filter_display_option_favorite'.tr());
}
break; break;
} }
}); });
@ -410,7 +427,7 @@ class SearchInputPage extends HookConsumerWidget {
showFilterBottomSheet( showFilterBottomSheet(
context: context, context: context,
child: FilterBottomSheetScaffold( child: FilterBottomSheetScaffold(
title: 'Display options', title: 'search_filter_display_options_title'.tr(),
onSearch: search, onSearch: search,
onClear: handleClear, onClear: handleClear,
child: DisplayOptionPicker( child: DisplayOptionPicker(
@ -489,8 +506,8 @@ class SearchInputPage extends HookConsumerWidget {
controller: textSearchController, controller: textSearchController,
decoration: InputDecoration( decoration: InputDecoration(
hintText: isContextualSearch.value hintText: isContextualSearch.value
? 'Sunrise on the beach' ? 'contextual_search'.tr()
: 'File name or extension', : 'filename_search'.tr(),
hintStyle: context.textTheme.bodyLarge?.copyWith( hintStyle: context.textTheme.bodyLarge?.copyWith(
color: context.themeData.colorScheme.onSurface.withOpacity(0.75), color: context.themeData.colorScheme.onSurface.withOpacity(0.75),
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
@ -519,37 +536,37 @@ class SearchInputPage extends HookConsumerWidget {
SearchFilterChip( SearchFilterChip(
icon: Icons.people_alt_rounded, icon: Icons.people_alt_rounded,
onTap: showPeoplePicker, onTap: showPeoplePicker,
label: 'People', label: 'search_filter_people'.tr(),
currentFilter: peopleCurrentFilterWidget.value, currentFilter: peopleCurrentFilterWidget.value,
), ),
SearchFilterChip( SearchFilterChip(
icon: Icons.location_pin, icon: Icons.location_pin,
onTap: showLocationPicker, onTap: showLocationPicker,
label: 'Location', label: 'search_filter_location'.tr(),
currentFilter: locationCurrentFilterWidget.value, currentFilter: locationCurrentFilterWidget.value,
), ),
SearchFilterChip( SearchFilterChip(
icon: Icons.camera_alt_rounded, icon: Icons.camera_alt_rounded,
onTap: showCameraPicker, onTap: showCameraPicker,
label: 'Camera', label: 'search_filter_camera'.tr(),
currentFilter: cameraCurrentFilterWidget.value, currentFilter: cameraCurrentFilterWidget.value,
), ),
SearchFilterChip( SearchFilterChip(
icon: Icons.date_range_rounded, icon: Icons.date_range_rounded,
onTap: showDatePicker, onTap: showDatePicker,
label: 'Date', label: 'search_filter_date'.tr(),
currentFilter: dateRangeCurrentFilterWidget.value, currentFilter: dateRangeCurrentFilterWidget.value,
), ),
SearchFilterChip( SearchFilterChip(
icon: Icons.video_collection_outlined, icon: Icons.video_collection_outlined,
onTap: showMediaTypePicker, onTap: showMediaTypePicker,
label: 'Media Type', label: 'search_filter_media_type'.tr(),
currentFilter: mediaTypeCurrentFilterWidget.value, currentFilter: mediaTypeCurrentFilterWidget.value,
), ),
SearchFilterChip( SearchFilterChip(
icon: Icons.display_settings_outlined, icon: Icons.display_settings_outlined,
onTap: showDisplayOptionPicker, onTap: showDisplayOptionPicker,
label: 'Display Options', label: 'search_filter_display_options'.tr(),
currentFilter: displayOptionCurrentFilterWidget.value, currentFilter: displayOptionCurrentFilterWidget.value,
), ),
], ],