Jelajahi Sumber

l10n: extract strings

Neeraj Gupta 2 tahun lalu
induk
melakukan
372469f9ce

+ 26 - 1
lib/generated/intl/messages_en.dart

@@ -369,6 +369,7 @@ class MessageLookup extends MessageLookupByLibrary {
             " other albums they are part of?"),
             " other albums they are part of?"),
         "deleteAlbumsDialogBody": MessageLookupByLibrary.simpleMessage(
         "deleteAlbumsDialogBody": MessageLookupByLibrary.simpleMessage(
             "This will delete all empty albums. This is useful when you want to reduce the clutter in your album list."),
             "This will delete all empty albums. This is useful when you want to reduce the clutter in your album list."),
+        "deleteAll": MessageLookupByLibrary.simpleMessage("Delete All"),
         "deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
         "deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
             "You are about to permanently delete your account and all its data.\nThis action is irreversible."),
             "You are about to permanently delete your account and all its data.\nThis action is irreversible."),
         "deleteEmptyAlbums":
         "deleteEmptyAlbums":
@@ -402,6 +403,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "details": MessageLookupByLibrary.simpleMessage("Details"),
         "details": MessageLookupByLibrary.simpleMessage("Details"),
         "devAccountChanged": MessageLookupByLibrary.simpleMessage(
         "devAccountChanged": MessageLookupByLibrary.simpleMessage(
             "The developer account we use to publish ente on App Store has changed. Because of this, you will need to login again.\n\nOur apologies for the inconvenience, but this was unavoidable."),
             "The developer account we use to publish ente on App Store has changed. Because of this, you will need to login again.\n\nOur apologies for the inconvenience, but this was unavoidable."),
+        "deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
+            "Files added to this device album will automatically get uploaded to ente."),
         "deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
         "deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
             "Disable the device screen lock when ente is in the foreground and there is a backup in progress. This is normally not needed, but may help big uploads and initial imports of large libraries complete faster."),
             "Disable the device screen lock when ente is in the foreground and there is a backup in progress. This is normally not needed, but may help big uploads and initial imports of large libraries complete faster."),
         "disableAutoLock":
         "disableAutoLock":
@@ -509,6 +512,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "howItWorks": MessageLookupByLibrary.simpleMessage("How it works"),
         "howItWorks": MessageLookupByLibrary.simpleMessage("How it works"),
         "howToViewShareeVerificationID": MessageLookupByLibrary.simpleMessage(
         "howToViewShareeVerificationID": MessageLookupByLibrary.simpleMessage(
             "Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match."),
             "Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match."),
+        "ignoredFolderUploadReason": MessageLookupByLibrary.simpleMessage(
+            "Some files in this album are ignored from upload because they had previously been deleted from ente."),
         "importing": MessageLookupByLibrary.simpleMessage("Importing...."),
         "importing": MessageLookupByLibrary.simpleMessage("Importing...."),
         "incorrectPasswordTitle":
         "incorrectPasswordTitle":
             MessageLookupByLibrary.simpleMessage("Incorrect password"),
             MessageLookupByLibrary.simpleMessage("Incorrect password"),
@@ -531,6 +536,9 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Invite your friends"),
             MessageLookupByLibrary.simpleMessage("Invite your friends"),
         "itemCount": m14,
         "itemCount": m14,
         "itemSelectedCount": m15,
         "itemSelectedCount": m15,
+        "itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion":
+            MessageLookupByLibrary.simpleMessage(
+                "Items show the number of days remaining before permanent deletion"),
         "itemsWillBeRemovedFromAlbum": MessageLookupByLibrary.simpleMessage(
         "itemsWillBeRemovedFromAlbum": MessageLookupByLibrary.simpleMessage(
             "Selected items will be removed from this album"),
             "Selected items will be removed from this album"),
         "keepPhotos": MessageLookupByLibrary.simpleMessage("Keep Photos"),
         "keepPhotos": MessageLookupByLibrary.simpleMessage("Keep Photos"),
@@ -538,7 +546,10 @@ class MessageLookup extends MessageLookupByLibrary {
             "Kindly help us with this information"),
             "Kindly help us with this information"),
         "lastUpdated": MessageLookupByLibrary.simpleMessage("Last updated"),
         "lastUpdated": MessageLookupByLibrary.simpleMessage("Last updated"),
         "leave": MessageLookupByLibrary.simpleMessage("Leave"),
         "leave": MessageLookupByLibrary.simpleMessage("Leave"),
+        "leaveAlbum": MessageLookupByLibrary.simpleMessage("Leave album"),
         "leaveFamily": MessageLookupByLibrary.simpleMessage("Leave family"),
         "leaveFamily": MessageLookupByLibrary.simpleMessage("Leave family"),
+        "leaveSharedAlbum":
+            MessageLookupByLibrary.simpleMessage("Leave shared album?"),
         "lightTheme": MessageLookupByLibrary.simpleMessage("Light"),
         "lightTheme": MessageLookupByLibrary.simpleMessage("Light"),
         "linkCopiedToClipboard":
         "linkCopiedToClipboard":
             MessageLookupByLibrary.simpleMessage("Link copied to clipboard"),
             MessageLookupByLibrary.simpleMessage("Link copied to clipboard"),
@@ -626,6 +637,9 @@ class MessageLookup extends MessageLookupByLibrary {
         "photoGridSize":
         "photoGridSize":
             MessageLookupByLibrary.simpleMessage("Photo grid size"),
             MessageLookupByLibrary.simpleMessage("Photo grid size"),
         "photoSmallCase": MessageLookupByLibrary.simpleMessage("photo"),
         "photoSmallCase": MessageLookupByLibrary.simpleMessage("photo"),
+        "photosAddedByYouWillBeRemovedFromTheAlbum":
+            MessageLookupByLibrary.simpleMessage(
+                "Photos added by you will be removed from the album"),
         "playstoreSubscription":
         "playstoreSubscription":
             MessageLookupByLibrary.simpleMessage("PlayStore subscription"),
             MessageLookupByLibrary.simpleMessage("PlayStore subscription"),
         "pleaseContactSupportAndWeWillBeHappyToHelp":
         "pleaseContactSupportAndWeWillBeHappyToHelp":
@@ -719,12 +733,16 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Remove?"),
             MessageLookupByLibrary.simpleMessage("Remove?"),
         "removingFromFavorites":
         "removingFromFavorites":
             MessageLookupByLibrary.simpleMessage("Removing from favorites..."),
             MessageLookupByLibrary.simpleMessage("Removing from favorites..."),
+        "rename": MessageLookupByLibrary.simpleMessage("Rename"),
+        "renameAlbum": MessageLookupByLibrary.simpleMessage("Rename album"),
         "renewSubscription":
         "renewSubscription":
             MessageLookupByLibrary.simpleMessage("Renew subscription"),
             MessageLookupByLibrary.simpleMessage("Renew subscription"),
         "renewsOn": m27,
         "renewsOn": m27,
         "reportABug": MessageLookupByLibrary.simpleMessage("Report a bug"),
         "reportABug": MessageLookupByLibrary.simpleMessage("Report a bug"),
         "reportBug": MessageLookupByLibrary.simpleMessage("Report bug"),
         "reportBug": MessageLookupByLibrary.simpleMessage("Report bug"),
         "resendEmail": MessageLookupByLibrary.simpleMessage("Resend email"),
         "resendEmail": MessageLookupByLibrary.simpleMessage("Resend email"),
+        "resetIgnoredFiles":
+            MessageLookupByLibrary.simpleMessage("Reset ignored files"),
         "resetPasswordTitle":
         "resetPasswordTitle":
             MessageLookupByLibrary.simpleMessage("Reset password"),
             MessageLookupByLibrary.simpleMessage("Reset password"),
         "restore": MessageLookupByLibrary.simpleMessage("Restore"),
         "restore": MessageLookupByLibrary.simpleMessage("Restore"),
@@ -870,6 +888,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "total": MessageLookupByLibrary.simpleMessage("total"),
         "total": MessageLookupByLibrary.simpleMessage("total"),
         "trash": MessageLookupByLibrary.simpleMessage("Trash"),
         "trash": MessageLookupByLibrary.simpleMessage("Trash"),
         "tryAgain": MessageLookupByLibrary.simpleMessage("Try again"),
         "tryAgain": MessageLookupByLibrary.simpleMessage("Try again"),
+        "turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
+            "Turn on backup to automatically upload files added to this device folder to ente."),
         "twitter": MessageLookupByLibrary.simpleMessage("Twitter"),
         "twitter": MessageLookupByLibrary.simpleMessage("Twitter"),
         "twoMonthsFreeOnYearlyPlans": MessageLookupByLibrary.simpleMessage(
         "twoMonthsFreeOnYearlyPlans": MessageLookupByLibrary.simpleMessage(
             "2 months free on yearly plans"),
             "2 months free on yearly plans"),
@@ -948,6 +968,8 @@ class MessageLookup extends MessageLookupByLibrary {
             "You cannot downgrade to this plan"),
             "You cannot downgrade to this plan"),
         "youCannotShareWithYourself": MessageLookupByLibrary.simpleMessage(
         "youCannotShareWithYourself": MessageLookupByLibrary.simpleMessage(
             "You cannot share with yourself"),
             "You cannot share with yourself"),
+        "youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
+            "You don\'t have any archived items."),
         "youHaveSuccessfullyFreedUp": m45,
         "youHaveSuccessfullyFreedUp": m45,
         "yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
         "yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
             "Your account has been deleted"),
             "Your account has been deleted"),
@@ -968,6 +990,9 @@ class MessageLookup extends MessageLookupByLibrary {
                 "Your subscription was updated successfully"),
                 "Your subscription was updated successfully"),
         "youveNoDuplicateFilesThatCanBeCleared":
         "youveNoDuplicateFilesThatCanBeCleared":
             MessageLookupByLibrary.simpleMessage(
             MessageLookupByLibrary.simpleMessage(
-                "You\'ve no duplicate files that can be cleared")
+                "You\'ve no duplicate files that can be cleared"),
+        "youveNoFilesInThisAlbumThatCanBeDeleted":
+            MessageLookupByLibrary.simpleMessage(
+                "You\'ve no files in this album that can be deleted")
       };
       };
 }
 }

+ 130 - 0
lib/generated/l10n.dart

@@ -5256,6 +5256,136 @@ class S {
       args: [],
       args: [],
     );
     );
   }
   }
+
+  /// `Items show the number of days remaining before permanent deletion`
+  String get itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion {
+    return Intl.message(
+      'Items show the number of days remaining before permanent deletion',
+      name: 'itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Delete All`
+  String get deleteAll {
+    return Intl.message(
+      'Delete All',
+      name: 'deleteAll',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Rename album`
+  String get renameAlbum {
+    return Intl.message(
+      'Rename album',
+      name: 'renameAlbum',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Rename`
+  String get rename {
+    return Intl.message(
+      'Rename',
+      name: 'rename',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Leave shared album?`
+  String get leaveSharedAlbum {
+    return Intl.message(
+      'Leave shared album?',
+      name: 'leaveSharedAlbum',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Leave album`
+  String get leaveAlbum {
+    return Intl.message(
+      'Leave album',
+      name: 'leaveAlbum',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Photos added by you will be removed from the album`
+  String get photosAddedByYouWillBeRemovedFromTheAlbum {
+    return Intl.message(
+      'Photos added by you will be removed from the album',
+      name: 'photosAddedByYouWillBeRemovedFromTheAlbum',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `You've no files in this album that can be deleted`
+  String get youveNoFilesInThisAlbumThatCanBeDeleted {
+    return Intl.message(
+      'You\'ve no files in this album that can be deleted',
+      name: 'youveNoFilesInThisAlbumThatCanBeDeleted',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `You don't have any archived items.`
+  String get youDontHaveAnyArchivedItems {
+    return Intl.message(
+      'You don\'t have any archived items.',
+      name: 'youDontHaveAnyArchivedItems',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Some files in this album are ignored from upload because they had previously been deleted from ente.`
+  String get ignoredFolderUploadReason {
+    return Intl.message(
+      'Some files in this album are ignored from upload because they had previously been deleted from ente.',
+      name: 'ignoredFolderUploadReason',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Reset ignored files`
+  String get resetIgnoredFiles {
+    return Intl.message(
+      'Reset ignored files',
+      name: 'resetIgnoredFiles',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Files added to this device album will automatically get uploaded to ente.`
+  String get deviceFilesAutoUploading {
+    return Intl.message(
+      'Files added to this device album will automatically get uploaded to ente.',
+      name: 'deviceFilesAutoUploading',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Turn on backup to automatically upload files added to this device folder to ente.`
+  String get turnOnBackupForAutoUpload {
+    return Intl.message(
+      'Turn on backup to automatically upload files added to this device folder to ente.',
+      name: 'turnOnBackupForAutoUpload',
+      desc: '',
+      args: [],
+    );
+  }
 }
 }
 
 
 class AppLocalizationDelegate extends LocalizationsDelegate<S> {
 class AppLocalizationDelegate extends LocalizationsDelegate<S> {

+ 14 - 1
lib/l10n/intl_en.arb

@@ -741,5 +741,18 @@
   "sharedByMe": "Shared by me",
   "sharedByMe": "Shared by me",
   "doubleYourStorage": "Double your storage",
   "doubleYourStorage": "Double your storage",
   "referFriendsAnd2xYourPlan": "Refer friends and 2x your plan",
   "referFriendsAnd2xYourPlan": "Refer friends and 2x your plan",
-  "shareAlbumHint": "Open an album and tap the share button on the top right to share."
+  "shareAlbumHint": "Open an album and tap the share button on the top right to share.",
+  "itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion": "Items show the number of days remaining before permanent deletion",
+  "deleteAll": "Delete All",
+  "renameAlbum": "Rename album",
+  "rename": "Rename",
+  "leaveSharedAlbum": "Leave shared album?",
+  "leaveAlbum": "Leave album",
+  "photosAddedByYouWillBeRemovedFromTheAlbum": "Photos added by you will be removed from the album",
+  "youveNoFilesInThisAlbumThatCanBeDeleted": "You've no files in this album that can be deleted",
+  "youDontHaveAnyArchivedItems": "You don't have any archived items.",
+  "ignoredFolderUploadReason": "Some files in this album are ignored from upload because they had previously been deleted from ente.",
+  "resetIgnoredFiles": "Reset ignored files",
+  "deviceFilesAutoUploading": "Files added to this device album will automatically get uploaded to ente.",
+  "turnOnBackupForAutoUpload": "Turn on backup to automatically upload files added to this device folder to ente."
 }
 }

+ 5 - 4
lib/ui/viewer/gallery/archive_page.dart

@@ -4,6 +4,7 @@ import 'package:photos/core/configuration.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/files_updated_event.dart';
+import "package:photos/generated/l10n.dart";
 import 'package:photos/models/gallery_type.dart';
 import 'package:photos/models/gallery_type.dart';
 import 'package:photos/models/magic_metadata.dart';
 import 'package:photos/models/magic_metadata.dart';
 import 'package:photos/models/selected_files.dart';
 import 'package:photos/models/selected_files.dart';
@@ -28,7 +29,7 @@ class ArchivePage extends StatelessWidget {
   }) : super(key: key);
   }) : super(key: key);
 
 
   @override
   @override
-  Widget build(Object context) {
+  Widget build(BuildContext context) {
     final Set<int> hiddenCollectionIDs =
     final Set<int> hiddenCollectionIDs =
         CollectionsService.instance.getHiddenCollections();
         CollectionsService.instance.getHiddenCollections();
     final gallery = Gallery(
     final gallery = Gallery(
@@ -63,8 +64,8 @@ class ArchivePage extends StatelessWidget {
       tagPrefix: tagPrefix,
       tagPrefix: tagPrefix,
       selectedFiles: _selectedFiles,
       selectedFiles: _selectedFiles,
       initialFiles: null,
       initialFiles: null,
-      emptyState: const EmptyState(
-        text: "You don't have any archived items.",
+      emptyState: EmptyState(
+        text: S.of(context).youDontHaveAnyArchivedItems,
       ),
       ),
       header: Padding(
       header: Padding(
         padding: const EdgeInsets.only(bottom: 24, top: 8),
         padding: const EdgeInsets.only(bottom: 24, top: 8),
@@ -78,7 +79,7 @@ class ArchivePage extends StatelessWidget {
         preferredSize: const Size.fromHeight(50.0),
         preferredSize: const Size.fromHeight(50.0),
         child: GalleryAppBarWidget(
         child: GalleryAppBarWidget(
           appBarType,
           appBarType,
-          "Archive",
+          S.of(context).archive,
           _selectedFiles,
           _selectedFiles,
         ),
         ),
       ),
       ),

+ 9 - 8
lib/ui/viewer/gallery/device_folder_page.dart

@@ -7,6 +7,7 @@ import 'package:photos/db/device_files_db.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/local_photos_updated_event.dart';
 import 'package:photos/events/local_photos_updated_event.dart';
+import "package:photos/generated/l10n.dart";
 import 'package:photos/models/device_collection.dart';
 import 'package:photos/models/device_collection.dart';
 import 'package:photos/models/file.dart';
 import 'package:photos/models/file.dart';
 import 'package:photos/models/gallery_type.dart';
 import 'package:photos/models/gallery_type.dart';
@@ -112,7 +113,8 @@ class _BackupHeaderWidgetState extends State<BackupHeaderWidget> {
             mainAxisSize: MainAxisSize.min,
             mainAxisSize: MainAxisSize.min,
             children: [
             children: [
               MenuItemWidget(
               MenuItemWidget(
-                captionedTextWidget: const CaptionedTextWidget(title: "Backup"),
+                captionedTextWidget:
+                    CaptionedTextWidget(title: S.of(context).backup),
                 singleBorderRadius: 8.0,
                 singleBorderRadius: 8.0,
                 menuItemColor: colorScheme.fillFaint,
                 menuItemColor: colorScheme.fillFaint,
                 alignCaptionedTextToLeft: true,
                 alignCaptionedTextToLeft: true,
@@ -142,8 +144,8 @@ class _BackupHeaderWidgetState extends State<BackupHeaderWidget> {
                 builder: (BuildContext context, bool value, _) {
                 builder: (BuildContext context, bool value, _) {
                   return MenuSectionDescriptionWidget(
                   return MenuSectionDescriptionWidget(
                     content: value
                     content: value
-                        ? "Files added to this device album will automatically get uploaded to ente."
-                        : "Turn on backup to automatically upload files added to this device folder to ente.",
+                        ? S.of(context).deviceFilesAutoUploading
+                        : S.of(context).turnOnBackupForAutoUpload,
                   );
                   );
                 },
                 },
               ),
               ),
@@ -232,8 +234,8 @@ class _ResetIgnoredFilesWidgetState extends State<ResetIgnoredFilesWidget> {
       children: [
       children: [
         const SizedBox(height: 24),
         const SizedBox(height: 24),
         MenuItemWidget(
         MenuItemWidget(
-          captionedTextWidget: const CaptionedTextWidget(
-            title: "Reset ignored files",
+          captionedTextWidget: CaptionedTextWidget(
+            title: S.of(context).resetIgnoredFiles,
           ),
           ),
           singleBorderRadius: 8.0,
           singleBorderRadius: 8.0,
           menuItemColor: getEnteColorScheme(context).fillFaint,
           menuItemColor: getEnteColorScheme(context).fillFaint,
@@ -248,9 +250,8 @@ class _ResetIgnoredFilesWidgetState extends State<ResetIgnoredFilesWidget> {
             });
             });
           },
           },
         ),
         ),
-        const MenuSectionDescriptionWidget(
-          content:
-              "Some files in this album are ignored from upload because they had previously been deleted from ente.",
+        MenuSectionDescriptionWidget(
+          content: S.of(context).ignoredFolderUploadReason,
         ),
         ),
       ],
       ],
     );
     );

+ 11 - 10
lib/ui/viewer/gallery/gallery_app_bar_widget.dart

@@ -7,6 +7,7 @@ import 'package:logging/logging.dart';
 import 'package:photos/core/configuration.dart';
 import 'package:photos/core/configuration.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/events/subscription_purchased_event.dart';
 import 'package:photos/events/subscription_purchased_event.dart';
+import "package:photos/generated/l10n.dart";
 import 'package:photos/models/backup_status.dart';
 import 'package:photos/models/backup_status.dart';
 import 'package:photos/models/collection.dart';
 import 'package:photos/models/collection.dart';
 import 'package:photos/models/device_collection.dart';
 import 'package:photos/models/device_collection.dart';
@@ -112,9 +113,9 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
     }
     }
     final result = await showTextInputDialog(
     final result = await showTextInputDialog(
       context,
       context,
-      title: "Rename album",
-      submitButtonLabel: "Rename",
-      hintText: "Enter album name",
+      title: S.of(context).renameAlbum,
+      submitButtonLabel: S.of(context).rename,
+      hintText: S.of(context).enterAlbumName,
       alwaysShowSuccessState: true,
       alwaysShowSuccessState: true,
       textCapitalization: TextCapitalization.words,
       textCapitalization: TextCapitalization.words,
       onSubmit: (String text) async {
       onSubmit: (String text) async {
@@ -150,21 +151,21 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
           shouldStickToDarkTheme: true,
           shouldStickToDarkTheme: true,
           buttonAction: ButtonAction.first,
           buttonAction: ButtonAction.first,
           shouldSurfaceExecutionStates: true,
           shouldSurfaceExecutionStates: true,
-          labelText: "Leave album",
+          labelText: S.of(context).leaveAlbum,
           onTap: () async {
           onTap: () async {
             await CollectionsService.instance.leaveAlbum(widget.collection!);
             await CollectionsService.instance.leaveAlbum(widget.collection!);
           },
           },
         ),
         ),
-        const ButtonWidget(
+        ButtonWidget(
           buttonType: ButtonType.secondary,
           buttonType: ButtonType.secondary,
           buttonAction: ButtonAction.cancel,
           buttonAction: ButtonAction.cancel,
           isInAlert: true,
           isInAlert: true,
           shouldStickToDarkTheme: true,
           shouldStickToDarkTheme: true,
-          labelText: "Cancel",
+          labelText: S.of(context).cancel,
         )
         )
       ],
       ],
-      title: "Leave shared album?",
-      body: "Photos added by you will be removed from the album",
+      title: S.of(context).leaveSharedAlbum,
+      body: S.of(context).photosAddedByYouWillBeRemovedFromTheAlbum,
     );
     );
     if (actionResult?.action != null && mounted) {
     if (actionResult?.action != null && mounted) {
       if (actionResult!.action == ButtonAction.error) {
       if (actionResult!.action == ButtonAction.error) {
@@ -196,8 +197,8 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
     if (status.localIDs.isEmpty) {
     if (status.localIDs.isEmpty) {
       showErrorDialog(
       showErrorDialog(
         context,
         context,
-        "✨ All clear",
-        "You've no files in this album that can be deleted",
+        S.of(context).allClear,
+        S.of(context).youveNoFilesInThisAlbumThatCanBeDeleted,
       );
       );
     } else {
     } else {
       final bool? result = await routeToPage(
       final bool? result = await routeToPage(

+ 3 - 2
lib/ui/viewer/gallery/hidden_page.dart

@@ -4,6 +4,7 @@ import 'package:photos/core/configuration.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/files_updated_event.dart';
+import "package:photos/generated/l10n.dart";
 import 'package:photos/models/gallery_type.dart';
 import 'package:photos/models/gallery_type.dart';
 import 'package:photos/models/selected_files.dart';
 import 'package:photos/models/selected_files.dart';
 import 'package:photos/services/collections_service.dart';
 import 'package:photos/services/collections_service.dart';
@@ -26,7 +27,7 @@ class HiddenPage extends StatelessWidget {
   }) : super(key: key);
   }) : super(key: key);
 
 
   @override
   @override
-  Widget build(Object context) {
+  Widget build(BuildContext context) {
     final gallery = Gallery(
     final gallery = Gallery(
       asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) {
       asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) {
         return FilesDB.instance.getFilesInCollections(
         return FilesDB.instance.getFilesInCollections(
@@ -69,7 +70,7 @@ class HiddenPage extends StatelessWidget {
         preferredSize: const Size.fromHeight(50.0),
         preferredSize: const Size.fromHeight(50.0),
         child: GalleryAppBarWidget(
         child: GalleryAppBarWidget(
           appBarType,
           appBarType,
-          "Hidden",
+          S.of(context).hidden,
           _selectedFiles,
           _selectedFiles,
         ),
         ),
       ),
       ),

+ 3 - 2
lib/ui/viewer/gallery/photo_grid_size_picker_page.dart

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
 import 'package:photos/core/constants.dart';
 import 'package:photos/core/constants.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/events/force_reload_home_gallery_event.dart';
 import 'package:photos/events/force_reload_home_gallery_event.dart';
+import "package:photos/generated/l10n.dart";
 import 'package:photos/theme/ente_theme.dart';
 import 'package:photos/theme/ente_theme.dart';
 import 'package:photos/ui/components/captioned_text_widget.dart';
 import 'package:photos/ui/components/captioned_text_widget.dart';
 import 'package:photos/ui/components/divider_widget.dart';
 import 'package:photos/ui/components/divider_widget.dart';
@@ -20,9 +21,9 @@ class PhotoGridSizePickerPage extends StatelessWidget {
       body: CustomScrollView(
       body: CustomScrollView(
         primary: false,
         primary: false,
         slivers: <Widget>[
         slivers: <Widget>[
-          const TitleBarWidget(
+          TitleBarWidget(
             flexibleSpaceTitle: TitleBarTitleWidget(
             flexibleSpaceTitle: TitleBarTitleWidget(
-              title: "Photo grid size",
+              title: S.of(context).photoGridSize,
             ),
             ),
           ),
           ),
           SliverList(
           SliverList(

+ 7 - 4
lib/ui/viewer/gallery/trash_page.dart

@@ -6,6 +6,7 @@ import 'package:photos/core/event_bus.dart';
 import 'package:photos/db/trash_db.dart';
 import 'package:photos/db/trash_db.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/force_reload_trash_page_event.dart';
 import 'package:photos/events/force_reload_trash_page_event.dart';
+import "package:photos/generated/l10n.dart";
 import 'package:photos/models/gallery_type.dart';
 import 'package:photos/models/gallery_type.dart';
 import 'package:photos/models/selected_files.dart';
 import 'package:photos/models/selected_files.dart';
 import 'package:photos/ui/common/bottom_shadow.dart';
 import 'package:photos/ui/common/bottom_shadow.dart';
@@ -27,7 +28,7 @@ class TrashPage extends StatelessWidget {
   }) : super(key: key);
   }) : super(key: key);
 
 
   @override
   @override
-  Widget build(Object context) {
+  Widget build(BuildContext context) {
     final bool filesAreSelected = _selectedFiles.files.isNotEmpty;
     final bool filesAreSelected = _selectedFiles.files.isNotEmpty;
 
 
     final gallery = Gallery(
     final gallery = Gallery(
@@ -60,7 +61,7 @@ class TrashPage extends StatelessWidget {
         preferredSize: const Size.fromHeight(50.0),
         preferredSize: const Size.fromHeight(50.0),
         child: GalleryAppBarWidget(
         child: GalleryAppBarWidget(
           appBarType,
           appBarType,
-          "Trash",
+          S.of(context).trash,
           _selectedFiles,
           _selectedFiles,
         ),
         ),
       ),
       ),
@@ -102,7 +103,9 @@ class TrashPage extends StatelessWidget {
           return Padding(
           return Padding(
             padding: const EdgeInsets.all(16),
             padding: const EdgeInsets.all(16),
             child: Text(
             child: Text(
-              'Items show the number of days remaining before permanent deletion',
+              S
+                  .of(context)
+                  .itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion,
               style:
               style:
                   Theme.of(context).textTheme.caption!.copyWith(fontSize: 16),
                   Theme.of(context).textTheme.caption!.copyWith(fontSize: 16),
             ),
             ),
@@ -141,7 +144,7 @@ class BottomButtonsWidget extends StatelessWidget {
                       horizontal: 16,
                       horizontal: 16,
                     ),
                     ),
                     child: Text(
                     child: Text(
-                      'Delete All',
+                      S.of(context).deleteAll,
                       style: Theme.of(context).textTheme.subtitle2!.copyWith(
                       style: Theme.of(context).textTheme.subtitle2!.copyWith(
                             color: const Color.fromRGBO(255, 101, 101, 1),
                             color: const Color.fromRGBO(255, 101, 101, 1),
                           ),
                           ),

+ 4 - 3
lib/ui/viewer/gallery/uncategorized_page.dart

@@ -3,6 +3,7 @@ import 'package:photos/core/event_bus.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/events/collection_updated_event.dart';
 import 'package:photos/events/collection_updated_event.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/files_updated_event.dart';
+import "package:photos/generated/l10n.dart";
 import 'package:photos/models/collection.dart';
 import 'package:photos/models/collection.dart';
 import 'package:photos/models/file_load_result.dart';
 import 'package:photos/models/file_load_result.dart';
 import 'package:photos/models/gallery_type.dart';
 import 'package:photos/models/gallery_type.dart';
@@ -28,7 +29,7 @@ class UnCategorizedPage extends StatelessWidget {
   }) : super(key: key);
   }) : super(key: key);
 
 
   @override
   @override
-  Widget build(Object context) {
+  Widget build(BuildContext context) {
     final gallery = Gallery(
     final gallery = Gallery(
       asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) async {
       asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) async {
         final FileLoadResult result =
         final FileLoadResult result =
@@ -59,14 +60,14 @@ class UnCategorizedPage extends StatelessWidget {
       tagPrefix: tagPrefix,
       tagPrefix: tagPrefix,
       selectedFiles: _selectedFiles,
       selectedFiles: _selectedFiles,
       initialFiles: null,
       initialFiles: null,
-      albumName: "Uncategorized",
+      albumName: S.of(context).uncategorized,
     );
     );
     return Scaffold(
     return Scaffold(
       appBar: PreferredSize(
       appBar: PreferredSize(
         preferredSize: const Size.fromHeight(50.0),
         preferredSize: const Size.fromHeight(50.0),
         child: GalleryAppBarWidget(
         child: GalleryAppBarWidget(
           appBarType,
           appBarType,
-          "Uncategorized",
+          S.of(context).uncategorized,
           _selectedFiles,
           _selectedFiles,
         ),
         ),
       ),
       ),