💄 Localized language picker

This commit is contained in:
2025-09-29 23:10:21 +08:00
parent a5d13250cc
commit 97792ae734
2 changed files with 26 additions and 3 deletions

View File

@@ -166,6 +166,10 @@ void main() async {
Locale('en', 'US'),
Locale('zh', 'CN'),
Locale('zh', 'TW'),
Locale('zh', 'OG'),
Locale('ja', 'JP'),
Locale('ko', 'KR'),
Locale('es', 'ES'),
],
path: 'assets/i18n',
fallbackLocale: Locale('en', 'US'),

View File

@@ -26,6 +26,27 @@ import 'package:island/pods/file_pool.dart';
class SettingsScreen extends HookConsumerWidget {
const SettingsScreen({super.key});
String _getLanguageDisplayName(Locale locale) {
switch ('${locale.languageCode}-${locale.countryCode}') {
case 'en-US':
return 'English (US)';
case 'es-ES':
return 'Español (España)';
case 'ja-JP':
return '日本語 (日本)';
case 'ko-KR':
return '한국어 (대한민국)';
case 'zh-CN':
return '简体中文';
case 'zh-OG':
return '文言文 (华夏)';
case 'zh-TW':
return '繁體中文 (台灣)';
default:
return '${locale.languageCode}-${locale.countryCode}';
}
}
@override
Widget build(BuildContext context, WidgetRef ref) {
final serverUrl = ref.watch(serverUrlProvider);
@@ -64,9 +85,7 @@ class SettingsScreen extends HookConsumerWidget {
) {
return DropdownMenuItem<Locale?>(
value: ele,
child: Text(
'${ele.languageCode}-${ele.countryCode}',
).fontSize(14),
child: Text(_getLanguageDisplayName(ele)).fontSize(14),
);
}),
DropdownMenuItem<Locale?>(