<?php
return [
    '_name' => 'English',

    'common.none' => 'None',
    'common.yes' => 'Yes',
    'common.no' => 'No',
    'common.on' => 'ON',
    'common.off' => 'OFF',
    'common.enabled' => 'Enabled',
    'common.disabled' => 'Disabled',
    'common.active' => 'ACTIVE',
    'common.banned' => 'BANNED',
    'common.clear' => 'Clear',
    'common.delete' => 'Delete',
    'common.edit' => 'Edit',
    'common.save' => 'Save',
    'common.search' => 'Search',
    'common.open' => 'Open',
    'common.remove' => 'Remove',
    'common.assign' => 'Assign',
    'common.report' => 'Report',
    'common.submit' => 'Submit',
    'common.approve' => 'Approve',
    'common.reject' => 'Reject',
    'common.status' => 'Status',
    'common.type' => 'Type',
    'common.user' => 'User',
    'common.username' => 'Username',
    'common.email' => 'Email',
    'common.password' => 'Password',
    'common.role' => 'Role',
    'common.points' => 'Points',
    'common.bonus' => 'Bonus',
    'common.joined' => 'Joined',
    'common.created' => 'Created',
    'common.description' => 'Description',
    'common.label' => 'Label',
    'common.source' => 'Source',
    'common.level' => 'Level',
    'common.demon' => 'Demon',
    'common.player' => 'Player',
    'common.progress' => 'Progress',
    'common.platform' => 'Platform',
    'common.refresh' => 'Refresh',
    'common.proof' => 'Proof',
    'common.raw_footage' => 'Raw Footage',
    'common.notes' => 'Notes',
    'common.author' => 'Author',
    'common.comment' => 'Comment',
    'common.comments' => 'Comments',
    'common.reports' => 'Reports',
    'common.permission' => 'Permission',
    'common.latest' => 'Latest',
    'common.submitted' => 'Submitted',
    'common.reviewed_at' => 'Reviewed At',
    'common.submitter' => 'Submitter',
    'common.optional' => 'optional',
    'common.back_to_list' => 'Back to list',
    'common.back_to_main_list' => 'Back to Main List',
    'common.not_set' => 'Not set',
    'common.no_country' => 'No country',
    'common.unknown' => 'Unknown',
    'common.you' => '(you)',
    'common.recaptcha_failed' => 'Google reCAPTCHA verification failed. Please complete the checkbox and try again.',

    'status.pending' => 'pending',
    'status.approved' => 'approved',
    'status.rejected' => 'rejected',

    'role.owner' => 'Owner',
    'role.list_editor' => 'List Editor',
    'role.list_helper' => 'List Helper',
    'role.player' => 'Player',

    'nav.main_list' => 'Main List',
    'nav.guidelines' => 'Guidelines',
    'nav.roulette' => 'Roulette',
    'nav.time_machine' => 'Time Machine',
    'nav.stats' => 'Stats Viewer',
    'nav.admin' => 'Admin',
    'nav.profile' => 'View Profile',
    'nav.submit' => 'Record Submitter',
    'nav.login' => 'Login',
    'nav.logout' => 'Logout',
    'nav.language' => 'Language',

    'footer.navigation' => 'Navigation',
    'footer.account' => 'Account',
    'footer.register' => 'Register',
    'footer.my_account' => 'My Account',
    'footer.submit_record' => 'Submit Record',
    'footer.rights' => 'All rights reserved {app} and the {app} are in no way affiliated with RobTopGamesAB.',

    'list.main' => 'Main List',
    'list.extended' => 'Extended List',
    'list.legacy' => 'Legacy List',
    'list.filter' => 'Filter...',
    'list.filter_shown' => 'Filter shown demons...',
    'list.no_entries' => 'No entries in this list.',
    'list.published_by' => 'published by',
    'list.verified_by' => 'verified by',
    'list.points' => 'points',
    'list.currently_legacy' => 'Currently Legacy',
    'list.currently_rank' => 'Currently #{rank}',
    'list.desc.main_all_merged' => 'All ranked demons are currently merged into this single list.',
    'list.desc.main_extended_merged' => 'Main and Extended entries are merged into this list.',
    'list.desc.main_legacy_merged' => 'Main and Legacy entries are merged into this list.',
    'list.desc.main_range' => 'Top 1-{limit} demons in the current list.',
    'list.desc.extended_empty' => 'No ranks are currently assigned to Extended List.',
    'list.desc.extended_range' => 'Demons top {from}-{to}',
    'list.desc.count_score' => 'that still count toward score',
    'list.desc.legacy' => 'Demons top {from}+ or manually marked as legacy.',

    'level_info.position' => 'Position',
    'level_info.category' => 'Category',
    'level_info.difficulty' => 'Difficulty',
    'level_info.requirement' => 'Requirement',
    'level_info.creator' => 'Created by',
    'level_info.publisher' => 'Published by',
    'level_info.verifier' => 'Verified by',
    'level_info.level_id' => 'Level ID',
    'level_info.level_length' => 'Level Length',
    'level_info.song' => 'Song',
    'level_info.object_count' => 'Object Count',

    'flash.invalid_token' => 'Invalid session token.',
    'flash.login_required_submit' => 'You need to login before submitting records.',
    'flash.admin_required' => 'Admin permission required.',
    'flash.no_permission' => 'You do not have permission to access this page.',

    'setup.title' => 'Demonlist setup',
    'setup.intro' => 'Fill in the details below. The installer creates the configuration, database tables, and Owner account.',
    'setup.section_list' => 'List details',
    'setup.section_database' => 'Database',
    'setup.section_discord' => 'Discord',
    'setup.section_owner' => 'Owner account',
    'setup.section_security' => 'Security check',
    'setup.name' => 'List name',
    'setup.tagline' => 'Short description',
    'setup.base_url' => 'Installation path',
    'setup.public_url' => 'Public URL (optional)',
    'setup.timezone' => 'Timezone',
    'setup.default_language' => 'Default language',
    'setup.db_host' => 'MySQL host',
    'setup.db_port' => 'Port',
    'setup.db_name' => 'Database name',
    'setup.db_user' => 'MySQL username',
    'setup.db_password' => 'MySQL password',
    'setup.discord_hint' => 'Discord settings are optional. Fill them now if you want webhooks, bot DMs, or the server widget ready after setup.',
    'setup.discord_webhook_url' => 'Webhook URL',
    'setup.discord_bot_token' => 'Bot token',
    'setup.discord_bot_api_base_url' => 'Bot API base URL',
    'setup.discord_server_widget_url' => 'Server widget URL',
    'setup.discord_server_id' => 'Server ID',
    'setup.discord_server_theme' => 'Widget theme',
    'setup.discord_theme_dark' => 'Dark',
    'setup.discord_theme_light' => 'Light',
    'setup.recaptcha_hint' => 'Create a Google reCAPTCHA v2 Checkbox key pair for this domain, then paste the site key and secret key below.',
    'setup.recaptcha_site_key' => 'Google reCAPTCHA site key',
    'setup.recaptcha_secret_key' => 'Google reCAPTCHA secret key',
    'setup.recaptcha_reload_hint' => 'The checkbox appears after the site key is entered. If you change the key, complete the checkbox again.',
    'setup.recaptcha_enter_site_key' => 'Enter the site key to load Google reCAPTCHA.',
    'setup.owner_name' => 'Owner username',
    'setup.owner_email' => 'Owner email (optional)',
    'setup.owner_password' => 'Owner password',
    'setup.owner_password_confirm' => 'Confirm password',
    'setup.install' => 'Install and open list',
    'setup.installed' => 'This list has already been installed. The installer will remove itself if file permissions allow it.',
    'setup.open' => 'Open main list',
    'setup.error_prefix' => 'Could not finish setup:',
    'setup.error.required' => 'Please complete all required fields.',
    'setup.error.owner_username' => 'Owner username must be 3-40 letters, numbers, dots, underscores, or hyphens.',
    'setup.error.owner_password' => 'Owner password must contain at least 8 characters.',
    'setup.error.owner_password_match' => 'Owner passwords do not match.',
    'setup.error.owner_email' => 'Owner email is invalid.',
    'setup.error.db_port' => 'MySQL port is invalid.',
    'setup.error.recaptcha_keys' => 'Google reCAPTCHA site key and secret key are required.',
    'setup.error.recaptcha' => 'Google reCAPTCHA verification failed. Please complete the checkbox and try again.',
    'setup.error.url' => '{field} must be a valid URL.',
    'setup.error.schema_missing' => 'db/schema.sql was not found.',
    'setup.error.schema_read' => 'db/schema.sql could not be read.',
    'setup.error.db_connect' => 'Could not connect to MySQL. Check database settings.',
    'setup.error.owner_create' => 'Could not create the Owner account.',
    'setup.error.config_write' => 'Could not write config.php. Check folder permissions.',

    'auth.login.title' => 'Login',
    'auth.login.heading' => 'Player Login',
    'auth.login.intro' => 'Login to submit completion records.',
    'auth.login.button' => 'Login',
    'auth.login.new_player' => 'New player?',
    'auth.login.create_account' => 'Create account',
    'auth.login.welcome' => 'Welcome back, {name}.',
    'auth.login.error_token' => 'Invalid form token. Please refresh and try again.',
    'auth.login.error_required' => 'Username and password are required.',
    'auth.login.error_locked' => 'Too many failed attempts. Try again in {minutes} minute(s).',
    'auth.login.error_invalid' => 'Invalid username or password.',
    'auth.login.error_failed' => 'Login failed. Make sure you imported the latest db/schema.sql.',
    'auth.register.title' => 'Register',
    'auth.register.heading' => 'Player Registration',
    'auth.register.intro' => 'Create an account to submit completion records.',
    'auth.register.button' => 'Create Account',
    'auth.register.already' => 'Already registered?',
    'auth.register.login_now' => 'Login now',
    'auth.register.email_optional' => 'Email (optional)',
    'auth.register.confirm_password' => 'Confirm Password',
    'auth.register.created' => 'Account created successfully. You can now submit records.',
    'auth.register.created_login' => 'Account created. Please login.',
    'auth.register.error_username' => 'Username must be 3-24 characters using letters, numbers, or underscore.',
    'auth.register.error_password' => 'Password must be at least 8 characters.',
    'auth.register.error_password_match' => 'Password confirmation does not match.',
    'auth.register.error_email' => 'Email format is invalid.',
    'auth.register.error_exists' => 'Username or email already exists.',
    'auth.register.error_failed' => 'Registration failed. Make sure you imported the latest db/schema.sql.',
    'auth.logout.invalid' => 'Invalid logout request.',
    'auth.logout.success' => 'You have been logged out.',

    'home.title' => 'Main List',
    'home.heading' => 'Geometry Dash Demonlist',
    'home.intro_all' => 'The main list currently shows every ranked demon with no section limits.',
    'home.intro_default' => 'The main list of the Demonlist with ranked hardest levels in the game.',
    'home.editors' => 'List Editors',
    'home.helpers' => 'List Helpers',
    'home.editors_note' => 'Contact any of these people if you have problems with the list or want to see a specific thing changed.',
    'home.helpers_note' => 'Contact these people if you have any questions regarding why a specific record was rejected. Do not needlessly bug them about checking submissions though!',
    'home.no_editors' => 'No list editors yet.',
    'home.no_helpers' => 'No list helpers yet.',
    'home.youtube_channel' => 'YouTube Channel',
    'home.guidelines_title' => 'Guidelines',
    'home.guidelines_text' => 'Only legitimate, unedited runs with clear proof are accepted. All records are reviewed manually.',
    'home.guidelines_button' => 'Submission Guidelines',
    'home.read_guidelines' => 'Read Guidelines',
    'home.submit_title' => 'Submit Record',
    'home.submit_text' => 'Note: Please do not submit nonsense, it only makes it harder for us all and will get you banned. Also note that the form rejects duplicate submissions.',
    'home.submit_button' => 'Open Submit',
    'home.stats_title' => 'Stats Viewer',
    'home.stats_text' => 'Get a detailed overview of who completed the most, created the most demons, or beat the hardest demons. Compare your progress and climb the leaderboard.',
    'home.stats_button' => 'Open stats viewer!',
    'home.discord_title' => 'Discord Server',

    'guidelines.title' => 'Guidelines',
    'guidelines.heading' => 'Submission Guidelines',
    'guidelines.intro' => 'These rules are based on the common Pointercrate-style moderation standard.',
    'guidelines.important_label' => 'Important:',
    'guidelines.important_text' => 'Every submission is manually reviewed. Missing proof or suspicious footage will be rejected.',
    'guidelines.tip_label' => 'Tip:',
    'guidelines.tip_text' => 'Keep the video public/unlisted and include useful run notes. Cleaner evidence means faster approval.',
    'guidelines.submit_button' => 'Go to Submit a Record',
    'guidelines.s1_title' => '1. Account & Ownership',
    'guidelines.s1_p1' => 'You must be logged in with your own player account when submitting.',
    'guidelines.s1_p2' => 'Do not submit records on behalf of other players unless a moderator explicitly asks for it.',
    'guidelines.s2_title' => '2. Video Proof Requirements',
    'guidelines.s2_p1' => 'Your proof must be clear, unedited, and continuous from attempt start to death/completion.',
    'guidelines.s2_p2' => 'The video should keep original audio and must not hide critical gameplay information.',
    'guidelines.s2_p3' => 'No cuts, speed edits, or visual tampering.',
    'guidelines.s2_p4' => 'No overlays that hide transitions, inputs, or attempt context.',
    'guidelines.s2_p5' => 'Video quality must be high enough to verify gameplay legitimacy.',
    'guidelines.s3_title' => '3. Legitimacy Rules',
    'guidelines.s3_p1' => 'Any hacked, tool-assisted, botted, macro-assisted, noclip, or modified run is prohibited.',
    'guidelines.s3_p2' => 'Runs using gameplay-altering mods, replay tools, or external automation will be denied.',
    'guidelines.s4_title' => '4. Submission Data Accuracy',
    'guidelines.s4_p1' => 'Choose the exact demon name and submit the real progress you achieved.',
    'guidelines.s4_p2' => 'Progress below the demon requirement is automatically invalid for list records.',
    'guidelines.s4_p3' => 'Your platform and refresh rate must match the run shown in the proof.',
    'guidelines.s5_title' => '5. Raw Footage & Extra Evidence',
    'guidelines.s5_p1' => 'Raw footage is strongly recommended for difficult records and may be required by moderators.',
    'guidelines.s5_p2' => 'If requested evidence is not provided in time, the submission can be rejected.',
    'guidelines.s6_title' => '6. Review Outcomes',
    'guidelines.s6_approved' => 'Approved:',
    'guidelines.s6_approved_text' => 'record is added to the public list.',
    'guidelines.s6_rejected' => 'Rejected:',
    'guidelines.s6_rejected_text' => 'record stays out of the list; you can resubmit with better proof.',
    'guidelines.s6_flagged' => 'Flagged:',
    'guidelines.s6_flagged_text' => 'moderators may request extra clips, raw files, or clarification.',
    'guidelines.s7_title' => '7. Abuse & Penalties',
    'guidelines.s7_p1' => 'Fake submissions, impersonation, repeated spam, or intentionally misleading evidence may result in restrictions.',

    'submit.title' => 'Submit',
    'submit.heading' => 'Submit a Record',
    'submit.as_user' => 'Submitting as',
    'submit.level_name' => 'Level Name (type to search)',
    'submit.type_demon' => 'Type demon name...',
    'submit.hint_all' => 'All ranked demons are available. Type any part of the name to get suggestions.',
    'submit.hint_current' => 'Current ranked demons only. Type any part of the name to get suggestions.',
    'submit.progress' => 'Progress (%)',
    'submit.video_url' => 'Video Proof URL',
    'submit.raw_url' => 'Raw Footage URL (optional)',
    'submit.raw_placeholder' => 'Optional raw footage URL',
    'submit.refresh_rate' => 'Refresh Rate (Hz)',
    'submit.notes' => 'Moderator Notes (optional)',
    'submit.notes_placeholder' => 'Attempts, run context, bugs, clicks, etc.',
    'submit.agree' => 'I have read and agree with the',
    'submit.guidelines_link' => 'submission guidelines',
    'submit.button' => 'Send Submission',
    'submit.error_token' => 'Invalid form token. Reload page and try again.',
    'submit.error_agree' => 'You must confirm that you read the guidelines.',
    'submit.error_ambiguous' => 'Your search matches multiple demons. Please type the full level name.',
    'submit.error_demon' => 'Please type a valid demon name from the current ranked list.',
    'submit.error_video' => 'A valid video proof URL is required.',
    'submit.error_raw' => 'Raw footage URL must be a valid URL if provided.',
    'submit.error_progress' => 'Progress must be between 1 and 100.',
    'submit.error_requirement' => 'Progress is below this demon requirement ({requirement}%).',
    'submit.error_platform' => 'Invalid platform value.',
    'submit.error_refresh' => 'Refresh rate must be between 30 and 1000.',
    'submit.success' => 'Record submission queued for admin review.',
    'submit.discord_new' => 'New submission #{id}',

    'roulette.title' => 'Roulette',
    'roulette.heading' => 'Extreme Demon Roulette',
    'roulette.intro' => 'The Extreme Demon Roulette is a challenge where you must go through as many demons as possible, with the challenge ending when you get 100% or give up.',
    'roulette.panel_intro' => 'Play the Demon Roulette challenge against the current list.',
    'roulette.meta_description' => 'Play the Demon Roulette challenge with levels from the Demonlist.',
    'roulette.save' => 'Save',
    'roulette.load' => 'Load',
    'roulette.start' => 'Start',
    'roulette.restart' => 'Restart',
    'roulette.reset' => 'Reset',
    'roulette.results' => 'Results',
    'roulette.show_remaining' => 'Show remaining demons',
    'roulette.remaining' => 'Remaining Demons',
    'roulette.done' => 'Done',
    'roulette.give_up' => 'Give up',
    'roulette.copy_id' => 'Copy ID',
    'roulette.copied' => 'Copied',
    'roulette.level_id' => 'Level ID: {id}',
    'roulette.at_least' => 'At least {percent}%',
    'roulette.progress_for' => 'Progress for {name}',
    'roulette.open' => 'Open {name}',
    'roulette.alert_select_list' => 'Select at least one list.',
    'roulette.alert_no_demons' => 'No demons available in the selected lists.',
    'roulette.alert_progress' => 'Enter a progress between {min}% and 100%.',
    'roulette.error_at_least' => 'Enter at least {percent}%.',
    'roulette.confirm_give_up' => 'Give up on this roulette run?',
    'roulette.error_invalid_save' => 'Invalid save file.',
    'roulette.error_empty_save' => 'Save file has no demons.',
    'roulette.confirm_reset' => 'Reset saved roulette progress?',
    'roulette.loaded' => 'Roulette save loaded.',
    'roulette.load_failed' => 'Could not load that roulette save.',
    'roulette.saved_filename' => 'demon-roulette-progress.json',

    'time.title' => 'Time Machine',
    'time.meta_description' => 'View the Demonlist at a previous point in time.',
    'time.banner' => 'You are currently looking at the demonlist how it was on',
    'time.present' => 'Go to present',
    'time.intro' => 'Enter the date you want to view the list at below.',
    'time.destination' => 'Destination',
    'time.go' => 'Go',
    'time.no_demons_title' => 'No Demons Yet',
    'time.no_demons_text' => 'No levels existed at this destination.',
    'time.about' => 'About',
    'time.about_text' => 'Historical positions are reconstructed from recorded list changes. The earliest selectable date is the date the first level was added to this list.',
    'time.main_snapshot' => 'Main List entries in this historical snapshot.',
    'time.extended_snapshot' => 'Extended List entries in this historical snapshot.',
    'time.legacy_snapshot' => 'Legacy entries in this historical snapshot.',

    'stats.title' => 'Stats Viewer',
    'stats.intro' => 'Compare players by points, completions, hardest demons, and contributions',
    'stats.players_tab' => 'Players',
    'stats.countries_tab' => 'Countries',
    'stats.no_country' => 'No country data available yet.',
    'stats.no_player' => 'No player data available yet.',
    'stats.nation_rank' => 'Nation rank',
    'stats.demonlist_rank' => 'Demonlist rank',
    'stats.total_points' => 'Total points',
    'stats.players' => 'Players',
    'stats.best_player' => 'Best player',
    'stats.hardest_demon' => 'Hardest demon',
    'stats.demonlist_stats' => 'Demonlist stats',
    'stats.contributions' => 'Contributions',
    'stats.main_completed' => 'Main list completed',
    'stats.extended_completed' => 'Extended list completed',
    'stats.legacy_completed' => 'Legacy list completed',
    'stats.created' => 'Demons created',
    'stats.published' => 'Demons published',
    'stats.verified' => 'Demons verified',
    'stats.progress_on' => 'Progress on',
    'stats.international' => 'International',
    'stats.world' => 'WORLD - International',
    'stats.search_placeholder' => 'Enter to search...',
    'stats.clear_search' => 'Clear search',
    'stats.previous' => 'Previous',
    'stats.next' => 'Next',
    'stats.breakdown' => '{main} Main, {extended} Extended, {legacy} Legacy',
    'stats.contrib_counts' => '{created} Created, {published} Published, {verified} Verified',

    'demon.not_found_title' => 'Level not found',
    'demon.not_found_text' => 'This entry does not exist.',
    'demon.byline_by' => 'by',
    'demon.and' => 'and',
    'demon.more' => 'more',
    'demon.thumbnail_alt' => '{name} thumbnail',
    'demon.video_iframe_title' => '{name} verification',
    'demon.meta_description' => '#{position} - {name} by {creator}, published by {publisher}{verified}. {requirement}% to qualify, {points} points at 100%.',
    'demon.meta_verified_by' => ', verified by {verifier}',
    'demon.prev' => 'Prev',
    'demon.next' => 'Next',
    'demon.verification_video' => 'Verification Video',
    'demon.level_info' => 'Level Info',
    'demon.no_level_info' => 'No level info rows configured.',
    'demon.scoring' => 'Scoring',
    'demon.at_requirement' => 'At Requirement',
    'demon.at_100' => 'At 100%',
    'demon.completions' => 'Completions',
    'demon.verification_preview' => 'Verification Preview',
    'demon.records' => 'Records',
    'demon.qualify' => '{requirement}% or better to qualify',
    'demon.records_submitted' => '{count} records submitted',
    'demon.no_records' => 'No records yet',
    'demon.record_holder' => 'Record Holder',
    'demon.video_proof' => 'Video Proof',
    'demon.position_history' => 'Position History',
    'demon.date_change' => 'Date Change',
    'demon.new_position' => 'New Position',
    'demon.reason' => 'Reason',
    'demon.no_position_history' => 'No position changes recorded yet.',
    'demon.initial_placement' => 'Initial placement',
    'demon.position_updated' => 'Position updated',
    'demon.comments_count_one' => '{count} comment on this level.',
    'demon.comments_count_many' => '{count} comments on this level.',
    'demon.add_comment' => 'Add Comment',
    'demon.comment_placeholder' => 'Share a thought about this level...',
    'demon.signed_in_as' => 'Signed in as {name}',
    'demon.post_comment' => 'Post Comment',
    'demon.no_comments' => 'No comments yet.',
    'demon.comment_pages' => 'Comment pages',
    'demon.page' => 'Page {page}',
    'comment.pinned' => 'Pinned',
    'comment.edited' => '(Edited)',
    'comment.actions' => 'Comment actions',
    'comment.like' => 'Like',
    'comment.dislike' => 'Dislike',
    'comment.pin' => 'Pin',
    'comment.unpin' => 'Unpin',
    'comment.pin_title' => 'Pin comment',
    'comment.unpin_title' => 'Unpin comment',
    'comment.delete_title' => 'Delete comment',
    'comment.delete_confirm' => 'Delete this comment? Replies under it will also be removed.',
    'comment.edit_comment' => 'Edit Comment',
    'comment.save_edit' => 'Save Edit',
    'comment.reported' => 'Reported',
    'comment.reason_optional' => 'Reason (optional)',
    'comment.reply' => 'Reply',
    'comment.add_reply' => 'Add Reply',
    'comment.reply_placeholder' => 'Write a reply...',
    'comment.post_reply' => 'Post Reply',
    'comment.reply_count_one' => '{count} reply',
    'comment.reply_count_many' => '{count} replies',
    'comments.disabled_global' => 'Comments are disabled for the whole list.',
    'comments.disabled_level' => 'Comments are disabled for this level.',
    'comments.disabled' => 'Comments are disabled.',
    'comments.account_disabled' => 'Your account is disabled from commenting.',
    'comments.login_required' => 'You need to login first.',
    'comments.reply_target_missing' => 'Could not find the comment you are replying to.',
    'comments.reply_schema_error' => 'Could not post reply. Please run the schema update and try again.',
    'comments.empty' => 'Comment cannot be empty.',
    'comments.posted' => 'Comment posted.',
    'comments.reply_posted' => 'Reply posted.',
    'comments.post_failed' => 'Could not post comment. Please try again.',
    'comments.actions_schema_error' => 'Comment actions are not ready yet. Please run the schema update.',
    'comments.not_found' => 'Comment not found.',
    'comments.edit_own_only' => 'You can only edit your own comments.',
    'comments.updated' => 'Comment updated.',
    'comments.update_failed' => 'Could not update comment.',
    'comments.delete_own_only' => 'You can only delete your own comments.',
    'comments.deleted' => 'Comment deleted.',
    'comments.delete_failed' => 'Could not delete comment.',
    'comments.invalid_reaction' => 'Invalid reaction.',
    'comments.reaction_failed' => 'Could not update reaction. Please try again.',
    'comments.report_sent' => 'Report sent.',
    'comments.report_failed' => 'Could not send report. Please try again.',
    'comments.pin_permission' => 'Only owners and list editors can pin comments.',
    'comments.pin_top_level_only' => 'Only top-level comments can be pinned.',
    'comments.pinned' => 'Comment pinned.',
    'comments.unpinned' => 'Comment unpinned.',
    'comments.pin_failed' => 'Could not update pinned comment.',

    'account.title' => 'Account',
    'account.heading' => 'My Account',
    'account.signed_in_as' => 'Signed in as',
    'account.display_name' => 'Display Name',
    'account.youtube_channel' => 'YouTube Channel',
    'account.country' => 'Country',
    'account.discord' => 'Discord',
    'account.profile_settings' => 'Profile Settings',
    'account.profile_staff_intro' => 'Set your display name, country, and YouTube channel for public pages.',
    'account.profile_player_intro' => 'Set your display name and country for public player pages.',
    'account.display_name_help' => 'Shown publicly across the site. Leave blank to use your username.',
    'account.country_placeholder' => 'Type country code or country name...',
    'account.country_help' => 'Type to search. Select an item to use its flag. Clear this field to unset country.',
    'account.youtube_placeholder' => 'e.g., https://www.youtube.com/@YourChannel',
    'account.youtube_help' => 'Enter your YouTube channel URL (optional). Only YouTube channels are supported.',
    'account.save_profile' => 'Save Profile',
    'account.discord_link' => 'Discord Link',
    'account.discord_intro' => 'Link your Discord account to receive private bot notifications about your records and levels.',
    'account.discord_db_missing' => 'Discord linking needs a database update. Run update_db_schema.php, then reload this page.',
    'account.discord_bot_missing' => 'Discord bot token is not configured yet.',
    'account.linked' => 'Linked',
    'account.user_id' => 'User ID',
    'account.unlink_discord' => 'Unlink Discord',
    'account.unlink_confirm' => 'Unlink your Discord account?',
    'account.code_sent' => 'Code sent to Discord user ID {id}. Expires at {time}.',
    'account.verification_code' => 'Verification Code',
    'account.verify_discord' => 'Verify Discord',
    'account.discord_user' => 'Discord User ID or Mention',
    'account.discord_user_placeholder' => '123456789012345678 or @mention',
    'account.discord_user_help' => 'Username alone is not reliable for bot DMs. Copy your Discord User ID, or paste an @mention.',
    'account.send_new_code' => 'Send New Code',
    'account.send_dm_code' => 'Send DM Code',
    'account.change_username' => 'Change Username',
    'account.new_username' => 'New Username',
    'account.new_username_placeholder' => 'Enter your new username',
    'account.username_help' => '3-24 characters, letters, numbers, and underscore only.',
    'account.change_email' => 'Change Email',
    'account.new_email' => 'New Email',
    'account.new_email_placeholder' => 'Enter your new email',
    'account.email_help' => 'You will receive a confirmation at your new email address.',
    'account.change_password' => 'Change Password',
    'account.current_password' => 'Current Password',
    'account.current_password_placeholder' => 'Enter your current password',
    'account.new_password' => 'New Password',
    'account.new_password_placeholder' => 'Enter your new password',
    'account.password_help' => 'Must be at least 8 characters.',
    'account.confirm_new_password' => 'Confirm New Password',
    'account.confirm_password_placeholder' => 'Confirm your new password',
    'account.submission_history' => 'My Submission History',
    'account.no_submissions' => 'No submissions yet.',
    'account.error_discord_columns' => 'Discord linking needs a database update before it can be used.',
    'account.error_discord_bot' => 'Discord bot token is not configured yet.',
    'account.error_discord_user' => 'Enter a valid Discord user ID or mention.',
    'account.error_discord_taken' => 'That Discord account is already linked to another user.',
    'account.error_discord_unlink_first' => 'Unlink your current Discord account before linking a new one.',
    'account.error_discord_dm' => 'Could not send the Discord DM. Make sure the bot can message that user.',
    'account.error_discord_code_format' => 'Enter the 4-digit Discord verification code.',
    'account.error_not_found' => 'Account not found.',
    'account.error_no_discord_code' => 'No active Discord verification code was found.',
    'account.error_discord_code_expired' => 'That Discord verification code expired. Send a new code.',
    'account.error_discord_code_wrong' => 'That Discord verification code is incorrect.',
    'account.error_display_name' => 'Display name must be 2-40 characters and cannot include control characters.',
    'account.error_country' => 'Choose a valid country code.',
    'account.error_email_empty' => 'Email cannot be empty.',
    'account.error_email_same' => 'That email is already set on your account.',
    'account.error_email_taken' => 'That email is already used by another account.',
    'account.error_email_failed' => 'Could not check that email right now.',
    'account.error_username_same' => 'That username is already set on your account.',
    'account.error_username_taken' => 'That username is already used by another account.',
    'account.error_username_failed' => 'Could not check that username right now.',
    'account.error_current_password_required' => 'Current password is required.',
    'account.error_current_password_wrong' => 'Current password is incorrect.',
    'account.error_new_password_required' => 'New password is required.',
    'account.error_new_password_short' => 'New password must be at least 8 characters.',
    'account.error_new_password_match' => 'New password confirmation does not match.',
    'account.error_new_password_same' => 'New password must be different from your current password.',
    'account.success_discord_dm' => 'Discord verification code sent. Check your DMs.',
    'account.success_discord_linked' => 'Discord account linked successfully.',
    'account.success_discord_unlinked' => 'Discord account unlinked.',
    'account.success_profile' => 'Profile updated.',
    'account.success_email' => 'Email updated.',
    'account.success_username' => 'Username updated.',
    'account.success_password' => 'Password updated.',

    'permission.admin_panel_access' => 'Admin Panel Access',
    'permission.manage_levels' => 'Manage Levels',
    'permission.claim_contributors' => 'Claim Contributors',
    'permission.manage_users' => 'Manage Users',
    'permission.manage_user_roles' => 'Manage User Roles',
    'permission.manage_scoring' => 'Change Score',
    'permission.manage_list_visibility' => 'Manage List Visibility',
    'permission.manage_role_permissions' => 'Manage Role Permissions',
    'permission.manage_badges' => 'Manage Badges',
    'permission.moderate_comments' => 'Moderate Comments',
    'permission.reset_passwords' => 'Reset Passwords',
    'permission.review_submissions' => 'Review Submissions',

    'admin.title' => 'Admin',
    'admin.access_denied' => 'Access Denied',
    'admin.signed_in_as' => 'Signed in as',
    'admin.overview' => 'Overview',
    'admin.overview_desc' => 'Dashboard summary.',
    'admin.content' => 'Content',
    'admin.moderation' => 'Moderation',
    'admin.people' => 'People',
    'admin.restricted' => 'Restricted',
    'admin.restricted_note' => 'Available to roles with the matching permission.',
    'admin.restricted_meta' => 'Restricted',
    'admin.empty_actions' => 'Your role currently has no admin actions assigned.',
    'admin.dashboard' => 'Admin Dashboard',
    'admin.dashboard_intro' => 'Moderation center for records and level management.',
    'admin.pending' => 'Pending',
    'admin.approved' => 'Approved',
    'admin.rejected' => 'Rejected',
    'admin.players' => 'Players',
    'admin.banned' => 'Banned',
    'admin.add_level' => 'Add Level',
    'admin.add_level_desc' => 'Create a new demon entry.',
    'admin.edit_level' => 'Edit Level',
    'admin.edit_level_desc' => 'Update level info and ranking.',
    'admin.delete_level' => 'Delete Level',
    'admin.delete_level_desc' => 'Remove a level and close the rank gap.',
    'admin.level_info_rows' => 'Level Info Rows',
    'admin.level_info_rows_desc' => 'Control rows shown on level pages.',
    'admin.level_comments' => 'Level Comments',
    'admin.level_comments_desc' => 'Open or close comments globally and per level.',
    'admin.level_comments_moderate_desc' => 'Review reported comments and delete abusive threads.',
    'admin.pending_submissions' => 'Pending Submissions',
    'admin.pending_submissions_desc' => 'Review new records in queue.',
    'admin.recently_reviewed' => 'Recently Reviewed',
    'admin.recently_reviewed_desc' => 'Check moderation history.',
    'admin.user_management' => 'User Management',
    'admin.user_management_desc' => 'Adjust role, ban status, comment access, and bonus points.',
    'admin.claim_contributors' => 'Claim Contributors',
    'admin.claim_contributors_desc' => 'Bind publisher/verifier to real accounts via user ID.',
    'admin.badges' => 'Badges',
    'admin.badges_desc' => 'Upload badge icons and assign them to accounts.',
    'admin.role_permissions' => 'Role Permissions',
    'admin.role_permissions_desc' => 'Customize List Editor and List Helper rights in database.',
    'admin.list_visibility' => 'List Visibility',
    'admin.list_visibility_desc' => 'Choose section visibility and rank ranges for Main/Extended.',
    'admin.change_score' => 'Change Score',
    'admin.change_score_desc' => 'Adjust the highest score on the list.',
    'admin.role_permissions_intro' => 'Customize List Editor and List Helper permissions stored in database. Owner always keeps full permissions.',
    'admin.save_role_permissions' => 'Save Role Permissions',
    'admin.badges_intro' => 'Uploaded badge images shown beside comments and on Stats Viewer profiles.',
    'admin.create_badge' => 'Create Badge',
    'admin.badge_label' => 'Badge Label',
    'admin.badge_label_placeholder' => 'Mythic Badge',
    'admin.badge_description_placeholder' => 'Optional hover text',
    'admin.upload_badge_image' => 'Upload Badge Image',
    'admin.assign_to_player' => 'Assign to Player',
    'admin.badge' => 'Badge',
    'admin.create_badge_first' => 'Create a badge first',
    'admin.exact_username' => 'Exact username',
    'admin.no_badges' => 'No badges created yet.',
    'admin.no_image' => 'No image',
    'admin.no_description' => 'No description',
    'admin.assigned_count' => '{count} assigned',
    'admin.edit_badge' => 'Edit badge',
    'admin.replace_image' => 'Replace Image',
    'admin.save_badge' => 'Save Badge',
    'admin.delete_badge_confirm' => 'Delete this badge and remove it from every user?',
    'admin.list_visibility_intro' => 'Owner-only setting for section visibility and rank ranges on the site.',
    'admin.show_extended_list' => 'Show Extended List as a separate section',
    'admin.show_legacy_list' => 'Show Legacy List as a separate section',
    'admin.main_list_max_rank' => 'Main List max rank',
    'admin.extended_list_max_rank' => 'Extended List max rank',
    'admin.list_visibility_help' => 'Allowed range: {min} to {max}. Extended max rank must be greater than or equal to Main max rank. Current split: Main #1-#{main}, Extended {extended}. Entries above Extended max rank (or marked legacy) go to Legacy when Legacy is ON. When a section is hidden, its demons are merged into Main and still count for score.',
    'admin.save_list_settings' => 'Save List Settings',
    'admin.scoring_intro' => 'Set the maximum score for the list.',
    'admin.top1_points' => 'Top 1 points (100% completion)',
    'admin.scoring_help' => 'Allowed range: {min} to {max}. Current #1 score: {current} points.',
    'admin.save_scoring' => 'Save Scoring Scale',
    'admin.level_info_rows_intro' => 'Choose built-in rows or add custom rows for the Level Info box on each level page.',
    'admin.built_in_field' => 'Built-in Field',
    'admin.custom_row' => 'Custom Row',
    'admin.custom_label' => 'Custom label',
    'admin.use_default_label' => 'Use default label',
    'admin.default_value' => 'Default Value',
    'admin.optional_fallback_value' => 'Optional fallback value',
    'admin.add_row' => 'Add Row',
    'admin.save_rows' => 'Save Rows',
    'admin.restore_defaults' => 'Restore Defaults',
    'admin.level_comments_intro' => 'Enable comments for the list, close comments per level, and review reported comments.',
    'admin.enable_all_comments' => 'Enable comments across the whole list',
    'admin.level_name_optional' => 'Level Name (optional)',
    'admin.type_level_name' => 'Type level name...',
    'admin.level_comment_status' => 'Level Comment Status',
    'admin.no_level_change' => 'No level change',
    'admin.enable_on_level' => 'Enable on this level',
    'admin.disable_on_level' => 'Disable on this level',
    'admin.comments_status_help' => 'Current global status: {status}. Levels with comments disabled: {count}. Only logged-in users can post comments.',
    'admin.save_comment_settings' => 'Save Comment Settings',
    'admin.reported_comments' => 'Reported Comments',
    'admin.reported_comments_load_failed' => 'Could not load reported comments.',
    'admin.reported_comments_load_error' => 'Could not load reported comments: {error}',
    'admin.reported_comments_count_one' => '{count} reported comment awaiting review.',
    'admin.reported_comments_count_many' => '{count} reported comments awaiting review.',
    'admin.no_reported_comments' => 'No reported comments right now.',
    'admin.report_count_one' => '{count} report',
    'admin.report_count_many' => '{count} reports',
    'admin.latest_at' => 'Latest: {time}',
    'admin.delete_reported_comment_confirm' => 'Delete this reported comment? Replies under it will also be removed.',
    'admin.delete_comment' => 'Delete Comment',
    'admin.claims_intro' => 'Attach publisher/verifier to a real account. Leave username blank to clear claim and keep text as unclaimed metadata.',
    'admin.claim_columns_missing' => 'Claim columns are missing in this database. Open update_db_schema.php once, then reload this page.',
    'admin.level_name' => 'Level Name',
    'admin.account_username_optional' => 'Account Username (optional)',
    'admin.clear_claim_placeholder' => 'Leave blank to clear claim',
    'admin.save_claim' => 'Save Claim',
    'admin.add_level_intro' => 'Owners and List Editors can add demons to the list. Extra level metadata is optional.',
    'admin.position_optional' => 'Position (optional)',
    'admin.auto_end' => 'Auto = end',
    'admin.requirement_percent' => 'Requirement (%)',
    'admin.creators' => 'Creator(s)',
    'admin.publisher' => 'Publisher',
    'admin.verifier' => 'Verifier',
    'admin.difficulty' => 'Difficulty',
    'admin.verification_video_url' => 'Verification Video URL',
    'admin.thumbnail_url_optional' => 'Thumbnail URL (optional)',
    'admin.level_description_optional' => 'Level Description (optional)',
    'admin.short_description_placeholder' => 'Short description shown above Level Info and Scoring',
    'admin.level_id_optional' => 'Level ID (optional)',
    'admin.level_length_optional' => 'Level Length (optional)',
    'admin.song_optional' => 'Song (optional)',
    'admin.object_count_optional' => 'Object Count (optional)',
    'admin.optional_value' => 'Optional value',
    'admin.custom_level_info' => 'Custom Level Info',
    'admin.mark_legacy' => 'Mark as Legacy list entry',
    'admin.disable_comments_for_level' => 'Disable comments for this level',
    'admin.edit_level_intro' => 'Update level information and ranking in one place.',
    'admin.level_to_edit' => 'Level to Edit',
    'admin.new_name_optional' => 'New Name (optional)',
    'admin.difficulty_optional' => 'Difficulty (optional)',
    'admin.requirement_optional' => 'Requirement % (optional)',
    'admin.creators_optional' => 'Creator(s) (optional)',
    'admin.publisher_optional' => 'Publisher (optional)',
    'admin.verifier_optional' => 'Verifier (optional)',
    'admin.verification_video_url_optional' => 'Verification Video URL (optional)',
    'admin.keep_current' => 'Keep current',
    'admin.keep_current_long' => 'Leave blank to keep current',
    'admin.keep_current_default' => 'Leave blank to keep current/default',
    'admin.clear_current_description' => 'Clear current level description',
    'admin.legacy_status' => 'Legacy Status',
    'admin.comment_status' => 'Comment Status',
    'admin.set_current_list' => 'Set as Current List',
    'admin.set_legacy' => 'Set as Legacy',
    'admin.enable_comments' => 'Enable comments',
    'admin.disable_comments' => 'Disable comments',
    'admin.new_position_optional' => 'New Position (optional)',
    'admin.move_note_optional' => 'Move Note (optional)',
    'admin.move_note_placeholder' => 'Reason for rank change',
    'admin.save_level_changes' => 'Save Level Changes',
    'admin.delete_level_intro' => 'Remove a level from the list. Records for that level are deleted and later positions are shifted down.',
    'admin.level_to_delete' => 'Level to Delete',
    'admin.confirm_level_name' => 'Confirm Level Name',
    'admin.confirm_level_placeholder' => 'Retype the exact level name',
    'admin.delete_level_warning' => 'This cannot be undone from the admin panel. Existing completion records and position history for this level are removed.',
    'admin.user_management_intro' => 'Adjust role, banned status, comment access, and bonus points for each account in one place.',
    'admin.user_management_no_role_access' => 'Your access does not include role changes; role fields are read-only.',
    'admin.error_role_permission' => 'You do not have permission to change user roles.',
    'admin.search_username' => 'Search Username',
    'admin.type_username' => 'Type username...',
    'admin.load_users_hint' => 'Enter a username and press Search to load users.',
    'admin.no_users_found' => 'No users found for "{query}".',
    'admin.adjust' => 'Adjust',
    'admin.bonus_adjust' => 'Bonus +/-',
    'admin.reset_password_title' => 'Generate a random temporary password',
    'admin.reset_password' => 'Reset Password',
    'admin.error_invalid_reset_user' => 'Invalid user ID for password reset.',
    'admin.user_not_found' => 'User not found.',
    'admin.password_reset_success' => 'Password reset for {user}. New temporary password: {password}',
    'admin.password_reset_failed' => 'Failed to reset password: {error}',
    'admin.last_owner_note' => 'Last owner cannot be demoted.',
    'admin.no_pending_submissions' => 'No pending submissions.',
    'admin.submitted_at' => 'Submitted: {time}',
    'admin.refresh' => 'Refresh',
    'admin.review_note' => 'Review Note',
    'admin.optional_note' => 'Optional note',
    'admin.approve_confirm' => 'Approve this submission?',
    'admin.reject_confirm' => 'Reject this submission?',
    'admin.no_reviewed_submissions' => 'No reviewed submissions yet.',
];
