Compare commits

...

2 Commits

Author SHA1 Message Date
JingChiang
f4d0243de0 fix: 補充翻譯(註冊Error) 2024-11-10 14:50:34 +08:00
JingChiang
4c8d789a86 fix: 修復當沒有語言設定資料時,使用中文而不是系統語言 2024-11-10 14:11:05 +08:00
7 changed files with 179 additions and 13 deletions

View File

@@ -94,7 +94,7 @@ class _BottomNavBarState extends State<BottomNavBar> {
void _setLanguage() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String preLanguage = prefs.getString("language") ?? "";
Locale locale = preLanguage == "" ? Locale('zh_Hant') : Locale(preLanguage) ;
Locale locale = preLanguage == "" ? Localizations.localeOf(context) : Locale(preLanguage) ;
S.load(locale);
setState(() {});
}

View File

@@ -6,6 +6,8 @@ import 'package:mailer/mailer.dart';
import 'package:mailer/smtp_server.dart';
import 'package:validators/validators.dart' as validator;
import 'generated/l10n.dart';
void main() {
runApp(MaterialApp(
home: RegisterPage(),
@@ -105,12 +107,12 @@ class _RegisterPageState extends State<RegisterPage> {
final email = _emailController.text;
if (email.isEmpty) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('請輸入電子信箱地址')),
SnackBar(content: Text(S.of(context).register_error_email_empty)),
);
return;
} else if (!validator.isEmail(email)) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('請輸入正確的電子信箱')),
SnackBar(content: Text(S.of(context).register_error_email_invalid)),
);
_emailFocusNode.requestFocus();
return;
@@ -129,7 +131,7 @@ class _RegisterPageState extends State<RegisterPage> {
if (name == '') {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('用戶姓名不可為空')),
SnackBar(content: Text(S.of(context).register_error_username_empty)),
);
_nameFocusNode.requestFocus();
return false;
@@ -137,7 +139,7 @@ class _RegisterPageState extends State<RegisterPage> {
if (email == '') {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('電子信箱不可為空')),
SnackBar(content: Text(S.of(context).register_error_email_empty)),
);
_emailFocusNode.requestFocus();
return false;
@@ -145,7 +147,7 @@ class _RegisterPageState extends State<RegisterPage> {
if (password == '') {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('密碼不可為空')),
SnackBar(content: Text(S.of(context).register_error_password_empty)),
);
_passwordFocusNode.requestFocus();
return false;
@@ -153,14 +155,14 @@ class _RegisterPageState extends State<RegisterPage> {
if (_generatedCode == ''){
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('請先發送驗證碼')),
SnackBar(content: Text(S.of(context).register_error_verificationCode_not_send)),
);
return false;
}
if (code == '' || code != _generatedCode) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('驗證碼錯誤')),
SnackBar(content: Text(S.of(context).register_error_verificationCode_not_match)),
);
_codeFocusNode.requestFocus();
return false;
@@ -189,7 +191,7 @@ class _RegisterPageState extends State<RegisterPage> {
if (result.rows.isNotEmpty) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('註冊失敗:電子信箱或帳號名稱已被使用,請嘗試更換或登入')),
SnackBar(content: Text(S.of(context).register_error_usernameOrEmail_exist)),
);
} else {
await conn.execute(
@@ -197,7 +199,7 @@ class _RegisterPageState extends State<RegisterPage> {
{'name': name, 'email': email, 'password': password},
);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('註冊成功!')),
SnackBar(content: Text(S.of(context).register_success)),
);
Navigator.pushReplacement(
@@ -214,7 +216,7 @@ class _RegisterPageState extends State<RegisterPage> {
} catch (e) {
print('資料庫錯誤: $e');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('註冊失敗:系統錯誤')),
SnackBar(content: Text(S.of(context).register_error_server_error)),
);
} finally {
await conn.close();
@@ -375,7 +377,7 @@ class VerifyPage extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('註冊成功'),
title: Text(S.of(context).register_success),
),
body: Center(
child: Column(
@@ -388,7 +390,7 @@ class VerifyPage extends StatelessWidget {
// 返回登入頁面
Navigator.pop(context);
},
child: Text('返回登入頁面'),
child: Text(S.of(context).register_turn_back),
style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFF4FC3F7),
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 15),

View File

@@ -75,6 +75,29 @@ class MessageLookup extends MessageLookupByLibrary {
"phone": MessageLookupByLibrary.simpleMessage("Phone Number"),
"realtime_video": MessageLookupByLibrary.simpleMessage("Live View"),
"register_button": MessageLookupByLibrary.simpleMessage("Register"),
"register_error_email_empty":
MessageLookupByLibrary.simpleMessage("Please enter your email"),
"register_error_email_invalid":
MessageLookupByLibrary.simpleMessage("Please enter a valid email"),
"register_error_password_empty":
MessageLookupByLibrary.simpleMessage("Please enter your password"),
"register_error_server_error": MessageLookupByLibrary.simpleMessage(
"Register Failed: Server error, please try again later"),
"register_error_usernameOrEmail_exist":
MessageLookupByLibrary.simpleMessage(
"Username or email already exists, please try again"),
"register_error_username_empty":
MessageLookupByLibrary.simpleMessage("Please enter your username"),
"register_error_verificationCode_not_match":
MessageLookupByLibrary.simpleMessage(
"Verification code does not match"),
"register_error_verificationCode_not_send":
MessageLookupByLibrary.simpleMessage(
"Please send the verification code first"),
"register_success":
MessageLookupByLibrary.simpleMessage("Register Success"),
"register_turn_back":
MessageLookupByLibrary.simpleMessage("Return to Login Page"),
"save": MessageLookupByLibrary.simpleMessage("Save"),
"switch_camera": MessageLookupByLibrary.simpleMessage("Switch View")
};

View File

@@ -70,6 +70,24 @@ class MessageLookup extends MessageLookupByLibrary {
"phone": MessageLookupByLibrary.simpleMessage("電話"),
"realtime_video": MessageLookupByLibrary.simpleMessage("即時畫面"),
"register_button": MessageLookupByLibrary.simpleMessage("立即註冊"),
"register_error_email_empty":
MessageLookupByLibrary.simpleMessage("電子信箱不可為空"),
"register_error_email_invalid":
MessageLookupByLibrary.simpleMessage("請輸入有效的電子信箱地址"),
"register_error_password_empty":
MessageLookupByLibrary.simpleMessage("密碼不可為空"),
"register_error_server_error":
MessageLookupByLibrary.simpleMessage("註冊失敗:系統錯誤"),
"register_error_usernameOrEmail_exist":
MessageLookupByLibrary.simpleMessage("註冊失敗:電子信箱或帳號名稱已被使用,請嘗試更換或登入"),
"register_error_username_empty":
MessageLookupByLibrary.simpleMessage("用戶姓名不可為空"),
"register_error_verificationCode_not_match":
MessageLookupByLibrary.simpleMessage("驗證碼錯誤"),
"register_error_verificationCode_not_send":
MessageLookupByLibrary.simpleMessage("請先發送驗證碼"),
"register_success": MessageLookupByLibrary.simpleMessage("註冊成功"),
"register_turn_back": MessageLookupByLibrary.simpleMessage("返回登入頁面"),
"save": MessageLookupByLibrary.simpleMessage("儲存變更"),
"switch_camera": MessageLookupByLibrary.simpleMessage("切換畫面")
};

View File

@@ -110,6 +110,106 @@ class S {
);
}
/// `Please enter your email`
String get register_error_email_empty {
return Intl.message(
'Please enter your email',
name: 'register_error_email_empty',
desc: '',
args: [],
);
}
/// `Please enter a valid email`
String get register_error_email_invalid {
return Intl.message(
'Please enter a valid email',
name: 'register_error_email_invalid',
desc: '',
args: [],
);
}
/// `Please enter your username`
String get register_error_username_empty {
return Intl.message(
'Please enter your username',
name: 'register_error_username_empty',
desc: '',
args: [],
);
}
/// `Please enter your password`
String get register_error_password_empty {
return Intl.message(
'Please enter your password',
name: 'register_error_password_empty',
desc: '',
args: [],
);
}
/// `Please send the verification code first`
String get register_error_verificationCode_not_send {
return Intl.message(
'Please send the verification code first',
name: 'register_error_verificationCode_not_send',
desc: '',
args: [],
);
}
/// `Verification code does not match`
String get register_error_verificationCode_not_match {
return Intl.message(
'Verification code does not match',
name: 'register_error_verificationCode_not_match',
desc: '',
args: [],
);
}
/// `Username or email already exists, please try again`
String get register_error_usernameOrEmail_exist {
return Intl.message(
'Username or email already exists, please try again',
name: 'register_error_usernameOrEmail_exist',
desc: '',
args: [],
);
}
/// `Register Failed: Server error, please try again later`
String get register_error_server_error {
return Intl.message(
'Register Failed: Server error, please try again later',
name: 'register_error_server_error',
desc: '',
args: [],
);
}
/// `Register Success`
String get register_success {
return Intl.message(
'Register Success',
name: 'register_success',
desc: '',
args: [],
);
}
/// `Return to Login Page`
String get register_turn_back {
return Intl.message(
'Return to Login Page',
name: 'register_turn_back',
desc: '',
args: [],
);
}
/// `Live View`
String get realtime_video {
return Intl.message(

View File

@@ -5,6 +5,18 @@
"logout_button": "Logout",
"register_button": "Register",
"forgot_password": "Forgot password",
"register_error_email_empty": "Please enter your email",
"register_error_email_invalid": "Please enter a valid email",
"register_error_username_empty": "Please enter your username",
"register_error_password_empty": "Please enter your password",
"register_error_verificationCode_not_send": "Please send the verification code first",
"register_error_verificationCode_not_match": "Verification code does not match",
"register_error_usernameOrEmail_exist": "Username or email already exists, please try again",
"register_error_server_error": "Register Failed: Server error, please try again later",
"register_success": "Register Success",
"register_turn_back": "Return to Login Page",
"realtime_video": "Live View",
"fall_record": "Fall Record",
"switch_camera": "Switch View",

View File

@@ -6,6 +6,17 @@
"register_button": "立即註冊",
"forgot_password": "忘記密碼",
"register_error_email_empty": "電子信箱不可為空",
"register_error_email_invalid": "請輸入有效的電子信箱地址",
"register_error_username_empty": "用戶姓名不可為空",
"register_error_password_empty": "密碼不可為空",
"register_error_verificationCode_not_send": "請先發送驗證碼",
"register_error_verificationCode_not_match": "驗證碼錯誤",
"register_error_usernameOrEmail_exist": "註冊失敗:電子信箱或帳號名稱已被使用,請嘗試更換或登入",
"register_error_server_error": "註冊失敗:系統錯誤",
"register_success": "註冊成功",
"register_turn_back": "返回登入頁面",
"realtime_video": "即時畫面",
"fall_record": "跌倒紀錄",
"switch_camera": "切換畫面",