1543 lines
88 KiB
JSON
1543 lines
88 KiB
JSON
{
|
||
"child.tap_to_undo": "Tap to undo",
|
||
"common.design.field_label": "Card design",
|
||
"common.design.use_global": "Use global default",
|
||
"common.design.classic": "Classic",
|
||
"common.design.playroom": "Playroom",
|
||
"common.design.console": "Console",
|
||
"common.design.cleanpro": "Clean Pro",
|
||
"panel.settings_card_design_label": "Default card design",
|
||
"panel.settings_card_design_hint": "The style new cards use unless overridden per card.",
|
||
"activity.a_chore": "a chore",
|
||
"activity.a_reward": "a reward",
|
||
"activity.awaiting_approval": "awaiting approval",
|
||
"activity.card_description": "Timeline of recent chore completions and reward claims",
|
||
"activity.card_name": "TaskMate Activity Feed",
|
||
"activity.claimed": "claimed",
|
||
"activity.completed": "completed",
|
||
"activity.completed_chores_will_appear": "Completed chores will appear here",
|
||
"activity.days_ago": "{count}d ago",
|
||
"activity.default_title": "Activity",
|
||
"activity.recent_events": "Recent events",
|
||
"activity.undo": "Undo",
|
||
"activity.undo_confirm_title": "Undo this action?",
|
||
"activity.undo_confirm_chore": "Undo the approval of “{detail}” for {child}? This removes {points} points and returns it to pending.",
|
||
"activity.undo_confirm_txn": "Undo “{detail}” for {child}? This reverses {points} points.",
|
||
"activity.undo_error_title": "TaskMate — undo failed",
|
||
"activity.undo_error_body": "Couldn't undo: {message}",
|
||
"activity.editor.accent_stripes_helper": "Show the 4px coloured stripe at the left of each row indicating event type",
|
||
"activity.editor.accent_stripes": "Coloured event stripes",
|
||
"activity.editor.filter_child_helper": "Only show activity for this child",
|
||
"activity.editor.max_items": "Max Items",
|
||
"activity.editor.max_items_helper": "Maximum number of events to show (default: 30)",
|
||
"activity.editor.show_relative_time_helper": "Show 'just now' / '5m ago' alongside the absolute time on each row",
|
||
"activity.editor.show_relative_time": "Relative time labels",
|
||
"activity.editor.show_filter_chips_helper": "Show the All / Chores / Rewards / Adjustments chip bar below the header",
|
||
"activity.editor.show_filter_chips": "Show filter chips",
|
||
"activity.editor.show_undo": "Show undo buttons",
|
||
"activity.editor.show_undo_helper": "Show the undo button on each row. Turn off for a kid-friendly dashboard so children can't reverse their own activity.",
|
||
"activity.events_count": "{count} events",
|
||
"activity.just_now": "just now",
|
||
"activity.hours_ago": "{count}h ago",
|
||
"activity.filter_rewards": "Rewards",
|
||
"activity.filter_chores": "Chores",
|
||
"activity.filter_aria_label": "Filter activity by type",
|
||
"activity.filter_all": "All",
|
||
"activity.filter_adjustments": "Adjustments",
|
||
"activity.feed_end": "— end of feed —",
|
||
"activity.lost": "lost",
|
||
"activity.minutes_ago": "{count}m ago",
|
||
"activity.no_activity_yet": "No activity yet",
|
||
"activity.no_events_for_filter": "No matching events",
|
||
"activity.points_manually": "points manually",
|
||
"activity.reason_allocated_to_pool": "Allocated to pool: {name}",
|
||
"activity.reason_bonus": "Bonus: {name}",
|
||
"activity.reason_penalty": "Penalty: {name}",
|
||
"activity.reason_perfect_week": "Perfect week bonus!",
|
||
"activity.reason_pool_refund_cost_reduced": "Pool refund (reward cost reduced): {name}",
|
||
"activity.reason_pool_refund_deleted": "Pool refund (reward deleted): {name}",
|
||
"activity.reason_pool_refund_expired": "Pool refund (reward expired): {name}",
|
||
"activity.reason_pool_refund_sold_out": "Pool refund (reward sold out): {name}",
|
||
"activity.reason_streak_milestone": "Streak milestone bonus ({days} day streak!)",
|
||
"activity.reason_weekend_bonus": "Weekend bonus (×{multiplier})",
|
||
"activity.received": "received",
|
||
"activity.redeemed": "redeemed",
|
||
"activity.spent": "spent",
|
||
"activity.try_different_filter": "Try a different filter",
|
||
"activity.unknown_child": "Unknown",
|
||
"approvals.all_caught_up": "All caught up!",
|
||
"approvals.approve": "Approve",
|
||
"approvals.approve_all": "Approve all",
|
||
"approvals.approve_all_confirm": "Approve {count} pending chores?",
|
||
"approvals.card_description": "A card to manage pending chore approvals for TaskMate",
|
||
"approvals.card_name": "TaskMate Approvals",
|
||
"approvals.default_title": "Pending Approvals",
|
||
"approvals.editor.child_id": "Child ID (optional)",
|
||
"approvals.editor.child_id_helper": "Filter approvals to a specific child",
|
||
"approvals.editor.child_id_placeholder": "Leave empty to show all children",
|
||
"approvals.editor.entity_helper": "The pending approvals sensor entity",
|
||
"approvals.error_failed_service": "Failed to {service}: {message}",
|
||
"approvals.error_title": "TaskMate Error",
|
||
"approvals.no_pending_approvals": "No pending approvals",
|
||
"approvals.please_define_entity": "Please define an entity (pending_approvals sensor)",
|
||
"approvals.reject": "Reject",
|
||
"approvals.reward_claims_section": "Reward claims",
|
||
"approvals.mandatory_section": "Mandatory — needs review",
|
||
"approvals.apply_penalty": "Apply penalty",
|
||
"approvals.postpone": "Postpone",
|
||
"approvals.dismiss": "Dismiss",
|
||
"approvals.penalty_points": "Penalty: −{points} pts",
|
||
"approvals.no_penalty": "No penalty set",
|
||
"approvals.timed_duration": "{count} min",
|
||
"badge.criteria_and": "AND",
|
||
"badge.criteria_or": "OR",
|
||
"badge.criteria_best_streak": "Best Streak",
|
||
"badge.criteria_current_streak": "Current Streak",
|
||
"badge.criteria_first_chore": "First Chore",
|
||
"badge.criteria_first_reward": "First Reward",
|
||
"badge.criteria_perfect_weeks": "Perfect Weeks",
|
||
"badge.criteria_total_chores": "Total Chores",
|
||
"badge.criteria_total_points": "Total Points",
|
||
"badge.criteria_total_rewards": "Total Rewards",
|
||
"badge.desc_1000_points": "Earn 1000 lifetime points",
|
||
"badge.desc_100_chores": "Complete 100 chores",
|
||
"badge.desc_100_points": "Earn 100 lifetime points",
|
||
"badge.desc_10_chores": "Complete 10 chores",
|
||
"badge.desc_10_perfect_weeks": "Achieve 10 perfect weeks",
|
||
"badge.desc_30_day_streak": "Complete chores 30 days in a row",
|
||
"badge.desc_3_day_streak": "Complete chores 3 days in a row",
|
||
"badge.desc_5000_points": "Earn 5000 lifetime points",
|
||
"badge.desc_500_points": "Earn 500 lifetime points",
|
||
"badge.desc_50_chores": "Complete 50 chores",
|
||
"badge.desc_5_perfect_weeks": "Achieve 5 perfect weeks",
|
||
"badge.desc_7_day_streak": "Complete chores 7 days in a row",
|
||
"badge.desc_first_chore": "Complete your very first chore",
|
||
"badge.desc_first_perfect_week": "Complete a perfect week",
|
||
"badge.desc_first_reward": "Claim your first reward",
|
||
"badge.earned_date": "Earned {date}",
|
||
"badge.manual_award_only": "Manual award only",
|
||
"badge.metric_best_streak": "Best streak",
|
||
"badge.metric_current_streak": "Current streak",
|
||
"badge.metric_first_chore": "First chore (bool)",
|
||
"badge.metric_first_reward": "First reward (bool)",
|
||
"badge.metric_perfect_weeks": "Perfect weeks",
|
||
"badge.metric_total_chores": "Total chores",
|
||
"badge.metric_total_points": "Total points",
|
||
"badge.metric_total_rewards": "Total rewards",
|
||
"badge.name_1000_points": "1000 Points",
|
||
"badge.name_100_chores": "100 Chores Completed",
|
||
"badge.name_100_points": "100 Points",
|
||
"badge.name_10_chores": "10 Chores Completed",
|
||
"badge.name_10_perfect_weeks": "10 Perfect Weeks",
|
||
"badge.name_30_day_streak": "30-Day Streak",
|
||
"badge.name_3_day_streak": "3-Day Streak",
|
||
"badge.name_5000_points": "5000 Points",
|
||
"badge.name_500_points": "500 Points",
|
||
"badge.name_50_chores": "50 Chores Completed",
|
||
"badge.name_5_perfect_weeks": "5 Perfect Weeks",
|
||
"badge.name_7_day_streak": "7-Day Streak",
|
||
"badge.name_first_chore": "First Chore",
|
||
"badge.name_first_perfect_week": "First Perfect Week",
|
||
"badge.name_first_reward": "First Reward",
|
||
"badge.source_auto": "AUTO",
|
||
"badge.source_manual": "MANUAL",
|
||
"badge.source_silent": "SILENT",
|
||
"badge.tier_bronze": "Bronze",
|
||
"badge.tier_gold": "Gold",
|
||
"badge.tier_platinum": "Platinum",
|
||
"badge.tier_silver": "Silver",
|
||
"badges.all_tiers": "All tiers",
|
||
"badges.count_label": "{earned} of {total} earned",
|
||
"badges.count_label_latest": "{earned} of {total} earned · Latest: {latest}",
|
||
"badges.default_title": "Badges",
|
||
"badges.editor_help": "Configure via YAML: set entity to your badges sensor (e.g. sensor.taskmate_badges_mia).",
|
||
"badges.entity_not_found": "{entity} not found",
|
||
"badges.label": "Badges",
|
||
"badges.title_with_name": "{name}'s Badges",
|
||
"bonuses.add_bonus": "Add Bonus",
|
||
"bonuses.applying_to": "Applying to {childName} — current balance: {points} {pointsName}",
|
||
"bonuses.btn_delete_title": "Delete",
|
||
"bonuses.btn_edit_title": "Edit",
|
||
"bonuses.card_description": "Apply point-awarding bonuses to children",
|
||
"bonuses.card_name": "TaskMate Bonuses",
|
||
"bonuses.default_title": "Bonuses",
|
||
"bonuses.editor.manage_note": "Add, edit, and delete bonus templates directly on the card itself — tap the pencil icon in the card header. This editor only controls the card's appearance.",
|
||
"bonuses.empty_sub": "Tap the pencil icon to add bonuses",
|
||
"bonuses.empty_title": "No bonuses yet",
|
||
"bonuses.form_description_label": "Description (optional)",
|
||
"bonuses.form_description_placeholder": "Short description",
|
||
"bonuses.form_icon_label": "Icon (MDI)",
|
||
"bonuses.form_name_label": "Name",
|
||
"bonuses.form_name_placeholder": "e.g. Tidied bedroom",
|
||
"bonuses.form_points_label": "Points",
|
||
"bonuses.manage_title": "Manage bonuses",
|
||
"bonuses.new_bonus": "New Bonus",
|
||
"bonuses.toast_add_failed": "Failed to add bonus",
|
||
"bonuses.toast_applied": "+{points} {pointsName} to {childName}",
|
||
"bonuses.toast_apply_failed": "Failed to apply bonus",
|
||
"bonuses.toast_delete_failed": "Failed to delete bonus",
|
||
"bonuses.toast_save_failed": "Failed to save changes",
|
||
"bonuses.toast_saved": "Bonus saved",
|
||
"calendar.card_description": "One-day view of chores assigned to each child",
|
||
"calendar.card_name": "TaskMate Calendar",
|
||
"calendar.child_summary": "{done} of {total} done",
|
||
"calendar.default_title": "Task Calendar",
|
||
"calendar.editor.child_helper": "Show the calendar for a specific child only",
|
||
"calendar.editor.title": "Title",
|
||
"calendar.error.entity_required": "Please define an entity",
|
||
"calendar.legend_due": "Due",
|
||
"calendar.next_day": "Next day",
|
||
"calendar.no_chores_today": "No chores for this day",
|
||
"calendar.prev_day": "Previous day",
|
||
"calendar.rotating": "Rotating assignment",
|
||
"child.afternoon_chores": "Afternoon Chores",
|
||
"child.all_done": "All Done!",
|
||
"child.bonus_label": "BONUS",
|
||
"child.bonus_tooltip": "Bonus: {name}",
|
||
"child.card_description": "A fun, kid-friendly card for children to complete their chores!",
|
||
"child.card_name": "TaskMate Child Card",
|
||
"child.celebration_message": "You did it! Keep up the great work!",
|
||
"child.celebration_title": "AWESOME!",
|
||
"child.on_vacation": "On a break — chores are paused 🌴",
|
||
"child.child_not_found": "Child not found: {child_id}",
|
||
"child.chore_locked_until": "Available at {time}",
|
||
"child.chore_locked_until_generic": "Available later",
|
||
"child.chores_reset_hours_mins": "Chores reset in {hours}h {mins}m",
|
||
"child.chores_reset_mins": "Chores reset in {mins}m",
|
||
"child.chores_resetting_soon": "Chores resetting soon!",
|
||
"child.click_to_complete": "Click to complete",
|
||
"child.click_to_undo": "Click to undo",
|
||
"child.difficulty_easy": "Easy",
|
||
"child.difficulty_medium": "Medium",
|
||
"child.difficulty_hard": "Hard",
|
||
"child.mandatory": "Mandatory",
|
||
"child.swap_section_title": "Take over a chore",
|
||
"child.swap_request": "Request",
|
||
"child.swap_requested": "Requested",
|
||
"child.photo_needed": "Photo needed",
|
||
"child.photo_required_title": "Add a photo",
|
||
"child.photo_take": "Take a photo",
|
||
"child.photo_hint": "Show your finished chore",
|
||
"child.photo_retake": "Retake",
|
||
"child.photo_confirm": "Confirm",
|
||
"child.photo_uploading": "Uploading photo…",
|
||
"child.photo_cancel": "Cancel",
|
||
"child.photo_not_image": "That file isn't an image. Please try again.",
|
||
"child.photo_process_failed": "Couldn't read that photo. Please try again.",
|
||
"child.photo_upload_failed": "Upload failed. Check your connection and try again.",
|
||
"child.done": "Done",
|
||
"child.editor.child": "Child",
|
||
"child.editor.child_helper": "Which child is this card for?",
|
||
"child.editor.chores_not_due_today": "Chores Not Due Today",
|
||
"child.editor.due_days_dim": "Dim — show greyed out, non-interactive",
|
||
"child.editor.due_days_helper": "Applies to chores with due_days set when today isn't scheduled",
|
||
"child.editor.due_days_hide": "Hide — don't show",
|
||
"child.editor.due_days_show": "Show — show normally regardless",
|
||
"child.editor.elapsed_dim": "Dim — show greyed out, non-interactive",
|
||
"child.editor.elapsed_helper": "What to show when a morning/afternoon/evening/night chore wasn't completed and that time has passed",
|
||
"child.editor.elapsed_hide": "Hide — don't show",
|
||
"child.editor.elapsed_show": "Show — show normally regardless",
|
||
"child.editor.missed_time_chores": "Missed Time-of-Day Chores",
|
||
"child.editor.recurrence_dim": "Dim — show greyed out, non-interactive",
|
||
"child.editor.recurrence_helper": "What to show when a recurring chore has been completed and the window hasn't reset yet",
|
||
"child.editor.recurrence_hide": "Hide — don't show until available again",
|
||
"child.editor.recurrence_show": "Show — show normally regardless",
|
||
"child.editor.recurring_when_completed": "Recurring Chores — When Completed",
|
||
"child.editor.select_child": "Select a child...",
|
||
"child.editor.show_countdown": "Show reset countdown beside \"Today's Chores\"",
|
||
"child.editor.show_debug": "Show debug panel",
|
||
"child.editor.show_description": "Show chore description",
|
||
"child.editor.time_category": "Time Category",
|
||
"child.editor.time_category_afternoon": "Afternoon Chores",
|
||
"child.editor.time_category_all": "Today's Chores (All)",
|
||
"child.editor.time_category_anytime": "Today's Chores (Anytime)",
|
||
"child.editor.time_category_evening": "Evening Chores",
|
||
"child.editor.time_category_helper": "Which time of day to show chores for — also sets the card title",
|
||
"child.editor.time_category_morning": "Morning Chores",
|
||
"child.editor.time_category_night": "Night Chores",
|
||
"child.error_complete": "Something went wrong: {message}",
|
||
"child.error_title": "Oops!",
|
||
"child.error_undo": "Couldn't undo: {message}",
|
||
"child.undo_not_allowed": "Only a parent can undo a completed chore.",
|
||
"child.evening_chores": "Evening Chores",
|
||
"child.morning_chores": "Morning Chores",
|
||
"child.night_chores": "Night Chores",
|
||
"child.no_chores_right_now": "No chores right now. Great job!",
|
||
"child.not_scheduled_for_today": "Not scheduled for today",
|
||
"child.pause": "Pause",
|
||
"child.paused": "Paused",
|
||
"child.please_define_child_id": "Please define a child_id",
|
||
"child.please_define_entity": "Please define an entity (taskmate overview sensor)",
|
||
"child.pts_per_min": "pts/min",
|
||
"child.pts_per_n_min": "pts/{count} min",
|
||
"child.recurring": "Recurring",
|
||
"child.resume": "Resume",
|
||
"child.start": "Start",
|
||
"child.time_has_passed": "Time has passed for this chore",
|
||
"child.timed_cap_label": "{used} / {max} min",
|
||
"child.todays_chores": "Today's Chores",
|
||
"common.afternoon": "Afternoon",
|
||
"common.all": "All",
|
||
"common.all_children": "All Children",
|
||
"common.anytime": "Anytime",
|
||
"common.apply": "Apply",
|
||
"common.approve": "Approve",
|
||
"common.approved": "Approved",
|
||
"common.cancel": "Cancel",
|
||
"common.close": "Close",
|
||
"common.chores": "Chores",
|
||
"common.complete_on_behalf": "Complete",
|
||
"common.complete_on_behalf_all_done": "All chores done today",
|
||
"common.complete_on_behalf_heading": "Outstanding today",
|
||
"common.complete_on_behalf_tooltip": "Complete for {name}",
|
||
"common.d_streak": "{count}d streak",
|
||
"common.day_streak": "day streak",
|
||
"common.default": "Default",
|
||
"common.editor.card_title": "Card Title",
|
||
"common.editor.filter_by_child": "Filter by Child (optional)",
|
||
"common.editor.filter_by_child_all": "All Children",
|
||
"common.editor.header_colour": "Header Colour",
|
||
"common.editor.header_colour_helper": "Card header background colour",
|
||
"common.editor.overview_entity": "Overview Entity",
|
||
"common.editor.overview_entity_helper": "The TaskMate overview sensor entity",
|
||
"common.entity": "Entity",
|
||
"common.entity_not_found": "Entity not found: {entity}",
|
||
"common.error": "Error",
|
||
"common.evening": "Evening",
|
||
"common.goal": "Goal",
|
||
"common.morning": "Morning",
|
||
"common.night": "Night",
|
||
"common.no_children": "No children found",
|
||
"common.no_chores_today": "No chores today",
|
||
"common.pending": "Pending",
|
||
"common.please_define_entity": "Please define an entity",
|
||
"common.points": "Points",
|
||
"common.reject": "Reject",
|
||
"common.rejected": "Rejected",
|
||
"common.reset": "Reset",
|
||
"common.save": "Save",
|
||
"common.stars": "Stars",
|
||
"common.this_week": "this week",
|
||
"common.title": "Title",
|
||
"common.today": "Today",
|
||
"common.total": "total",
|
||
"common.unavailable": "TaskMate is unavailable",
|
||
"common.unknown": "Unknown",
|
||
"common.yesterday": "Yesterday",
|
||
"dashboard.btn_add_points_title": "Add {amount} {pointsName}",
|
||
"dashboard.btn_remove_points_title": "Remove {amount} {pointsName}",
|
||
"dashboard.card_description": "Unified parent view with approvals, child progress, and quick point controls",
|
||
"dashboard.card_name": "TaskMate Parent Dashboard",
|
||
"dashboard.default_title": "Parent Dashboard",
|
||
"dashboard.editor.entity_helper": "The TaskMate overview sensor",
|
||
"dashboard.editor.entity_label": "Overview Entity",
|
||
"dashboard.editor.header_colour_helper": "Card header background colour",
|
||
"dashboard.editor.header_colour_label": "Header Colour",
|
||
"dashboard.editor.quick_points_helper": "How many points the +/- buttons add or remove",
|
||
"dashboard.editor.quick_points_label": "Quick Points Amount",
|
||
"dashboard.editor.show_claims": "Show Reward Claims tab",
|
||
"dashboard.editor.title_label": "Card Title",
|
||
"dashboard.empty_approvals": "All caught up! No pending approvals.",
|
||
"dashboard.empty_claims": "No pending reward claims.",
|
||
"dashboard.empty_no_children": "No children found",
|
||
"dashboard.empty_rotation": "No rotating chores configured",
|
||
"dashboard.paused_tag": "PAUSED",
|
||
"dashboard.rotation_skip_confirm": "Skip today's assignee for this chore?",
|
||
"dashboard.rotation_skip_hint": "Skip current child and move to the next in rotation (today only)",
|
||
"dashboard.rotation_unassigned": "Nobody",
|
||
"dashboard.tab_approvals": "Approvals",
|
||
"dashboard.tab_claims": "Claims",
|
||
"dashboard.tab_overview": "Overview",
|
||
"dashboard.chores_done": "{done} / {total} chores done",
|
||
"dashboard.tab_points": "Points",
|
||
"dashboard.tab_rotation": "Rotation",
|
||
"graph.all_children": "All Children",
|
||
"graph.card_description": "Line graph tracking daily or cumulative points over time",
|
||
"graph.card_name": "TaskMate Points Graph",
|
||
"graph.career_growth": "Career",
|
||
"graph.daily": "Daily",
|
||
"graph.default_title": "Points Graph",
|
||
"graph.editor.child_filter_helper": "Show one child's line or all children together",
|
||
"graph.editor.days_helper": "Number of days to display (3–90)",
|
||
"graph.editor.days_to_show": "Days to show",
|
||
"graph.graph_error": "Graph error: {message}",
|
||
"graph.no_data_submessage": "Complete and approve chores to see the graph",
|
||
"graph.no_data_yet": "No data yet",
|
||
"graph.total": "Total",
|
||
"leaderboard.best_streak": "Best streak",
|
||
"leaderboard.best_streak_value": "{count} days",
|
||
"leaderboard.card_description": "Multi-child competitive ranking by points, streak, or weekly activity",
|
||
"leaderboard.card_name": "TaskMate Leaderboard",
|
||
"leaderboard.career_label": "career",
|
||
"leaderboard.career_score": "Career Score",
|
||
"leaderboard.default_title": "Leaderboard",
|
||
"leaderboard.editor.entity_helper": "The TaskMate overview sensor",
|
||
"leaderboard.editor.entity_label": "Overview Entity",
|
||
"leaderboard.editor.header_colour_helper": "Card header background colour",
|
||
"leaderboard.editor.header_colour_label": "Header Colour",
|
||
"leaderboard.editor.rank_by_helper": "What to rank children by",
|
||
"leaderboard.editor.rank_by_label": "Rank by",
|
||
"leaderboard.editor.show_career": "Show career score in sub-stats",
|
||
"leaderboard.editor.show_streak": "Show streak in sub-stats",
|
||
"leaderboard.editor.show_weekly": "Show weekly points in sub-stats",
|
||
"leaderboard.editor.sort_option_career": "Career Score",
|
||
"leaderboard.editor.sort_option_points": "All-time Points",
|
||
"leaderboard.editor.sort_option_streak": "Current Streak",
|
||
"leaderboard.editor.sort_option_weekly": "This Week's Points",
|
||
"leaderboard.editor.title_label": "Card Title",
|
||
"leaderboard.ordinal_4": "4th",
|
||
"leaderboard.ordinal_5": "5th",
|
||
"leaderboard.personal_bests": "Personal Bests",
|
||
"leaderboard.points_this_week": "Points this week",
|
||
"leaderboard.ranked_by": "Ranked by {period}",
|
||
"leaderboard.sort_all_time_points": "All-time Points",
|
||
"leaderboard.sort_career_score": "Career Score",
|
||
"leaderboard.sort_current_streak": "Current Streak",
|
||
"leaderboard.sort_this_week": "This Week",
|
||
"leaderboard.tie": "TIE",
|
||
"leaderboard.total_chores_completed": "Total chores completed",
|
||
"leaderboard.total_points_earned": "Total points earned",
|
||
"overview.card_description": "At-a-glance parent dashboard for all children",
|
||
"overview.card_name": "TaskMate Overview",
|
||
"overview.default_title": "TaskMate",
|
||
"overview.designed.action_required": "ACTION REQUIRED ●",
|
||
"overview.designed.approvals_waiting": "{count} approvals waiting",
|
||
"overview.designed.daily_completion": "DAILY COMPLETION",
|
||
"overview.designed.pending_review": "{count} PENDING REVIEW",
|
||
"overview.designed.progress_detail": "{done} / {total} chores · {pct}%",
|
||
"overview.designed.review": "Review",
|
||
"overview.designed.sub_cleanpro": "Updated just now",
|
||
"overview.designed.sub_console": "FAMILY · LIVE FEED",
|
||
"overview.designed.sub_playroom": "Look how busy we are!",
|
||
"overview.designed.tap_to_check": "Tap Approvals to check them off",
|
||
"overview.designed.todays_progress": "Today's progress",
|
||
"overview.designed.waiting_for_you": "{count} waiting for you",
|
||
"overview.editor.approvals_entity_helper": "sensor.pending_approvals — for accurate pending count",
|
||
"overview.editor.approvals_entity_label": "Approvals Entity (optional)",
|
||
"overview.editor.entity_helper": "The TaskMate overview sensor entity",
|
||
"overview.editor.entity_label": "Overview Entity",
|
||
"overview.editor.header_colour_helper": "Card header background colour",
|
||
"overview.editor.header_colour_label": "Header Colour",
|
||
"overview.editor.title_label": "Title",
|
||
"overview.footer_children": "Children",
|
||
"overview.footer_done_today": "Done Today",
|
||
"overview.footer_total_points": "Total {pointsName}",
|
||
"overview.pending_count": "{count} pending",
|
||
"panel.activity_approve": "Approve",
|
||
"panel.activity_approve_all": "Approve all",
|
||
"panel.activity_approve_all_confirm": "Approve {count} pending chores?",
|
||
"panel.activity_approve_all_done": "Approved {count} chores",
|
||
"panel.activity_audit_log": "Audit log",
|
||
"panel.audit_action": "Action",
|
||
"panel.audit_clear": "Clear log",
|
||
"panel.audit_clear_confirm": "Clear the entire audit log? This cannot be undone.",
|
||
"panel.audit_cleared": "Audit log cleared",
|
||
"panel.audit_empty": "No admin actions recorded yet.",
|
||
"panel.audit_hint": "Recent admin changes — who changed what, and when.",
|
||
"panel.audit_target": "Target",
|
||
"panel.audit_user": "User",
|
||
"panel.audit_when": "When",
|
||
"panel.activity_claimed_reward": "Claimed: {name}",
|
||
"panel.activity_claimed_text": "{child} claimed reward {reward}",
|
||
"panel.activity_completed_chore": "Completed: {name}",
|
||
"panel.activity_completed_text": "{child} completed {chore}",
|
||
"panel.activity_deleted_chore": "(deleted chore)",
|
||
"panel.activity_deleted_reward": "(deleted reward)",
|
||
"panel.activity_manual_addition": "Manual addition",
|
||
"panel.activity_manual_deduction": "Manual deduction",
|
||
"panel.activity_no_items": "No items waiting for review.",
|
||
"panel.activity_no_points_transactions": "No points transactions yet.",
|
||
"panel.activity_no_recent": "Nothing here yet — activity will appear as chores are completed and rewards claimed.",
|
||
"panel.activity_pending_all_clear": "All clear",
|
||
"panel.activity_pending_approvals": "Pending approvals",
|
||
"panel.activity_points": "points",
|
||
"panel.activity_recent": "Recent activity",
|
||
"panel.activity_reject": "Reject",
|
||
"panel.activity_table_child": "Child",
|
||
"panel.activity_table_points": "Points",
|
||
"panel.activity_table_reason": "Reason",
|
||
"panel.activity_undo": "Undo",
|
||
"panel.activity_undo_confirm": "Reverse this penalty/bonus? The points change will be undone.",
|
||
"panel.activity_undone": "Transaction undone",
|
||
"panel.activity_table_when": "When",
|
||
"panel.activity_title": "Activity",
|
||
"panel.activity_transaction_count": "{count} transaction",
|
||
"panel.activity_transaction_count_plural": "{count} transactions",
|
||
"panel.assign_alternating": "Alternating — rotate through children, one per day",
|
||
"panel.assign_alternating_short": "Alternating",
|
||
"panel.assign_balanced": "Balanced — split today's chores evenly across children",
|
||
"panel.assign_balanced_short": "Balanced",
|
||
"panel.assign_first_come": "First come — first child to finish wins; it hides for the rest",
|
||
"panel.assign_first_come_short": "First come",
|
||
"panel.assign_everyone": "Everyone — every assigned child sees the chore",
|
||
"panel.assign_random": "Random — pick one assigned child each day",
|
||
"panel.assign_random_short": "Random",
|
||
"panel.assign_unassigned": "Unassigned — no child sees this chore",
|
||
"panel.assign_unassigned_short": "Unassigned",
|
||
"panel.backup_export": "Export backup",
|
||
"panel.backup_exported": "Backup downloaded",
|
||
"panel.backup_hint": "Download a full backup of your TaskMate setup, or restore from one. Restore replaces everything — reload the integration afterwards so per-child entities refresh.",
|
||
"panel.backup_import": "Restore backup",
|
||
"panel.backup_import_bad_file": "That file isn't a valid TaskMate backup.",
|
||
"panel.backup_import_confirm": "Restore this backup? It REPLACES all current TaskMate data. This cannot be undone.",
|
||
"panel.backup_imported": "Backup restored — reload the integration to refresh entities.",
|
||
"panel.backup_title": "Backup & restore",
|
||
"panel.badge_add_btn": "+ Add custom badge",
|
||
"panel.badge_add_criterion_btn": "+ Add criterion",
|
||
"panel.badge_combinator_all": "Require all (AND)",
|
||
"panel.badge_combinator_any": "Require any (OR)",
|
||
"panel.badge_combinator_label": "When the badge has several criteria:",
|
||
"panel.badge_assigned_hint": "Leave all unselected for all children",
|
||
"panel.badge_assigned_label": "Assigned to",
|
||
"panel.badge_award_btn": "Award",
|
||
"panel.badge_award_select_child": "— Select child —",
|
||
"panel.badge_award_to_label": "Award to",
|
||
"panel.badge_bonus_label": "Point Bonus",
|
||
"panel.badge_builtin_hint": "Built-in — only point bonus, tier, assigned to, and notify can be changed",
|
||
"panel.badge_builtin_pill": "Built-in",
|
||
"panel.badge_cancel_btn": "Cancel",
|
||
"panel.badge_confirm_delete": "Delete badge \"{name}\"? This cannot be undone.",
|
||
"panel.badge_confirm_rebuild": "Run a silent retroactive badge sweep across all children? No notifications or point bonuses will be sent.",
|
||
"panel.badge_confirm_revoke": "Revoke badge \"{name}\"? Any point bonus will be reversed.",
|
||
"panel.badge_criteria_label": "Criteria — Award when ALL are true",
|
||
"panel.badge_delete_btn": "Delete",
|
||
"panel.badge_description_label": "Description",
|
||
"panel.badge_dialog_add_title": "Add Custom Badge",
|
||
"panel.badge_dialog_award_title": "Award \"{name}\"",
|
||
"panel.badge_dialog_edit_title": "Edit Badge — {name}",
|
||
"panel.badge_edit_btn": "Edit",
|
||
"panel.badge_empty_catalogue": "No built-in badges found.",
|
||
"panel.badge_empty_custom_desc": "Create your own badges with custom criteria or for manual awarding.",
|
||
"panel.badge_empty_custom_title": "No custom badges yet",
|
||
"panel.badge_empty_history": "No badges have been awarded yet.",
|
||
"panel.badge_icon_label": "Icon",
|
||
"panel.badge_name_label": "Name",
|
||
"panel.badge_no_criteria_hint": "No criteria — this badge will be manual-award only.",
|
||
"panel.badge_notify_label": "Notify on Earn",
|
||
"panel.badge_notify_no": "No",
|
||
"panel.badge_notify_yes": "Yes",
|
||
"panel.badge_rebuild_btn": "Rebuild Badges",
|
||
"panel.badge_rebuild_tooltip": "Re-evaluate all badges silently (no notifications)",
|
||
"panel.badge_remove_criterion_btn": "Remove",
|
||
"panel.badge_revoke_btn": "Revoke",
|
||
"panel.badge_save_btn": "Save badge",
|
||
"panel.badge_subtab_catalogue": "Catalogue ({count})",
|
||
"panel.badge_subtab_custom": "Custom ({count})",
|
||
"panel.badge_subtab_history": "History",
|
||
"panel.badge_tab_title": "Badges",
|
||
"panel.badge_table_badge": "Badge",
|
||
"panel.badge_table_bonus": "Bonus",
|
||
"panel.badge_table_child": "Child",
|
||
"panel.badge_table_criteria": "Criteria",
|
||
"panel.badge_table_enabled": "Enabled",
|
||
"panel.badge_table_source": "Source",
|
||
"panel.badge_table_tier": "Tier",
|
||
"panel.badge_table_when": "When",
|
||
"panel.badge_tier_label": "Tier",
|
||
"panel.badge_toggle_disable": "Disable",
|
||
"panel.badge_toggle_enable": "Enable",
|
||
"panel.bonus_apply_text": "Choose which child to award this bonus to (will add {points} points).",
|
||
"panel.bonus_empty_description": "Add a bonus to award points for going above and beyond.",
|
||
"panel.bonus_empty_title": "No bonuses yet",
|
||
"panel.bonus_points_label": "Points to award",
|
||
"panel.bonus_title": "Bonuses",
|
||
"panel.btn_activate_chore": "Activate chore",
|
||
"panel.btn_add_bonus": "+ Add bonus",
|
||
"panel.btn_add_bonus_subtask": "+ Add bonus sub-task",
|
||
"panel.btn_add_child": "+ Add child",
|
||
"panel.btn_add_chore": "+ Add chore",
|
||
"panel.btn_add_chore_template": "+ Add chore",
|
||
"panel.btn_add_group": "+ Add group",
|
||
"panel.btn_add_penalty": "+ Add penalty",
|
||
"panel.btn_add_reward": "+ Add reward",
|
||
"panel.btn_apply": "Apply…",
|
||
"panel.btn_back": "← Back",
|
||
"panel.btn_bulk_add": "Bulk add",
|
||
"panel.btn_cancel": "Cancel",
|
||
"panel.btn_close": "Close",
|
||
"panel.btn_create_chores": "Create chores",
|
||
"panel.btn_create_template": "Create Template",
|
||
"panel.btn_create_template_toolbar": "+ Create template",
|
||
"panel.btn_deactivate_chore": "Deactivate chore",
|
||
"panel.btn_delete": "Delete",
|
||
"panel.btn_edit": "Edit",
|
||
"panel.btn_clone_chore": "Duplicate",
|
||
"panel.btn_from_template": "From template",
|
||
"panel.btn_reorder_chores": "Reorder",
|
||
"panel.btn_retry": "Retry",
|
||
"panel.btn_review": "Review",
|
||
"panel.btn_save": "Save",
|
||
"panel.btn_save_as_template": "Save as template",
|
||
"panel.btn_save_changes": "Save Changes",
|
||
"panel.btn_save_order": "Save order",
|
||
"panel.btn_save_settings": "Save settings",
|
||
"panel.btn_save_template": "Save template",
|
||
"panel.btn_skip_chore": "Skip rotation (advance to next child)",
|
||
"panel.bulk_assigned_to": "Assigned to",
|
||
"panel.bulk_chore_names_hint": "All chores will share the settings below.",
|
||
"panel.bulk_chore_names_label": "Chore names (one per line, or comma-separated)",
|
||
"panel.bulk_chore_names_placeholder": "Make bed\nEmpty dishwasher\nFeed dog",
|
||
"panel.bulk_days_label": "Days of week (empty = every day)",
|
||
"panel.bulk_leave_empty_hint": "Leave empty to assign to all children.",
|
||
"panel.bulk_points_label": "Points (each)",
|
||
"panel.bulk_title": "Bulk add chores",
|
||
"panel.child_add_tile": "Add child",
|
||
"panel.child_availability_hint": "States <code>on</code>, <code>home</code>, <code>available</code>, <code>present</code>, <code>true</code> mean available. Leave blank to treat as always available.",
|
||
"panel.child_availability_label": "Availability sensor (optional)",
|
||
"panel.child_avatar_label": "Avatar",
|
||
"panel.child_busy_label": "Busy:",
|
||
"panel.child_invert_hint": "Turn on for calendar or schedule sensors where an active state means the child is busy.",
|
||
"panel.child_invert_label": "Invert logic (ON = unavailable)",
|
||
"panel.child_inverted": "(inverted)",
|
||
"panel.child_link_user_label": "Link to Home Assistant user (optional)",
|
||
"panel.child_link_user_hint": "When set, only this Home Assistant user (or an admin) can complete chores, claim rewards, or run timers as this child via service calls. Leave as \"Anyone\" for a shared family tablet.",
|
||
"panel.child_link_user_none": "Anyone (shared / kiosk)",
|
||
"panel.child_name_label": "Name",
|
||
"panel.child_name_placeholder": "e.g. Malia",
|
||
"panel.child_no_availability": "No availability sensor",
|
||
"panel.child_stat_done": "Done",
|
||
"panel.child_stat_earned": "Earned",
|
||
"panel.child_title": "Children",
|
||
"panel.child_unavailability_hint": "A second sensor where <code>on</code>/<code>active</code> means the child is busy. Useful for school calendars. The child is available only when the availability sensor says available AND this sensor does not say busy.",
|
||
"panel.child_unavailability_label": "Unavailability sensor (optional)",
|
||
"panel.child_pause_streak_label": "Pause streak while away",
|
||
"panel.child_pause_streak_hint": "When this child's availability or unavailability sensor (which can be a <code>calendar.*</code> entity) reports them away, freeze their streak and hide their chores until they're back.",
|
||
"panel.child_unnamed": "(unnamed)",
|
||
"panel.chore_advanced_bonus_subtasks": "Bonus sub-tasks (optional)",
|
||
"panel.chore_advanced_bonus_subtasks_hint": "Optional extra-credit tasks that unlock after the main chore is completed.",
|
||
"panel.chore_advanced_visibility": "Advanced — visibility & calendar publishing",
|
||
"panel.chore_approval_label": "Requires parent approval",
|
||
"panel.chore_assign_hint": "Leave empty to assign to <strong>all children</strong>.",
|
||
"panel.chore_assign_label": "Assigned to",
|
||
"panel.chore_assign_no_children": "Add some children first to assign chores to them.",
|
||
"panel.chore_assignment_mode_hint": "Everyone = all assigned children see it. Alternating = rotate one per day. Random = pick one daily. Balanced = split evenly across the day.",
|
||
"panel.chore_assignment_mode_label": "Assignment mode",
|
||
"panel.chore_calendar_hint": "Today's assignment will be added as a calendar event on each selected calendar.",
|
||
"panel.chore_calendar_label": "Publish to calendars (optional)",
|
||
"panel.chore_calendar_no_entities": "No calendar entities found in Home Assistant. Set one up first.",
|
||
"panel.chore_claim_allowance_hint": "Extra minutes after the time-of-day window ends during which the chore stays claimable. 0 = no grace. Night chores still cap at midnight.",
|
||
"panel.chore_claim_allowance_label": "Claim allowance (minutes)",
|
||
"panel.chore_completion_sound_label": "Completion sound",
|
||
"panel.chore_difficulty_label": "Difficulty",
|
||
"panel.difficulty_easy": "Easy",
|
||
"panel.difficulty_hard": "Hard",
|
||
"panel.difficulty_medium": "Medium",
|
||
"panel.chore_daily_cap_label": "Daily cap (minutes, 0 = unlimited)",
|
||
"panel.chore_daily_limit_label": "Daily limit",
|
||
"panel.chore_days_label": "Days of week (leave empty = every day)",
|
||
"panel.chore_description_label": "Description (optional)",
|
||
"panel.chore_enabled_label": "Enabled",
|
||
"panel.chore_first_occurrence_label": "First occurrence",
|
||
"panel.chore_group_hint": "Member of task group: {name} ({policy}). Manage membership on the Groups tab.",
|
||
"panel.chore_name_label": "Name",
|
||
"panel.chore_order_title": "Chore Order",
|
||
"panel.chore_points_label": "Points",
|
||
"panel.chore_points_per_window_label": "Points per window",
|
||
"panel.chore_recurrence_day_hint": "e.g. monday — leave blank for any day",
|
||
"panel.chore_recurrence_day_label": "Day of week (weekly only)",
|
||
"panel.chore_recurrence_label": "Recurrence",
|
||
"panel.chore_recurrence_start_hint": "Anchor date — blank = today",
|
||
"panel.chore_recurrence_start_label": "Start date (every-2-days only)",
|
||
"panel.chore_require_availability": "Skip unavailable children",
|
||
"panel.chore_require_availability_hint": "Uses each child's availability sensor (set on their profile).",
|
||
"panel.chore_mandatory_label": "Mandatory chore",
|
||
"panel.chore_mandatory_hint": "If not done before its time period ends, the parent reviews it (apply penalty, postpone, or dismiss).",
|
||
"panel.chore_mandatory_penalty_label": "Penalty points if missed",
|
||
"panel.chore_mandatory_penalty_hint": "Points the parent can deduct if the chore is missed. 0 = no penalty option.",
|
||
"panel.chore_rotation_hint": "Alternating mode: permanently reorders the pool. Random/Balanced: only overrides today; tomorrow resumes normally.",
|
||
"panel.chore_rotation_label": "Start rotation with (optional)",
|
||
"panel.chore_rotation_no_override": "(no override)",
|
||
"panel.chore_schedule_mode_label": "Schedule mode",
|
||
"panel.chore_subtask_name_placeholder": "Sub-task name",
|
||
"panel.chore_subtask_points_placeholder": "Pts",
|
||
"panel.chore_table_approval": "Approval",
|
||
"panel.chore_table_assigned": "Assigned",
|
||
"panel.chore_table_current": "Current",
|
||
"panel.chore_table_name": "Name",
|
||
"panel.chore_table_period": "Period",
|
||
"panel.chore_table_points": "Points",
|
||
"panel.chore_table_schedule": "Schedule",
|
||
"panel.chore_task_type_label": "Task type",
|
||
"panel.chore_task_type_standard": "Standard — fixed points on completion",
|
||
"panel.chore_task_type_timed": "Timed — points per minute",
|
||
"panel.chore_time_category_label": "Time category",
|
||
"panel.chore_tip_rename": "Tip: double-click a chore name to rename it inline.",
|
||
"panel.chore_title": "Chores",
|
||
"panel.chore_vis_entity_hint": "Chore only shows when its state matches the rule below. Leave blank for always-show.",
|
||
"panel.chore_vis_entity_label": "Visibility entity (optional)",
|
||
"panel.chore_vis_operator_label": "Visibility operator",
|
||
"panel.chore_vis_value_hint": "e.g. \"on\", \"home\", \"30\"",
|
||
"panel.chore_vis_value_label": "Visibility value",
|
||
"panel.chore_window_minutes_label": "Window (minutes)",
|
||
"panel.common_all_children": "All children",
|
||
"panel.common_daily": "Daily",
|
||
"panel.common_disabled": "disabled",
|
||
"panel.common_name": "Name",
|
||
"panel.common_no": "No",
|
||
"panel.common_one_shot": "One-shot",
|
||
"panel.common_points": "Points",
|
||
"panel.common_yes": "Yes",
|
||
"panel.confirm_delete_bonus_extra": "",
|
||
"panel.confirm_delete_child_extra": "This also removes all of their completion history, reward claims, points transactions, and pool allocations. Chores assigned to them will be updated.",
|
||
"panel.confirm_delete_chore_extra": "This also removes the chore from any task groups it belonged to.",
|
||
"panel.confirm_delete_prompt": "Delete {kind} \"{name}\"?",
|
||
"panel.confirm_delete_reward_extra": "Any points children have pooled for this reward will be refunded to their balance.",
|
||
"panel.confirm_delete_suffix": "This cannot be undone.",
|
||
"panel.confirm_delete_template": "Delete template \"{name}\"? This cannot be undone.",
|
||
"panel.confirm_unsaved": "You have unsaved changes — discard them?",
|
||
"panel.day_fri": "Fri",
|
||
"panel.day_mon": "Mon",
|
||
"panel.day_sat": "Sat",
|
||
"panel.day_sun": "Sun",
|
||
"panel.day_thu": "Thu",
|
||
"panel.day_tue": "Tue",
|
||
"panel.day_wed": "Wed",
|
||
"panel.dialog_add_bonus": "Add bonus",
|
||
"panel.dialog_add_child": "Add child",
|
||
"panel.dialog_add_chore": "Add chore",
|
||
"panel.dialog_add_group": "Add task group",
|
||
"panel.dialog_add_penalty": "Add penalty",
|
||
"panel.dialog_add_reward": "Add reward",
|
||
"panel.dialog_apply_bonus": "Apply bonus: {name}",
|
||
"panel.dialog_apply_penalty": "Apply penalty: {name}",
|
||
"panel.dialog_edit_bonus": "Edit bonus",
|
||
"panel.dialog_edit_child": "Edit child",
|
||
"panel.dialog_edit_chore": "Edit chore",
|
||
"panel.dialog_edit_group": "Edit task group",
|
||
"panel.dialog_edit_penalty": "Edit penalty",
|
||
"panel.dialog_edit_reward": "Edit reward",
|
||
"panel.empty_children_copy": "Add your first child to get started.",
|
||
"panel.empty_children_title": "No children yet",
|
||
"panel.empty_chores_copy": "Add a chore — it'll show on the assigned children's cards.",
|
||
"panel.empty_chores_title": "No chores yet",
|
||
"panel.empty_groups_copy": "Create a group to make chores rotate together (e.g. all kitchen chores stay with one child each day).",
|
||
"panel.empty_groups_title": "No task groups yet",
|
||
"panel.empty_no_match": "No {kind} match \"{filter}\".",
|
||
"panel.empty_rewards_copy": "Add a reward children can spend their {points_name} on.",
|
||
"panel.empty_rewards_title": "No rewards yet",
|
||
"panel.empty_template_all_removed": "All chores removed — go back and pick a different template.",
|
||
"panel.entity_bonus": "Bonus",
|
||
"panel.entity_child": "Child",
|
||
"panel.entity_chore": "Chore",
|
||
"panel.entity_group": "Group",
|
||
"panel.entity_penalty": "Penalty",
|
||
"panel.entity_reward": "Reward",
|
||
"panel.entity_search_placeholder": "Search | Add custom item",
|
||
"panel.error_failed_to_load": "Failed to load state",
|
||
"panel.error_no_state": "No state yet.",
|
||
"panel.first_occ_available_immediately": "Available immediately",
|
||
"panel.first_occ_wait": "Wait for first scheduled occurrence",
|
||
"panel.group_add_tile": "Add group",
|
||
"panel.group_chore_count": "{count} chore(s)",
|
||
"panel.group_chores_label": "Member chores (order matters for sticky — first is the leader)",
|
||
"panel.group_missing_chore": "(missing chore {id})",
|
||
"panel.group_no_rotation_chores": "Only rotation-mode chores (alternating / random / balanced) can join a group. Edit a chore's assignment mode first.",
|
||
"panel.group_policy_hint": "Sticky = same child for all chores in the group today. Spread = different children today.",
|
||
"panel.group_policy_label": "Policy",
|
||
"panel.group_policy_spread": "Spread — different children across the group today",
|
||
"panel.group_policy_spread_short": "Spread",
|
||
"panel.group_policy_sticky": "Sticky — same child for all chores in the group today",
|
||
"panel.group_policy_sticky_short": "Sticky",
|
||
"panel.group_title": "Task groups",
|
||
"panel.loading": "Loading…",
|
||
"panel.nav_manage": "Manage",
|
||
"panel.nav_system": "System",
|
||
"panel.nav_today": "Today",
|
||
"panel.parent_complete_confirm": "Mark this chore as completed by parent? No points will be awarded.",
|
||
"panel.parent_complete_failed": "Failed: {error}",
|
||
"panel.parent_complete_success": "Marked as parent completed",
|
||
"panel.parent_complete_tooltip": "Parent did it (no points)",
|
||
"panel.penalty_apply_text": "Choose which child to apply this penalty to (will deduct {points} points).",
|
||
"panel.penalty_empty_description": "Add a penalty to deduct points for misbehaviour.",
|
||
"panel.penalty_empty_title": "No penalties yet",
|
||
"panel.penalty_points_label": "Points to deduct",
|
||
"panel.penalty_title": "Penalties",
|
||
"panel.penbon_applies_to": "Applies to",
|
||
"panel.penbon_applies_to_hint": "Leave empty to apply to <strong>all children</strong>.",
|
||
"panel.penbon_description_label": "Description (optional)",
|
||
"panel.penbon_icon_label": "Icon",
|
||
"panel.penbon_name_label": "Name",
|
||
"panel.penbon_no_eligible": "No eligible children. Edit the {kind} to set who it applies to.",
|
||
"panel.penbon_points_award": "Points to award",
|
||
"panel.penbon_points_deduct": "Points to deduct",
|
||
"panel.penbon_table_assigned": "Assigned",
|
||
"panel.penbon_table_name": "Name",
|
||
"panel.penbon_table_points": "Points",
|
||
"panel.pending_tooltip": "{count} pending — click to review",
|
||
"panel.pts_display": "{count} pts",
|
||
"panel.recurrence_every_2_days": "Every 2 days",
|
||
"panel.recurrence_every_2_weeks": "Every 2 weeks",
|
||
"panel.recurrence_every_3_months": "Every 3 months",
|
||
"panel.recurrence_every_6_months": "Every 6 months",
|
||
"panel.recurrence_monthly": "Monthly",
|
||
"panel.recurrence_weekly": "Weekly",
|
||
"panel.reorder_global_hint": "Drag rows to reorder how chores appear in the admin panel. Save to apply.",
|
||
"panel.reorder_global_title": "Reorder chores",
|
||
"panel.reorder_hint": "Drag rows to reorder how chores appear on this child's card. Save to apply.",
|
||
"panel.reorder_title": "Reorder chores · {name}",
|
||
"panel.reward_add_tile": "Add reward",
|
||
"panel.reward_assigned_hint": "Leave empty to make available to <strong>all children</strong>.",
|
||
"panel.reward_assigned_label": "Assigned to",
|
||
"panel.reward_badge_jackpot": "Jackpot",
|
||
"panel.reward_badge_pool": "Pool",
|
||
"panel.reward_cost_label": "Cost ({points_name})",
|
||
"panel.reward_description_label": "Description (optional)",
|
||
"panel.reward_expires_hint": "Pooled points are refunded at midnight.",
|
||
"panel.reward_expires_label": "Expires (blank = never)",
|
||
"panel.reward_icon_label": "Icon",
|
||
"panel.reward_is_jackpot_hint": "Combine all children's contributions toward one shared reward.",
|
||
"panel.reward_is_jackpot_label": "Jackpot — pool from all assigned children",
|
||
"panel.reward_name_label": "Name",
|
||
"panel.reward_pool_hint": "Children deposit points into this reward's dedicated pool rather than spending from their balance.",
|
||
"panel.reward_pool_label": "Pool reward (savings jar)",
|
||
"panel.reward_quantity_hint": "Each approved claim reduces by 1.",
|
||
"panel.reward_quantity_label": "Limited quantity (blank = unlimited)",
|
||
"panel.reward_stat_cost": "{points_name} cost",
|
||
"panel.reward_stat_expires": "Expires",
|
||
"panel.reward_stat_remaining": "Remaining",
|
||
"panel.reward_stat_unlimited": "Unlimited",
|
||
"panel.reward_title": "Rewards",
|
||
"panel.row_menu_more": "More actions",
|
||
"panel.schedule_one_shot": "One-time task",
|
||
"panel.schedule_recurring": "Recurring (every N days/weeks/months)",
|
||
"panel.schedule_specific_days": "Specific days of the week",
|
||
"panel.search_bonuses": "Search bonuses…",
|
||
"panel.search_children": "Search children…",
|
||
"panel.search_chores": "Filter chores…",
|
||
"panel.search_groups": "Search groups…",
|
||
"panel.search_penalties": "Search penalties…",
|
||
"panel.search_rewards": "Search rewards…",
|
||
"panel.settings_afternoon_hint": "Default 12:00 – 17:00",
|
||
"panel.settings_afternoon_label": "Afternoon",
|
||
"panel.settings_bonuses_title": "Bonuses",
|
||
"panel.settings_calendar_projection_hint": "Days ahead each chore publishes to calendars",
|
||
"panel.settings_calendar_projection_label": "Calendar projection",
|
||
"panel.settings_chore_rotation_title": "Chore Rotation",
|
||
"panel.settings_currency_hint": "How points are named and shown across the app.",
|
||
"panel.settings_currency_title": "Currency",
|
||
"panel.settings_parents_title": "Parents (no admin rights)",
|
||
"panel.settings_parents_hint": "Give a non-admin household member day-to-day control — approve chores, adjust points, confirm rewards — without Home Assistant admin rights. They still can't open this admin panel or change configuration.",
|
||
"panel.settings_parents_empty": "No non-admin Home Assistant users found. Create a standard HA user first, then tick them here.",
|
||
"panel.settings_evening_hint": "Default 17:00 – 21:00",
|
||
"panel.settings_evening_label": "Evening",
|
||
"panel.settings_history_title": "History & streaks",
|
||
"panel.settings_morning_hint": "Default 06:00 – 12:00",
|
||
"panel.settings_morning_label": "Morning",
|
||
"panel.settings_night_hint": "Default 21:00 – 23:59",
|
||
"panel.settings_night_label": "Night",
|
||
"panel.settings_notifications_title": "Notifications",
|
||
"panel.settings_notify_hint": "Used for parent approval pings",
|
||
"panel.settings_notify_label": "Notify service",
|
||
"panel.settings_notify_none": "(none — use HA persistent notifications)",
|
||
"panel.settings_perfect_week_bonus_hint": "How many points to award",
|
||
"panel.settings_perfect_week_bonus_label": "Perfect-week bonus points",
|
||
"panel.settings_perfect_week_all_chores_hint": "A day counts only when every chore due that day is done",
|
||
"panel.settings_perfect_week_all_chores_label": "Perfect week needs all tasks",
|
||
"panel.settings_perfect_week_hint": "Bonus for completing every day of a week",
|
||
"panel.settings_perfect_week_label": "Perfect-week bonus",
|
||
"panel.settings_points_default": "Stars",
|
||
"panel.settings_points_icon_hint": "Pick any MDI icon",
|
||
"panel.settings_points_icon_label": "Points icon",
|
||
"panel.settings_points_name_hint": "What you call them, e.g. Stars or Coins",
|
||
"panel.settings_points_name_label": "Points name",
|
||
"panel.settings_retention_hint": "How many days of completion history to keep",
|
||
"panel.settings_retention_label": "Retention",
|
||
"panel.settings_show_ids_hint": "Display internal IDs for use in automations and service calls",
|
||
"panel.settings_show_ids_label": "Show IDs",
|
||
"panel.settings_skip_confirm_hint": "Show a confirmation popup before skipping a chore rotation",
|
||
"panel.settings_skip_confirm_label": "Confirm before skipping",
|
||
"panel.settings_streak_all_chores_hint": "Only extend a streak once every chore due that day is done",
|
||
"panel.settings_streak_all_chores_label": "Streak needs all tasks",
|
||
"panel.settings_streak_milestones_hint": "Bonus at 3, 7, 14, 30, 60, 100 days",
|
||
"panel.settings_streak_milestones_label": "Streak milestones",
|
||
"panel.settings_streak_reset_hint": "What happens when a day is missed",
|
||
"panel.settings_streak_reset_label": "Streak reset",
|
||
"panel.settings_time_boundaries_hint": "When each time period starts and ends (HH:MM, 24-hour). Add your own periods; gaps between periods fall back to Anytime.",
|
||
"panel.settings_time_boundaries_title": "Time-of-day boundaries",
|
||
"panel.settings_title": "Settings",
|
||
"panel.settings_weekend_multiplier_hint": "Bonus on Sat/Sun (1.0 = off)",
|
||
"panel.settings_difficulty_multipliers_hint": "Points multiplier per tier. Medium is the baseline (×1.0); easy/hard scale a chore's award.",
|
||
"panel.settings_difficulty_multipliers_label": "Difficulty multipliers",
|
||
"panel.settings_vacation_hint": "Pause all chores and freeze streaks during these date ranges (e.g. holidays).",
|
||
"panel.vacation_calendar_label": "Family vacation calendar (optional)",
|
||
"panel.vacation_calendar_hint": "When this calendar has an active event, every child is treated as away — streaks freeze and chores hide. Per-child sensors can add individual away periods on top.",
|
||
"panel.settings_vacation_title": "Vacation / pause mode",
|
||
"panel.vacation_add": "Add vacation",
|
||
"panel.vacation_dates_required": "Each vacation needs a start and end date.",
|
||
"panel.vacation_delete_title": "Remove vacation",
|
||
"panel.vacation_name_placeholder": "e.g. Summer holidays",
|
||
"panel.vacation_none": "No vacations set — chores run every day.",
|
||
"panel.settings_weekend_multiplier_label": "Weekend multiplier",
|
||
"panel.skip_chore_confirm": "Skip this chore's current assignee and advance the rotation?",
|
||
"panel.streak_pause": "Pause — streak preserved until next completion",
|
||
"panel.streak_reset": "Reset — streak goes to 0 on missed day",
|
||
"panel.tab_activity": "Activity",
|
||
"panel.tab_audit": "Audit",
|
||
"panel.tab_badges": "Badges",
|
||
"panel.tab_bonuses": "Bonuses",
|
||
"panel.tab_children": "Children",
|
||
"panel.tab_chores": "Chores",
|
||
"panel.tab_groups": "Groups",
|
||
"panel.tab_notifications": "Notifications",
|
||
"panel.tab_penalties": "Penalties",
|
||
"panel.tab_rewards": "Rewards",
|
||
"panel.tab_settings": "Settings",
|
||
"panel.tab_templates": "Templates",
|
||
"panel.tab_unknown": "Unknown tab",
|
||
"panel.wiki_tooltip": "Open the TaskMate wiki",
|
||
"panel.notif_add_custom": "Add custom notification",
|
||
"panel.notif_add_parent": "Add parent",
|
||
"panel.notif_custom_empty": "No custom notifications yet.",
|
||
"panel.notif_custom_message_placeholder": "Message (you can use {child_name})",
|
||
"panel.notif_custom_name_placeholder": "Reminder name",
|
||
"panel.notif_day_fri": "Fri",
|
||
"panel.notif_day_mon": "Mon",
|
||
"panel.notif_day_sat": "Sat",
|
||
"panel.notif_day_sun": "Sun",
|
||
"panel.notif_day_thu": "Thu",
|
||
"panel.notif_day_tue": "Tue",
|
||
"panel.notif_day_wed": "Wed",
|
||
"panel.notif_default_custom_message": "Reminder for {child_name}",
|
||
"panel.notif_default_custom_name": "New reminder",
|
||
"panel.notif_default_parent_name": "Parent",
|
||
"panel.notif_loading": "Loading notifications…",
|
||
"panel.notif_matrix_col_notification": "Notification",
|
||
"panel.notif_none": "None",
|
||
"panel.notif_power_user_note_body": "TaskMate fires taskmate_chore_completed, taskmate_streak_updated, taskmate_badge_earned, taskmate_reward_claimed and other events on the HA event bus. Use Node-RED or HA automations to react to them.",
|
||
"panel.notif_power_user_note_title": "Power-user note",
|
||
"panel.notif_recipients_children": "Children",
|
||
"panel.notif_recipients_parents": "Parents",
|
||
"panel.notif_remove_parent": "Remove",
|
||
"panel.notif_section_custom": "Custom scheduled notifications",
|
||
"panel.notif_unnamed_recipient": "(unnamed)",
|
||
"panel.notif_section_custom_desc": "Add your own timed reminders. For event-driven notifications, listen to the taskmate_* events on the Home Assistant bus.",
|
||
"panel.notif_section_matrix": "Built-in notifications",
|
||
"panel.notif_section_matrix_desc": "Toggle per recipient. The switch on the left disables the whole row globally. Cells marked — aren't valid for that recipient.",
|
||
"panel.notif_section_recipients": "Recipients",
|
||
"panel.notif_section_recipients_desc": "Map each child and parent to a Home Assistant notify service. Leave blank to skip notifications for that person.",
|
||
"panel.notif_streak_cutoff_label": "Cutoff",
|
||
"panel.notif_send_test": "Send test",
|
||
"panel.notif_test_sent": "Test sent to {count} recipient(s) + persistent notification",
|
||
"panel.notif_tab_title": "Notifications",
|
||
"panel.template_assignment_mode_label": "Assignment mode",
|
||
"panel.template_builtin": "Built-in",
|
||
"panel.template_builtin_packs": "Built-in packs",
|
||
"panel.template_builtin_template_packs": "Built-in template packs",
|
||
"panel.template_builtin_templates": "Built-in templates",
|
||
"panel.template_chores_in_template": "Chores in this template",
|
||
"panel.template_confirm_bar": "{count} chore(s) will be created · {points} pts total",
|
||
"panel.template_create_btn": "Create {count} chore(s)",
|
||
"panel.template_create_title": "Create Template",
|
||
"panel.template_custom": "Custom",
|
||
"panel.template_custom_packs": "Custom packs",
|
||
"panel.template_custom_templates": "Custom templates",
|
||
"panel.template_daily_limit_label": "Daily limit",
|
||
"panel.template_edit_title": "Edit Template",
|
||
"panel.template_icon_label": "Icon (MDI)",
|
||
"panel.template_name_label": "Name",
|
||
"panel.template_picker_title": "Add from Template",
|
||
"panel.template_preview_hint": "Review and customise each chore before creating. Expand to edit all fields, or remove with ✕.",
|
||
"panel.template_pts_total": "{count} chore(s) · {points} pts total",
|
||
"panel.template_requires_approval_label": "Requires approval",
|
||
"panel.template_requires_approval_no": "No",
|
||
"panel.template_requires_approval_yes": "Yes",
|
||
"panel.template_save_icon_label": "Icon (MDI)",
|
||
"panel.template_save_name_label": "Template name",
|
||
"panel.template_save_name_placeholder": "e.g. My morning pack",
|
||
"panel.template_save_select_chores": "Select chores to include",
|
||
"panel.template_save_title": "Save as Template",
|
||
"panel.template_schedule_days_label": "Schedule (days)",
|
||
"panel.template_schedule_label": "Schedule",
|
||
"panel.template_title": "Templates",
|
||
"panel.template_unnamed": "(unnamed)",
|
||
"panel.time_afternoon": "Afternoon",
|
||
"panel.time_ago_days": "{count}d ago",
|
||
"panel.time_ago_hours": "{count}h ago",
|
||
"panel.time_ago_just_now": "just now",
|
||
"panel.time_ago_minutes": "{count}m ago",
|
||
"panel.time_anytime": "Anytime",
|
||
"panel.time_evening": "Evening",
|
||
"panel.time_morning": "Morning",
|
||
"panel.time_night": "Night",
|
||
"panel.toast_added_bonus": "Added bonus",
|
||
"panel.toast_added_penalty": "Added penalty",
|
||
"panel.toast_apply_failed": "Apply failed: {error}",
|
||
"panel.toast_approve_failed": "Approve failed: {error}",
|
||
"panel.toast_approved": "Approved",
|
||
"panel.toast_badge_added": "Badge added",
|
||
"panel.toast_badge_award_failed": "Award failed: {error}",
|
||
"panel.toast_badge_awarded": "Badge awarded",
|
||
"panel.toast_badge_criterion_invalid": "Criterion value must be ≥ 1",
|
||
"panel.toast_badge_delete_failed": "Delete failed: {error}",
|
||
"panel.toast_badge_deleted": "Badge deleted",
|
||
"panel.toast_badge_name_required": "Name is required",
|
||
"panel.toast_badge_rebuild_failed": "Rebuild failed: {error}",
|
||
"panel.toast_badge_rebuilt": "Badges rebuilt",
|
||
"panel.toast_badge_revoke_failed": "Revoke failed: {error}",
|
||
"panel.toast_badge_revoked": "Badge revoked",
|
||
"panel.toast_badge_save_failed": "Save failed: {error}",
|
||
"panel.toast_badge_select_child": "Select a child",
|
||
"panel.toast_badge_update_failed": "Update failed: {error}",
|
||
"panel.toast_badge_updated": "Badge updated",
|
||
"panel.toast_bonus_applied": "Bonus applied",
|
||
"panel.toast_bulk_add_failed": "Bulk add failed: {error}",
|
||
"panel.toast_bulk_added": "Added {count} chore(s)",
|
||
"panel.toast_child_added": "Child added",
|
||
"panel.toast_child_updated": "Child updated",
|
||
"panel.toast_chore_activated": "Chore activated",
|
||
"panel.toast_chore_added": "Chore added",
|
||
"panel.toast_chore_cloned": "Chore duplicated",
|
||
"panel.toast_chore_deactivated": "Chore deactivated",
|
||
"panel.toast_chore_updated": "Chore updated",
|
||
"panel.toast_copied": "Copied!",
|
||
"panel.toast_created_chores": "Created {count} chore(s)",
|
||
"panel.toast_delete_failed": "Delete failed: {error}",
|
||
"panel.toast_deleted": "Deleted",
|
||
"panel.toast_enter_chore_name": "Enter at least one chore name",
|
||
"panel.toast_group_added": "Group added",
|
||
"panel.toast_group_updated": "Group updated",
|
||
"panel.toast_name_and_chore_required": "Name and at least one chore required",
|
||
"panel.toast_name_enter_select": "Enter a name and select at least one chore",
|
||
"panel.toast_name_required": "Name is required",
|
||
"panel.toast_name_required_template": "Name required",
|
||
"panel.toast_order_saved": "Order saved",
|
||
"panel.toast_penalty_applied": "Penalty applied",
|
||
"panel.toast_points_required": "Points must be 1 or higher",
|
||
"panel.toast_reject_failed": "Reject failed: {error}",
|
||
"panel.toast_rejected": "Rejected",
|
||
"panel.toast_rename_failed": "Rename failed: {error}",
|
||
"panel.toast_renamed": "Renamed",
|
||
"panel.toast_reward_added": "Reward added",
|
||
"panel.toast_reward_updated": "Reward updated",
|
||
"panel.toast_save_failed": "Save failed: {error}",
|
||
"panel.toast_settings_saved": "Saved ({count} field(s))",
|
||
"panel.toast_skip_done": "Rotation skipped — next child assigned",
|
||
"panel.toast_skip_failed": "Skip failed: {error}",
|
||
"panel.toast_template_created": "Template \"{name}\" created",
|
||
"panel.toast_template_deleted": "Template deleted",
|
||
"panel.toast_template_failed_apply": "Failed to apply template",
|
||
"panel.toast_template_failed_create": "Failed to create template",
|
||
"panel.toast_template_failed_delete": "Failed to delete",
|
||
"panel.toast_template_failed_save": "Failed to save template",
|
||
"panel.toast_template_failed_update": "Failed to update",
|
||
"panel.toast_template_saved": "Template \"{name}\" saved",
|
||
"panel.toast_template_updated": "Template updated",
|
||
"panel.toast_toggle_failed": "Toggle failed: {error}",
|
||
"panel.toast_updated_bonus": "Updated bonus",
|
||
"panel.toast_updated_penalty": "Updated penalty",
|
||
"panel.tooltip_cancel": "Cancel",
|
||
"panel.tooltip_clear": "Clear",
|
||
"panel.tooltip_close": "Close",
|
||
"panel.tooltip_remove": "Remove",
|
||
"panel.tooltip_remove_batch": "Remove from batch",
|
||
"panel.tooltip_rename": "Double-click to rename",
|
||
"panel.tooltip_save": "Save",
|
||
"panel.topbar_awaiting_approval": "Awaiting your approval — {details}",
|
||
"panel.topbar_chore_count": "{count} chore(s)",
|
||
"panel.topbar_pending": "{count} pending",
|
||
"panel.topbar_pending_title": "{count} pending — click to review",
|
||
"panel.topbar_reward_count": "{count} reward claim(s)",
|
||
"panel.topbar_swap_count": "{count} swap request(s)",
|
||
"panel.vis_equals": "Equals — state matches exactly",
|
||
"panel.vis_gt": "Greater than (>)",
|
||
"panel.vis_gte": "Greater than or equal (≥)",
|
||
"panel.vis_lt": "Less than (<)",
|
||
"panel.vis_lte": "Less than or equal (≤)",
|
||
"panel.vis_none": "No filter — always show chore",
|
||
"panel.vis_not_equals": "Not equal",
|
||
"penalties.add_penalty": "Add Penalty",
|
||
"penalties.applying_to": "Applying to {childName} — current balance: {points} {pointsName}",
|
||
"penalties.btn_delete_title": "Delete",
|
||
"penalties.btn_edit_title": "Edit",
|
||
"penalties.card_description": "Apply point-deduction penalties to children",
|
||
"penalties.card_name": "TaskMate Penalties",
|
||
"penalties.default_title": "Penalties",
|
||
"penalties.editor.manage_note": "Add, edit, and delete penalty templates directly on the card itself — tap the pencil icon in the card header. This editor only controls the card's appearance.",
|
||
"penalties.empty_sub": "Tap the pencil icon to add penalties",
|
||
"penalties.empty_title": "No penalties yet",
|
||
"penalties.form_description_label": "Description (optional)",
|
||
"penalties.form_description_placeholder": "Short description",
|
||
"penalties.form_icon_label": "Icon (MDI)",
|
||
"penalties.form_name_label": "Name",
|
||
"penalties.form_name_placeholder": "e.g. Not going to bed",
|
||
"penalties.form_points_label": "Points",
|
||
"penalties.manage_title": "Manage penalties",
|
||
"penalties.new_penalty": "New Penalty",
|
||
"penalties.toast_add_failed": "Failed to add penalty",
|
||
"penalties.toast_applied": "-{points} {pointsName} from {childName}",
|
||
"penalties.toast_apply_failed": "Failed to apply penalty",
|
||
"penalties.toast_delete_failed": "Failed to delete penalty",
|
||
"penalties.toast_save_failed": "Failed to save changes",
|
||
"points_card.card_description": "A parent-friendly card to add or remove points from children",
|
||
"points_card.card_name": "TaskMate Points Card",
|
||
"points_card.default_title": "Manage Points",
|
||
"points_card.dialog_add_title": "Add {pointsName}",
|
||
"points_card.dialog_confirm_add": "Add",
|
||
"points_card.dialog_confirm_remove": "Remove",
|
||
"points_card.dialog_loading": "...",
|
||
"points_card.dialog_points_helper": "Enter 1–100",
|
||
"points_card.dialog_points_label": "Number of {pointsName}",
|
||
"points_card.dialog_reason_label": "Reason (optional)",
|
||
"points_card.dialog_reason_placeholder": "e.g., Great behavior, Helped a sibling...",
|
||
"points_card.dialog_remove_title": "Remove {pointsName}",
|
||
"points_card.dialog_subtitle": "for {childName}",
|
||
"points_card.editor.add_buttons_helper": "Comma-separated amounts e.g. 1, 2, 5, 10, 25",
|
||
"points_card.editor.add_buttons_label": "Add Points Buttons",
|
||
"points_card.editor.entity_helper": "The TaskMate overview sensor entity",
|
||
"points_card.editor.entity_label": "Entity",
|
||
"points_card.editor.header_colour_helper": "Card header background colour",
|
||
"points_card.editor.header_colour_label": "Header Colour",
|
||
"points_card.editor.remove_buttons_helper": "Comma-separated amounts e.g. 1, 2, 5, 10, 25",
|
||
"points_card.editor.remove_buttons_label": "Remove Points Buttons",
|
||
"points_card.editor.show_dialog_label": "Show ⋯ button for custom amount with reason",
|
||
"points_card.editor.title_label": "Title",
|
||
"points_card.empty_subtitle": "Add children in TaskMate settings",
|
||
"points_card.empty_title": "No Children Found",
|
||
"points_card.notification_added": "Added {points} {pointsLabel} to {childName}",
|
||
"points_card.notification_failed": "Failed: {message}",
|
||
"points_card.notification_failed_action": "Failed to {action} points: {message}",
|
||
"points_card.notification_quick": "{sign}{amount} {pointsName} for {childName}",
|
||
"points_card.notification_removed": "Removed {points} {pointsLabel} from {childName}",
|
||
"points_card.please_define_entity": "Please define an entity (taskmate overview sensor)",
|
||
"points_card.quick_add_title": "Add {amount} {pointsName}",
|
||
"points_card.quick_custom_title": "Custom amount",
|
||
"points_card.quick_label_add": "+ {pointsName}",
|
||
"points_card.quick_label_remove": "− {pointsName}",
|
||
"points_card.quick_remove_title": "Remove {amount} {pointsName}",
|
||
"points_card.validation_range": "Please enter a number between 1 and 100",
|
||
"points_display.board_title": "Points Board",
|
||
"points_display.card_description": "Kid-friendly display of points. Supports single child, all children, or combined family total.",
|
||
"points_display.card_name": "TaskMate Points Display",
|
||
"points_display.career_score_label": "Career Score",
|
||
"points_display.combined_family_total": "Combined Family Total",
|
||
"points_display.current_points_label": "Current Points",
|
||
"points_display.default_title": "Points",
|
||
"points_display.editor.appearance": "Appearance",
|
||
"points_display.editor.child_id_note": "Save the entity first so children load automatically.",
|
||
"points_display.editor.child_id_placeholder": "Enter child_id",
|
||
"points_display.editor.child_label": "Child",
|
||
"points_display.editor.display_mode": "Display Mode",
|
||
"points_display.editor.entity_label": "TaskMate Entity",
|
||
"points_display.editor.mode_cumulative": "∑ Combined",
|
||
"points_display.editor.mode_label": "Mode",
|
||
"points_display.editor.mode_multi": "👥 All Children",
|
||
"points_display.editor.mode_single": "⭐ Single",
|
||
"points_display.editor.primary_career_score": "🏆 Career Score",
|
||
"points_display.editor.primary_current_points": "💰 Current Points",
|
||
"points_display.editor.primary_display": "Primary Display",
|
||
"points_display.editor.select_child": "— Select a child —",
|
||
"points_display.editor.show_rank": "Rank medals",
|
||
"points_display.editor.show_streak": "Streak",
|
||
"points_display.editor.show_weekly": "This week's points",
|
||
"points_display.editor.stats_to_show": "Stats to Show",
|
||
"points_display.editor.title_placeholder": "(auto)",
|
||
"points_display.empty_no_child": "No child selected or child not found.",
|
||
"points_display.empty_no_children": "No children found in TaskMate data.",
|
||
"points_display.empty_set_child_id": "Set child_id in the card editor.",
|
||
"points_display.family_subtitle": "{count} children · all time",
|
||
"points_display.family_title": "Family Points",
|
||
"points_display.individual_scores": "Individual Scores",
|
||
"points_display.mode_cumulative": "Combined",
|
||
"points_display.mode_multi": "All Children",
|
||
"points_display.mode_single": "Single",
|
||
"points_display.points_label": "points",
|
||
"points_display.rank": "Rank",
|
||
"points_display.single_title": "{name}'s Points",
|
||
"points_display.streak": "Streak",
|
||
"points_display.streak_day": "{count} day",
|
||
"points_display.streak_days": "{count} days",
|
||
"points_display.this_week": "This Week",
|
||
"points_display.total_points": "Total Points",
|
||
"points_display.weekly_plus": "+{count} this week",
|
||
"points_display.weekly_pts": "{count} pts",
|
||
"reorder.add_chores_first": "Add chores to this child first",
|
||
"reorder.card_description": "A card for reordering chores per child, organized by time category",
|
||
"reorder.card_name": "TaskMate Reorder Card",
|
||
"reorder.child_not_found": "Child not found: {child_id}",
|
||
"reorder.chore_count": "{count} chore",
|
||
"reorder.chore_count_plural": "{count} chores",
|
||
"reorder.default_title": "Reorder Chores",
|
||
"reorder.drag_to_reorder": "Drag to reorder",
|
||
"reorder.editor.child": "Child",
|
||
"reorder.editor.child_helper": "Which child to manage chore order for",
|
||
"reorder.editor.select_child": "Select a child...",
|
||
"reorder.error.child_id_required": "Please define a child_id",
|
||
"reorder.error.entity_required": "Please define an entity (TaskMate overview sensor)",
|
||
"reorder.move_down": "Move down",
|
||
"reorder.move_up": "Move up",
|
||
"reorder.no_chores_assigned": "No chores assigned",
|
||
"reorder.notification.save_error_message": "Failed to save chore order: {error}",
|
||
"reorder.notification.save_error_title": "Error Saving Order",
|
||
"reorder.notification.save_success_message": "The chore order has been updated successfully.",
|
||
"reorder.notification.save_success_title": "Chore Order Saved",
|
||
"reorder.save_order": "Save Order",
|
||
"reorder.saving": "Saving...",
|
||
"reorder.unsaved_changes": "You have unsaved changes",
|
||
"reward_progress.card_description": "Full-screen motivational reward progress display",
|
||
"reward_progress.card_name": "TaskMate Reward Progress",
|
||
"reward_progress.combined": "combined",
|
||
"reward_progress.combined_points_pool": "Combined Points Pool",
|
||
"reward_progress.default_title": "Reward Goal",
|
||
"reward_progress.editor.child_filter_all": "All assigned children",
|
||
"reward_progress.editor.child_helper": "Show only this child's progress",
|
||
"reward_progress.editor.first_available": "First available reward",
|
||
"reward_progress.editor.reward_helper": "Which reward to show progress for",
|
||
"reward_progress.editor.reward_to_display": "Reward to display",
|
||
"reward_progress.error.entity_required": "Please define an entity",
|
||
"reward_progress.jackpot_reward": "Jackpot Reward",
|
||
"reward_progress.more_needed": "{amount} more needed",
|
||
"reward_progress.no_rewards": "No rewards found",
|
||
"reward_progress.ready": "🎉 Ready!",
|
||
"reward_progress.ready_to_claim": "Ready to claim!",
|
||
"reward_progress.ready_to_claim_emoji": "🎉 Ready to claim!",
|
||
"reward_progress.total_pool": "Total Pool",
|
||
"reward_progress.unavailable": "TaskMate unavailable",
|
||
"rewards.add_all": "All",
|
||
"rewards.all_children": "All Children",
|
||
"rewards.allocated": "Allocated",
|
||
"rewards.awaiting_approval": "Awaiting parent approval",
|
||
"rewards.card_description": "A card displaying available rewards with star costs",
|
||
"rewards.card_name": "TaskMate Rewards Card",
|
||
"rewards.claim_reward": "Claim reward",
|
||
"rewards.confirm_body": "Claim {name}?",
|
||
"rewards.confirm_claim_btn": "Claim!",
|
||
"rewards.confirm_cost": "Cost",
|
||
"rewards.confirm_pool_total": "Pool total",
|
||
"rewards.confirm_remaining": "Remaining",
|
||
"rewards.confirm_title": "Claim Reward?",
|
||
"rewards.confirm_your_points": "Your {name}",
|
||
"rewards.default_title": "Rewards",
|
||
"rewards.deposit_custom_add": "Add",
|
||
"rewards.deposit_custom_label": "Custom amount to deposit",
|
||
"rewards.deposit_custom_placeholder": "Amount",
|
||
"rewards.deposit_disabled_insufficient": "Not enough spendable ({spendable} available)",
|
||
"rewards.deposit_disabled_loading": "Depositing…",
|
||
"rewards.deposit_disabled_no_child": "Select a child to deposit",
|
||
"rewards.deposit_points": "Deposit {amount}",
|
||
"rewards.editor.enable_pool_mode": "Enable Pool Mode (Savings Jars)",
|
||
"rewards.editor.enable_pool_mode_helper": "Each reward becomes a dedicated savings pool — children allocate points directly to a goal rather than spending from a global balance",
|
||
"rewards.editor.expand_to_fit": "Expand card to fit all rewards",
|
||
"rewards.editor.expand_to_fit_helper": "Grow the card to show every reward instead of scrolling a fixed-height list (designed styles only)",
|
||
"rewards.editor.entity": "Entity",
|
||
"rewards.editor.entity_helper": "The TaskMate overview sensor entity",
|
||
"rewards.editor.filter_by_child": "Filter by Child",
|
||
"rewards.editor.filter_by_child_all": "All Children",
|
||
"rewards.editor.filter_by_child_helper": "Only show rewards available to this child (leave empty for all rewards)",
|
||
"rewards.editor.show_child_badges": "Show child assignment badges",
|
||
"rewards.editor.show_child_badges_helper": "Display which children can claim each reward",
|
||
"rewards.editor.title": "Title",
|
||
"rewards.editor.title_helper": "Card title displayed in the header (default: \"Rewards\")",
|
||
"rewards.empty_subtitle": "Add rewards in TaskMate settings",
|
||
"rewards.empty_title": "No Rewards Available",
|
||
"rewards.error.entity_required": "Please define an entity (taskmate overview sensor)",
|
||
"rewards.expired": "Expired",
|
||
"rewards.expires_in_days": "Expires in {count} day",
|
||
"rewards.expires_in_days_plural": "Expires in {count} days",
|
||
"rewards.expires_today": "Expires today",
|
||
"rewards.jackpot": "JACKPOT",
|
||
"rewards.not_enough_points": "Not enough points",
|
||
"rewards.only_n_left": "Only {count} left!",
|
||
"rewards.pool_full": "Pool full!",
|
||
"rewards.pool_locked_note": "Allocations are locked — they can only be spent on this goal",
|
||
"rewards.redeem": "Redeem",
|
||
"rewards.reward_count_plural": "{count} rewards",
|
||
"rewards.reward_count_singular": "{count} reward",
|
||
"rewards.sold_out": "Sold Out",
|
||
"rewards.spendable_balance": "Spendable",
|
||
"rewards.unavailable_hint": "This reward can no longer be claimed",
|
||
"streak.achievement.fifty_desc": "Complete 50 chores",
|
||
"streak.achievement.fifty_name": "50 Done",
|
||
"streak.achievement.first_desc": "Complete your first chore",
|
||
"streak.achievement.first_name": "First!",
|
||
"streak.achievement.hundred_desc": "Complete 100 chores",
|
||
"streak.achievement.hundred_name": "100 Done",
|
||
"streak.achievement.points100_desc": "Earn 100 points total",
|
||
"streak.achievement.points100_name": "100 ⭐",
|
||
"streak.achievement.points50_desc": "Earn 50 points total",
|
||
"streak.achievement.points50_name": "50 ⭐",
|
||
"streak.achievement.streak14_desc": "14 day streak",
|
||
"streak.achievement.streak14_name": "2 Weeks",
|
||
"streak.achievement.streak30_desc": "30 day streak",
|
||
"streak.achievement.streak30_name": "Month!",
|
||
"streak.achievement.streak3_desc": "3 day streak",
|
||
"streak.achievement.streak3_name": "3 Days",
|
||
"streak.achievement.streak7_desc": "7 day streak",
|
||
"streak.achievement.streak7_name": "Week!",
|
||
"streak.achievement.ten_desc": "Complete 10 chores",
|
||
"streak.achievement.ten_name": "10 Done",
|
||
"streak.achievements": "Achievements",
|
||
"streak.card_description": "Consecutive day streaks and milestone badges for each child",
|
||
"streak.card_name": "TaskMate Streaks & Achievements",
|
||
"streak.day_streak": "day streak",
|
||
"streak.default_title": "Streaks & Achievements",
|
||
"streak.editor.child_helper": "Show streak for a specific child only",
|
||
"streak.editor.days_shown": "Days Shown in Bar",
|
||
"streak.editor.days_shown_helper": "How many days of dots to show (default: 14)",
|
||
"streak.editor.title": "Title",
|
||
"streak.error.entity_required": "Please define an entity",
|
||
"visibility.description_hidden": "Hidden by visibility condition",
|
||
"visibility.description_shown": "Shown by visibility condition",
|
||
"visibility.label_entity": "Visibility Entity",
|
||
"visibility.label_operator": "Visibility Operator",
|
||
"visibility.label_state": "Visibility State",
|
||
"visibility.operator_equals": "Equals",
|
||
"visibility.operator_gt": "Greater than (>)",
|
||
"visibility.operator_gte": "Greater than or equal (≥)",
|
||
"visibility.operator_lt": "Less than (<)",
|
||
"visibility.operator_lte": "Less than or equal (≤)",
|
||
"visibility.operator_not_equals": "Not Equal",
|
||
"weekly.card_description": "Week at a glance — chores, points, and daily bar chart",
|
||
"weekly.card_name": "TaskMate Weekly Summary",
|
||
"weekly.child_chores": "{count} chores",
|
||
"weekly.child_days": "{count}/7 days",
|
||
"weekly.child_days_active_title": "{count} of 7 days active",
|
||
"weekly.day_fri": "Fri",
|
||
"weekly.day_mon": "Mon",
|
||
"weekly.day_sat": "Sat",
|
||
"weekly.day_sun": "Sun",
|
||
"weekly.day_thu": "Thu",
|
||
"weekly.day_tue": "Tue",
|
||
"weekly.day_wed": "Wed",
|
||
"weekly.default_title": "This Week",
|
||
"weekly.editor.child_helper": "Show weekly summary for a specific child only",
|
||
"weekly.editor.title": "Title",
|
||
"weekly.error.entity_required": "Please define an entity",
|
||
"weekly.section_children_this_week": "Children This Week",
|
||
"weekly.section_chores_per_day": "Chores Per Day",
|
||
"weekly.section_points_per_day": "Points Per Day",
|
||
"weekly.stat_chores": "Chores",
|
||
"weekly.stat_rewards": "Rewards",
|
||
"weekly.stat_days_active": "Days Active",
|
||
"notification.all_chores_done.description": "Celebration ping when a child finishes every chore for the day.",
|
||
"notification.all_chores_done.name": "All chores done",
|
||
"notification.badge_earned.description": "Sent when a child earns a new badge. Per-badge mute still applies.",
|
||
"notification.badge_earned.name": "Badge earned",
|
||
"notification.bedtime_reminder.description": "Pings the child if they have outstanding chores at the configured time.",
|
||
"notification.bedtime_reminder.name": "Bedtime reminder",
|
||
"notification.pending_chore_approval.description": "Sent to parents when a child marks a chore complete. Tap Approve or Reject from the notification.",
|
||
"notification.pending_chore_approval.name": "Pending chore approval",
|
||
"notification.pending_reward_claim.description": "Sent to parents when a child redeems a reward. Tap Approve or Reject from the notification.",
|
||
"notification.pending_reward_claim.name": "Pending reward claim",
|
||
"notification.streak_at_risk.description": "Fires when an active streak hasn't been extended yet today.",
|
||
"notification.streak_at_risk.name": "Streak at risk",
|
||
"notification.streak_milestone.description": "Celebrates each new streak milestone a child reaches (off by default).",
|
||
"notification.streak_milestone.name": "Streak milestone",
|
||
"panel.tp_label_placeholder": "Period name",
|
||
"panel.tp_add_period": "Add period",
|
||
"panel.tp_reset_defaults": "Reset to defaults",
|
||
"panel.tp_delete_title": "Delete period",
|
||
"panel.tp_in_use_title": "Used by {count} chore(s) — reassign them before deleting",
|
||
"panel.tp_in_use_hint": "Used by {count} chore(s). Reassign them to another period to delete this one.",
|
||
"panel.tp_anytime_hint": "Always available, all day. Built-in and cannot be removed.",
|
||
"panel.tp_err_label_required": "Every custom period needs a name.",
|
||
"panel.tp_err_time_required": "Set a start and end time for “{name}”.",
|
||
"panel.tp_err_order": "“{name}” must start before it ends.",
|
||
"panel.tp_err_empty": "Add at least one time period.",
|
||
"panel.tp_err_overlap": "“{a}” overlaps “{b}” — periods cannot overlap.",
|
||
"panel.settings_surprise_enabled_label": "Surprise bonuses",
|
||
"panel.settings_surprise_enabled_hint": "Give each child a daily random chance of a surprise points bonus (rolled at 16:00).",
|
||
"panel.settings_surprise_params_label": "Surprise bonus settings",
|
||
"panel.settings_surprise_params_hint": "Daily chance per child, and the random points range awarded on a hit.",
|
||
"panel.settings_surprise_chance": "Chance %",
|
||
"panel.settings_surprise_min": "Min pts",
|
||
"panel.settings_surprise_max": "Max pts",
|
||
"panel.reward_restock_label": "Auto-restock",
|
||
"panel.reward_restock_hint": "Periodically reset this reward's stock back to a set amount.",
|
||
"panel.reward_restock_amount": "Restock to",
|
||
"panel.reward_restock_period": "Restock every",
|
||
"panel.reward_restock_daily": "Day",
|
||
"panel.reward_restock_weekly": "Week (Mon)",
|
||
"panel.reward_restock_monthly": "Month (1st)",
|
||
"panel.chore_expires_label": "Expiry date (optional)",
|
||
"panel.chore_expires_hint": "After this date the chore auto-disables. Leave blank for no expiry.",
|
||
"panel.bulk_select": "Select",
|
||
"panel.bulk_done": "Done",
|
||
"panel.bulk_selected": "{count} selected",
|
||
"panel.bulk_enable": "Enable",
|
||
"panel.bulk_disable": "Disable",
|
||
"panel.bulk_delete": "Delete",
|
||
"panel.bulk_reassign_to": "Reassign to…",
|
||
"panel.bulk_apply": "Apply",
|
||
"panel.bulk_pick_target": "Pick who to reassign to first.",
|
||
"panel.bulk_delete_confirm": "Delete {count} chore(s)? This cannot be undone.",
|
||
"panel.bulk_done_toast": "{count} chore(s) updated",
|
||
"panel.settings_decay_enabled_label": "Points decay",
|
||
"panel.settings_decay_enabled_hint": "Periodically shrink each child's spendable balance to discourage hoarding.",
|
||
"panel.settings_decay_params_label": "Points decay settings",
|
||
"panel.settings_decay_params_hint": "How much of the balance to remove, and how often.",
|
||
"panel.settings_decay_percent": "Decay %",
|
||
"panel.settings_decay_period": "Every",
|
||
"panel.gift_btn": "Gift points",
|
||
"panel.gift_dialog_title": "Gift points",
|
||
"panel.gift_from": "From",
|
||
"panel.gift_to": "To",
|
||
"panel.gift_amount": "Amount",
|
||
"panel.gift_send": "Send gift",
|
||
"panel.gift_sent": "Points gifted",
|
||
"panel.gift_err_same": "Pick two different children.",
|
||
"panel.gift_err_amount": "Enter an amount of at least 1.",
|
||
"panel.settings_level_step_label": "XP per level",
|
||
"panel.settings_level_step_hint": "Earned points needed to advance one level (XP = lifetime earned points).",
|
||
"panel.child_stat_level": "Level",
|
||
"notification.level_up.name": "Level up",
|
||
"notification.level_up.description": "Celebrates when a child reaches a new XP level (off by default).",
|
||
"child.level_label": "Lvl {level}",
|
||
"panel.settings_spendcap_enabled_label": "Spending cap",
|
||
"panel.settings_spendcap_enabled_hint": "Limit how many points each child can spend on rewards per period.",
|
||
"panel.settings_spendcap_params_label": "Spending cap settings",
|
||
"panel.settings_spendcap_params_hint": "Max points spendable per period (0 = no limit).",
|
||
"panel.settings_spendcap_amount": "Cap (pts)",
|
||
"panel.settings_interest_enabled_label": "Savings interest",
|
||
"panel.settings_interest_enabled_hint": "Periodically pay each child interest on their spendable balance (rewards saving).",
|
||
"panel.settings_interest_params_label": "Savings interest settings",
|
||
"panel.settings_interest_percent": "Interest %",
|
||
"panel.settings_interest_params_hint": "Interest rate applied to the balance, and how often.",
|
||
"panel.chore_due_time_label": "Due time (optional)",
|
||
"panel.chore_due_time_hint": "Completions at/before this time earn the early bonus; after it lose the late penalty.",
|
||
"panel.chore_early_bonus_label": "Early bonus",
|
||
"panel.chore_late_penalty_label": "Late penalty",
|
||
"panel.chore_require_photo_label": "Require photo proof",
|
||
"panel.chore_require_photo_hint": "Completions must be parent-approved; an evidence photo (if provided) shows in approvals.",
|
||
"panel.activity_view_photo": "View photo",
|
||
"panel.swap_btn": "Request swap",
|
||
"panel.swap_dialog_title": "Swap: {chore}",
|
||
"panel.swap_requester": "Give today's turn to",
|
||
"panel.swap_create": "Request swap",
|
||
"panel.swap_pick_child": "Pick a child.",
|
||
"panel.swap_requested": "Swap requested",
|
||
"panel.swap_approved": "Swap approved",
|
||
"panel.swap_rejected": "Swap rejected",
|
||
"panel.swap_request_text": "{child} wants to do “{chore}” today",
|
||
"panel.swap_from": "currently {name}",
|
||
"notification.weekly_digest.name": "Weekly digest",
|
||
"notification.weekly_digest.description": "A Sunday-evening summary of each child's week (chores + points). Off by default.",
|
||
"panel.settings_celebration_notify_label": "Celebration notifications",
|
||
"panel.settings_celebration_notify_hint": "Send a notification for big celebration moments (level-ups, streak milestones, perfect weeks). Off by default.",
|
||
"panel.settings_celebration_tier_label": "Minimum celebration size",
|
||
"panel.settings_celebration_tier_hint": "Only notify for moments at or above this size. Every celebration still fires a taskmate_celebration event for automations.",
|
||
"panel.settings_celebration_tier_1": "All (small and up)",
|
||
"panel.settings_celebration_tier_2": "Medium and up",
|
||
"panel.settings_celebration_tier_3": "Epic only",
|
||
"notification.celebration.name": "Celebration",
|
||
"notification.celebration.description": "Big celebration moments — level-ups, streak milestones and perfect weeks. Off by default.",
|
||
"panel.tab_quests": "Quests",
|
||
"panel.quest_title": "Quests",
|
||
"panel.search_quests": "Search quests…",
|
||
"panel.btn_add_quest": "Add quest",
|
||
"panel.quest_add_tile": "Add quest",
|
||
"panel.quest_need_chores": "Create some chores first — a quest is a chain of existing chores.",
|
||
"panel.empty_quests_title": "No quests yet",
|
||
"panel.empty_quests_copy": "Chain chores together into a quest. Finish every step to earn a bonus.",
|
||
"panel.entity_quest": "quest",
|
||
"panel.quest_all_children": "All children",
|
||
"panel.quest_missing_chore": "(deleted chore)",
|
||
"panel.quest_badge_repeatable": "Repeatable",
|
||
"panel.quest_badge_inactive": "Inactive",
|
||
"panel.quest_stat_steps": "Steps",
|
||
"panel.quest_stat_bonus": "Bonus {points_name}",
|
||
"panel.quest_assigned_to": "For",
|
||
"panel.dialog_add_quest": "Add quest",
|
||
"panel.dialog_edit_quest": "Edit quest",
|
||
"panel.quest_bonus_label": "Bonus {points_name}",
|
||
"panel.quest_steps_label": "Steps (in order)",
|
||
"panel.quest_steps_hint": "The child advances one step each time the chore at their current step is approved. Tap a chore below to add or remove it; use ▲▼ to reorder.",
|
||
"panel.quest_no_steps": "No steps yet — tap a chore below to add the first step.",
|
||
"panel.quest_assigned_label": "Assign to",
|
||
"panel.quest_assigned_hint": "Leave all unselected to make this quest available to every child.",
|
||
"panel.quest_repeatable_label": "Repeatable",
|
||
"panel.quest_repeatable_hint": "When finished, progress resets so the child can run the quest again.",
|
||
"panel.quest_active_label": "Active",
|
||
"panel.quest_active_hint": "Inactive quests don't track progress or award bonuses.",
|
||
"panel.quest_need_step": "Add at least one step.",
|
||
"panel.toast_quest_added": "Quest added",
|
||
"panel.toast_quest_updated": "Quest updated",
|
||
"panel.settings_avatars_title": "Avatar unlockables",
|
||
"panel.settings_avatars_label": "Manage avatars",
|
||
"panel.settings_avatars_hint": "{count} avatars in the catalogue. Children unlock avatars by reaching levels, points or streaks, then pick their own.",
|
||
"panel.settings_avatars_btn": "Manage avatars",
|
||
"panel.avatar_dialog_title": "Avatar catalogue",
|
||
"panel.avatar_dialog_hint": "Define the avatars children can earn. Each row needs an mdi icon and an unlock requirement. Children can switch to any avatar they've unlocked.",
|
||
"panel.avatar_empty": "No avatars yet — add one below.",
|
||
"panel.avatar_add_row": "Add avatar",
|
||
"panel.avatar_label_ph": "Name (e.g. Rocket)",
|
||
"panel.avatar_unlock_free": "Always available",
|
||
"panel.avatar_unlock_level": "Reach level",
|
||
"panel.avatar_unlock_points": "Total points earned",
|
||
"panel.avatar_unlock_streak": "Best streak (days)",
|
||
"panel.toast_avatars_saved": "Avatars saved",
|
||
"child.avatar_change": "Change your avatar",
|
||
"child.avatar_locked": "Locked",
|
||
"child.avatar_change_failed": "Could not change avatar.",
|
||
"panel.tab_challenges": "Challenges",
|
||
"panel.challenge_title": "Challenges",
|
||
"panel.search_challenges": "Search challenges…",
|
||
"panel.btn_add_challenge": "Add challenge",
|
||
"panel.challenge_add_tile": "Add challenge",
|
||
"panel.empty_challenges_title": "No challenges yet",
|
||
"panel.empty_challenges_copy": "Set a daily or weekly target — complete N chores or earn N points — for a bonus that refreshes each period.",
|
||
"panel.entity_challenge": "challenge",
|
||
"panel.challenge_scope_label": "Refreshes",
|
||
"panel.challenge_scope_daily": "Daily",
|
||
"panel.challenge_scope_weekly": "Weekly",
|
||
"panel.challenge_metric_label": "Goal type",
|
||
"panel.challenge_metric_chores": "Chores completed",
|
||
"panel.challenge_metric_points": "{points_name} earned",
|
||
"panel.challenge_target_label": "Target",
|
||
"panel.challenge_target_hint": "How many to reach within the period.",
|
||
"panel.dialog_add_challenge": "Add challenge",
|
||
"panel.dialog_edit_challenge": "Edit challenge",
|
||
"panel.toast_challenge_added": "Challenge added",
|
||
"panel.toast_challenge_updated": "Challenge updated",
|
||
"panel.settings_allow_negative_label": "Allow negative balance",
|
||
"panel.settings_allow_negative_hint": "Let penalties take a child's balance below zero instead of stopping at zero.",
|
||
"panel.chore_depends_label": "Depends on",
|
||
"panel.chore_depends_hint": "This chore stays hidden until the selected chores are approved for the child today.",
|
||
"panel.notif_quiet_hours_label": "Quiet hours",
|
||
"panel.notif_quiet_hours_desc": "No reminders are sent to this child during this window (do-not-disturb). Leave blank to disable.",
|
||
"notification.mandatory_reminder.name": "Mandatory chore reminder",
|
||
"notification.mandatory_reminder.description": "Nudges the child when a mandatory chore is overdue, then reminds again after the escalation delay. Off by default.",
|
||
"notification.mandatory_parent_alert.name": "Mandatory chore parent alert",
|
||
"notification.mandatory_parent_alert.description": "Alerts a parent when a mandatory chore is still incomplete after the parent escalation delay. Off by default.",
|
||
"panel.notif_escalation_reminder_label": "Remind again after",
|
||
"panel.notif_escalation_parent_label": "Alert parent after",
|
||
"panel.notif_escalation_minutes_suffix": "min",
|
||
"notification.monthly_report.name": "Monthly report",
|
||
"notification.monthly_report.description": "A start-of-month recap of each child's previous month (chores, points, level, best streak). Off by default.",
|
||
"leaderboard.sort_this_month": "This Month",
|
||
"leaderboard.last_champion": "Last month's champion: {name} 🏆",
|
||
"notification.season_champion.name": "Season champion",
|
||
"notification.season_champion.description": "Announces the monthly leaderboard winner at the start of each month. Off by default.",
|
||
"panel.ics_title": "Calendar subscription",
|
||
"panel.ics_hint": "Subscribe to upcoming chores from Google/Apple/Outlook calendar. The link contains a private token — share it carefully.",
|
||
"panel.ics_show": "Show subscribe link",
|
||
"panel.ics_copy": "Copy",
|
||
"panel.ics_regenerate": "Regenerate link",
|
||
"panel.ics_copied": "Subscribe link copied",
|
||
"panel.ics_regenerated": "New link generated — old subscriptions stopped",
|
||
"gallery.default_title": "Photo gallery",
|
||
"gallery.empty": "No evidence photos yet",
|
||
"gallery.pending": "pending",
|
||
"panel.allowance_title": "Allowance",
|
||
"panel.allowance_hint": "Convert points to a real-money allowance. Record payouts via the record_allowance_payout service or a dashboard button.",
|
||
"panel.allowance_enabled": "Enable allowance payouts",
|
||
"panel.allowance_rate": "Points per unit",
|
||
"panel.allowance_rate_hint": "How many points equal one unit of currency.",
|
||
"panel.allowance_currency": "Currency symbol",
|
||
"panel.allowance_ledger": "Recent payouts",
|
||
"family_goal.default_title": "Family goal",
|
||
"family_goal.disabled": "No family goal set",
|
||
"family_goal.reward_label": "Reward: {reward}",
|
||
"family_goal.reached": "Goal reached! {reward}",
|
||
"panel.family_goal_title": "Family goal",
|
||
"panel.family_goal_hint": "A shared target across all children's combined points (e.g. everyone hits 500 → family movie night).",
|
||
"panel.family_goal_enabled": "Enable family goal",
|
||
"panel.family_goal_name": "Goal name",
|
||
"panel.family_goal_name_ph": "Movie night fund",
|
||
"panel.family_goal_target": "Target (combined points)",
|
||
"panel.family_goal_target_hint": "Sum of all children's points needed to reach the goal.",
|
||
"panel.family_goal_reward": "Reward",
|
||
"panel.family_goal_reward_ph": "a family movie night",
|
||
"notification.family_goal_reached.name": "Family goal reached",
|
||
"notification.family_goal_reached.description": "Celebrates when the family's combined points reach the shared goal. Off by default."
|
||
}
|