From 97792ae7348953e83a3d0694c822960155abb920 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Mon, 29 Sep 2025 23:10:21 +0800 Subject: [PATCH] :lipstick: Localized language picker --- lib/main.dart | 4 ++++ lib/screens/settings.dart | 25 ++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 3ec94f71..b521658f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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'), diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index a721e2dc..f068535f 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -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( value: ele, - child: Text( - '${ele.languageCode}-${ele.countryCode}', - ).fontSize(14), + child: Text(_getLanguageDisplayName(ele)).fontSize(14), ); }), DropdownMenuItem(