Skip to content
This repository was archived by the owner on Apr 3, 2025. It is now read-only.

Commit 18ef4cf

Browse files
committed
fix(locale): create stub primary language localization assets
1 parent e05b17a commit 18ef4cf

File tree

6 files changed

+18
-15
lines changed

6 files changed

+18
-15
lines changed

assets/localization/nb.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

assets/localization/zh.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

lib/main.dart

+1-7
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ class _State extends State<LunaOS> {
108108
}
109109

110110
Future<void> _boot(Duration duration) async {
111-
_initLocale();
111+
LunaLanguage.current.use();
112112
_initNotifications();
113113
if (LunaQuickActions.isSupported) LunaQuickActions().initialize();
114114

@@ -128,12 +128,6 @@ class _State extends State<LunaOS> {
128128
}
129129
}
130130

131-
void _initLocale() {
132-
final lan = LunaLanguage.fromLocale(context.locale) ?? LunaLanguage.ENGLISH;
133-
context.setLocale(lan.locale);
134-
Intl.defaultLocale = lan.languageTag;
135-
}
136-
137131
Future<void> _healthCheck() async {
138132
if (LunaFlavor.isStable) {
139133
LunaBuild().isLatestBuildVersion().then((isLatest) {

lib/modules/settings/routes/configuration_localization/route.dart

+1-5
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin {
5858
trailing: const LunaIconButton(icon: Icons.language_rounded),
5959
onTap: () async {
6060
final result = await SettingsDialogs().changeLanguage(context);
61-
if (result.item1) {
62-
result.item2!.use(context);
63-
context.setLocale(result.item2!.locale);
64-
// Intl.defaultLocale = result.item2!.languageTag;
65-
}
61+
if (result.item1) result.item2!.use();
6662
},
6763
);
6864
}

lib/system/localization.dart

+5-2
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ enum LunaLanguage {
7676
}
7777

7878
extension LunaLanguageExtension on LunaLanguage {
79+
Future<void> use() async {
80+
await LunaState.navigatorKey.currentContext!.setLocale(locale);
81+
Intl.defaultLocale = languageTag;
82+
}
83+
7984
bool get enabled {
8085
switch (this) {
8186
case LunaLanguage.ENGLISH:
@@ -195,6 +200,4 @@ extension LunaLanguageExtension on LunaLanguage {
195200
return const Locale('vi');
196201
}
197202
}
198-
199-
Future<void> use(BuildContext context) => context.setLocale(this.locale);
200203
}

scripts/generate_localization.dart

+9-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import 'dart:convert';
44
import 'dart:io';
55

6-
/// Simple dart script to concat all module's localization files into a single file for loading into LunaSea.
6+
/// Simple dart script to concatenate all module's localization files into a single file for loading into LunaSea.
77
///
88
/// This script is designed to be run from the root of the project.
99
void main() {
@@ -38,13 +38,21 @@ void main() {
3838
_createFile(path);
3939
File file = File(language.path);
4040
_writeFile(path, jsonDecode(file.readAsStringSync()));
41+
// If required, create a stub primary language to prevent asset load failures
42+
if (name.contains('-')) _writeStubPrimaryLanguage(_assets.path, name);
4143
}
4244
});
4345
print('');
4446
}
4547
});
4648
}
4749

50+
void _writeStubPrimaryLanguage(String assets, String language) {
51+
final primary = language.split('-').first;
52+
final path = '$assets/$primary.json';
53+
_createFile(path);
54+
}
55+
4856
void _writeFile(String path, Map<dynamic, dynamic>? data) {
4957
// Read the current data in the file
5058
File file = File(path);

0 commit comments

Comments
 (0)