광고 추가 보상 서버 시청 검증 · 사용자 퀘스트 승인 후 공개 · TIME ATTACK 모드 · 만보기 퀘스트 · 위치 퀘스트 지도 선택 · 운영 퀘스트 보상 재원

This commit is contained in:
Sn-Kinos
2026-10-05 22:48:09 +09:00
parent 4bb92c2ee7
commit fbf9a2c3d7
39 changed files with 1871 additions and 477 deletions
+10 -1
View File
@@ -622,6 +622,7 @@
"questStopBody": "Your progress will be reset to the beginning.",
"questStop": "Stop",
"adNotFinished": "You didn't finish the ad, so there's no bonus. You still get the basic reward.",
"adNotVerified": "We couldn't confirm the ad view, so there's no bonus. You still get the basic reward.",
"openSettings": "Open settings",
"permStepsDenied": "Step permission is off. Allow \"Physical activity\" in Settings.",
"permStepsNeeded": "Physical activity permission is needed to count steps.",
@@ -817,5 +818,13 @@
"shakeJudged": "Judged {n} / {total}",
"shakePlayHint": "Play the video and shake your phone to the beat",
"shakeVideoError": "Can't play this video",
"shakeShareResult": "Share result"
"shakeShareResult": "Share result",
"questCancel": "Cancel quest",
"questCancelInReview": "Cancelling while under review returns the deposited reward POP and the fee in full.",
"questCancelPublished": "Cancelling a published quest closes it now and returns the unused reward POP. The fee is not refunded.",
"questUnderReview": "Under review. It will be published once approved.",
"questModerationRejected": "Rejected in review: {reason}. Your deposit and fee were returned.",
"questSubmittedForReview": "Submitted. It will be published after review.",
"popReasonQuestFeeRefund": "Quest fee refund",
"questGoalSteps": "Step goal"
}
+10 -1
View File
@@ -622,6 +622,7 @@
"questStopBody": "Tu progreso se reiniciará desde el principio.",
"questStop": "Detener",
"adNotFinished": "No terminaste el anuncio, así que no hay extra. Recibes la recompensa básica.",
"adNotVerified": "No pudimos confirmar el anuncio, así que no hay extra. Recibes la recompensa básica.",
"openSettings": "Abrir ajustes",
"permStepsDenied": "El permiso de pasos está desactivado. Permite \"Actividad física\" en Ajustes.",
"permStepsNeeded": "Se necesita el permiso de actividad física para contar pasos.",
@@ -817,5 +818,13 @@
"shakeJudged": "Evaluados {n} / {total}",
"shakePlayHint": "Reproduce el video y agita el teléfono al ritmo",
"shakeVideoError": "No se puede reproducir este video",
"shakeShareResult": "Compartir resultado"
"shakeShareResult": "Compartir resultado",
"questCancel": "Cancelar misión",
"questCancelInReview": "Si cancelas durante la revisión, te devolvemos todo el POP depositado y la comisión.",
"questCancelPublished": "Si cancelas una misión publicada, se cierra al momento y te devolvemos el POP no usado. La comisión no se reembolsa.",
"questUnderReview": "En revisión. Se publicará cuando se apruebe.",
"questModerationRejected": "Rechazada en revisión: {reason}. Te devolvimos el depósito y la comisión.",
"questSubmittedForReview": "Enviada. Se publicará tras la revisión.",
"popReasonQuestFeeRefund": "Reembolso de comisión de misión",
"questGoalSteps": "Meta de pasos"
}
+10 -1
View File
@@ -622,6 +622,7 @@
"questStopBody": "これまでの進行状況がリセットされ、最初の状態に戻ります。",
"questStop": "中断",
"adNotFinished": "広告を最後まで見なかったため追加報酬はありません。基本報酬はそのまま受け取れます。",
"adNotVerified": "広告の視聴を確認できなかったため追加報酬はありません。基本報酬はそのまま受け取れます。",
"openSettings": "設定を開く",
"permStepsDenied": "歩数の権限がオフです。設定で「身体活動」を許可してください。",
"permStepsNeeded": "歩数を数えるには身体活動の権限が必要です。",
@@ -817,5 +818,13 @@
"shakeJudged": "判定 {n} / {total}",
"shakePlayHint": "動画を再生してビートに合わせてスマホを振ってください",
"shakeVideoError": "この動画を再生できません",
"shakeShareResult": "結果をシェア"
"shakeShareResult": "結果をシェア",
"questCancel": "クエストを取り消す",
"questCancelInReview": "審査中に取り消すと、預けた報酬POPと手数料はすべて返還されます。",
"questCancelPublished": "公開中のクエストを取り消すと参加はすぐ締め切られ、残りの報酬POPは返還されます。手数料は返還されません。",
"questUnderReview": "運営の審査中です。承認されると公開されます。",
"questModerationRejected": "審査で差し戻されました:{reason}。預けたPOPと手数料は返還済みです。",
"questSubmittedForReview": "公開を申請しました。審査後に公開されます。",
"popReasonQuestFeeRefund": "クエスト手数料の返還",
"questGoalSteps": "目標歩数"
}
+11 -1
View File
@@ -1230,6 +1230,7 @@
"questStopBody": "지금까지의 진행이 초기화되고 처음 상태로 돌아갑니다.",
"questStop": "중단",
"adNotFinished": "광고를 끝까지 보지 않아 추가 보상은 없어요. 기본 보상은 그대로 받습니다.",
"adNotVerified": "광고 시청이 확인되지 않아 추가 보상은 없어요. 기본 보상은 그대로 받습니다.",
"openSettings": "설정 열기",
"permStepsDenied": "걸음 수 권한이 꺼져 있습니다. 설정에서 「신체 활동」을 허용해 주세요.",
"permStepsNeeded": "걸음 수를 세려면 신체 활동 권한이 필요합니다.",
@@ -1750,5 +1751,14 @@
},
"shakePlayHint": "영상을 재생하고 박자에 맞춰 폰을 흔들어 주세요",
"shakeVideoError": "영상을 재생할 수 없어요",
"shakeShareResult": "결과 공유"
"shakeShareResult": "결과 공유",
"questCancel": "퀘스트 취소",
"questCancelInReview": "검수 중인 퀘스트를 취소하면 예치한 보상 POP 과 수수료를 모두 돌려드려요.",
"questCancelPublished": "공개된 퀘스트를 취소하면 참여가 바로 마감되고 남은 보상 POP 은 돌려드려요. 수수료는 돌려드리지 않아요.",
"questUnderReview": "운영 검수 중이에요. 승인되면 공개됩니다.",
"questModerationRejected": "운영 검수에서 반려되었어요: {reason}. 예치한 POP 과 수수료는 돌려드렸어요.",
"@questModerationRejected": {"placeholders": {"reason": {"type": "String"}}},
"questSubmittedForReview": "공개 요청했어요. 운영 검수 후 공개됩니다.",
"popReasonQuestFeeRefund": "퀘스트 수수료 반환",
"questGoalSteps": "목표 걸음 수"
}
+54
View File
@@ -3836,6 +3836,12 @@ abstract class AppLocalizations {
/// **'광고를 끝까지 보지 않아 추가 보상은 없어요. 기본 보상은 그대로 받습니다.'**
String get adNotFinished;
/// No description provided for @adNotVerified.
///
/// In ko, this message translates to:
/// **'광고 시청이 확인되지 않아 추가 보상은 없어요. 기본 보상은 그대로 받습니다.'**
String get adNotVerified;
/// No description provided for @openSettings.
///
/// In ko, this message translates to:
@@ -5023,6 +5029,54 @@ abstract class AppLocalizations {
/// In ko, this message translates to:
/// **'결과 공유'**
String get shakeShareResult;
/// No description provided for @questCancel.
///
/// In ko, this message translates to:
/// **'퀘스트 취소'**
String get questCancel;
/// No description provided for @questCancelInReview.
///
/// In ko, this message translates to:
/// **'검수 중인 퀘스트를 취소하면 예치한 보상 POP 과 수수료를 모두 돌려드려요.'**
String get questCancelInReview;
/// No description provided for @questCancelPublished.
///
/// In ko, this message translates to:
/// **'공개된 퀘스트를 취소하면 참여가 바로 마감되고 남은 보상 POP 은 돌려드려요. 수수료는 돌려드리지 않아요.'**
String get questCancelPublished;
/// No description provided for @questUnderReview.
///
/// In ko, this message translates to:
/// **'운영 검수 중이에요. 승인되면 공개됩니다.'**
String get questUnderReview;
/// No description provided for @questModerationRejected.
///
/// In ko, this message translates to:
/// **'운영 검수에서 반려되었어요: {reason}. 예치한 POP 과 수수료는 돌려드렸어요.'**
String questModerationRejected(String reason);
/// No description provided for @questSubmittedForReview.
///
/// In ko, this message translates to:
/// **'공개 요청했어요. 운영 검수 후 공개됩니다.'**
String get questSubmittedForReview;
/// No description provided for @popReasonQuestFeeRefund.
///
/// In ko, this message translates to:
/// **'퀘스트 수수료 반환'**
String get popReasonQuestFeeRefund;
/// No description provided for @questGoalSteps.
///
/// In ko, this message translates to:
/// **'목표 걸음 수'**
String get questGoalSteps;
}
class _AppLocalizationsDelegate
+34
View File
@@ -2155,6 +2155,10 @@ class AppLocalizationsEn extends AppLocalizations {
String get adNotFinished =>
'You didn\'t finish the ad, so there\'s no bonus. You still get the basic reward.';
@override
String get adNotVerified =>
'We couldn\'t confirm the ad view, so there\'s no bonus. You still get the basic reward.';
@override
String get openSettings => 'Open settings';
@@ -2861,4 +2865,34 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get shakeShareResult => 'Share result';
@override
String get questCancel => 'Cancel quest';
@override
String get questCancelInReview =>
'Cancelling while under review returns the deposited reward POP and the fee in full.';
@override
String get questCancelPublished =>
'Cancelling a published quest closes it now and returns the unused reward POP. The fee is not refunded.';
@override
String get questUnderReview =>
'Under review. It will be published once approved.';
@override
String questModerationRejected(String reason) {
return 'Rejected in review: $reason. Your deposit and fee were returned.';
}
@override
String get questSubmittedForReview =>
'Submitted. It will be published after review.';
@override
String get popReasonQuestFeeRefund => 'Quest fee refund';
@override
String get questGoalSteps => 'Step goal';
}
+33
View File
@@ -2169,6 +2169,10 @@ class AppLocalizationsEs extends AppLocalizations {
String get adNotFinished =>
'No terminaste el anuncio, así que no hay extra. Recibes la recompensa básica.';
@override
String get adNotVerified =>
'No pudimos confirmar el anuncio, así que no hay extra. Recibes la recompensa básica.';
@override
String get openSettings => 'Abrir ajustes';
@@ -2877,4 +2881,33 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get shakeShareResult => 'Compartir resultado';
@override
String get questCancel => 'Cancelar misión';
@override
String get questCancelInReview =>
'Si cancelas durante la revisión, te devolvemos todo el POP depositado y la comisión.';
@override
String get questCancelPublished =>
'Si cancelas una misión publicada, se cierra al momento y te devolvemos el POP no usado. La comisión no se reembolsa.';
@override
String get questUnderReview => 'En revisión. Se publicará cuando se apruebe.';
@override
String questModerationRejected(String reason) {
return 'Rechazada en revisión: $reason. Te devolvimos el depósito y la comisión.';
}
@override
String get questSubmittedForReview =>
'Enviada. Se publicará tras la revisión.';
@override
String get popReasonQuestFeeRefund => 'Reembolso de comisión de misión';
@override
String get questGoalSteps => 'Meta de pasos';
}
+30
View File
@@ -2090,6 +2090,9 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get adNotFinished => '広告を最後まで見なかったため追加報酬はありません。基本報酬はそのまま受け取れます。';
@override
String get adNotVerified => '広告の視聴を確認できなかったため追加報酬はありません。基本報酬はそのまま受け取れます。';
@override
String get openSettings => '設定を開く';
@@ -2769,4 +2772,31 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get shakeShareResult => '結果をシェア';
@override
String get questCancel => 'クエストを取り消す';
@override
String get questCancelInReview => '審査中に取り消すと、預けた報酬POPと手数料はすべて返還されます。';
@override
String get questCancelPublished =>
'公開中のクエストを取り消すと参加はすぐ締め切られ、残りの報酬POPは返還されます。手数料は返還されません。';
@override
String get questUnderReview => '運営の審査中です。承認されると公開されます。';
@override
String questModerationRejected(String reason) {
return '審査で差し戻されました:$reason。預けたPOPと手数料は返還済みです。';
}
@override
String get questSubmittedForReview => '公開を申請しました。審査後に公開されます。';
@override
String get popReasonQuestFeeRefund => 'クエスト手数料の返還';
@override
String get questGoalSteps => '目標歩数';
}
+31
View File
@@ -2091,6 +2091,9 @@ class AppLocalizationsKo extends AppLocalizations {
@override
String get adNotFinished => '광고를 끝까지 보지 않아 추가 보상은 없어요. 기본 보상은 그대로 받습니다.';
@override
String get adNotVerified => '광고 시청이 확인되지 않아 추가 보상은 없어요. 기본 보상은 그대로 받습니다.';
@override
String get openSettings => '설정 열기';
@@ -2771,4 +2774,32 @@ class AppLocalizationsKo extends AppLocalizations {
@override
String get shakeShareResult => '결과 공유';
@override
String get questCancel => '퀘스트 취소';
@override
String get questCancelInReview =>
'검수 중인 퀘스트를 취소하면 예치한 보상 POP 과 수수료를 모두 돌려드려요.';
@override
String get questCancelPublished =>
'공개된 퀘스트를 취소하면 참여가 바로 마감되고 남은 보상 POP 은 돌려드려요. 수수료는 돌려드리지 않아요.';
@override
String get questUnderReview => '운영 검수 중이에요. 승인되면 공개됩니다.';
@override
String questModerationRejected(String reason) {
return '운영 검수에서 반려되었어요: $reason. 예치한 POP 과 수수료는 돌려드렸어요.';
}
@override
String get questSubmittedForReview => '공개 요청했어요. 운영 검수 후 공개됩니다.';
@override
String get popReasonQuestFeeRefund => '퀘스트 수수료 반환';
@override
String get questGoalSteps => '목표 걸음 수';
}
+29
View File
@@ -2088,6 +2088,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get adNotFinished => '未看完广告,无额外奖励,基础奖励照常发放。';
@override
String get adNotVerified => '未能确认广告观看,无额外奖励,基础奖励照常发放。';
@override
String get openSettings => '打开设置';
@@ -2766,4 +2769,30 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get shakeShareResult => '分享结果';
@override
String get questCancel => '取消任务';
@override
String get questCancelInReview => '审核中取消将全额退还已存入的奖励POP和手续费。';
@override
String get questCancelPublished => '取消已公开的任务将立即截止,剩余奖励POP退还,手续费不退。';
@override
String get questUnderReview => '运营审核中,批准后公开。';
@override
String questModerationRejected(String reason) {
return '审核未通过:$reason。已退还存入的POP和手续费。';
}
@override
String get questSubmittedForReview => '已提交公开申请,审核后公开。';
@override
String get popReasonQuestFeeRefund => '任务手续费退还';
@override
String get questGoalSteps => '目标步数';
}
+10 -1
View File
@@ -622,6 +622,7 @@
"questStopBody": "当前进度将被重置并恢复初始状态。",
"questStop": "中止",
"adNotFinished": "未看完广告,无额外奖励,基础奖励照常发放。",
"adNotVerified": "未能确认广告观看,无额外奖励,基础奖励照常发放。",
"openSettings": "打开设置",
"permStepsDenied": "步数权限已关闭,请在设置中允许“身体活动”。",
"permStepsNeeded": "计步需要身体活动权限。",
@@ -817,5 +818,13 @@
"shakeJudged": "判定 {n} / {total}",
"shakePlayHint": "播放视频并跟着节拍摇动手机",
"shakeVideoError": "无法播放该视频",
"shakeShareResult": "分享结果"
"shakeShareResult": "分享结果",
"questCancel": "取消任务",
"questCancelInReview": "审核中取消将全额退还已存入的奖励POP和手续费。",
"questCancelPublished": "取消已公开的任务将立即截止,剩余奖励POP退还,手续费不退。",
"questUnderReview": "运营审核中,批准后公开。",
"questModerationRejected": "审核未通过:{reason}。已退还存入的POP和手续费。",
"questSubmittedForReview": "已提交公开申请,审核后公开。",
"popReasonQuestFeeRefund": "任务手续费退还",
"questGoalSteps": "目标步数"
}
@@ -31,6 +31,9 @@ class RemoteAppLocalizations extends AppLocalizations {
@override
String get adNotFinished => _remote['adNotFinished'] ?? _base.adNotFinished;
@override
String get adNotVerified => _remote['adNotVerified'] ?? _base.adNotVerified;
@override
String get adPartyPack => _remote['adPartyPack'] ?? _base.adPartyPack;
@@ -1579,6 +1582,9 @@ class RemoteAppLocalizations extends AppLocalizations {
@override
String get popReasonQuestFee => _remote['popReasonQuestFee'] ?? _base.popReasonQuestFee;
@override
String get popReasonQuestFeeRefund => _remote['popReasonQuestFeeRefund'] ?? _base.popReasonQuestFeeRefund;
@override
String get popReasonQuestMusicShake => _remote['popReasonQuestMusicShake'] ?? _base.popReasonQuestMusicShake;
@@ -1741,6 +1747,15 @@ class RemoteAppLocalizations extends AppLocalizations {
@override
String get questAuthorNote => _remote['questAuthorNote'] ?? _base.questAuthorNote;
@override
String get questCancel => _remote['questCancel'] ?? _base.questCancel;
@override
String get questCancelInReview => _remote['questCancelInReview'] ?? _base.questCancelInReview;
@override
String get questCancelPublished => _remote['questCancelPublished'] ?? _base.questCancelPublished;
@override
String get questCatCommunity => _remote['questCatCommunity'] ?? _base.questCatCommunity;
@@ -1816,6 +1831,9 @@ class RemoteAppLocalizations extends AppLocalizations {
@override
String get questGoalBpm => _remote['questGoalBpm'] ?? _base.questGoalBpm;
@override
String get questGoalSteps => _remote['questGoalSteps'] ?? _base.questGoalSteps;
@override
String get questGoalValue => _remote['questGoalValue'] ?? _base.questGoalValue;
@@ -1843,6 +1861,9 @@ class RemoteAppLocalizations extends AppLocalizations {
@override
String questMine(String count) => _fill('questMine', {'count': count}) ?? _base.questMine(count);
@override
String questModerationRejected(String reason) => _fill('questModerationRejected', {'reason': reason}) ?? _base.questModerationRejected(reason);
@override
String get questName => _remote['questName'] ?? _base.questName;
@@ -1972,6 +1993,9 @@ class RemoteAppLocalizations extends AppLocalizations {
@override
String get questSubmitted => _remote['questSubmitted'] ?? _base.questSubmitted;
@override
String get questSubmittedForReview => _remote['questSubmittedForReview'] ?? _base.questSubmittedForReview;
@override
String get questTabEmpty => _remote['questTabEmpty'] ?? _base.questTabEmpty;
@@ -2014,6 +2038,9 @@ class RemoteAppLocalizations extends AppLocalizations {
@override
String get questTypeVote => _remote['questTypeVote'] ?? _base.questTypeVote;
@override
String get questUnderReview => _remote['questUnderReview'] ?? _base.questUnderReview;
@override
String get rankEmpty => _remote['rankEmpty'] ?? _base.rankEmpty;