`AtlasCreatureDto.places` was typed `List<String>` while the server sends
`{facet, label, spawners, maxAlive}` objects. The detail route answers 200 with
~49 KB, kotlinx throws on decode, and the screen renders "Something went wrong
on the server" — so the whole Atlas creature page was dead, and the error
blamed a server that was fine. Nullable-with-defaults protects against a
missing field, never a wrong element type.
Adds AtlasPlaceDto, plus the `art` field the server also sends, so a decode
cannot depend on that staying absent (neither client renders art yet).
`places` was never rendered either, so the aggregate the atlas exists to give —
"Shrines, Isamu-Jima, Yew", resolved server-side by point-in-rect — was missing
from the app while the web page led with it. Adds a "Where it spawns" section
above the individual spawners, matching web's ordering, and a plural for the
spawner count now that single-spawner places are on screen in bulk.
Adds ShardContentDtoTest — the first decode test any of the four Protocol 3.0
DTOs has had, fed payloads captured from a live server. That absence is the
root cause: the fakes in data/api/fake/ construct DTOs in Kotlin, so no test in
the suite could see a wire mismatch, even though PLAN.md §9 already required
"DTO decode for each new shape".
Also renders a placeholder row on an unscored leaderboard (the instance name,
em dash where a score goes) rather than a blank card — deliberately not shaped
like a real entry, since a placeholder that looked like a standing would be a
fabricated one.
Found by the on-device five-rung walk against a live shard; all four screens
re-verified on the emulator afterwards.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U7CBg11prhLimL9iHSX1bP
515 lines
34 KiB
XML
515 lines
34 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
|
||
<!--
|
||
All user-facing strings are externalized from day one (PLAN.md §2): English is
|
||
the only bundled locale, but the structure invites community translations.
|
||
No hardcoded UI strings in Kotlin.
|
||
-->
|
||
<resources>
|
||
<!-- Fixed launcher name, baked at build even though in-app branding is per-shard (PLAN.md §13). -->
|
||
<string name="app_name">Runic Gateway</string>
|
||
|
||
<!-- ── Shared actions / errors ─────────────────────────────────────── -->
|
||
<string name="action_retry">Retry</string>
|
||
<string name="action_back">Back</string>
|
||
<string name="error_network">Can\'t reach the site. Check your connection and try again.</string>
|
||
<string name="error_not_found">This content couldn\'t be found.</string>
|
||
<string name="error_rate_limited">Too many requests. Please try again in a moment.</string>
|
||
<string name="error_shard_offline">The shard is offline right now.</string>
|
||
<string name="error_feature_unavailable">This shard doesn\'t publish this here.</string>
|
||
<string name="error_server">Something went wrong on the server. Please try again.</string>
|
||
|
||
<!-- ── First-run connect (§3) ──────────────────────────────────────── -->
|
||
<string name="connect_title">Connect to your shard</string>
|
||
<string name="connect_subtitle">Enter your shard\'s website address to get started.</string>
|
||
<string name="connect_url_label">Website address</string>
|
||
<string name="connect_url_hint">https://your-shard.example.com</string>
|
||
<string name="connect_button">Connect</string>
|
||
<string name="connect_connecting">Connecting…</string>
|
||
<string name="connect_error_blank">Enter a website address.</string>
|
||
<string name="connect_error_malformed">That doesn\'t look like a valid web address.</string>
|
||
<string name="connect_error_scheme">Only http and https addresses are supported.</string>
|
||
<string name="connect_error_insecure">A secure https address is required.</string>
|
||
<string name="connect_error_not_runic">That site isn\'t a Runic Gateway shard.</string>
|
||
<string name="connect_error_version">This app is out of date for that site (it speaks API %1$s). Update the app and try again.</string>
|
||
<string name="connect_error_unreachable">Couldn\'t reach that site. Check the address and your connection.</string>
|
||
<string name="connect_error_server">The site responded with an error (%1$d). Try again shortly.</string>
|
||
|
||
<!-- ── Navigation menu (§5) ────────────────────────────────────────── -->
|
||
<string name="nav_open_menu">Open navigation menu</string>
|
||
<string name="menu_home">Home</string>
|
||
<string name="menu_news">News</string>
|
||
<string name="menu_wiki">Wiki</string>
|
||
<string name="menu_shard">Shard</string>
|
||
<string name="menu_rules">Rules</string>
|
||
<string name="menu_atlas">Atlas</string>
|
||
<string name="menu_leaderboards">Leaderboards</string>
|
||
<string name="menu_market">Market</string>
|
||
<string name="menu_about">About</string>
|
||
<string name="menu_contact">Contact</string>
|
||
<string name="menu_account">My account</string>
|
||
<string name="menu_my_characters">My characters</string>
|
||
<string name="menu_my_vendors">My vendors</string>
|
||
<string name="menu_my_houses">My houses</string>
|
||
<string name="menu_admin_dashboard">Dashboard</string>
|
||
<string name="menu_admin_content">Content</string>
|
||
<string name="menu_admin_moderation">Moderation</string>
|
||
<string name="menu_admin_support">Support queue</string>
|
||
<string name="menu_sign_in">Sign in</string>
|
||
<string name="menu_sign_out">Sign out</string>
|
||
<string name="menu_change_server">Change server</string>
|
||
|
||
<!-- ── Staff operations (§1, M10) ──────────────────────────────────── -->
|
||
<string name="admin_dashboard_site">Site</string>
|
||
<string name="admin_dashboard_counts">Counts</string>
|
||
<string name="admin_dashboard_recent_activity">Recent activity</string>
|
||
<string name="admin_site_live">Live</string>
|
||
<string name="admin_site_maintenance">Maintenance</string>
|
||
<string name="admin_site_switch_maintenance">Switch to maintenance</string>
|
||
<string name="admin_site_switch_live">Switch to live</string>
|
||
<string name="admin_site_changed_by">by %1$s</string>
|
||
<string name="admin_site_mode_updated">Site mode updated.</string>
|
||
<string name="admin_count_users">Users</string>
|
||
<string name="admin_count_posts">Posts</string>
|
||
<string name="admin_forbidden">You don\'t have permission for that action.</string>
|
||
<string name="admin_action_failed">That action couldn\'t be completed. Please try again.</string>
|
||
<string name="action_cancel">Cancel</string>
|
||
|
||
<!-- Staff content (posts + wiki) -->
|
||
<string name="admin_content_tab_posts">Posts</string>
|
||
<string name="admin_content_tab_wiki">Wiki</string>
|
||
<string name="admin_content_new_post">New post</string>
|
||
<string name="admin_content_new_category">New category</string>
|
||
<string name="admin_content_create">Create</string>
|
||
<string name="admin_content_published">Published</string>
|
||
<string name="admin_content_draft">Draft</string>
|
||
<string name="admin_content_publish">Publish</string>
|
||
<string name="admin_content_unpublish">Unpublish</string>
|
||
<string name="admin_content_delete">Delete</string>
|
||
<string name="admin_content_publish_now">Publish now</string>
|
||
<string name="admin_content_field_title">Title</string>
|
||
<string name="admin_content_field_excerpt">Excerpt</string>
|
||
<string name="admin_content_field_body">Body</string>
|
||
<string name="admin_content_field_slug">Slug</string>
|
||
<string name="admin_content_field_description">Description</string>
|
||
<string name="admin_content_field_sort">Sort order</string>
|
||
<!-- %1$s slug, %2$d page count -->
|
||
<string name="admin_content_cat_meta">%1$s · %2$d pages</string>
|
||
<!-- %1$s comma-separated tag labels -->
|
||
<string name="admin_content_tags">Tags: %1$s</string>
|
||
<string name="admin_content_post_created">Post created.</string>
|
||
<string name="admin_content_post_updated">Post updated.</string>
|
||
<string name="admin_content_post_deleted">Post deleted.</string>
|
||
<string name="admin_content_cat_created">Category created.</string>
|
||
<string name="admin_content_cat_deleted">Category deleted.</string>
|
||
<string name="admin_content_title_required">A title is required.</string>
|
||
<string name="admin_content_cat_fields_required">Slug and title are required.</string>
|
||
|
||
<!-- Staff moderation (shard write plane) -->
|
||
<string name="admin_mod_account_action">Account action</string>
|
||
<string name="admin_mod_account">Account</string>
|
||
<string name="admin_mod_serial">Serial (0x…)</string>
|
||
<string name="admin_mod_reason">Reason (ban)</string>
|
||
<string name="admin_mod_duration">Ban duration (seconds; blank = indefinite)</string>
|
||
<string name="admin_mod_kick">Kick</string>
|
||
<string name="admin_mod_ban">Ban</string>
|
||
<string name="admin_mod_unban">Unban</string>
|
||
<string name="admin_mod_broadcast_section">Broadcast</string>
|
||
<string name="admin_mod_broadcast_text">Message to everyone online</string>
|
||
<string name="admin_mod_broadcast">Broadcast</string>
|
||
<string name="admin_mod_kicked">Account kicked.</string>
|
||
<string name="admin_mod_banned">Account banned.</string>
|
||
<string name="admin_mod_unbanned">Ban cleared.</string>
|
||
<string name="admin_mod_broadcasted">Message broadcast.</string>
|
||
<string name="admin_mod_target_required">Enter an account or serial.</string>
|
||
<string name="admin_mod_text_required">Enter a message to broadcast.</string>
|
||
<string name="admin_mod_shard_offline">The shard is offline — the action couldn\'t be delivered.</string>
|
||
|
||
<!-- Staff support queue -->
|
||
<string name="admin_support_empty">No open help pages.</string>
|
||
<string name="admin_support_reply">Reply</string>
|
||
<string name="admin_support_close">Close</string>
|
||
<string name="admin_support_send">Send</string>
|
||
<string name="admin_support_message">Reply message</string>
|
||
<string name="admin_support_close_after">Close the page after replying</string>
|
||
<string name="admin_support_responded">Reply sent.</string>
|
||
<string name="admin_support_closed">Page closed.</string>
|
||
<string name="admin_support_message_required">Enter a reply message.</string>
|
||
<string name="admin_support_unknown_page">That page is no longer in the queue.</string>
|
||
|
||
<!-- ── Auth: login (§4.1) ──────────────────────────────────────────── -->
|
||
<string name="login_title">Sign in</string>
|
||
<string name="login_subtitle">Sign in with your shard account.</string>
|
||
<string name="login_username">Username</string>
|
||
<string name="login_password">Password</string>
|
||
<string name="login_totp_code">Authentication code</string>
|
||
<string name="login_totp_hint">Enter the 6-digit code from your authenticator app.</string>
|
||
<string name="login_button">Sign in</string>
|
||
<string name="login_register">Create an account</string>
|
||
<string name="login_forgot">Forgot your password?</string>
|
||
<!-- Single SSO entry point; the picker lists the shard's providers (native SSO, M9/M10). -->
|
||
<string name="login_sso_button">Sign in with SSO</string>
|
||
<string name="login_sso_pick_title">Choose a sign-in provider</string>
|
||
<!-- %1$s is the provider name, e.g. "Google" or "Discord". -->
|
||
<string name="login_sso_provider">Sign in with %1$s</string>
|
||
<string name="login_sso_loading">Loading sign-in options…</string>
|
||
<string name="login_sso_retry">Couldn\'t load sign-in options. Tap to retry.</string>
|
||
<string name="login_error_credentials">Incorrect username or password.</string>
|
||
<string name="login_error_code">That code didn\'t match. Try the current code.</string>
|
||
<string name="login_error_rate_limited">Too many attempts. Please try again shortly.</string>
|
||
<string name="login_error_server">Something went wrong. Please try again.</string>
|
||
<string name="login_error_network">Can\'t reach the site. Check your connection and try again.</string>
|
||
<string name="login_error_sso">Couldn\'t complete that sign-in. Please try again.</string>
|
||
|
||
<!-- ── Auth: account (§5, §6.3) ────────────────────────────────────── -->
|
||
<string name="account_title">My account</string>
|
||
<string name="account_sign_out">Sign out</string>
|
||
<string name="account_sign_out_all">Sign out on all devices</string>
|
||
|
||
<!-- Username -->
|
||
<string name="account_username_title">Username</string>
|
||
<string name="account_username_action">Change username</string>
|
||
<string name="account_username_changed">Username updated.</string>
|
||
<string name="account_username_taken">That username is already taken.</string>
|
||
<string name="account_username_error">Couldn\'t change your username.</string>
|
||
|
||
<!-- Password -->
|
||
<string name="account_password_title">Password</string>
|
||
<string name="account_password_set_title">Set a password</string>
|
||
<string name="account_password_set_hint">Your account was created through a linked provider and has no password yet. Set one to also sign in with a username and password.</string>
|
||
<string name="account_password_current">Current password</string>
|
||
<string name="account_password_new">New password</string>
|
||
<string name="account_password_action">Change password</string>
|
||
<string name="account_password_set_action">Set password</string>
|
||
<string name="account_password_changed">Password changed.</string>
|
||
<string name="account_password_error">Couldn\'t change your password. Check your current password and try again.</string>
|
||
|
||
<!-- Two-factor -->
|
||
<string name="account_totp_title">Two-factor authentication</string>
|
||
<string name="account_totp_on">Enabled</string>
|
||
<string name="account_totp_off">Not enabled</string>
|
||
<string name="account_totp_scan">Scan this code with your authenticator app, then enter the current code.</string>
|
||
<string name="account_totp_qr_desc">Two-factor QR code</string>
|
||
<string name="account_totp_setup">Set up two-factor</string>
|
||
<string name="account_totp_confirm">Confirm & enable</string>
|
||
<string name="account_totp_cancel">Cancel</string>
|
||
<string name="account_totp_disable">Disable two-factor</string>
|
||
<string name="account_totp_enabled">Two-factor is now enabled.</string>
|
||
<string name="account_totp_disabled">Two-factor has been disabled.</string>
|
||
<string name="account_totp_code_error">That code isn\'t valid. Try the current code.</string>
|
||
<string name="account_totp_setup_error">Couldn\'t start two-factor setup.</string>
|
||
|
||
<!-- Linked identities -->
|
||
<string name="account_identities_title">Linked accounts</string>
|
||
<string name="account_identities_empty">No linked sign-in providers.</string>
|
||
<string name="account_identity_unlink">Unlink</string>
|
||
<string name="account_identity_unlinked">Account unlinked.</string>
|
||
<string name="account_identity_error">Couldn\'t unlink that account.</string>
|
||
|
||
<!-- ── Trusted devices & recovery codes (TRUSTED_DEVICES_MFA.md) ─────── -->
|
||
<!-- Login 2FA step -->
|
||
<string name="login_recovery_code">Recovery code</string>
|
||
<string name="login_recovery_hint">Enter one of your single-use backup codes.</string>
|
||
<string name="login_use_recovery_instead">Use a recovery code instead</string>
|
||
<string name="login_use_totp_instead">Use your authenticator code instead</string>
|
||
<string name="login_trust_device">Trust this device (skip codes for 30 days)</string>
|
||
|
||
<!-- Account: security section -->
|
||
<string name="account_security_title">Security</string>
|
||
<string name="account_security_trusted_devices">Trusted devices</string>
|
||
<string name="account_security_recovery_codes">Recovery codes</string>
|
||
|
||
<!-- Trusted devices screen -->
|
||
<string name="trusted_devices_title">Trusted devices</string>
|
||
<string name="trusted_devices_subtitle">These devices can skip the authentication code at sign-in for 30 days.</string>
|
||
<string name="trusted_devices_empty">No trusted devices yet.</string>
|
||
<string name="trusted_devices_unknown">Unknown device</string>
|
||
<string name="trusted_devices_last_used">Last used %1$s</string>
|
||
<string name="trusted_devices_revoke">Revoke</string>
|
||
<string name="trusted_devices_trust_this">Trust this device</string>
|
||
<string name="trusted_devices_untrust_all">Untrust all devices</string>
|
||
<string name="trusted_devices_trusted">This device is now trusted.</string>
|
||
<string name="trusted_devices_revoked">Device revoked.</string>
|
||
<string name="trusted_devices_revoked_all">All devices untrusted.</string>
|
||
<string name="trusted_devices_limit">You\'ve reached the trusted-device limit. Revoke one, then try again.</string>
|
||
<string name="trusted_devices_error">Something went wrong. Please try again.</string>
|
||
|
||
<!-- Recovery codes screen -->
|
||
<string name="recovery_codes_title">Recovery codes</string>
|
||
<string name="recovery_codes_subtitle">Single-use backup codes let you sign in if you lose your authenticator.</string>
|
||
<string name="recovery_codes_remaining">%1$d codes remaining</string>
|
||
<string name="recovery_codes_remaining_loading">Checking remaining codes…</string>
|
||
<string name="recovery_codes_remaining_unknown">Couldn\'t load the remaining count.</string>
|
||
<string name="recovery_codes_password_hint">Enter your current password to generate a new set.</string>
|
||
<string name="recovery_codes_regenerate">Generate new codes</string>
|
||
<string name="recovery_codes_error">Couldn\'t generate codes. Check your password and that two-factor is on.</string>
|
||
<string name="recovery_codes_new_title">Your new recovery codes</string>
|
||
<string name="recovery_codes_new_hint">Save these now — they\'re shown only once and each works a single time.</string>
|
||
<string name="recovery_codes_copy">Copy</string>
|
||
<string name="recovery_codes_share">Share</string>
|
||
<string name="recovery_codes_done">Done</string>
|
||
|
||
<!-- ── Player: game-account linking (§6.3) ─────────────────────────── -->
|
||
<string name="player_link_title">Link your game account</string>
|
||
<string name="player_link_hint">In game, type [link to get a one-time code, then enter it here to see your characters, vendors and houses.</string>
|
||
<string name="player_link_code">Link code</string>
|
||
<string name="player_link_action">Link account</string>
|
||
<string name="player_link_ok">Account linked.</string>
|
||
<string name="player_link_bad_code">That code is unknown or has expired. Run [link in game for a new one.</string>
|
||
<string name="player_link_error">Couldn\'t link that code. Please try again.</string>
|
||
|
||
<string name="player_create_title">Create a game account</string>
|
||
<string name="player_create_account">Account name</string>
|
||
<string name="player_create_password">Password</string>
|
||
<string name="player_create_action">Create account</string>
|
||
<string name="player_create_ok">Game account created and linked.</string>
|
||
<string name="player_create_taken">That account name is already taken.</string>
|
||
<string name="player_create_capped">The account limit for your network has been reached.</string>
|
||
<string name="player_create_unavailable">Game-account signup isn\'t available right now.</string>
|
||
<string name="player_create_rejected">That account name or password wasn\'t accepted.</string>
|
||
<string name="player_create_error">Couldn\'t create that account. Please try again.</string>
|
||
|
||
<!-- ── Player: characters (§6.3) ───────────────────────────────────── -->
|
||
<string name="player_characters_empty">Link a game account above to see your characters.</string>
|
||
<string name="player_roster_loading">Loading…</string>
|
||
<string name="player_roster_empty">No characters on this account.</string>
|
||
<string name="player_char_unknown">Unknown</string>
|
||
<string name="player_char_online">Online</string>
|
||
<string name="player_char_offline">Offline</string>
|
||
|
||
<!-- Character sheet -->
|
||
<string name="player_char_governor">Governor of %1$s</string>
|
||
<string name="player_char_guildmaster">Guildmaster, %1$s</string>
|
||
<string name="player_char_attributes">Attributes</string>
|
||
<string name="player_char_vitals">Vitals</string>
|
||
<string name="player_char_str">STR</string>
|
||
<string name="player_char_dex">DEX</string>
|
||
<string name="player_char_int">INT</string>
|
||
<string name="player_char_hits">Hits</string>
|
||
<string name="player_char_mana">Mana</string>
|
||
<string name="player_char_stam">Stamina</string>
|
||
<string name="player_char_resistances">Resistances</string>
|
||
<string name="player_char_phys">Physical</string>
|
||
<string name="player_char_fire">Fire</string>
|
||
<string name="player_char_cold">Cold</string>
|
||
<string name="player_char_pois">Poison</string>
|
||
<string name="player_char_energy">Energy</string>
|
||
<string name="player_char_skills">Skills</string>
|
||
<string name="player_char_points">Loyalty & Points</string>
|
||
<!-- A point system's name followed by the character's rank on that board, e.g. "Queens Loyalty · #3". -->
|
||
<string name="player_char_points_ranked">%1$s · #%2$d</string>
|
||
<!-- A score against its cap. Only shown for capped systems; an uncapped score shows the number alone. -->
|
||
<string name="player_char_points_of">%1$d / %2$d</string>
|
||
<string name="player_char_equipment">Equipment</string>
|
||
<string name="player_char_item">Item</string>
|
||
<string name="player_char_item_id">id %1$d</string>
|
||
<string name="player_char_item_hue">hue %1$d</string>
|
||
|
||
<!-- ── Player: vendors & sales (§6.3) ──────────────────────────── -->
|
||
<string name="player_sales_title">Recent sales</string>
|
||
<string name="player_sales_empty">No recent sales.</string>
|
||
<string name="player_gold_amount">%1$s gp</string>
|
||
<string name="player_vendors_no_accounts">Link a game account to see your vendors.</string>
|
||
<string name="player_vendors_empty">No vendors on this account.</string>
|
||
<string name="player_vendor_fallback">Player vendor</string>
|
||
<string name="player_vendor_hold">Holding %1$s gp</string>
|
||
<string name="player_vendor_no_listings">No items listed.</string>
|
||
<string name="player_listing_item">Item %1$d ×%2$d</string>
|
||
|
||
<!-- ── Player: houses (§6.3) ───────────────────────────────────────── -->
|
||
<string name="player_houses_empty">You don\'t have any houses on your linked accounts.</string>
|
||
<string name="player_house_fallback">A house</string>
|
||
<string name="player_house_stage">Status: %1$s</string>
|
||
<string name="role_player">Player</string>
|
||
<string name="role_moderator">Moderator</string>
|
||
<string name="role_editor">Editor</string>
|
||
<string name="role_admin">Administrator</string>
|
||
<string name="role_unknown">Signed in</string>
|
||
|
||
<!-- ── Home / status (§6.1) ────────────────────────────────────────── -->
|
||
<string name="home_status_live">Online</string>
|
||
<string name="home_status_maintenance">Under maintenance</string>
|
||
<string name="home_server_version">Server %1$s · API %2$s</string>
|
||
|
||
<!-- ── News & content (§6.1) ───────────────────────────────────────── -->
|
||
<string name="news_title">News & content</string>
|
||
<string name="news_cat_news">News</string>
|
||
<string name="news_cat_screenshots">Screenshots</string>
|
||
<string name="news_cat_five_on_friday">Five on Friday</string>
|
||
<string name="news_cat_newsletter">Newsletter</string>
|
||
<string name="news_empty">No posts here yet.</string>
|
||
|
||
<!-- ── Wiki (§6.1) ─────────────────────────────────────────────────── -->
|
||
<string name="wiki_title">Wiki</string>
|
||
<string name="wiki_search_hint">Search the wiki</string>
|
||
<string name="wiki_empty">No pages found.</string>
|
||
<string name="wiki_section_tags">Tags</string>
|
||
<string name="wiki_section_backlinks">Linked from</string>
|
||
|
||
<!-- ── Contact (§6.1) ──────────────────────────────────────────────── -->
|
||
<string name="contact_title">Contact</string>
|
||
<string name="contact_name">Your name</string>
|
||
<string name="contact_email">Your email</string>
|
||
<string name="contact_message">Message</string>
|
||
<string name="contact_send">Send message</string>
|
||
<string name="contact_sending">Sending…</string>
|
||
<string name="contact_sent">Message sent — thank you!</string>
|
||
<string name="contact_fallback">This site has no mailer configured. Email directly: %1$s</string>
|
||
<string name="contact_validation">Please fill in every field.</string>
|
||
<string name="contact_error">Couldn\'t send your message. Please try again.</string>
|
||
|
||
<!-- ── Shard hub & live feed (§6.2) ─────────────────────────────── -->
|
||
<string name="shard_live">Live</string>
|
||
<string name="shard_offline">Offline</string>
|
||
<string name="shard_status_online">Shard online</string>
|
||
<string name="shard_status_offline">Shard offline</string>
|
||
<string name="shard_online_count">%1$d players online</string>
|
||
<string name="shard_economy_gold">Gold supply: %1$s</string>
|
||
<string name="shard_section_staff">Staff online</string>
|
||
<string name="shard_section_activity">Live activity</string>
|
||
<string name="shard_feed_empty">No recent activity.</string>
|
||
<string name="shard_nav_champs">Champion spawns</string>
|
||
<string name="shard_nav_guilds">Guilds</string>
|
||
<string name="shard_nav_governors">Governors</string>
|
||
<string name="shard_nav_houses">Falling houses</string>
|
||
|
||
<!-- ── Champion spawns (§6.2) ──────────────────────────────────────── -->
|
||
<string name="champs_empty">No champion spawns are being tracked right now.</string>
|
||
<string name="champs_fallback_name">Champion spawn</string>
|
||
<string name="champ_level">Level %1$d</string>
|
||
<string name="champ_cooldown">Restarting</string>
|
||
|
||
<!-- ── Guilds (§6.2) ───────────────────────────────────────────────── -->
|
||
<string name="guilds_empty">No guilds are being tracked right now.</string>
|
||
<string name="guilds_fallback_name">Guild</string>
|
||
<string name="guilds_members">%1$d members</string>
|
||
<string name="guilds_leader">Led by %1$s</string>
|
||
<string name="guilds_alliance">Alliance: %1$s</string>
|
||
|
||
<!-- ── Rules / ruleset (Protocol 3.0 §5, M11) ──────────────────────── -->
|
||
<!-- A successful read of a shard that has never published its ruleset — NOT the same
|
||
as the feature being switched off, which renders as an error state. -->
|
||
<string name="rules_unpublished">This shard hasn\'t published its ruleset yet.</string>
|
||
<string name="rules_section_shard">Shard</string>
|
||
<string name="rules_section_systems">Systems</string>
|
||
<string name="rules_section_caps">Skill & stat caps</string>
|
||
<string name="rules_section_accounts">Accounts & housing</string>
|
||
<string name="rules_section_vendors">Vendors</string>
|
||
<string name="rules_section_schedule">Saves & restarts</string>
|
||
<string name="rules_name">Name</string>
|
||
<string name="rules_expansion">Expansion</string>
|
||
<string name="rules_connect">Connect</string>
|
||
<string name="rules_skill_cap">Individual skill cap</string>
|
||
<string name="rules_total_skill_cap">Total skill cap</string>
|
||
<string name="rules_stat_cap">Total stat cap</string>
|
||
<string name="rules_str_cap">Strength cap</string>
|
||
<string name="rules_dex_cap">Dexterity cap</string>
|
||
<string name="rules_int_cap">Intelligence cap</string>
|
||
<string name="rules_char_slots">Character slots</string>
|
||
<string name="rules_per_ip">Accounts per IP</string>
|
||
<string name="rules_house_limit">Houses per account</string>
|
||
<string name="rules_restock_delay">Vendor restock delay</string>
|
||
<string name="rules_max_sell">Max sell quantity</string>
|
||
<string name="rules_autosave">Auto-save every</string>
|
||
<string name="rules_autorestart">Auto-restart at</string>
|
||
<string name="rules_minutes">%1$d min</string>
|
||
|
||
<!-- ── Leaderboards (Protocol 3.0 §7, M11) ─────────────────────────── -->
|
||
<string name="leaderboards_empty">This shard isn\'t publishing any leaderboards yet.</string>
|
||
<string name="leaderboards_board_empty">Nobody has scored here yet.</string>
|
||
<!-- Where a score would sit on the placeholder row of an unscored board. An em
|
||
dash, not "0" — nobody has scored zero, nobody has scored at all. -->
|
||
<string name="leaderboards_no_score">—</string>
|
||
<string name="leaderboards_players">%1$d players</string>
|
||
<!-- Only shown for capped systems; most systems on a real shard are uncapped. -->
|
||
<string name="leaderboards_cap">Cap: %1$d</string>
|
||
<string name="leaderboards_rank_name">#%1$d %2$s</string>
|
||
<!-- A shard may publish standings without naming who holds them (the board's one
|
||
admin-configurable field). -->
|
||
<string name="leaderboards_hidden_name">Someone</string>
|
||
|
||
<!-- ── Market (Protocol 3.0 §8, M11) ───────────────────────────────── -->
|
||
<string name="market_search_label">Search every shop</string>
|
||
<string name="market_empty">No listings match that search.</string>
|
||
<string name="market_shop_empty">This shop has nothing for sale.</string>
|
||
<!-- Required, not decoration: the shard sweeps vendors round-robin, so a price can
|
||
legitimately be a full cycle old. -->
|
||
<string name="market_staleness">Prices are refreshed in rotation and may be out of date.</string>
|
||
<string name="market_price">%1$d gp</string>
|
||
<string name="market_unnamed_item">Item %1$d</string>
|
||
<string name="market_unnamed_shop">A shop</string>
|
||
<string name="market_owner">Kept by %1$s</string>
|
||
<!-- A gated location is a real answer: the shop exists, the shard just doesn't say
|
||
where it stands. -->
|
||
<string name="market_location_hidden">This shard doesn\'t publish shop locations.</string>
|
||
<string name="market_truncated">Showing %1$d of %2$d — this shop holds more than the shard publishes.</string>
|
||
|
||
<!-- ── Spawn atlas (Protocol 3.0 §6, M11) ──────────────────────────── -->
|
||
<string name="atlas_search_label">Search creatures</string>
|
||
<string name="atlas_empty">No creatures match that search.</string>
|
||
<!-- A place can legitimately hold a single spawner, and the aggregate list is full
|
||
of them — "1 spawners" on every other row is worth a plural for. -->
|
||
<plurals name="atlas_spawner_count">
|
||
<item quantity="one">%1$d spawner</item>
|
||
<item quantity="other">%1$d spawners</item>
|
||
</plurals>
|
||
<string name="atlas_total_alive">Up to %1$d alive at once</string>
|
||
<string name="atlas_facet_count">%1$s (%2$d)</string>
|
||
<!-- The aggregate: "where is it", as opposed to the raw coordinates below it. -->
|
||
<string name="atlas_section_places">Where it spawns</string>
|
||
<string name="atlas_place_max_alive">up to %1$d at once</string>
|
||
<string name="atlas_section_spawners">Spawn points</string>
|
||
<string name="atlas_section_also_here">Also spawns here</string>
|
||
<string name="atlas_spawners_truncated">More spawn points than shown.</string>
|
||
<string name="atlas_max_count">Up to %1$d</string>
|
||
<!-- The delay is already in seconds; the server normalizes XmlSpawner's mixed units. -->
|
||
<string name="atlas_respawn">Respawn %1$s</string>
|
||
|
||
<!-- ── Governors (§6.2) ────────────────────────────────────────────── -->
|
||
<string name="governors_empty">No governors — this shard may not run the City Loyalty system.</string>
|
||
<string name="governor_current">Governed by %1$s</string>
|
||
<string name="governor_none">No governor</string>
|
||
<string name="governor_election">Election: %1$s</string>
|
||
<string name="governor_history">Term history</string>
|
||
<string name="governor_history_loading">Loading…</string>
|
||
<string name="governor_history_empty">No past terms recorded.</string>
|
||
|
||
<!-- ── Falling houses / IDOC (§6.2) ────────────────────────────────── -->
|
||
<string name="houses_empty">No houses are in danger right now.</string>
|
||
<string name="houses_fallback_name">A house</string>
|
||
<string name="houses_idoc_badge">IDOC</string>
|
||
|
||
<!-- ── Push notifications (§11, M7 Part 2) ─────────────────────────── -->
|
||
<string name="menu_notifications">Notifications</string>
|
||
<string name="notifications_title">Notifications</string>
|
||
<string name="notifications_subtitle">Choose what this shard notifies you about. Nothing is sent unless you turn it on.</string>
|
||
<string name="notifications_section_general">General</string>
|
||
<string name="notifications_section_personal">Your game account</string>
|
||
<string name="notifications_requires_link">Link a game account to enable this.</string>
|
||
<string name="notifications_empty">This shard offers no notification streams yet.</string>
|
||
<string name="notifications_unsupported">This shard hasn\'t set up push notifications yet.</string>
|
||
<string name="notifications_saved">Notification settings saved.</string>
|
||
<string name="notifications_all_off">Notifications turned off.</string>
|
||
<string name="notifications_save_error">Couldn\'t save your notification settings. Try again.</string>
|
||
<string name="notifications_relay_error">This shard\'s push relay isn\'t reachable right now.</string>
|
||
|
||
<!-- Notification channels + the ongoing foreground-service notification. -->
|
||
<string name="push_channel_messages">Shard notifications</string>
|
||
<string name="push_channel_messages_desc">Alerts you opted into from this shard.</string>
|
||
<string name="push_channel_service">Background connection</string>
|
||
<string name="push_channel_service_desc">Keeps the connection open to deliver notifications.</string>
|
||
<string name="push_service_title">Notifications active</string>
|
||
<string name="push_service_text">Listening for shard notifications.</string>
|
||
|
||
<!-- Per-stream notification titles (content-free tickle → generic title, §11). -->
|
||
<string name="push_stream_news_post">New post</string>
|
||
<string name="push_stream_server_status">Shard status changed</string>
|
||
<string name="push_stream_idoc_warning">A house is falling (IDOC)</string>
|
||
<string name="push_stream_champ_start">Champion spawn started</string>
|
||
<string name="push_stream_governor_election">New governor elected</string>
|
||
<string name="push_stream_vendor_sale">Your vendor made a sale</string>
|
||
<string name="push_stream_house_idoc">Your house entered IDOC</string>
|
||
<string name="push_stream_account_login">Login to your account</string>
|
||
<string name="push_stream_generic">New notification</string>
|
||
</resources>
|