feat: auto locale

This commit is contained in:
cialloo
2024-07-21 15:42:21 +08:00
committed by Cialloo
parent 8202f6394c
commit 3ac4bfe8a1
3 changed files with 51 additions and 42 deletions

View File

@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:winui_n2n/edge_state.dart'; import 'package:winui_n2n/edge_state.dart';
import 'package:winui_n2n/saved_connection.dart'; import 'package:winui_n2n/saved_connection.dart';
import 'package:winui_n2n/shared_pref_singleton.dart'; import 'package:winui_n2n/shared_pref_singleton.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
TextEditingController _supernodeController = TextEditingController(); TextEditingController _supernodeController = TextEditingController();
TextEditingController _communityController = TextEditingController(); TextEditingController _communityController = TextEditingController();
@@ -43,9 +44,9 @@ class _ControlPageState extends State<ControlPage> {
width: 300, width: 300,
child: TextField( child: TextField(
controller: _supernodeController, controller: _supernodeController,
decoration: const InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder(), border: const OutlineInputBorder(),
labelText: '主服务器', labelText: AppLocalizations.of(context)!.n2nSuperNode,
), ),
), ),
), ),
@@ -56,9 +57,9 @@ class _ControlPageState extends State<ControlPage> {
width: 300, width: 300,
child: TextField( child: TextField(
controller: _communityController, controller: _communityController,
decoration: const InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder(), border: const OutlineInputBorder(),
labelText: '网络社区', labelText: AppLocalizations.of(context)!.n2nCommunity,
), ),
), ),
), ),
@@ -70,9 +71,9 @@ class _ControlPageState extends State<ControlPage> {
child: TextField( child: TextField(
controller: _keyController, controller: _keyController,
obscureText: true, obscureText: true,
decoration: const InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder(), border: const OutlineInputBorder(),
labelText: '社区密码', labelText: AppLocalizations.of(context)!.n2nCommunityKey,
), ),
), ),
), ),
@@ -83,9 +84,9 @@ class _ControlPageState extends State<ControlPage> {
width: 300, width: 300,
child: TextField( child: TextField(
controller: _selfAddressController, controller: _selfAddressController,
decoration: const InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder(), border: const OutlineInputBorder(),
labelText: '我的地址', labelText: AppLocalizations.of(context)!.n2nSelfAddress,
), ),
), ),
), ),
@@ -109,9 +110,10 @@ class _ControlPageState extends State<ControlPage> {
width: 350, width: 350,
child: TextField( child: TextField(
controller: _configNameController, controller: _configNameController,
decoration: const InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder(), border: const OutlineInputBorder(),
labelText: '给这个配置备注一个名字', labelText: AppLocalizations.of(context)!
.configNameComment,
), ),
), ),
), ),
@@ -147,13 +149,15 @@ class _ControlPageState extends State<ControlPage> {
Navigator.pop(context); Navigator.pop(context);
return; return;
}, },
child: const Text('保存')), child:
Text(AppLocalizations.of(context)!.save)),
TextButton( TextButton(
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
return; return;
}, },
child: const Text('取消'), child:
Text(AppLocalizations.of(context)!.cancel),
), ),
], ],
), ),
@@ -162,7 +166,7 @@ class _ControlPageState extends State<ControlPage> {
), ),
), ),
), ),
child: const Text('保存配置'), child: Text(AppLocalizations.of(context)!.saveConfig),
), ),
ElevatedButton( ElevatedButton(
onPressed: _edgeConnecting onPressed: _edgeConnecting
@@ -293,8 +297,8 @@ class _ControlPageState extends State<ControlPage> {
} }
}, },
child: EdgeState.instance.isRunning child: EdgeState.instance.isRunning
? const Text('断开连接') ? Text(AppLocalizations.of(context)!.disconnect)
: const Text('开始连接'), : Text(AppLocalizations.of(context)!.connect),
), ),
TextButton( TextButton(
onPressed: () { onPressed: () {
@@ -365,7 +369,8 @@ class _ControlPageState extends State<ControlPage> {
Navigator.pop(context); Navigator.pop(context);
return; return;
}, },
child: const Text('使用'), child:
Text(AppLocalizations.of(context)!.use),
), ),
TextButton( TextButton(
onPressed: () { onPressed: () {
@@ -404,14 +409,16 @@ class _ControlPageState extends State<ControlPage> {
return; return;
}); });
}, },
child: const Text('删除'), child: Text(
AppLocalizations.of(context)!.delete),
), ),
TextButton( TextButton(
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
return; return;
}, },
child: const Text('取消'), child: Text(
AppLocalizations.of(context)!.cancel),
), ),
], ],
), ),
@@ -421,7 +428,7 @@ class _ControlPageState extends State<ControlPage> {
), ),
); );
}, },
child: const Text('使用配置')), child: Text(AppLocalizations.of(context)!.useConfig)),
], ],
), ),
), ),

View File

@@ -4,6 +4,7 @@ import 'package:winui_n2n/about_page.dart';
import 'package:winui_n2n/logger_page.dart'; import 'package:winui_n2n/logger_page.dart';
import 'package:winui_n2n/main.dart'; import 'package:winui_n2n/main.dart';
import 'package:winui_n2n/setting_page.dart'; import 'package:winui_n2n/setting_page.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
class HomePage extends StatefulWidget { class HomePage extends StatefulWidget {
const HomePage({super.key}); const HomePage({super.key});
@@ -62,26 +63,26 @@ class _HomePageState extends State<HomePage> {
), ),
), ),
), ),
destinations: const <NavigationRailDestination>[ destinations: <NavigationRailDestination>[
NavigationRailDestination( NavigationRailDestination(
icon: Icon(Icons.favorite_border), icon: const Icon(Icons.favorite_border),
selectedIcon: Icon(Icons.favorite), selectedIcon: const Icon(Icons.favorite),
label: Text('主页'), label: Text(AppLocalizations.of(context)!.mainPage),
), ),
NavigationRailDestination( NavigationRailDestination(
icon: Icon(Icons.bookmark_border), icon: const Icon(Icons.bookmark_border),
selectedIcon: Icon(Icons.book), selectedIcon: const Icon(Icons.book),
label: Text('关于'), label: Text(AppLocalizations.of(context)!.aboutPage),
), ),
NavigationRailDestination( NavigationRailDestination(
icon: Icon(Icons.pause_circle_filled), icon: const Icon(Icons.pause_circle_filled),
selectedIcon: Icon(Icons.pause_circle), selectedIcon: const Icon(Icons.pause_circle),
label: Text('日志'), label: Text(AppLocalizations.of(context)!.logPage),
), ),
NavigationRailDestination( NavigationRailDestination(
icon: Icon(Icons.star_border), icon: const Icon(Icons.star_border),
selectedIcon: Icon(Icons.star), selectedIcon: const Icon(Icons.star),
label: Text('设置'), label: Text(AppLocalizations.of(context)!.settingsPage),
), ),
], ],
), ),

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:winui_n2n/shared_pref_singleton.dart'; import 'package:winui_n2n/shared_pref_singleton.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
class SettingPage extends StatefulWidget { class SettingPage extends StatefulWidget {
const SettingPage({super.key}); const SettingPage({super.key});
@@ -17,7 +18,7 @@ class _SettingPageState extends State<SettingPage> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
const Text('自动设置防火墙'), Text(AppLocalizations.of(context)!.autoFirewall),
Switch( Switch(
value: SharedPrefSingleton().autoFirewall, value: SharedPrefSingleton().autoFirewall,
onChanged: (value) { onChanged: (value) {
@@ -34,13 +35,13 @@ class _SettingPageState extends State<SettingPage> {
ScaffoldMessenger.of(context) ScaffoldMessenger.of(context)
..removeCurrentSnackBar() ..removeCurrentSnackBar()
..showSnackBar( ..showSnackBar(
const SnackBar( SnackBar(
content: Text('功能暂未开发, 敬请期待~'), content: Text(AppLocalizations.of(context)!.notImplement),
duration: Duration(seconds: 2), duration: const Duration(seconds: 2),
), ),
); );
}, },
child: const Text('检查更新'), child: Text(AppLocalizations.of(context)!.checkUpdate),
), ),
], ],
); );