feat(app): 完善播放协议搜索与空状态

This commit is contained in:
Zhou Weidong committed 2026-10-23 12:38:47 +08:00
1 parent 671e0ce143
commit ef29fc5f15
85 files changed
+2976 -768

No files matched your search

+21 -2
View File
@@ -23,6 +23,13 @@
"authLandingSubtitle": "Sign in to sync progress, favorites and coins",
"comingSoon": "Coming soon",
"authLegal": "By continuing, you agree to the Terms of Service and Privacy Policy.",
"authLegalLead": "By continuing, you agree to the",
"authTerms": "Terms of Service",
"authLegalJoin": "and",
"authPrivacy": "Privacy Policy",
"legalTerms": "Terms of Service",
"legalPrivacy": "Privacy Policy",
"legalOpenFailed": "Can't open this page right now",
"authContinueGoogle": "Continue with Google",
"authPhoneSignIn": "Phone sign in",
"authEmailSignIn": "Email sign in",
@@ -430,6 +437,7 @@
"authPasswordLength": "Password must be 8-64 characters",
"authPasswordWeak": "Password needs both letters and numbers",
"authNetworkError": "Network error, please try again",
"authServerError": "The service is busy. Please try again shortly.",
"authSwitchToSignUp": "New here? Create an account",
"authSwitchToSignIn": "Already have an account? Sign in",
"authGateTitle": "Sign in to continue",
@@ -586,7 +594,11 @@
"accountUnverified": "Unverified",
"accountDeactivateWarning": "Requests enter a 15-day cooling-off period. All devices are signed out immediately.",
"accountDeactivateReason": "Reason (optional)",
"accountDeactivateReasonHint": "Tell us why you are leaving",
"accountDeactivateReasonHint": "Add more detail here",
"accountDeactivateReasonUnused": "Not using it anymore",
"accountDeactivateReasonContent": "Not interested in the content",
"accountDeactivateReasonPrivacy": "Privacy concerns",
"accountDeactivateReasonOther": "Other",
"accountRequestDeactivate": "Request account deletion",
"accountConfirmDeactivateTitle": "Request account deletion?",
"accountConfirmDeactivateMessage": "All devices will be signed out immediately. You can cancel during the 15-day cooling-off period after signing in again.",
@@ -666,6 +678,8 @@
"paymentPending": "Waiting for payment.",
"orderCreateFailed": "Could not create the order.",
"playbackQuality": "Quality",
"qualitySwitched": "Switched to {quality}",
"@qualitySwitched": { "placeholders": { "quality": { "type": "String" } } },
"qualityAuto": "Auto",
"qualityAutoHint": "HLS adjusts the bitrate automatically for your connection.",
"searchFailed": "Search failed. Please try again.",
@@ -710,6 +724,7 @@
"homeBadgeAnime": "Anime",
"homeGridFilterEmpty": "No dramas match these filters",
"homeGridClearFilter": "Clear filters",
"emptyContent": "No content yet",
"recommendTopTab": "Recommend",
"playlistTopTab": "Playlists",
"allDramasTopTab": "All Dramas",
@@ -728,6 +743,10 @@
"modernFilter": "Modern",
"edit": "Edit",
"done": "Done",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"cancelFollowing": "Unfollow",
"confirmCancelFollowing": "Unfollow the selected dramas?",
"visitor": "Visitor",
"copyUid": "Copy UID",
"uidCopied": "UID copied",
@@ -746,7 +765,7 @@
"watchedToEpisode": "Watched to Episode {episode}",
"@watchedToEpisode": { "placeholders": { "episode": { "type": "int" } } },
"homeWatchAll": "Watch all",
"confirmRemove": "Remove this item?",
"confirmRemove": "Remove this watch history?",
"followingCountLabel": "Following",
"watchRecordsCountLabel": "Watch records",
"dataUnavailable": "—",
+21 -2
View File
@@ -23,6 +23,13 @@
"authLandingSubtitle": "Masuk untuk menyinkronkan progres, favorit, dan koin",
"comingSoon": "Segera hadir",
"authLegal": "Dengan melanjutkan, Anda menyetujui Ketentuan Layanan dan Kebijakan Privasi.",
"authLegalLead": "Dengan melanjutkan, Anda menyetujui",
"authTerms": "Ketentuan Layanan",
"authLegalJoin": "dan",
"authPrivacy": "Kebijakan Privasi",
"legalTerms": "Ketentuan Layanan",
"legalPrivacy": "Kebijakan Privasi",
"legalOpenFailed": "Halaman ini belum bisa dibuka",
"authContinueGoogle": "Lanjutkan dengan Google",
"authPhoneSignIn": "Masuk dengan ponsel",
"authEmailSignIn": "Masuk dengan email",
@@ -404,6 +411,7 @@
"authPasswordLength": "Kata sandi harus 8-64 karakter",
"authPasswordWeak": "Kata sandi perlu huruf dan angka",
"authNetworkError": "Jaringan bermasalah, coba lagi",
"authServerError": "Layanan sedang sibuk. Coba lagi sebentar.",
"authSwitchToSignUp": "Baru di sini? Buat akun",
"authSwitchToSignIn": "Sudah punya akun? Masuk",
"authGateTitle": "Masuk untuk melanjutkan",
@@ -550,7 +558,11 @@
"accountUnverified": "Belum terverifikasi",
"accountDeactivateWarning": "Permintaan masuk masa tenang 15 hari. Semua perangkat langsung keluar.",
"accountDeactivateReason": "Alasan (opsional)",
"accountDeactivateReasonHint": "Beri tahu alasan kamu",
"accountDeactivateReasonHint": "Tambahkan penjelasan di sini",
"accountDeactivateReasonUnused": "Tidak lagi digunakan",
"accountDeactivateReasonContent": "Konten tidak menarik",
"accountDeactivateReasonPrivacy": "Masalah privasi",
"accountDeactivateReasonOther": "Lainnya",
"accountRequestDeactivate": "Ajukan penghapusan akun",
"accountConfirmDeactivateTitle": "Ajukan penghapusan akun?",
"accountConfirmDeactivateMessage": "Semua perangkat akan langsung keluar. Setelah masuk lagi, kamu dapat membatalkannya selama masa tenang 15 hari.",
@@ -623,6 +635,8 @@
"paymentPending": "Menunggu pembayaran.",
"orderCreateFailed": "Gagal membuat pesanan.",
"playbackQuality": "Kualitas",
"qualitySwitched": "Beralih ke {quality}",
"@qualitySwitched": { "placeholders": { "quality": { "type": "String" } } },
"qualityAuto": "Otomatis",
"qualityAutoHint": "HLS menyesuaikan bitrate secara otomatis dengan koneksi Anda.",
"searchFailed": "Pencarian gagal. Coba lagi.",
@@ -667,6 +681,7 @@
"homeBadgeAnime": "Anime",
"homeGridFilterEmpty": "Tidak ada drama yang cocok dengan filter",
"homeGridClearFilter": "Hapus filter",
"emptyContent": "Belum ada konten",
"recommendTopTab": "Rekomendasi",
"playlistTopTab": "Daftar Putar",
"allDramasTopTab": "Semua",
@@ -685,6 +700,10 @@
"modernFilter": "Modern",
"edit": "Edit",
"done": "Selesai",
"selectAll": "Pilih semua",
"deselectAll": "Batal pilih",
"cancelFollowing": "Berhenti mengikuti",
"confirmCancelFollowing": "Berhenti mengikuti drama yang dipilih?",
"visitor": "Pengunjung",
"copyUid": "Salin UID",
"uidCopied": "UID disalin",
@@ -703,7 +722,7 @@
"watchedToEpisode": "Ditonton hingga Episode {episode}",
"@watchedToEpisode": { "placeholders": { "episode": { "type": "int" } } },
"homeWatchAll": "Tonton semua",
"confirmRemove": "Hapus item ini?",
"confirmRemove": "Hapus riwayat tontonan ini?",
"followingCountLabel": "Mengikuti",
"watchRecordsCountLabel": "Riwayat tontonan",
"dataUnavailable": "—",
+110 -2
View File
@@ -238,6 +238,48 @@ abstract class AppLocalizations {
/// **'By continuing, you agree to the Terms of Service and Privacy Policy.'**
String get authLegal;
/// No description provided for @authLegalLead.
///
/// In en, this message translates to:
/// **'By continuing, you agree to the'**
String get authLegalLead;
/// No description provided for @authTerms.
///
/// In en, this message translates to:
/// **'Terms of Service'**
String get authTerms;
/// No description provided for @authLegalJoin.
///
/// In en, this message translates to:
/// **'and'**
String get authLegalJoin;
/// No description provided for @authPrivacy.
///
/// In en, this message translates to:
/// **'Privacy Policy'**
String get authPrivacy;
/// No description provided for @legalTerms.
///
/// In en, this message translates to:
/// **'Terms of Service'**
String get legalTerms;
/// No description provided for @legalPrivacy.
///
/// In en, this message translates to:
/// **'Privacy Policy'**
String get legalPrivacy;
/// No description provided for @legalOpenFailed.
///
/// In en, this message translates to:
/// **'Can\'t open this page right now'**
String get legalOpenFailed;
/// No description provided for @authContinueGoogle.
///
/// In en, this message translates to:
@@ -1858,6 +1900,12 @@ abstract class AppLocalizations {
/// **'Network error, please try again'**
String get authNetworkError;
/// No description provided for @authServerError.
///
/// In en, this message translates to:
/// **'The service is busy. Please try again shortly.'**
String get authServerError;
/// No description provided for @authSwitchToSignUp.
///
/// In en, this message translates to:
@@ -2437,9 +2485,33 @@ abstract class AppLocalizations {
/// No description provided for @accountDeactivateReasonHint.
///
/// In en, this message translates to:
/// **'Tell us why you are leaving'**
/// **'Add more detail here'**
String get accountDeactivateReasonHint;
/// No description provided for @accountDeactivateReasonUnused.
///
/// In en, this message translates to:
/// **'Not using it anymore'**
String get accountDeactivateReasonUnused;
/// No description provided for @accountDeactivateReasonContent.
///
/// In en, this message translates to:
/// **'Not interested in the content'**
String get accountDeactivateReasonContent;
/// No description provided for @accountDeactivateReasonPrivacy.
///
/// In en, this message translates to:
/// **'Privacy concerns'**
String get accountDeactivateReasonPrivacy;
/// No description provided for @accountDeactivateReasonOther.
///
/// In en, this message translates to:
/// **'Other'**
String get accountDeactivateReasonOther;
/// No description provided for @accountRequestDeactivate.
///
/// In en, this message translates to:
@@ -2824,6 +2896,12 @@ abstract class AppLocalizations {
/// **'Quality'**
String get playbackQuality;
/// No description provided for @qualitySwitched.
///
/// In en, this message translates to:
/// **'Switched to {quality}'**
String qualitySwitched(String quality);
/// No description provided for @qualityAuto.
///
/// In en, this message translates to:
@@ -3070,6 +3148,12 @@ abstract class AppLocalizations {
/// **'Clear filters'**
String get homeGridClearFilter;
/// No description provided for @emptyContent.
///
/// In en, this message translates to:
/// **'No content yet'**
String get emptyContent;
/// No description provided for @recommendTopTab.
///
/// In en, this message translates to:
@@ -3178,6 +3262,30 @@ abstract class AppLocalizations {
/// **'Done'**
String get done;
/// No description provided for @selectAll.
///
/// In en, this message translates to:
/// **'Select all'**
String get selectAll;
/// No description provided for @deselectAll.
///
/// In en, this message translates to:
/// **'Deselect all'**
String get deselectAll;
/// No description provided for @cancelFollowing.
///
/// In en, this message translates to:
/// **'Unfollow'**
String get cancelFollowing;
/// No description provided for @confirmCancelFollowing.
///
/// In en, this message translates to:
/// **'Unfollow the selected dramas?'**
String get confirmCancelFollowing;
/// No description provided for @visitor.
///
/// In en, this message translates to:
@@ -3247,7 +3355,7 @@ abstract class AppLocalizations {
/// No description provided for @confirmRemove.
///
/// In en, this message translates to:
/// **'Remove this item?'**
/// **'Remove this watch history?'**
String get confirmRemove;
/// No description provided for @followingCountLabel.
+59 -2
View File
@@ -80,6 +80,27 @@ class AppLocalizationsEn extends AppLocalizations {
String get authLegal =>
'By continuing, you agree to the Terms of Service and Privacy Policy.';
@override
String get authLegalLead => 'By continuing, you agree to the';
@override
String get authTerms => 'Terms of Service';
@override
String get authLegalJoin => 'and';
@override
String get authPrivacy => 'Privacy Policy';
@override
String get legalTerms => 'Terms of Service';
@override
String get legalPrivacy => 'Privacy Policy';
@override
String get legalOpenFailed => 'Can\'t open this page right now';
@override
String get authContinueGoogle => 'Continue with Google';
@@ -943,6 +964,10 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get authNetworkError => 'Network error, please try again';
@override
String get authServerError =>
'The service is busy. Please try again shortly.';
@override
String get authSwitchToSignUp => 'New here? Create an account';
@@ -1262,7 +1287,19 @@ class AppLocalizationsEn extends AppLocalizations {
String get accountDeactivateReason => 'Reason (optional)';
@override
String get accountDeactivateReasonHint => 'Tell us why you are leaving';
String get accountDeactivateReasonHint => 'Add more detail here';
@override
String get accountDeactivateReasonUnused => 'Not using it anymore';
@override
String get accountDeactivateReasonContent => 'Not interested in the content';
@override
String get accountDeactivateReasonPrivacy => 'Privacy concerns';
@override
String get accountDeactivateReasonOther => 'Other';
@override
String get accountRequestDeactivate => 'Request account deletion';
@@ -1472,6 +1509,11 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get playbackQuality => 'Quality';
@override
String qualitySwitched(String quality) {
return 'Switched to $quality';
}
@override
String get qualityAuto => 'Auto';
@@ -1602,6 +1644,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get homeGridClearFilter => 'Clear filters';
@override
String get emptyContent => 'No content yet';
@override
String get recommendTopTab => 'Recommend';
@@ -1656,6 +1701,18 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get done => 'Done';
@override
String get selectAll => 'Select all';
@override
String get deselectAll => 'Deselect all';
@override
String get cancelFollowing => 'Unfollow';
@override
String get confirmCancelFollowing => 'Unfollow the selected dramas?';
@override
String get visitor => 'Visitor';
@@ -1694,7 +1751,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get homeWatchAll => 'Watch all';
@override
String get confirmRemove => 'Remove this item?';
String get confirmRemove => 'Remove this watch history?';
@override
String get followingCountLabel => 'Following';
+58 -2
View File
@@ -80,6 +80,27 @@ class AppLocalizationsId extends AppLocalizations {
String get authLegal =>
'Dengan melanjutkan, Anda menyetujui Ketentuan Layanan dan Kebijakan Privasi.';
@override
String get authLegalLead => 'Dengan melanjutkan, Anda menyetujui';
@override
String get authTerms => 'Ketentuan Layanan';
@override
String get authLegalJoin => 'dan';
@override
String get authPrivacy => 'Kebijakan Privasi';
@override
String get legalTerms => 'Ketentuan Layanan';
@override
String get legalPrivacy => 'Kebijakan Privasi';
@override
String get legalOpenFailed => 'Halaman ini belum bisa dibuka';
@override
String get authContinueGoogle => 'Lanjutkan dengan Google';
@@ -947,6 +968,9 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get authNetworkError => 'Jaringan bermasalah, coba lagi';
@override
String get authServerError => 'Layanan sedang sibuk. Coba lagi sebentar.';
@override
String get authSwitchToSignUp => 'Baru di sini? Buat akun';
@@ -1262,7 +1286,19 @@ class AppLocalizationsId extends AppLocalizations {
String get accountDeactivateReason => 'Alasan (opsional)';
@override
String get accountDeactivateReasonHint => 'Beri tahu alasan kamu';
String get accountDeactivateReasonHint => 'Tambahkan penjelasan di sini';
@override
String get accountDeactivateReasonUnused => 'Tidak lagi digunakan';
@override
String get accountDeactivateReasonContent => 'Konten tidak menarik';
@override
String get accountDeactivateReasonPrivacy => 'Masalah privasi';
@override
String get accountDeactivateReasonOther => 'Lainnya';
@override
String get accountRequestDeactivate => 'Ajukan penghapusan akun';
@@ -1472,6 +1508,11 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get playbackQuality => 'Kualitas';
@override
String qualitySwitched(String quality) {
return 'Beralih ke $quality';
}
@override
String get qualityAuto => 'Otomatis';
@@ -1603,6 +1644,9 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get homeGridClearFilter => 'Hapus filter';
@override
String get emptyContent => 'Belum ada konten';
@override
String get recommendTopTab => 'Rekomendasi';
@@ -1659,6 +1703,18 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get done => 'Selesai';
@override
String get selectAll => 'Pilih semua';
@override
String get deselectAll => 'Batal pilih';
@override
String get cancelFollowing => 'Berhenti mengikuti';
@override
String get confirmCancelFollowing => 'Berhenti mengikuti drama yang dipilih?';
@override
String get visitor => 'Pengunjung';
@@ -1697,7 +1753,7 @@ class AppLocalizationsId extends AppLocalizations {
String get homeWatchAll => 'Tonton semua';
@override
String get confirmRemove => 'Hapus item ini?';
String get confirmRemove => 'Hapus riwayat tontonan ini?';
@override
String get followingCountLabel => 'Mengikuti';
+58 -2
View File
@@ -77,6 +77,27 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get authLegal => '继续即代表同意《用户协议》与《隐私政策》';
@override
String get authLegalLead => '继续即代表同意';
@override
String get authTerms => '《用户协议》';
@override
String get authLegalJoin => '与';
@override
String get authPrivacy => '《隐私政策》';
@override
String get legalTerms => '服务条款';
@override
String get legalPrivacy => '隐私协议';
@override
String get legalOpenFailed => '暂时无法打开协议页面';
@override
String get authContinueGoogle => '使用 Google 继续';
@@ -931,6 +952,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get authNetworkError => '网络异常,请稍后重试';
@override
String get authServerError => '服务繁忙,请稍后再试';
@override
String get authSwitchToSignUp => '还没有账号?去注册';
@@ -1240,7 +1264,19 @@ class AppLocalizationsZh extends AppLocalizations {
String get accountDeactivateReason => '注销原因(选填)';
@override
String get accountDeactivateReasonHint => '告诉我们你离开的原因';
String get accountDeactivateReasonHint => '也可以在这里补充说明';
@override
String get accountDeactivateReasonUnused => '不再使用';
@override
String get accountDeactivateReasonContent => '内容不感兴趣';
@override
String get accountDeactivateReasonPrivacy => '隐私顾虑';
@override
String get accountDeactivateReasonOther => '其他';
@override
String get accountRequestDeactivate => '申请注销账号';
@@ -1449,6 +1485,11 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get playbackQuality => '清晰度';
@override
String qualitySwitched(String quality) {
return '已切换至$quality';
}
@override
String get qualityAuto => '自动';
@@ -1578,6 +1619,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get homeGridClearFilter => '清除筛选';
@override
String get emptyContent => '暂无内容';
@override
String get recommendTopTab => '推荐';
@@ -1632,6 +1676,18 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get done => '完成';
@override
String get selectAll => '全选';
@override
String get deselectAll => '取消全选';
@override
String get cancelFollowing => '取消追剧';
@override
String get confirmCancelFollowing => '确定取消已选短剧的追剧吗?';
@override
String get visitor => '访客';
@@ -1670,7 +1726,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get homeWatchAll => '观看全集';
@override
String get confirmRemove => '确定移除这条内容吗?';
String get confirmRemove => '确定要移除该条观看记录吗?';
@override
String get followingCountLabel => '追剧数';
+21 -2
View File
@@ -23,6 +23,13 @@
"authLandingSubtitle": "登录后同步进度、收藏与金币权益",
"comingSoon": "即将上线",
"authLegal": "继续即代表同意《用户协议》与《隐私政策》",
"authLegalLead": "继续即代表同意",
"authTerms": "《用户协议》",
"authLegalJoin": "与",
"authPrivacy": "《隐私政策》",
"legalTerms": "服务条款",
"legalPrivacy": "隐私协议",
"legalOpenFailed": "暂时无法打开协议页面",
"authContinueGoogle": "使用 Google 继续",
"authPhoneSignIn": "手机号登录",
"authEmailSignIn": "邮箱登录",
@@ -366,6 +373,7 @@
"authPasswordLength": "密码长度需在 8-64 位之间",
"authPasswordWeak": "密码需同时包含字母和数字",
"authNetworkError": "网络异常,请稍后重试",
"authServerError": "服务繁忙,请稍后再试",
"authSwitchToSignUp": "还没有账号?去注册",
"authSwitchToSignIn": "已有账号?去登录",
"authGateTitle": "登录后可继续",
@@ -512,7 +520,11 @@
"accountUnverified": "未验证",
"accountDeactivateWarning": "提交后进入 15 天冷静期,所有设备会立即退出登录。",
"accountDeactivateReason": "注销原因(选填)",
"accountDeactivateReasonHint": "告诉我们你离开的原因",
"accountDeactivateReasonHint": "也可以在这里补充说明",
"accountDeactivateReasonUnused": "不再使用",
"accountDeactivateReasonContent": "内容不感兴趣",
"accountDeactivateReasonPrivacy": "隐私顾虑",
"accountDeactivateReasonOther": "其他",
"accountRequestDeactivate": "申请注销账号",
"accountConfirmDeactivateTitle": "确认申请注销?",
"accountConfirmDeactivateMessage": "所有设备会立即退出登录。重新登录后,可在 15 天冷静期内撤销申请。",
@@ -585,6 +597,8 @@
"paymentPending": "等待支付。",
"orderCreateFailed": "订单创建失败。",
"playbackQuality": "清晰度",
"qualitySwitched": "已切换至{quality}",
"@qualitySwitched": { "placeholders": { "quality": { "type": "String" } } },
"qualityAuto": "自动",
"qualityAutoHint": "HLS 会根据当前网络自动切换码率。",
"searchFailed": "搜索失败,请重试。",
@@ -629,6 +643,7 @@
"homeBadgeAnime": "漫剧",
"homeGridFilterEmpty": "没有符合筛选条件的短剧",
"homeGridClearFilter": "清除筛选",
"emptyContent": "暂无内容",
"recommendTopTab": "推荐",
"playlistTopTab": "剧单",
"allDramasTopTab": "全部短剧",
@@ -647,6 +662,10 @@
"modernFilter": "现代",
"edit": "编辑",
"done": "完成",
"selectAll": "全选",
"deselectAll": "取消全选",
"cancelFollowing": "取消追剧",
"confirmCancelFollowing": "确定取消已选短剧的追剧吗?",
"visitor": "访客",
"copyUid": "复制 UID",
"uidCopied": "UID 已复制",
@@ -665,7 +684,7 @@
"watchedToEpisode": "已看至 第 {episode} 集",
"@watchedToEpisode": { "placeholders": { "episode": { "type": "int" } } },
"homeWatchAll": "观看全集",
"confirmRemove": "确定移除这条内容吗?",
"confirmRemove": "确定要移除该条观看记录吗?",
"followingCountLabel": "追剧数",
"watchRecordsCountLabel": "观看记录",
"dataUnavailable": "—",