From d739b61c83a291edd550def4fa4cd46c2952df69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Mon, 19 Jan 2026 15:50:50 +0100 Subject: [PATCH] Fix Scribe translations by using multiple_localization package Even if all keys were translated, Scribe UI was always in default language. In short, it is not possible to load multiple localization delegates with different .arb files. But we need these translations to be located in a separate file because in the future we will move Scribe in a separate module. See https://github.com/Innim/flutter_multiple_localization for more explanation. --- pubspec.lock | 8 ++++++++ .../ai/localizations/scribe_localizations.dart | 18 ++++++++---------- scribe/pubspec.lock | 8 ++++++++ scribe/pubspec.yaml | 2 ++ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index ece07fe4a..d3b6e2346 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1534,6 +1534,14 @@ packages: relative: true source: path version: "1.0.0+1" + multiple_localization: + dependency: transitive + description: + name: multiple_localization + sha256: "29c97a3fbf4d067ea5a63df1995465ea81ef28e2c817d9d0871983e50f4fd3f0" + url: "https://pub.dev" + source: hosted + version: "0.6.0" nm: dependency: transitive description: diff --git a/scribe/lib/scribe/ai/localizations/scribe_localizations.dart b/scribe/lib/scribe/ai/localizations/scribe_localizations.dart index 6856da55d..d55686abe 100644 --- a/scribe/lib/scribe/ai/localizations/scribe_localizations.dart +++ b/scribe/lib/scribe/ai/localizations/scribe_localizations.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import 'package:multiple_localization/multiple_localization.dart'; import 'package:scribe/scribe/ai/l10n/messages_all.dart'; class ScribeLocalizations { @@ -7,16 +8,13 @@ class ScribeLocalizations { return Localizations.of(context, ScribeLocalizations)!; } - static Future load(Locale locale) async { - final name = - locale.countryCode == null ? locale.languageCode : locale.toString(); - - final localeName = Intl.canonicalizedLocale(name); - - return initializeMessages(localeName).then((_) { - Intl.defaultLocale = localeName; - return ScribeLocalizations(); - }); + static Future load(Locale locale) { + return MultipleLocalizations.load( + initializeMessages, + locale, + (locale) => ScribeLocalizations(), + setDefaultLocale: true, + ); } static const LocalizationsDelegate delegate = diff --git a/scribe/pubspec.lock b/scribe/pubspec.lock index 1a3df5e93..1f175604e 100644 --- a/scribe/pubspec.lock +++ b/scribe/pubspec.lock @@ -798,6 +798,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.6" + multiple_localization: + dependency: "direct main" + description: + name: multiple_localization + sha256: "29c97a3fbf4d067ea5a63df1995465ea81ef28e2c817d9d0871983e50f4fd3f0" + url: "https://pub.dev" + source: hosted + version: "0.6.0" objective_c: dependency: transitive description: diff --git a/scribe/pubspec.yaml b/scribe/pubspec.yaml index 34e61c054..b295d9b88 100644 --- a/scribe/pubspec.yaml +++ b/scribe/pubspec.yaml @@ -38,6 +38,8 @@ dependencies: flutter_svg: 2.1.0 + multiple_localization: 0.6.0 + dev_dependencies: flutter_test: sdk: flutter