diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml
index ba8eec4025..406e8f89e1 100644
--- a/.github/workflows/build-mobile.yml
+++ b/.github/workflows/build-mobile.yml
@@ -78,6 +78,10 @@ jobs:
         working-directory: ./mobile
         run: flutter pub get
 
+      - name: Generate translation file
+        run: make translation
+        working-directory: ./mobile
+
       - name: Build Android App Bundle
         working-directory: ./mobile
         env:
diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml
index 47ccfe32f8..615082f86a 100644
--- a/.github/workflows/static_analysis.yml
+++ b/.github/workflows/static_analysis.yml
@@ -50,6 +50,10 @@ jobs:
         run: dart pub get
         working-directory: ./mobile
 
+      - name: Generate translation file
+        run: make translation; dart format lib/generated/codegen_loader.g.dart
+        working-directory: ./mobile
+
       - name: Run Build Runner
         run: make build
         working-directory: ./mobile
diff --git a/mobile/.gitignore b/mobile/.gitignore
index 5f6e15354f..894a08802f 100644
--- a/mobile/.gitignore
+++ b/mobile/.gitignore
@@ -56,4 +56,7 @@ default.isar.lock
 libisar.so
 
 # FVM Version
-.fvm/
\ No newline at end of file
+.fvm/
+
+# Translation file
+lib/generated/codegen_loader.g.dart
\ No newline at end of file
diff --git a/mobile/lib/main.dart b/mobile/lib/main.dart
index 407ea86d59..075967c66a 100644
--- a/mobile/lib/main.dart
+++ b/mobile/lib/main.dart
@@ -31,8 +31,10 @@ import 'package:immich_mobile/utils/migration.dart';
 import 'package:intl/date_symbol_data_local.dart';
 import 'package:logging/logging.dart';
 import 'package:timezone/data/latest.dart';
+import 'package:immich_mobile/generated/codegen_loader.g.dart';
 
 void main() async {
+  EasyLocalization.logger.enableBuildModes = [];
   ImmichWidgetsBinding();
   final db = await Bootstrap.initIsar();
   await Bootstrap.initDomain(db);
@@ -234,6 +236,7 @@ class MainWidget extends StatelessWidget {
       path: translationsPath,
       useFallbackTranslations: true,
       fallbackLocale: locales.values.first,
+      assetLoader: const CodegenLoader(),
       child: const ImmichApp(),
     );
   }
diff --git a/mobile/makefile b/mobile/makefile
index 0931d6c167..b0083b1495 100644
--- a/mobile/makefile
+++ b/mobile/makefile
@@ -17,3 +17,6 @@ build_release_android:
 
 migrations:
 	dart run drift_dev make-migrations
+
+translation:
+	dart run easy_localization:generate -S ../i18n 
\ No newline at end of file