refactor(settings): 统一语言设置,合并 interface_language 和 ai_language

- 后端 Schema 将 interface_language 和 ai_language 合并为 language
- 前端设置界面只保留一个语言选项
- AI 回复语言统一使用 language 设置
- 更新协议文档
- 新增数据库迁移脚本
This commit is contained in:
ZL-Q
2026-04-28 17:19:47 +08:00
parent 940c67e642
commit b9617ae152
20 changed files with 740 additions and 176 deletions
+66 -15
View File
@@ -226,10 +226,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get settingsAccountAndDataTitle => 'Account Data';
@override
String get settingsInterfaceLanguage => 'Interface Language';
@override
String get settingsAiLanguage => 'AI Response Language';
String get settingsLanguage => 'Language';
@override
String get settingsNotificationAllow => 'Allow Notifications';
@@ -274,10 +271,6 @@ class AppLocalizationsEn extends AppLocalizations {
String get settingsCoinHeroSubtitle =>
'Credits will be used for casting and related services later.';
@override
String get settingsAiLanguageHint =>
'This field will align with profiles.settings.preferences.ai_language once the real preference flow is connected.';
@override
String get settingsTimezone => 'Time Zone';
@@ -285,13 +278,6 @@ class AppLocalizationsEn extends AppLocalizations {
String get settingsTimezoneHint =>
'This field will align with profiles.settings.preferences.timezone and later provide a real time zone picker.';
@override
String get settingsCountry => 'Country/Region';
@override
String get settingsCountryHint =>
'This field will align with profiles.settings.preferences.country and later provide a region picker.';
@override
String get settingsPrivacyProfileVisibility => 'Profile Visibility';
@@ -484,6 +470,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get settingsCoinPackPopularBadge => 'Popular';
@override
String get settingsCoinPackNewUserBadge => 'Only Once';
@override
String get settingsPurchaseButton => 'Pay Now';
@@ -1302,4 +1291,66 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get paymentPending => 'Apple is processing, please wait';
@override
String get notifyCenterTitle => 'Notifications';
@override
String get notifyMarkAllRead => 'Mark all read';
@override
String get notifyLoadFailed => 'Failed to load';
@override
String get notifyRetry => 'Retry';
@override
String get notifyEmpty => 'No notifications';
@override
String get timeJustNow => 'Just now';
@override
String timeMinutesAgo(int minutes) {
return '${minutes}m ago';
}
@override
String timeHoursAgo(int hours) {
return '${hours}h ago';
}
@override
String timeDaysAgo(int days) {
return '${days}d ago';
}
@override
String get pointsLedgerTitle => 'Points Ledger';
@override
String get pointsLedgerEmpty => 'No records yet';
@override
String get pointsLedgerTypeRegister => 'Registration bonus';
@override
String get pointsLedgerTypePurchase => 'Purchase credits';
@override
String get pointsLedgerTypeConsume => 'AI chat cost';
@override
String get pointsLedgerTypeAdjust => 'System adjustment';
@override
String get pointsLedgerTypeRefund => 'Refund';
@override
String pointsLedgerBalance(int balance) {
return 'Balance $balance';
}
@override
String get retry => 'Retry';
}