feat(reward): 新增客户端奖励中心

This commit is contained in:
Zhou Weidong committed 2026-11-13 13:43:38 +08:00
1 parent 67670d46b1
commit bea08110c9
68 files changed
+3987 -332

No files matched your search

+41
View File
@@ -860,6 +860,47 @@
"aboutUs": "About us",
"aboutBrandName": "Your mini business",
"aboutDescription": "A focused, immersive place to watch short dramas.",
"rewardTab": "Rewards",
"rewardCenterTitle": "Reward Center",
"rewardTasksTab": "Tasks",
"rewardActivitiesTab": "Events",
"rewardMyCoins": "My coins",
"rewardCheckInTitle": "Check in for rewards",
"rewardCheckInSubtitle": "Check in daily to collect reward coins",
"rewardBoostCheckIn": "Boost check-in reward",
"rewardCheckInAction": "Check in",
"rewardCheckInActionWithCoins": "Check in +{coins} coins",
"@rewardCheckInActionWithCoins": {
"placeholders": {"coins": {"type": "int"}}
},
"rewardCheckedIn": "Checked in",
"rewardToday": "Today",
"rewardDayLabel": "Day {day}",
"@rewardDayLabel": {
"placeholders": {"day": {"type": "int"}}
},
"rewardClaimAction": "Claim",
"rewardClaimed": "Claimed",
"rewardGoAction": "Go",
"rewardDailySectionSubtitle": "Complete daily tasks to collect reward coins",
"rewardNewbieSectionSubtitle": "Available once only",
"rewardInviteSectionSubtitle": "Invite friends and earn rewards together",
"rewardHelpTitle": "About rewards",
"rewardHelpBody": "Complete check-ins and tasks to earn reward coins. Rewards and task rules are shown on this page.",
"rewardComingSoon": "Coming soon",
"rewardEmptyTasks": "No reward tasks available",
"rewardEmptyActivities": "No events available",
"rewardRetry": "Retry",
"rewardCheckInSuccess": "+{coins} coins for checking in",
"@rewardCheckInSuccess": {
"placeholders": {"coins": {"type": "int"}}
},
"rewardClaimSuccess": "+{coins} coins claimed",
"@rewardClaimSuccess": {
"placeholders": {"coins": {"type": "int"}}
},
"rewardLoadFailed": "Couldn't load rewards",
"rewardActionFailed": "Action failed. Please try again.",
"versionLabel": "Version {version}",
"@versionLabel": {
"placeholders": {
+41
View File
@@ -817,6 +817,47 @@
"aboutUs": "Tentang kami",
"aboutBrandName": "Your mini business",
"aboutDescription": "Tempat fokus dan imersif untuk menonton drama pendek.",
"rewardTab": "Hadiah",
"rewardCenterTitle": "Pusat Hadiah",
"rewardTasksTab": "Tugas",
"rewardActivitiesTab": "Acara",
"rewardMyCoins": "Koin saya",
"rewardCheckInTitle": "Check-in untuk hadiah",
"rewardCheckInSubtitle": "Check-in setiap hari untuk mengumpulkan koin hadiah",
"rewardBoostCheckIn": "Tingkatkan hadiah check-in",
"rewardCheckInAction": "Check-in",
"rewardCheckInActionWithCoins": "Check-in +{coins} koin",
"@rewardCheckInActionWithCoins": {
"placeholders": {"coins": {"type": "int"}}
},
"rewardCheckedIn": "Sudah check-in",
"rewardToday": "Hari ini",
"rewardDayLabel": "Hari {day}",
"@rewardDayLabel": {
"placeholders": {"day": {"type": "int"}}
},
"rewardClaimAction": "Ambil",
"rewardClaimed": "Sudah diambil",
"rewardGoAction": "Mulai",
"rewardDailySectionSubtitle": "Selesaikan tugas harian untuk mendapat koin hadiah",
"rewardNewbieSectionSubtitle": "Hanya tersedia satu kali",
"rewardInviteSectionSubtitle": "Undang teman dan dapatkan hadiah bersama",
"rewardHelpTitle": "Tentang hadiah",
"rewardHelpBody": "Selesaikan check-in dan tugas untuk mendapat koin hadiah. Hadiah dan aturan tugas mengikuti halaman ini.",
"rewardComingSoon": "Segera hadir",
"rewardEmptyTasks": "Belum ada tugas hadiah",
"rewardEmptyActivities": "Belum ada acara",
"rewardRetry": "Coba lagi",
"rewardCheckInSuccess": "+{coins} koin dari check-in",
"@rewardCheckInSuccess": {
"placeholders": {"coins": {"type": "int"}}
},
"rewardClaimSuccess": "+{coins} koin berhasil diambil",
"@rewardClaimSuccess": {
"placeholders": {"coins": {"type": "int"}}
},
"rewardLoadFailed": "Hadiah tidak dapat dimuat",
"rewardActionFailed": "Tindakan gagal. Silakan coba lagi.",
"versionLabel": "Versi {version}",
"@versionLabel": {
"placeholders": {
+174
View File
@@ -3616,6 +3616,180 @@ abstract class AppLocalizations {
/// **'A focused, immersive place to watch short dramas.'**
String get aboutDescription;
/// No description provided for @rewardTab.
///
/// In en, this message translates to:
/// **'Rewards'**
String get rewardTab;
/// No description provided for @rewardCenterTitle.
///
/// In en, this message translates to:
/// **'Reward Center'**
String get rewardCenterTitle;
/// No description provided for @rewardTasksTab.
///
/// In en, this message translates to:
/// **'Tasks'**
String get rewardTasksTab;
/// No description provided for @rewardActivitiesTab.
///
/// In en, this message translates to:
/// **'Events'**
String get rewardActivitiesTab;
/// No description provided for @rewardMyCoins.
///
/// In en, this message translates to:
/// **'My coins'**
String get rewardMyCoins;
/// No description provided for @rewardCheckInTitle.
///
/// In en, this message translates to:
/// **'Check in for rewards'**
String get rewardCheckInTitle;
/// No description provided for @rewardCheckInSubtitle.
///
/// In en, this message translates to:
/// **'Check in daily to collect reward coins'**
String get rewardCheckInSubtitle;
/// No description provided for @rewardBoostCheckIn.
///
/// In en, this message translates to:
/// **'Boost check-in reward'**
String get rewardBoostCheckIn;
/// No description provided for @rewardCheckInAction.
///
/// In en, this message translates to:
/// **'Check in'**
String get rewardCheckInAction;
/// No description provided for @rewardCheckInActionWithCoins.
///
/// In en, this message translates to:
/// **'Check in +{coins} coins'**
String rewardCheckInActionWithCoins(int coins);
/// No description provided for @rewardCheckedIn.
///
/// In en, this message translates to:
/// **'Checked in'**
String get rewardCheckedIn;
/// No description provided for @rewardToday.
///
/// In en, this message translates to:
/// **'Today'**
String get rewardToday;
/// No description provided for @rewardDayLabel.
///
/// In en, this message translates to:
/// **'Day {day}'**
String rewardDayLabel(int day);
/// No description provided for @rewardClaimAction.
///
/// In en, this message translates to:
/// **'Claim'**
String get rewardClaimAction;
/// No description provided for @rewardClaimed.
///
/// In en, this message translates to:
/// **'Claimed'**
String get rewardClaimed;
/// No description provided for @rewardGoAction.
///
/// In en, this message translates to:
/// **'Go'**
String get rewardGoAction;
/// No description provided for @rewardDailySectionSubtitle.
///
/// In en, this message translates to:
/// **'Complete daily tasks to collect reward coins'**
String get rewardDailySectionSubtitle;
/// No description provided for @rewardNewbieSectionSubtitle.
///
/// In en, this message translates to:
/// **'Available once only'**
String get rewardNewbieSectionSubtitle;
/// No description provided for @rewardInviteSectionSubtitle.
///
/// In en, this message translates to:
/// **'Invite friends and earn rewards together'**
String get rewardInviteSectionSubtitle;
/// No description provided for @rewardHelpTitle.
///
/// In en, this message translates to:
/// **'About rewards'**
String get rewardHelpTitle;
/// No description provided for @rewardHelpBody.
///
/// In en, this message translates to:
/// **'Complete check-ins and tasks to earn reward coins. Rewards and task rules are shown on this page.'**
String get rewardHelpBody;
/// No description provided for @rewardComingSoon.
///
/// In en, this message translates to:
/// **'Coming soon'**
String get rewardComingSoon;
/// No description provided for @rewardEmptyTasks.
///
/// In en, this message translates to:
/// **'No reward tasks available'**
String get rewardEmptyTasks;
/// No description provided for @rewardEmptyActivities.
///
/// In en, this message translates to:
/// **'No events available'**
String get rewardEmptyActivities;
/// No description provided for @rewardRetry.
///
/// In en, this message translates to:
/// **'Retry'**
String get rewardRetry;
/// No description provided for @rewardCheckInSuccess.
///
/// In en, this message translates to:
/// **'+{coins} coins for checking in'**
String rewardCheckInSuccess(int coins);
/// No description provided for @rewardClaimSuccess.
///
/// In en, this message translates to:
/// **'+{coins} coins claimed'**
String rewardClaimSuccess(int coins);
/// No description provided for @rewardLoadFailed.
///
/// In en, this message translates to:
/// **'Couldn\'t load rewards'**
String get rewardLoadFailed;
/// No description provided for @rewardActionFailed.
///
/// In en, this message translates to:
/// **'Action failed. Please try again.'**
String get rewardActionFailed;
/// No description provided for @versionLabel.
///
/// In en, this message translates to:
+98
View File
@@ -1901,6 +1901,104 @@ class AppLocalizationsEn extends AppLocalizations {
String get aboutDescription =>
'A focused, immersive place to watch short dramas.';
@override
String get rewardTab => 'Rewards';
@override
String get rewardCenterTitle => 'Reward Center';
@override
String get rewardTasksTab => 'Tasks';
@override
String get rewardActivitiesTab => 'Events';
@override
String get rewardMyCoins => 'My coins';
@override
String get rewardCheckInTitle => 'Check in for rewards';
@override
String get rewardCheckInSubtitle => 'Check in daily to collect reward coins';
@override
String get rewardBoostCheckIn => 'Boost check-in reward';
@override
String get rewardCheckInAction => 'Check in';
@override
String rewardCheckInActionWithCoins(int coins) {
return 'Check in +$coins coins';
}
@override
String get rewardCheckedIn => 'Checked in';
@override
String get rewardToday => 'Today';
@override
String rewardDayLabel(int day) {
return 'Day $day';
}
@override
String get rewardClaimAction => 'Claim';
@override
String get rewardClaimed => 'Claimed';
@override
String get rewardGoAction => 'Go';
@override
String get rewardDailySectionSubtitle =>
'Complete daily tasks to collect reward coins';
@override
String get rewardNewbieSectionSubtitle => 'Available once only';
@override
String get rewardInviteSectionSubtitle =>
'Invite friends and earn rewards together';
@override
String get rewardHelpTitle => 'About rewards';
@override
String get rewardHelpBody =>
'Complete check-ins and tasks to earn reward coins. Rewards and task rules are shown on this page.';
@override
String get rewardComingSoon => 'Coming soon';
@override
String get rewardEmptyTasks => 'No reward tasks available';
@override
String get rewardEmptyActivities => 'No events available';
@override
String get rewardRetry => 'Retry';
@override
String rewardCheckInSuccess(int coins) {
return '+$coins coins for checking in';
}
@override
String rewardClaimSuccess(int coins) {
return '+$coins coins claimed';
}
@override
String get rewardLoadFailed => 'Couldn\'t load rewards';
@override
String get rewardActionFailed => 'Action failed. Please try again.';
@override
String versionLabel(String version) {
return 'Version $version';
+99
View File
@@ -1903,6 +1903,105 @@ class AppLocalizationsId extends AppLocalizations {
String get aboutDescription =>
'Tempat fokus dan imersif untuk menonton drama pendek.';
@override
String get rewardTab => 'Hadiah';
@override
String get rewardCenterTitle => 'Pusat Hadiah';
@override
String get rewardTasksTab => 'Tugas';
@override
String get rewardActivitiesTab => 'Acara';
@override
String get rewardMyCoins => 'Koin saya';
@override
String get rewardCheckInTitle => 'Check-in untuk hadiah';
@override
String get rewardCheckInSubtitle =>
'Check-in setiap hari untuk mengumpulkan koin hadiah';
@override
String get rewardBoostCheckIn => 'Tingkatkan hadiah check-in';
@override
String get rewardCheckInAction => 'Check-in';
@override
String rewardCheckInActionWithCoins(int coins) {
return 'Check-in +$coins koin';
}
@override
String get rewardCheckedIn => 'Sudah check-in';
@override
String get rewardToday => 'Hari ini';
@override
String rewardDayLabel(int day) {
return 'Hari $day';
}
@override
String get rewardClaimAction => 'Ambil';
@override
String get rewardClaimed => 'Sudah diambil';
@override
String get rewardGoAction => 'Mulai';
@override
String get rewardDailySectionSubtitle =>
'Selesaikan tugas harian untuk mendapat koin hadiah';
@override
String get rewardNewbieSectionSubtitle => 'Hanya tersedia satu kali';
@override
String get rewardInviteSectionSubtitle =>
'Undang teman dan dapatkan hadiah bersama';
@override
String get rewardHelpTitle => 'Tentang hadiah';
@override
String get rewardHelpBody =>
'Selesaikan check-in dan tugas untuk mendapat koin hadiah. Hadiah dan aturan tugas mengikuti halaman ini.';
@override
String get rewardComingSoon => 'Segera hadir';
@override
String get rewardEmptyTasks => 'Belum ada tugas hadiah';
@override
String get rewardEmptyActivities => 'Belum ada acara';
@override
String get rewardRetry => 'Coba lagi';
@override
String rewardCheckInSuccess(int coins) {
return '+$coins koin dari check-in';
}
@override
String rewardClaimSuccess(int coins) {
return '+$coins koin berhasil diambil';
}
@override
String get rewardLoadFailed => 'Hadiah tidak dapat dimuat';
@override
String get rewardActionFailed => 'Tindakan gagal. Silakan coba lagi.';
@override
String versionLabel(String version) {
return 'Versi $version';
+95
View File
@@ -1875,6 +1875,101 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get aboutDescription => '专注于短剧观看与沉浸式追剧体验。';
@override
String get rewardTab => '奖励';
@override
String get rewardCenterTitle => '奖励中心';
@override
String get rewardTasksTab => '任务';
@override
String get rewardActivitiesTab => '活动';
@override
String get rewardMyCoins => '我的金币';
@override
String get rewardCheckInTitle => '签到领奖励';
@override
String get rewardCheckInSubtitle => '每日签到,领取奖励币';
@override
String get rewardBoostCheckIn => '提升签到奖励';
@override
String get rewardCheckInAction => '立即签到';
@override
String rewardCheckInActionWithCoins(int coins) {
return '签到 +$coins 奖励币';
}
@override
String get rewardCheckedIn => '今日已签到';
@override
String get rewardToday => '今天';
@override
String rewardDayLabel(int day) {
return '第 $day 天';
}
@override
String get rewardClaimAction => '领取';
@override
String get rewardClaimed => '已领取';
@override
String get rewardGoAction => '去完成';
@override
String get rewardDailySectionSubtitle => '每日完成任务,领取奖励币';
@override
String get rewardNewbieSectionSubtitle => '仅有一次机会';
@override
String get rewardInviteSectionSubtitle => '邀请好友一起获得奖励';
@override
String get rewardHelpTitle => '奖励中心说明';
@override
String get rewardHelpBody => '完成签到和任务可获得奖励币,具体奖励与任务规则以页面展示为准。';
@override
String get rewardComingSoon => '功能即将开放';
@override
String get rewardEmptyTasks => '暂无奖励任务';
@override
String get rewardEmptyActivities => '暂无活动';
@override
String get rewardRetry => '重新加载';
@override
String rewardCheckInSuccess(int coins) {
return '签到成功,获得 $coins 金币';
}
@override
String rewardClaimSuccess(int coins) {
return '领取成功,获得 $coins 金币';
}
@override
String get rewardLoadFailed => '奖励数据加载失败';
@override
String get rewardActionFailed => '操作失败,请稍后重试';
@override
String versionLabel(String version) {
return '版本 $version';
+41
View File
@@ -779,6 +779,47 @@
"aboutUs": "关于我们",
"aboutBrandName": "Your mini business",
"aboutDescription": "专注于短剧观看与沉浸式追剧体验。",
"rewardTab": "奖励",
"rewardCenterTitle": "奖励中心",
"rewardTasksTab": "任务",
"rewardActivitiesTab": "活动",
"rewardMyCoins": "我的金币",
"rewardCheckInTitle": "签到领奖励",
"rewardCheckInSubtitle": "每日签到,领取奖励币",
"rewardBoostCheckIn": "提升签到奖励",
"rewardCheckInAction": "立即签到",
"rewardCheckInActionWithCoins": "签到 +{coins} 奖励币",
"@rewardCheckInActionWithCoins": {
"placeholders": {"coins": {"type": "int"}}
},
"rewardCheckedIn": "今日已签到",
"rewardToday": "今天",
"rewardDayLabel": "第 {day} 天",
"@rewardDayLabel": {
"placeholders": {"day": {"type": "int"}}
},
"rewardClaimAction": "领取",
"rewardClaimed": "已领取",
"rewardGoAction": "去完成",
"rewardDailySectionSubtitle": "每日完成任务,领取奖励币",
"rewardNewbieSectionSubtitle": "仅有一次机会",
"rewardInviteSectionSubtitle": "邀请好友一起获得奖励",
"rewardHelpTitle": "奖励中心说明",
"rewardHelpBody": "完成签到和任务可获得奖励币,具体奖励与任务规则以页面展示为准。",
"rewardComingSoon": "功能即将开放",
"rewardEmptyTasks": "暂无奖励任务",
"rewardEmptyActivities": "暂无活动",
"rewardRetry": "重新加载",
"rewardCheckInSuccess": "签到成功,获得 {coins} 金币",
"@rewardCheckInSuccess": {
"placeholders": {"coins": {"type": "int"}}
},
"rewardClaimSuccess": "领取成功,获得 {coins} 金币",
"@rewardClaimSuccess": {
"placeholders": {"coins": {"type": "int"}}
},
"rewardLoadFailed": "奖励数据加载失败",
"rewardActionFailed": "操作失败,请稍后重试",
"versionLabel": "版本 {version}",
"@versionLabel": {
"placeholders": {