1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-01-01 08:31:59 +00:00

feat(mobile): add missing translations (#8537)

* feat(mobile): add missing translations

* fix formatting
This commit is contained in:
Michel Heusschen 2024-04-05 16:45:37 +02:00 committed by GitHub
parent afd7815420
commit 7aaf48cb0c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 68 additions and 32 deletions

View file

@ -1,6 +1,9 @@
{ {
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_update": "Update", "action_common_update": "Update",
"action_common_confirm": "Confirm",
"action_common_back": "Back",
"action_common_clear": "Clear",
"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}",
"advanced_settings_log_level_title": "Log level: {}", "advanced_settings_log_level_title": "Log level: {}",
@ -19,6 +22,7 @@
"album_thumbnail_card_shared": " · Shared", "album_thumbnail_card_shared": " · Shared",
"album_thumbnail_owned": "Owned", "album_thumbnail_owned": "Owned",
"album_thumbnail_shared_by": "Shared by {}", "album_thumbnail_shared_by": "Shared by {}",
"album_viewer_appbar_delete_confirm": "Are you sure you want to delete this album from your account?",
"album_viewer_appbar_share_delete": "Delete album", "album_viewer_appbar_share_delete": "Delete album",
"album_viewer_appbar_share_err_delete": "Failed to delete album", "album_viewer_appbar_share_err_delete": "Failed to delete album",
"album_viewer_appbar_share_err_leave": "Failed to leave album", "album_viewer_appbar_share_err_leave": "Failed to leave album",
@ -111,6 +115,7 @@
"backup_manual_in_progress": "Upload already in progress. Try after sometime", "backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success", "backup_manual_success": "Success",
"backup_manual_title": "Upload status", "backup_manual_title": "Upload status",
"backup_options_page_title": "Backup options",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
@ -305,6 +310,8 @@
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} will no longer be able to access your photos.",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "Stop sharing your photos?",
"partner_page_title": "Partner", "partner_page_title": "Partner",
"partner_list_user_photos": "{user}'s photos",
"partner_list_view_all": "View all",
"permission_onboarding_back": "Back", "permission_onboarding_back": "Back",
"permission_onboarding_continue_anyway": "Continue anyway", "permission_onboarding_continue_anyway": "Continue anyway",
"permission_onboarding_get_started": "Get started", "permission_onboarding_get_started": "Get started",
@ -330,6 +337,18 @@
"recently_added_page_title": "Recently Added", "recently_added_page_title": "Recently Added",
"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_camera_make": "Make",
"search_filter_camera_model": "Model",
"search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album",
"search_filter_location_city": "City",
"search_filter_location_country": "Country",
"search_filter_location_state": "State",
"search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image",
"search_filter_media_type_video": "Video",
"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",
@ -438,6 +457,8 @@
"shared_link_info_chip_metadata": "EXIF", "shared_link_info_chip_metadata": "EXIF",
"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_individual_shared": "Individual shared",
"share_done": "Done", "share_done": "Done",
"share_invite": "Invite to album", "share_invite": "Invite to album",
"sharing_page_album": "Shared albums", "sharing_page_album": "Shared albums",

View file

@ -73,20 +73,18 @@ class AlbumViewerAppbar extends HookConsumerWidget
barrierDismissible: false, // user must tap button! barrierDismissible: false, // user must tap button!
builder: (BuildContext context) { builder: (BuildContext context) {
return AlertDialog( return AlertDialog(
title: const Text('Delete album'), title: const Text('album_viewer_appbar_share_delete').tr(),
content: const Text( content: const Text('album_viewer_appbar_delete_confirm').tr(),
'Are you sure you want to delete this album from your account?',
),
actions: <Widget>[ actions: <Widget>[
TextButton( TextButton(
onPressed: () => context.pop('Cancel'), onPressed: () => context.pop('Cancel'),
child: Text( child: Text(
'Cancel', 'action_common_cancel',
style: TextStyle( style: TextStyle(
color: context.primaryColor, color: context.primaryColor,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ).tr(),
), ),
TextButton( TextButton(
onPressed: () { onPressed: () {
@ -94,12 +92,12 @@ class AlbumViewerAppbar extends HookConsumerWidget
deleteAlbum(); deleteAlbum();
}, },
child: Text( child: Text(
'Confirm', 'action_common_confirm',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: !context.isDarkTheme ? Colors.red : Colors.red[300], color: !context.isDarkTheme ? Colors.red : Colors.red[300],
), ),
), ).tr(),
), ),
], ],
); );

View file

@ -1,4 +1,5 @@
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:immich_mobile/modules/settings/ui/backup_settings/backup_settings.dart'; import 'package:immich_mobile/modules/settings/ui/backup_settings/backup_settings.dart';
@ -10,9 +11,7 @@ class BackupOptionsPage extends StatelessWidget {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
elevation: 0, elevation: 0,
title: const Text( title: const Text("backup_options_page_title").tr(),
"Backup options",
),
leading: IconButton( leading: IconButton(
onPressed: () => context.popRoute(true), onPressed: () => context.popRoute(true),
splashRadius: 24, splashRadius: 24,

View file

@ -112,7 +112,7 @@ class ChangePasswordForm extends HookConsumerWidget {
TextButton.icon( TextButton.icon(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
onPressed: () => AutoRouter.of(context).back(), onPressed: () => AutoRouter.of(context).back(),
label: const Text('Back'), label: const Text('action_common_back').tr(),
), ),
], ],
), ),

View file

@ -1,4 +1,5 @@
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:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart';
@ -28,15 +29,19 @@ class PartnerList extends HookConsumerWidget {
), ),
leading: userAvatar(context, p, radius: 24), leading: userAvatar(context, p, radius: 24),
title: Text( title: Text(
"${p.name}'s photos", "partner_list_user_photos",
style: context.textTheme.labelLarge, style: context.textTheme.labelLarge,
).tr(
namedArgs: {
'user': p.name,
},
), ),
trailing: Text( trailing: Text(
"View all", "partner_list_view_all",
style: context.textTheme.labelLarge?.copyWith( style: context.textTheme.labelLarge?.copyWith(
color: context.primaryColor, color: context.primaryColor,
), ),
), ).tr(),
onTap: () => context.pushRoute((PartnerDetailRoute(partner: p))), onTap: () => context.pushRoute((PartnerDetailRoute(partner: p))),
); );
} }

View file

@ -1,3 +1,4 @@
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';
@ -68,7 +69,7 @@ class CameraPicker extends HookConsumerWidget {
}, },
width: context.width * 0.45, width: context.width * 0.45,
menuHeight: 400, menuHeight: 400,
label: const Text('Make'), label: const Text('search_filter_camera_make').tr(),
inputDecorationTheme: inputDecorationTheme, inputDecorationTheme: inputDecorationTheme,
controller: makeTextController, controller: makeTextController,
menuStyle: menuStyle, menuStyle: menuStyle,
@ -98,7 +99,7 @@ class CameraPicker extends HookConsumerWidget {
}, },
width: context.width * 0.45, width: context.width * 0.45,
menuHeight: 400, menuHeight: 400,
label: const Text('Model'), label: const Text('search_filter_camera_model').tr(),
inputDecorationTheme: inputDecorationTheme, inputDecorationTheme: inputDecorationTheme,
controller: modelTextController, controller: modelTextController,
menuStyle: menuStyle, menuStyle: menuStyle,

View file

@ -1,3 +1,4 @@
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:immich_mobile/modules/search/models/search_filter.dart'; import 'package:immich_mobile/modules/search/models/search_filter.dart';
@ -30,7 +31,7 @@ class DisplayOptionPicker extends HookWidget {
shrinkWrap: true, shrinkWrap: true,
children: [ children: [
CheckboxListTile( CheckboxListTile(
title: const Text('Not in album'), title: const Text('search_filter_display_option_not_in_album').tr(),
value: options.value[DisplayOption.notInAlbum], value: options.value[DisplayOption.notInAlbum],
onChanged: (bool? value) { onChanged: (bool? value) {
options.value = { options.value = {
@ -41,7 +42,7 @@ class DisplayOptionPicker extends HookWidget {
}, },
), ),
CheckboxListTile( CheckboxListTile(
title: const Text('Favorite'), title: const Text('search_filter_display_option_favorite').tr(),
value: options.value[DisplayOption.favorite], value: options.value[DisplayOption.favorite],
onChanged: (value) { onChanged: (value) {
options.value = { options.value = {
@ -52,7 +53,7 @@ class DisplayOptionPicker extends HookWidget {
}, },
), ),
CheckboxListTile( CheckboxListTile(
title: const Text('Archive'), title: const Text('search_filter_display_option_archive').tr(),
value: options.value[DisplayOption.archive], value: options.value[DisplayOption.archive],
onChanged: (value) { onChanged: (value) {
options.value = { options.value = {

View file

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart';
@ -48,7 +49,7 @@ class FilterBottomSheetScaffold extends StatelessWidget {
onClear(); onClear();
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
child: const Text('Clear'), child: const Text('action_common_clear').tr(),
), ),
const SizedBox(width: 8), const SizedBox(width: 8),
ElevatedButton( ElevatedButton(
@ -56,7 +57,7 @@ class FilterBottomSheetScaffold extends StatelessWidget {
onSearch(); onSearch();
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
child: const Text('Apply filter'), child: const Text('search_filter_apply').tr(),
), ),
], ],
), ),

View file

@ -1,3 +1,4 @@
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';
@ -79,7 +80,7 @@ class LocationPicker extends HookConsumerWidget {
}, },
menuHeight: 400, menuHeight: 400,
width: context.width * 0.9, width: context.width * 0.9,
label: const Text('Country'), label: const Text('search_filter_location_country').tr(),
inputDecorationTheme: inputDecorationTheme, inputDecorationTheme: inputDecorationTheme,
menuStyle: menuStyle, menuStyle: menuStyle,
controller: countryTextController, controller: countryTextController,
@ -112,7 +113,7 @@ class LocationPicker extends HookConsumerWidget {
}, },
menuHeight: 400, menuHeight: 400,
width: context.width * 0.9, width: context.width * 0.9,
label: const Text('State'), label: const Text('search_filter_location_state').tr(),
inputDecorationTheme: inputDecorationTheme, inputDecorationTheme: inputDecorationTheme,
menuStyle: menuStyle, menuStyle: menuStyle,
controller: stateTextController, controller: stateTextController,
@ -145,7 +146,7 @@ class LocationPicker extends HookConsumerWidget {
}, },
menuHeight: 400, menuHeight: 400,
width: context.width * 0.9, width: context.width * 0.9,
label: const Text('City'), label: const Text('search_filter_location_city').tr(),
inputDecorationTheme: inputDecorationTheme, inputDecorationTheme: inputDecorationTheme,
menuStyle: menuStyle, menuStyle: menuStyle,
controller: cityTextController, controller: cityTextController,

View file

@ -1,3 +1,4 @@
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:immich_mobile/shared/models/asset.dart'; import 'package:immich_mobile/shared/models/asset.dart';
@ -16,7 +17,7 @@ class MediaTypePicker extends HookWidget {
shrinkWrap: true, shrinkWrap: true,
children: [ children: [
RadioListTile( RadioListTile(
title: const Text("All"), title: const Text("search_filter_media_type_all").tr(),
value: AssetType.other, value: AssetType.other,
onChanged: (value) { onChanged: (value) {
selectedMediaType.value = value!; selectedMediaType.value = value!;
@ -25,7 +26,7 @@ class MediaTypePicker extends HookWidget {
groupValue: selectedMediaType.value, groupValue: selectedMediaType.value,
), ),
RadioListTile( RadioListTile(
title: const Text("Image"), title: const Text("search_filter_media_type_image").tr(),
value: AssetType.image, value: AssetType.image,
onChanged: (value) { onChanged: (value) {
selectedMediaType.value = value!; selectedMediaType.value = value!;
@ -34,7 +35,7 @@ class MediaTypePicker extends HookWidget {
groupValue: selectedMediaType.value, groupValue: selectedMediaType.value,
), ),
RadioListTile( RadioListTile(
title: const Text("Video"), title: const Text("search_filter_media_type_video").tr(),
value: AssetType.video, value: AssetType.video,
onChanged: (value) { onChanged: (value) {
selectedMediaType.value = value!; selectedMediaType.value = value!;

View file

@ -151,13 +151,13 @@ class SearchPage extends HookConsumerWidget {
Icon(Icons.search, color: context.primaryColor), Icon(Icons.search, color: context.primaryColor),
const SizedBox(width: 16.0), const SizedBox(width: 16.0),
Text( Text(
"Search your photos", "search_bar_hint",
style: context.textTheme.bodyLarge?.copyWith( style: context.textTheme.bodyLarge?.copyWith(
color: color:
context.isDarkTheme ? Colors.white70 : Colors.black54, context.isDarkTheme ? Colors.white70 : Colors.black54,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
), ),
), ).tr(),
], ],
), ),
), ),

View file

@ -48,7 +48,11 @@ class SharedLinkEditPage extends HookConsumerWidget {
return Row( return Row(
children: [ children: [
const Text( const Text(
"Public album | ", 'shared_link_public_album',
style: TextStyle(fontWeight: FontWeight.bold),
).tr(),
const Text(
" | ",
style: TextStyle(fontWeight: FontWeight.bold), style: TextStyle(fontWeight: FontWeight.bold),
), ),
Text( Text(
@ -66,7 +70,11 @@ class SharedLinkEditPage extends HookConsumerWidget {
return Row( return Row(
children: [ children: [
const Text( const Text(
"Individual shared | ", 'shared_link_individual_shared',
style: TextStyle(fontWeight: FontWeight.bold),
).tr(),
const Text(
" | ",
style: TextStyle(fontWeight: FontWeight.bold), style: TextStyle(fontWeight: FontWeight.bold),
), ),
Expanded( Expanded(