585 lines
16 KiB
Dart
585 lines
16 KiB
Dart
import 'dart:async';
|
||
|
||
import 'package:flutter/foundation.dart';
|
||
import 'package:flutter/widgets.dart';
|
||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||
import 'package:intl/intl.dart' as intl;
|
||
|
||
import 'app_localizations_en.dart';
|
||
import 'app_localizations_zh.dart';
|
||
|
||
// ignore_for_file: type=lint
|
||
|
||
/// Callers can lookup localized strings with an instance of AppLocalizations
|
||
/// returned by `AppLocalizations.of(context)`.
|
||
///
|
||
/// Applications need to include `AppLocalizations.delegate()` in their app's
|
||
/// `localizationDelegates` list, and the locales they support in the app's
|
||
/// `supportedLocales` list. For example:
|
||
///
|
||
/// ```dart
|
||
/// import 'l10n/app_localizations.dart';
|
||
///
|
||
/// return MaterialApp(
|
||
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||
/// supportedLocales: AppLocalizations.supportedLocales,
|
||
/// home: MyApplicationHome(),
|
||
/// );
|
||
/// ```
|
||
///
|
||
/// ## Update pubspec.yaml
|
||
///
|
||
/// Please make sure to update your pubspec.yaml to include the following
|
||
/// packages:
|
||
///
|
||
/// ```yaml
|
||
/// dependencies:
|
||
/// # Internationalization support.
|
||
/// flutter_localizations:
|
||
/// sdk: flutter
|
||
/// intl: any # Use the pinned version from flutter_localizations
|
||
///
|
||
/// # Rest of dependencies
|
||
/// ```
|
||
///
|
||
/// ## iOS Applications
|
||
///
|
||
/// iOS applications define key application metadata, including supported
|
||
/// locales, in an Info.plist file that is built into the application bundle.
|
||
/// To configure the locales supported by your app, you’ll need to edit this
|
||
/// file.
|
||
///
|
||
/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
|
||
/// Then, in the Project Navigator, open the Info.plist file under the Runner
|
||
/// project’s Runner folder.
|
||
///
|
||
/// Next, select the Information Property List item, select Add Item from the
|
||
/// Editor menu, then select Localizations from the pop-up menu.
|
||
///
|
||
/// Select and expand the newly-created Localizations item then, for each
|
||
/// locale your application supports, add a new item and select the locale
|
||
/// you wish to add from the pop-up menu in the Value field. This list should
|
||
/// be consistent with the languages listed in the AppLocalizations.supportedLocales
|
||
/// property.
|
||
abstract class AppLocalizations {
|
||
AppLocalizations(String locale)
|
||
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
|
||
|
||
final String localeName;
|
||
|
||
static AppLocalizations? of(BuildContext context) {
|
||
return Localizations.of<AppLocalizations>(context, AppLocalizations);
|
||
}
|
||
|
||
static const LocalizationsDelegate<AppLocalizations> delegate =
|
||
_AppLocalizationsDelegate();
|
||
|
||
/// A list of this localizations delegate along with the default localizations
|
||
/// delegates.
|
||
///
|
||
/// Returns a list of localizations delegates containing this delegate along with
|
||
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
|
||
/// and GlobalWidgetsLocalizations.delegate.
|
||
///
|
||
/// Additional delegates can be added by appending to this list in
|
||
/// MaterialApp. This list does not have to be used at all if a custom list
|
||
/// of delegates is preferred or required.
|
||
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
|
||
<LocalizationsDelegate<dynamic>>[
|
||
delegate,
|
||
GlobalMaterialLocalizations.delegate,
|
||
GlobalCupertinoLocalizations.delegate,
|
||
GlobalWidgetsLocalizations.delegate,
|
||
];
|
||
|
||
/// A list of this localizations delegate's supported locales.
|
||
static const List<Locale> supportedLocales = <Locale>[
|
||
Locale('en'),
|
||
Locale('zh'),
|
||
];
|
||
|
||
/// No description provided for @appTitle.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'觅爻签问'**
|
||
String get appTitle;
|
||
|
||
/// No description provided for @welcomeLogin.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'欢迎登录'**
|
||
String get welcomeLogin;
|
||
|
||
/// No description provided for @loginSubtitle.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请使用邮箱登录'**
|
||
String get loginSubtitle;
|
||
|
||
/// No description provided for @loginSubtitleEmail.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请使用邮箱登录'**
|
||
String get loginSubtitleEmail;
|
||
|
||
/// No description provided for @emailHint.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请输入邮箱地址'**
|
||
String get emailHint;
|
||
|
||
/// No description provided for @codeHint.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请输入验证码'**
|
||
String get codeHint;
|
||
|
||
/// No description provided for @sendCode.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'获取验证码'**
|
||
String get sendCode;
|
||
|
||
/// No description provided for @sending.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'发送中...'**
|
||
String get sending;
|
||
|
||
/// No description provided for @retryAfter.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'{seconds}秒后重试'**
|
||
String retryAfter(int seconds);
|
||
|
||
/// No description provided for @login.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'登录'**
|
||
String get login;
|
||
|
||
/// No description provided for @agreementPrefix.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'我已阅读并同意'**
|
||
String get agreementPrefix;
|
||
|
||
/// No description provided for @privacyPolicy.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'隐私政策'**
|
||
String get privacyPolicy;
|
||
|
||
/// No description provided for @termsOfService.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'服务条款'**
|
||
String get termsOfService;
|
||
|
||
/// No description provided for @disclaimer.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'免责声明'**
|
||
String get disclaimer;
|
||
|
||
/// No description provided for @icp.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'粤ICP备2025428416号-1A'**
|
||
String get icp;
|
||
|
||
/// No description provided for @invalidPhone.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请输入正确的手机号码'**
|
||
String get invalidPhone;
|
||
|
||
/// No description provided for @invalidEmail.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请输入正确的邮箱地址'**
|
||
String get invalidEmail;
|
||
|
||
/// No description provided for @invalidCode.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请输入6位验证码'**
|
||
String get invalidCode;
|
||
|
||
/// No description provided for @agreementRequired.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请先勾选协议'**
|
||
String get agreementRequired;
|
||
|
||
/// No description provided for @codeSent.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'验证码已发送,请注意查收'**
|
||
String get codeSent;
|
||
|
||
/// No description provided for @loginSuccess.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'登录成功'**
|
||
String get loginSuccess;
|
||
|
||
/// No description provided for @helloUser.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'您好,{name}'**
|
||
String helloUser(String name);
|
||
|
||
/// No description provided for @startJourney.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'开始您的卦象之旅'**
|
||
String get startJourney;
|
||
|
||
/// No description provided for @journeySubtitle.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'借助AI智能,探索未来的可能'**
|
||
String get journeySubtitle;
|
||
|
||
/// No description provided for @startNow.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'立即起卦'**
|
||
String get startNow;
|
||
|
||
/// No description provided for @historyTitle.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'历史解卦'**
|
||
String get historyTitle;
|
||
|
||
/// No description provided for @more.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'更多'**
|
||
String get more;
|
||
|
||
/// No description provided for @noRecords.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'暂无记录'**
|
||
String get noRecords;
|
||
|
||
/// No description provided for @noRecordsSubtitle.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'您并没有保存任何卦象'**
|
||
String get noRecordsSubtitle;
|
||
|
||
/// No description provided for @homeTab.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'首页'**
|
||
String get homeTab;
|
||
|
||
/// No description provided for @profileTab.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'我的'**
|
||
String get profileTab;
|
||
|
||
/// No description provided for @notify.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'消息通知'**
|
||
String get notify;
|
||
|
||
/// No description provided for @featurePending.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'该功能暂未接入数据'**
|
||
String get featurePending;
|
||
|
||
/// No description provided for @logout.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'退出登录'**
|
||
String get logout;
|
||
|
||
/// No description provided for @defaultUserName.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'用户'**
|
||
String get defaultUserName;
|
||
|
||
/// No description provided for @historyQuestion1.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'今年转岗是否合适?'**
|
||
String get historyQuestion1;
|
||
|
||
/// No description provided for @historyQuestion2.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'最近感情是否能推进?'**
|
||
String get historyQuestion2;
|
||
|
||
/// No description provided for @historyQuestion3.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'本季度投资节奏如何?'**
|
||
String get historyQuestion3;
|
||
|
||
/// No description provided for @guaName1.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'天雷无妄'**
|
||
String get guaName1;
|
||
|
||
/// No description provided for @guaName2.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'泽火革'**
|
||
String get guaName2;
|
||
|
||
/// No description provided for @guaName3.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'风地观'**
|
||
String get guaName3;
|
||
|
||
/// No description provided for @welcomeDialogTitle.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'欢迎使用觅爻签问'**
|
||
String get welcomeDialogTitle;
|
||
|
||
/// No description provided for @welcomeParagraph1.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'你好,欢迎来到觅爻签问,这是一个借助于AI解读传统六爻卦象的平台,为用户了解中国传统易学文化提供一个窗口。'**
|
||
String get welcomeParagraph1;
|
||
|
||
/// No description provided for @welcomeParagraph2.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'六爻卦象源于《周易》深邃的哲学体系,是古人探索世界运行规律的一种独特方法。古人认为宇宙万物相互关联,在你起卦时,你的心念与时空信息会凝结成卦象的方式呈现出来。'**
|
||
String get welcomeParagraph2;
|
||
|
||
/// No description provided for @welcomeParagraph3.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'觅爻签问基于这样的思路,帮助你跳出局限思维,从全局和演变趋势看清矛盾、机会与风险,为判断和行动提供参考。'**
|
||
String get welcomeParagraph3;
|
||
|
||
/// No description provided for @warningTitle.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'特别提醒'**
|
||
String get warningTitle;
|
||
|
||
/// No description provided for @warningBody.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'卦象解读结果均由AI生成,仅供娱乐参考,切不可作为商业、医疗等专业领域的决策依据。理性看待卦象,自由掌握人生。'**
|
||
String get warningBody;
|
||
|
||
/// No description provided for @scrollHint.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请向下滚动阅读全部内容'**
|
||
String get scrollHint;
|
||
|
||
/// No description provided for @understood.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'我已了解'**
|
||
String get understood;
|
||
|
||
/// No description provided for @readAllFirst.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请先阅读完整内容'**
|
||
String get readAllFirst;
|
||
|
||
/// No description provided for @categoryCareer.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'事业学业'**
|
||
String get categoryCareer;
|
||
|
||
/// No description provided for @categoryLove.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'情感婚姻'**
|
||
String get categoryLove;
|
||
|
||
/// No description provided for @categoryMoney.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'财富投资'**
|
||
String get categoryMoney;
|
||
|
||
/// No description provided for @signBest.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'上上签'**
|
||
String get signBest;
|
||
|
||
/// No description provided for @signGood.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'中上签'**
|
||
String get signGood;
|
||
|
||
/// No description provided for @signNormal.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'中下签'**
|
||
String get signNormal;
|
||
|
||
/// No description provided for @language.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'语言'**
|
||
String get language;
|
||
|
||
/// No description provided for @english.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'英文'**
|
||
String get english;
|
||
|
||
/// No description provided for @chinese.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'中文'**
|
||
String get chinese;
|
||
|
||
/// No description provided for @dialogConfirm.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'确定'**
|
||
String get dialogConfirm;
|
||
|
||
/// No description provided for @agreementSeparator.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'、'**
|
||
String get agreementSeparator;
|
||
|
||
/// No description provided for @agreementAnd.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'和'**
|
||
String get agreementAnd;
|
||
|
||
/// No description provided for @privacyContent.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'隐私政策内容展示占位。'**
|
||
String get privacyContent;
|
||
|
||
/// No description provided for @termsContent.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'服务条款内容展示占位。'**
|
||
String get termsContent;
|
||
|
||
/// No description provided for @disclaimerContent.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'免责声明内容展示占位。'**
|
||
String get disclaimerContent;
|
||
|
||
/// No description provided for @toastLabelInfo.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'提示'**
|
||
String get toastLabelInfo;
|
||
|
||
/// No description provided for @toastLabelSuccess.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'成功'**
|
||
String get toastLabelSuccess;
|
||
|
||
/// No description provided for @toastLabelWarning.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'警告'**
|
||
String get toastLabelWarning;
|
||
|
||
/// No description provided for @toastLabelError.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'错误'**
|
||
String get toastLabelError;
|
||
|
||
/// No description provided for @errorTooManyRequests.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请求过于频繁,请稍后重试'**
|
||
String get errorTooManyRequests;
|
||
|
||
/// No description provided for @errorInvalidVerificationCode.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'验证码错误'**
|
||
String get errorInvalidVerificationCode;
|
||
|
||
/// No description provided for @errorSessionExpired.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'登录已过期,请重新登录'**
|
||
String get errorSessionExpired;
|
||
|
||
/// No description provided for @errorServiceUnavailable.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'服务暂时不可用,请稍后重试'**
|
||
String get errorServiceUnavailable;
|
||
|
||
/// No description provided for @errorServerGeneric.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'服务异常,请稍后重试'**
|
||
String get errorServerGeneric;
|
||
|
||
/// No description provided for @errorRequestGeneric.
|
||
///
|
||
/// In zh, this message translates to:
|
||
/// **'请求失败,请稍后重试'**
|
||
String get errorRequestGeneric;
|
||
}
|
||
|
||
class _AppLocalizationsDelegate
|
||
extends LocalizationsDelegate<AppLocalizations> {
|
||
const _AppLocalizationsDelegate();
|
||
|
||
@override
|
||
Future<AppLocalizations> load(Locale locale) {
|
||
return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
|
||
}
|
||
|
||
@override
|
||
bool isSupported(Locale locale) =>
|
||
<String>['en', 'zh'].contains(locale.languageCode);
|
||
|
||
@override
|
||
bool shouldReload(_AppLocalizationsDelegate old) => false;
|
||
}
|
||
|
||
AppLocalizations lookupAppLocalizations(Locale locale) {
|
||
// Lookup logic when only language code is specified.
|
||
switch (locale.languageCode) {
|
||
case 'en':
|
||
return AppLocalizationsEn();
|
||
case 'zh':
|
||
return AppLocalizationsZh();
|
||
}
|
||
|
||
throw FlutterError(
|
||
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
|
||
'an issue with the localizations generation tool. Please file an issue '
|
||
'on GitHub with a reproducible sample app and the gen-l10n configuration '
|
||
'that was used.',
|
||
);
|
||
}
|