{{ t('app_title') }}

{{ t('app_subtitle') }}
{{ seasonNameDisplay }} {{ seasonStartText }} 〜 {{ seasonEndText }}
{{ t('season_day_label', { current: seasonDayInfo.current, total: seasonDayInfo.total }) }}
{{ t('season_upcoming_label', { total: seasonDayInfo.total }) }}
{{ t('oneyear_banner_pre') }}{{ oneYearAgoSpiritName }}{{ t('oneyear_banner_post') }}
{{ activeRecordName }} {{ t('record_bar_suffix') }}
{{ t('wr_title') }} {{ hasLoggedWalkToday ? t('wr_today_done', { name: todayWalkLogSpiritName }) : t('wr_today_todo') }}
{{ t('wr_streak_active', { n: currentWalkStreak }) }} {{ t('wr_streak_empty') }} {{ t('wr_streak_best', { n: longestWalkStreak }) }}
{{ t('wr_log_today') }}
{{ m.text }}
{{ t('wr_legend_empty') }} {{ t('wr_legend_recorded') }}
{{ walkEditLabel }}
{{ walkEditEntry ? t('wr_edit_recorded', { name: walkEditSpiritName }) : t('wr_edit_none') }}

{{ t('wr_edit_hint') }}

{{ t('wr_tap_hint') }}

{{ t('record_title') }}

{{ t('record_hint') }}

{{ t('pfcur_label') }} {{ pfCurrencyOpen ? t('pfcur_toggle_close') : t('pfcur_toggle_open') }}

{{ t('dm_title') }}

{{ t('dm_hint') }}

{{ t('dm_import_confirm', { n: dmPendingImportCount }) }}
{{ t('dm_wipe_confirm') }}

{{ dmStatus }}

{{ t('dash_title') }}

{{ t('dash_last_updated_prefix') }} {{ dashLastUpdatedText }}

{{ dashRefreshStatus }}

{{ t('dash_loading') }}

{{ t('pficon_title') }}

{{ t('pficon_hint1') }}
{{ t('pficon_hint2_strong') }}{{ t('pficon_hint2') }}

{{ t('pficon_section_emoji') }}

{{ t('pficon_section_bgcolor') }}

{{ t('pficon_bgcolor_note') }}

{{ t('pficon_section_upload') }}

{{ t('pficon_section_preview') }}

{{ pfIconSaveStatus }}

{{ t('settings_title') }}

{{ t('settings_dark_mode_label') }}
{{ t('settings_shortcuts_enable_label') }}
? {{ t('settings_shortcut_open') }}
D {{ t('settings_shortcut_theme') }}
Esc {{ t('settings_shortcut_escape') }}

{{ t('compare_title') }}

{{ t('compare_hint') }}

{{ t('share_card_title') }}

{{ t('share_card_hint') }}

{{ t('share_card_download_btn') }}
{{ t('fc_title') }}
{{ showForecast ? t('fc_close') : t('fc_open') }}
{{ t('fc_desc') }}
{{ t('fc_grand_total') }} {{ grandTotalCandles }}
{{ t('mobile_owned') }} {{ t('calc_unit') }}
{{ t('goal_hearts', {n: totalHearts}) }}
{{ t('goal_complete_msg') }}
{{ t('calc_adpass_label') }}
{{ t('calc_unit') }}
{{ t('calc_unit') }}
{{ t('est_daily_hint') }}
{{ t('plan_title') }} {{ showMultiSpiritPlan ? t('plan_close') : t('plan_open') }}
{{ spiritName(activeSpirit) }}{{ t('pts_progress_suffix') }} {{ activePoints }} / {{ activeTier4Total }} p
{{ t('pts_current_status') }}
{{ activeStatusText }}
{{ t('pts_remaining_to_heart') }}
{{ Math.max(0, activeTier4Total - activePoints) }} p
{{ t('pts_congrats_label') }} {{ t('pts_congrats_rest') }}
{{ t('pts_advice_label') }} {{ t('pts_advice_pre') }} {{ activeRemainingDays }} {{ t('pts_advice_day_unit') }} {{ t('pts_advice_post', {n: activeTier4Total}) }} {{ t('pts_advice_warn') }}
{{ t('pts_actual_compare', { logged: activeSpiritLoggedWalkDays, counter: activeSpirit.walkDays }) }}
{{ t('heart_title') }}
{{ heartCopyStatus }}
{{ t('opt_title') }} {{ showOptimizer ? t('shared_close') : t('shared_open') }}
{{ t('opt_desc') }}
{{ t('opt_owned_note') }} {{ fmtNum(ownedCandles) }}
{{ t('opt_empty') }}
{{ idx + 1 }}
{{ row.name }}
{{ t('opt_done') }} {{ t('opt_now') }} {{ t('opt_unreachable') }} {{ row.dateText }}{{ t('opt_est_suffix') }} {{ row.inSeason ? t('opt_within') : t('opt_over') }}
{{ row.candles }}
{{ t('opt_cum') }} {{ row.cumulative }}
{{ t('opt_total_pre') }} {{ optimizerSummary.totalCost }}{{ t('opt_total_unit') }} ({{ t('opt_lack') }} {{ optimizerSummary.lack }}{{ t('opt_total_unit') }})
{{ t('opt_reachable_pre') }} {{ optimizerSummary.reachable }} / {{ optimizerSummary.total }}{{ t('opt_reachable_post') }}  {{ t('opt_reorder_hint') }}  
{{ optCopyStatus }}
{{ t('opt_note') }}
{{ t('shared_title') }} {{ showSharedTools ? t('shared_close') : t('shared_open') }}
{{ t('walk_title_pre') ? t('walk_title_pre') + ' ' : '' }}{{ spiritName(activeSpirit) }}{{ t('walk_title_post') }} +{{ activeSpirit.walkDays * 10 }} p
{{ activeSpirit.walkDays }} {{ t('walk_unit') }}
{{ t('tree_title_pre') ? t('tree_title_pre') + ' ' : '' }}{{ spiritName(activeSpirit) }}{{ t('tree_title_post') }}
{{ t('tree_right_col_note') }}
{{ t('tree_remaining_pre') }} {{ activeRemainingCandles }} / {{ activeTotalCandles }} {{ t('tree_remaining_mid') }} {{ activeDistributedCandles }} {{ t('tree_remaining_unit') }}{{ t('tree_remaining_post') }}
{{ t('tree_pass_heart_label') }}{{ t('tree_pass_frag1') }}{{ activeSpirit.treeData.tier4[2].candles }}{{ t('tree_pass_frag2') }}{{ t('tree_pass_adpass_label') }}{{ t('tree_pass_frag3') }}{{ t('tree_pass_holder_label') }}{{ t('tree_pass_frag4') }}{{ hasSeasonPass ? t('tree_pass_note_have') : t('tree_pass_note_none') }}
{{ t('tier1_title') }} {{ activePoints >= 40 ? t('tier_unlocked') : t('tier_remaining_pre') + (40 - activePoints) + t('tier_remaining_post') }}
{{ item.candles || 0 }}
{{ getLevel(getItemLabel(item)) }}
{{ cleanName(getItemLabel(item)) }}
{{ t('tier2_title') }} {{ activePoints >= activeTier2Total ? t('tier_unlocked') : t('tier_remaining_pre') + (activePoints < 40 ? activeTier2Total - 40 : activeTier2Total - activePoints) + t('tier_remaining_post') }}
{{ item.candles || 0 }}
{{ getLevel(getItemLabel(item)) }}
{{ cleanName(getItemLabel(item)) }}
{{ t('tier3_title', {n: activeTier2Total}) }} {{ activePoints >= activeTier3Total ? t('tier_unlocked') : t('tier_remaining_pre') + (activePoints < activeTier2Total ? activeTier3Total - activeTier2Total : activeTier3Total - activePoints) + t('tier_remaining_post') }}
{{ item.candles || 0 }}
{{ getLevel(getItemLabel(item)) }}
{{ cleanName(getItemLabel(item)) }}
{{ t('tier4_title', {n: activeTier3Total}) }} {{ activePoints >= activeTier4Total ? t('tier_unlocked') : t('tier_remaining_pre') + (activePoints < activeTier3Total ? activeTier4Total - activeTier3Total : activeTier4Total - activePoints) + t('tier_remaining_post') }}
{{ item.candles || 0 }}
{{ getLevel(getItemLabel(item)) }}
{{ cleanName(getItemLabel(item)) }}
{{ activeSpirit.treeData.tier4[2].candles || 0 }}
MAX
{{ t('heart_node_name') }}
{{ activeSpirit.treeData.tier4[2].checked ? t('heart_node_got') : (activeTier4Total + 'p') }}
{{ t('info_title') }}
{{ t('info_1') }}
{{ t('info_2') }}
{{ t('info_3') }}
{{ toastMessage }}