{ "activityTime": "Activity Time", "cancel": "Cancel", "confirm": "Confirm", "confirmPause": "Are you sure you want to pause this activity?", "confirmPublish": "Are you sure you want to publish this activity?", "create": "Create", "createActivity": "Create Activity", "createSuccess": "Create Success", "detail": { "prizesTab": "Prizes", "rulesTab": "Rules" }, "edit": "Edit", "editActivity": "Edit Activity", "form": { "cancel": "Cancel", "confirm": "Confirm", "description": "Description", "descriptionPlaceholder": "Activity description (Markdown supported)", "endAt": "End Time", "endAtAfterStartAt": "End time must be later than start time", "endAtRequired": "End time is required", "gridSize": "Grid Size", "selectEndAt": "Select time", "selectGridSize": "Select grid size", "selectStartAt": "Select time", "startAt": "Start Time", "startAtRequired": "Start time is required", "title": "Title", "titlePlaceholder": "Activity title", "titleRequired": "Title is required" }, "grant": { "amount": "Amount", "description": "Manually grant draw chances to a user for activity: {{title}}", "sourceRef": "Source Reference", "sourceRefHint": "Idempotency key: the same reference only grants once. Repeated submissions will not grant again.", "sourceRefPlaceholder": "grant-20260709-abc123", "success": "Chances granted", "title": "Grant Chances", "userId": "User ID", "userIdHint": "Enter the numeric user ID. You can find it in the user management list.", "userIdPlaceholder": "e.g. 87433" }, "grantChances": "Grant Chances", "gridSize": "Grid Size", "id": "ID", "manage": "Manage", "pause": "Pause", "pauseSuccess": "Pause Success", "pauseWarning": "Users will not be able to draw while the activity is paused.", "prize": { "addPrize": "Add Prize", "amountPrecision": "Amount supports at most 2 decimal places", "amountRequired": "Amount must be greater than 0", "amountUnitHint": "Entered in CNY (yuan), stored as cents; up to 2 decimal places", "amountYuan": "Commission Amount (CNY)", "cancel": "Cancel", "centerSlotHint": "Usually the draw button", "confirm": "Confirm", "confirmDelete": "Delete", "createSuccess": "Prize created", "createTitle": "Add Prize", "daysSuffix": "days", "delete": "Delete", "deleteDescription": "This prize will be removed from the grid. This action cannot be undone.", "deleteSuccess": "Prize deleted", "deleteTitle": "Delete this prize?", "durationDays": "Duration (days)", "durationDaysPlaceholder": "e.g. 1", "durationDaysRequired": "Duration days must be a positive integer", "editTitle": "Edit Prize", "fallbackBadge": "Fallback", "fallbackIgnoresWeight": "Fallback prize ignores weight", "iconUrl": "Icon URL", "iconUrlInvalid": "Must be a valid URL", "isFallback": "Fallback Prize", "isFallbackHint": "Awarded when limited prizes are sold out", "name": "Prize Name", "namePlaceholder": "e.g. 1-Day Pass", "nameRequired": "Name is required", "noFallbackHint": "Consider configuring a fallback prize so draws never fail when limited prizes run out.", "noFallbackTitle": "No fallback prize", "noRandomPrizes": "No prizes participate in the random draw yet", "noneHint": "No config needed. Consider enabling fallback so users always land on this prize when limited prizes run out.", "probabilityPreview": "Probability Preview", "selectType": "Select type", "slotLabel": "Slot", "soldOutBadge": "Sold Out", "stage2Hint": "Available in Stage 2", "stockShort": "Stock", "totalStock": "Total Stock", "totalStockPlaceholder": "e.g. 100", "totalStockRequired": "Total stock must be a positive integer", "type": "Prize Type", "typeCommission": "Commission", "typeCoupon": "Coupon", "typeCrypto": "Crypto", "typeManualOther": "Manual (Other)", "typeNone": "No Prize (Thanks)", "typePhysical": "Physical", "typePoints": "Points", "typeVpnDuration": "VPN Duration", "unlimitedStock": "Unlimited Stock", "updateSuccess": "Prize updated", "weight": "Weight", "weightHint": "0 = displayed but excluded from random draw", "weightInteger": "Weight must be an integer", "weightMin": "Weight must be at least 0", "weightShort": "Weight", "yuanSuffix": "CNY" }, "publish": "Publish", "publishSuccess": "Publish Success", "publishWarning": "Once published, the activity becomes visible to users.", "rules": { "addCondition": "Add Condition", "addSource": "Add Source", "amount": "Amount", "cannotSimplify": "This rule tree is too complex for simple mode. Please edit it in Advanced mode.", "capsBytesExceeded": "Size {{value}} bytes exceeds limit {{limit}} bytes", "capsDepthExceeded": "Depth {{value}} exceeds limit {{limit}}", "capsExceeded": "Rule tree exceeds limits", "capsNodesExceeded": "Node count {{value}} exceeds limit {{limit}}", "chanceSources": "Chance Sources", "chanceSourcesDescription": "Configure how users earn draw chances. Each source can only appear once.", "conditionType": { "has_subscription": "Has Subscription", "invite_count": "Invite Count", "register_days": "Register Days", "subscription_type": "Subscription Type", "total_recharge": "Total Recharge", "user_tag": "User Tag" }, "dailyLimit": "Daily limit (optional)", "duplicateSource": "Duplicate source", "eligibility": "Eligibility", "jsonInvalid": "Invalid JSON: {{error}}", "jsonMustBeObject": "Rule tree must be a JSON object", "jsonPlaceholder": "Rule tree JSON, e.g. {\"op\":\"AND\",\"children\":[...]}. Leave empty for no requirement.", "noConditions": "No conditions. Everyone is eligible to join.", "op": "Combine Conditions With", "opAnd": "AND", "opOr": "OR", "param": { "min": "Min Count", "minDaysRemaining": "Min Days Remaining", "minUsdt": "Min USDT", "planIds": "Plan IDs", "planIdsPlaceholder": "Comma separated, e.g. 1,2,3", "tags": "Tags", "tagsPlaceholder": "Comma separated, e.g. vip,beta", "windowDays": "Window Days (optional)" }, "save": "Save Rules", "saveFailed": "Failed to save rules", "saveSuccess": "Rules saved", "selectSource": "Select source", "simpleMode": "Simple", "advancedMode": "Advanced (JSON)", "source": { "dailySignin": "Daily Sign-in", "inviteSuccess": "Invite Success", "manualGrant": "Manual Grant", "newSubscription": "New Subscription" }, "stage1Warning": "Stage 1 notice", "stage1WarningDescription": "The rule context is not wired up in the current version (Stage 1). Configuring eligibility will prevent users from joining the lottery. It is recommended to keep it empty." }, "status": { "draft": "Draft", "ended": "Ended", "paused": "Paused", "running": "Running" }, "statusAll": "All", "statusLabel": "Status", "title": "Title", "updateSuccess": "Update Success" }