From ff8b66ace1312df7e40f5b76d0198fcb4e601b00 Mon Sep 17 00:00:00 2001 From: wtclaude Date: Fri, 23 Oct 2026 01:32:37 -0500 Subject: [PATCH] refactor(strings): split strings by owner into core, UO and Rust files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PLAN.md M20 step 1. strings.xml keeps the core strings; strings_uo.xml and strings_rust.xml take the strings only that game's screens use. Android merges the three into one R.string, so no key changes and no Kotlin changes. Each string was classified by the screens that reference it, traced in code, not by its key: a string any deployment's screen can show stays core. error_shard_offline and error_feature_unavailable are the shared error-view texts, so they stay core. All seven legacy push streams, server.status included, are declared only by module-uo, so their titles are UO. No text changes: all 578 elements are moved byte for byte (checked by comparing name → element before and after). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY --- app/src/main/res/values/strings.xml | 394 +---------------------- app/src/main/res/values/strings_rust.xml | 157 +++++++++ app/src/main/res/values/strings_uo.xml | 256 +++++++++++++++ 3 files changed, 419 insertions(+), 388 deletions(-) create mode 100644 app/src/main/res/values/strings_rust.xml create mode 100644 app/src/main/res/values/strings_uo.xml diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a7d4ef2..ebc842d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,6 +4,11 @@ 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. + + The strings are split by owner (PLAN.md M20), and Android merges the three files + into one R.string: this file is CORE — every screen any deployment can show — and + uses core's words only. A game's words live in strings_uo.xml and strings_rust.xml. + StringVocabularyTest fails the build when a game's word lands in the wrong file. --> @@ -43,23 +48,12 @@ News Events Wiki - Shard - Rust servers - Rules - Atlas - Leaderboards - Market About Contact My account My events - My characters - My vendors - My houses Dashboard Content - Moderation - Support queue Sign in Sign out Change server @@ -110,38 +104,6 @@ A title is required. Slug and title are required. - - Account action - Account - Serial (0x…) - Reason (ban) - Ban duration (seconds; blank = indefinite) - Kick - Ban - Unban - Broadcast - Message to everyone online - Broadcast - Account kicked. - Account banned. - Ban cleared. - Message broadcast. - Enter an account or serial. - Enter a message to broadcast. - The shard is offline — the action couldn\'t be delivered. - - - No open help pages. - Reply - Close - Send - Reply message - Close the page after replying - Reply sent. - Page closed. - Enter a reply message. - That page is no longer in the queue. - Sign in Sign in with your shard account. @@ -256,77 +218,7 @@ Share Done - - Link your game account - In game, type [link to get a one-time code, then enter it here to see your characters, vendors and houses. - Link code - Link account - Account linked. - That code is unknown or has expired. Run [link in game for a new one. - Couldn\'t link that code. Please try again. - - Create a game account - Account name - Password - Create account - Game account created and linked. - That account name is already taken. - The account limit for your network has been reached. - Game-account signup isn\'t available right now. - That account name or password wasn\'t accepted. - Couldn\'t create that account. Please try again. - - - Link a game account above to see your characters. - Loading… - No characters on this account. - Unknown - Online - Offline - - - Governor of %1$s - Guildmaster, %1$s - Attributes - Vitals - STR - DEX - INT - Hits - Mana - Stamina - Resistances - Physical - Fire - Cold - Poison - Energy - Skills - Loyalty & Points - - %1$s · #%2$d - - %1$d / %2$d - Equipment - Item - id %1$d - hue %1$d - - - Recent sales - No recent sales. - %1$s gp - Link a game account to see your vendors. - No vendors on this account. - Player vendor - Holding %1$s gp - No items listed. - Item %1$d ×%2$d - - - You don\'t have any houses on your linked accounts. - A house - Status: %1$s + Player Moderator Editor @@ -365,127 +257,6 @@ Please fill in every field. Couldn\'t send your message. Please try again. - - Live - Offline - Shard online - Shard offline - %1$d players online - Gold supply: %1$s - Staff online - Live activity - No recent activity. - Champion spawns - Guilds - Governors - Falling houses - - - No champion spawns are being tracked right now. - Champion spawn - Level %1$d - Restarting - - - No guilds are being tracked right now. - Guild - %1$d members - Led by %1$s - Alliance: %1$s - - - - This shard hasn\'t published its ruleset yet. - Shard - Systems - Skill & stat caps - Accounts & housing - Vendors - Saves & restarts - Name - Expansion - Connect - Individual skill cap - Total skill cap - Total stat cap - Strength cap - Dexterity cap - Intelligence cap - Character slots - Accounts per IP - Houses per account - Vendor restock delay - Max sell quantity - Auto-save every - Auto-restart at - %1$d min - - - This shard isn\'t publishing any leaderboards yet. - Nobody has scored here yet. - - — - %1$d players - - Cap: %1$d - #%1$d %2$s - - Someone - - - Search every shop - No listings match that search. - This shop has nothing for sale. - - Prices are refreshed in rotation and may be out of date. - %1$d gp - Item %1$d - A shop - Kept by %1$s - - This shard doesn\'t publish shop locations. - Showing %1$d of %2$d — this shop holds more than the shard publishes. - - - Search creatures - No creatures match that search. - - - %1$d spawner - %1$d spawners - - Up to %1$d alive at once - %1$s (%2$d) - - Where it spawns - up to %1$d at once - Spawn points - Also spawns here - More spawn points than shown. - Up to %1$d - - Respawn %1$s - - - No governors — this shard may not run the City Loyalty system. - Governed by %1$s - No governor - Election: %1$s - Term history - Loading… - No past terms recorded. - - - No houses are in danger right now. - A house - IDOC - Notifications Notifications @@ -522,13 +293,6 @@ New post - Shard status changed - A house is falling (IDOC) - Champion spawn started - New governor elected - Your vendor made a sale - Your house entered IDOC - Login to your account New notification @@ -571,150 +335,4 @@ Score %1$s Show more Loading… - - - No Rust servers are configured on this site yet. - Offline - %1$d / %2$d online - has never reported - last reported %1$s - last reported %1$s — out of date, so it is shown as offline - size %1$d - seed %1$d - wiped %1$s - Next wipe %1$s - Next wipe %1$s (rescheduled) - Could not refresh just now. This is the last thing the site heard. - No such server - This address does not name a server this site follows. - Back to the server list - Feed - Leaderboard - Online - Wipes - Map - - No map yet. This server has not told the site which map it is on. The map will appear once the server is up. - This server has no picture of its map, so the layers are drawn on a plain background. - The picture of the map could not be loaded, so the layers are drawn on a plain background. - Map of the server - No moving layers are shown to you on this server. - Asking the server where things are… - The server did not say where things are just now. The site asks again every ten seconds. - The server is offline, so nothing is moving on its map. - Positions could not be loaded. - Could not refresh just now. These are the last positions the site heard. - Positions as of %1$s. They refresh every ten seconds while this tab is open. - Grid - Monuments & world events - Site events - Players - Bases - You and your clan - Sign in to see this layer. - Shown to everyone. - Shown to staff only. - %1$s Limited by who may see who is online. - Not every sleeper is shown. - Not every base is shown. - Your own position, and clan mates who are online. - Link your Steam account to see yourself and your clan here. - Cargo ship - Patrol helicopter - Chinook - Bradley APC - Supply drop - Locked crate - %1$s left on the hack - Hacked - Event zone - Event crate - Event NPC - Site event - Site event · %1$s - %1$s (boss) - Boss - %1$s (a boss\'s add) - Open event - Tool cupboard - Vending machine - Sleeping - Asleep, offline - You - Clan mate - Grid %1$s - Close - All time - %1$s (this wipe) - Current - Showing - Nothing has happened on this server yet — or not during the wipe you are looking at. - Nobody has scored here yet. - This server has not reported a wipe yet. - - - %1$d player online - %1$d players online - - Only this site’s staff can see who they are. - Sign in to see who they are. - This site is not showing who they are right now. - Joins, deaths and chat are not shown. Only this site’s staff can see what players did. - Joins, deaths and chat are not shown. Sign in to see what players did. - The server is up and the island is empty. Somebody has to be first. - Presence is the one thing on this page that cannot be answered from the record — it is who is connected now, and nothing is. - On the server right now. - The last board this server sent. It is offline, so this is who was on then — not who is on now. - Sleeping - Player - Kills - Deaths - NPC - Built - Played - %1$d players online - - - My Rust account - Link your Steam account - Join any of our Rust servers and type /link in chat. The server replies with a six-character code only you can see, good for five minutes. Enter it here — it works once. - Link code - Link account - Linked. Your play on our servers now appears under your name here. - That account was already linked to you. - That code is unknown or has expired. Type /link in game for a new one. - That Steam account is linked to another website account. Run /unlink in game to release it. - Too many attempts just now. Try again in a few minutes. - A server could not be reached, so that code could not be checked. Your code is still good — try again in a minute. - Could not link that code. - Unlink - Could not unlink that account. - linked %1$s - No Steam account is linked to this profile yet. - A link covers every server this community runs — a Steam account is one person wherever they play. You can also type /unlink in game. - What you can do in game - Nothing yet. Ranks and rewards this site hands out show up here, and reach you in game on the servers they cover. - None of this reaches the game yet — link a Steam account above and the site pushes it across on its next sync. - A server marked waiting has not confirmed it yet. One that is offline catches up when it comes back. - No servers are configured yet. - Coins - Link a Steam account to see your balance. - Economics is not installed on this server. - %1$s · %2$s coins - Last known — the server did not answer just now. - Backpack - Link a Steam account to see your backpack. - Open backpack - Read again - Close - Backpacks is not installed on this server. - This site cannot show backpacks yet. - No backpack here yet — it has never been opened. - %1$d stacks in %2$d slots - %1$d past your size — they move to your inventory, or drop at your feet if it is full, the next time you open it. - Page %1$d - %1$s · has it - %1$s · waiting diff --git a/app/src/main/res/values/strings_rust.xml b/app/src/main/res/values/strings_rust.xml new file mode 100644 index 0000000..6f92576 --- /dev/null +++ b/app/src/main/res/values/strings_rust.xml @@ -0,0 +1,157 @@ + + + + + + Rust servers + + + No Rust servers are configured on this site yet. + Offline + %1$d / %2$d online + has never reported + last reported %1$s + last reported %1$s — out of date, so it is shown as offline + size %1$d + seed %1$d + wiped %1$s + Next wipe %1$s + Next wipe %1$s (rescheduled) + Could not refresh just now. This is the last thing the site heard. + No such server + This address does not name a server this site follows. + Back to the server list + Feed + Leaderboard + Online + Wipes + Map + + No map yet. This server has not told the site which map it is on. The map will appear once the server is up. + This server has no picture of its map, so the layers are drawn on a plain background. + The picture of the map could not be loaded, so the layers are drawn on a plain background. + Map of the server + No moving layers are shown to you on this server. + Asking the server where things are… + The server did not say where things are just now. The site asks again every ten seconds. + The server is offline, so nothing is moving on its map. + Positions could not be loaded. + Could not refresh just now. These are the last positions the site heard. + Positions as of %1$s. They refresh every ten seconds while this tab is open. + Grid + Monuments & world events + Site events + Players + Bases + You and your clan + Sign in to see this layer. + Shown to everyone. + Shown to staff only. + %1$s Limited by who may see who is online. + Not every sleeper is shown. + Not every base is shown. + Your own position, and clan mates who are online. + Link your Steam account to see yourself and your clan here. + Cargo ship + Patrol helicopter + Chinook + Bradley APC + Supply drop + Locked crate + %1$s left on the hack + Hacked + Event zone + Event crate + Event NPC + Site event + Site event · %1$s + %1$s (boss) + Boss + %1$s (a boss\'s add) + Open event + Tool cupboard + Vending machine + Sleeping + Asleep, offline + You + Clan mate + Grid %1$s + Close + All time + %1$s (this wipe) + Current + Showing + Nothing has happened on this server yet — or not during the wipe you are looking at. + Nobody has scored here yet. + This server has not reported a wipe yet. + + + %1$d player online + %1$d players online + + Only this site’s staff can see who they are. + Sign in to see who they are. + This site is not showing who they are right now. + Joins, deaths and chat are not shown. Only this site’s staff can see what players did. + Joins, deaths and chat are not shown. Sign in to see what players did. + The server is up and the island is empty. Somebody has to be first. + Presence is the one thing on this page that cannot be answered from the record — it is who is connected now, and nothing is. + On the server right now. + The last board this server sent. It is offline, so this is who was on then — not who is on now. + Sleeping + Player + Kills + Deaths + NPC + Built + Played + %1$d players online + + + My Rust account + Link your Steam account + Join any of our Rust servers and type /link in chat. The server replies with a six-character code only you can see, good for five minutes. Enter it here — it works once. + Link code + Link account + Linked. Your play on our servers now appears under your name here. + That account was already linked to you. + That code is unknown or has expired. Type /link in game for a new one. + That Steam account is linked to another website account. Run /unlink in game to release it. + Too many attempts just now. Try again in a few minutes. + A server could not be reached, so that code could not be checked. Your code is still good — try again in a minute. + Could not link that code. + Unlink + Could not unlink that account. + linked %1$s + No Steam account is linked to this profile yet. + A link covers every server this community runs — a Steam account is one person wherever they play. You can also type /unlink in game. + What you can do in game + Nothing yet. Ranks and rewards this site hands out show up here, and reach you in game on the servers they cover. + None of this reaches the game yet — link a Steam account above and the site pushes it across on its next sync. + A server marked waiting has not confirmed it yet. One that is offline catches up when it comes back. + No servers are configured yet. + Coins + Link a Steam account to see your balance. + Economics is not installed on this server. + %1$s · %2$s coins + Last known — the server did not answer just now. + Backpack + Link a Steam account to see your backpack. + Open backpack + Read again + Close + Backpacks is not installed on this server. + This site cannot show backpacks yet. + No backpack here yet — it has never been opened. + %1$d stacks in %2$d slots + %1$d past your size — they move to your inventory, or drop at your feet if it is full, the next time you open it. + Page %1$d + %1$s · has it + %1$s · waiting + diff --git a/app/src/main/res/values/strings_uo.xml b/app/src/main/res/values/strings_uo.xml new file mode 100644 index 0000000..deaa7b0 --- /dev/null +++ b/app/src/main/res/values/strings_uo.xml @@ -0,0 +1,256 @@ + + + + + + Shard + Rules + Atlas + Leaderboards + Market + My characters + My vendors + My houses + Moderation + Support queue + + + + Account action + Account + Serial (0x…) + Reason (ban) + Ban duration (seconds; blank = indefinite) + Kick + Ban + Unban + Broadcast + Message to everyone online + Broadcast + Account kicked. + Account banned. + Ban cleared. + Message broadcast. + Enter an account or serial. + Enter a message to broadcast. + The shard is offline — the action couldn\'t be delivered. + + + No open help pages. + Reply + Close + Send + Reply message + Close the page after replying + Reply sent. + Page closed. + Enter a reply message. + That page is no longer in the queue. + + + Link your game account + In game, type [link to get a one-time code, then enter it here to see your characters, vendors and houses. + Link code + Link account + Account linked. + That code is unknown or has expired. Run [link in game for a new one. + Couldn\'t link that code. Please try again. + + Create a game account + Account name + Password + Create account + Game account created and linked. + That account name is already taken. + The account limit for your network has been reached. + Game-account signup isn\'t available right now. + That account name or password wasn\'t accepted. + Couldn\'t create that account. Please try again. + + + Link a game account above to see your characters. + Loading… + No characters on this account. + Unknown + Online + Offline + + + Governor of %1$s + Guildmaster, %1$s + Attributes + Vitals + STR + DEX + INT + Hits + Mana + Stamina + Resistances + Physical + Fire + Cold + Poison + Energy + Skills + Loyalty & Points + + %1$s · #%2$d + + %1$d / %2$d + Equipment + Item + id %1$d + hue %1$d + + + Recent sales + No recent sales. + %1$s gp + Link a game account to see your vendors. + No vendors on this account. + Player vendor + Holding %1$s gp + No items listed. + Item %1$d ×%2$d + + + You don\'t have any houses on your linked accounts. + A house + Status: %1$s + + + Live + Offline + Shard online + Shard offline + %1$d players online + Gold supply: %1$s + Staff online + Live activity + No recent activity. + Champion spawns + Guilds + Governors + Falling houses + + + No champion spawns are being tracked right now. + Champion spawn + Level %1$d + Restarting + + + No guilds are being tracked right now. + Guild + %1$d members + Led by %1$s + Alliance: %1$s + + + + This shard hasn\'t published its ruleset yet. + Shard + Systems + Skill & stat caps + Accounts & housing + Vendors + Saves & restarts + Name + Expansion + Connect + Individual skill cap + Total skill cap + Total stat cap + Strength cap + Dexterity cap + Intelligence cap + Character slots + Accounts per IP + Houses per account + Vendor restock delay + Max sell quantity + Auto-save every + Auto-restart at + %1$d min + + + This shard isn\'t publishing any leaderboards yet. + Nobody has scored here yet. + + — + %1$d players + + Cap: %1$d + #%1$d %2$s + + Someone + + + Search every shop + No listings match that search. + This shop has nothing for sale. + + Prices are refreshed in rotation and may be out of date. + %1$d gp + Item %1$d + A shop + Kept by %1$s + + This shard doesn\'t publish shop locations. + Showing %1$d of %2$d — this shop holds more than the shard publishes. + + + Search creatures + No creatures match that search. + + + %1$d spawner + %1$d spawners + + Up to %1$d alive at once + %1$s (%2$d) + + Where it spawns + up to %1$d at once + Spawn points + Also spawns here + More spawn points than shown. + Up to %1$d + + Respawn %1$s + + + No governors — this shard may not run the City Loyalty system. + Governed by %1$s + No governor + Election: %1$s + Term history + Loading… + No past terms recorded. + + + No houses are in danger right now. + A house + IDOC + + + Shard status changed + A house is falling (IDOC) + Champion spawn started + New governor elected + Your vendor made a sale + Your house entered IDOC + Login to your account +