// English translation dictionary. Keys are dotted strings grouped // by feature area (`login.*`, `lobby.*`, `common.*`); values are // the user-visible text. Adding a new key here also requires adding // it to every other locale dictionary in this folder, otherwise the // `t()` helper falls back to English at runtime. const en = { "common.language": "language", "common.loading": "loading…", "common.browser_not_supported_title": "browser not supported", "common.browser_not_supported_body": "Galaxy requires Ed25519 in WebCrypto. See supported browsers.", "login.title": "sign in to Galaxy", "login.email_label": "email", "login.email_required": "email must not be empty", "login.send_code": "send code", "login.sending": "sending…", "login.code_label": "code", "login.code_required": "code must not be empty", "login.code_sent_to": "code sent to {email}", "login.verify": "verify", "login.verifying": "verifying…", "login.send_new_code": "send a new code", "login.change_email": "change email", "login.challenge_expired": "challenge expired, please request a new code", "login.code_expired_or_used": "code expired or already used, please request a new one", "login.device_key_not_ready": "device key is not ready, please reload the page", "lobby.title": "you are logged in", "lobby.device_session_id_label": "device session id", "lobby.greeting": "hello, {name}!", "lobby.account_loading": "loading account…", "lobby.logout": "logout", "lobby.section.my_games": "my games", "lobby.section.invitations": "pending invitations", "lobby.section.applications": "my applications", "lobby.section.public_games": "public games", "lobby.section.create": "create a game", "lobby.create_button": "create new game", "lobby.my_games.empty": "no games yet", "lobby.invitations.empty": "no invitations", "lobby.applications.empty": "no applications", "lobby.public_games.empty": "no public games", "lobby.invitation.accept": "accept", "lobby.invitation.decline": "decline", "lobby.application.submit": "submit application", "lobby.application.submit_for": "join {name}", "lobby.application.race_name_label": "race name", "lobby.application.race_name_required": "race name must not be empty", "lobby.application.cancel": "cancel", "lobby.application.submitted": "application submitted, awaiting approval", "lobby.application.status.pending": "pending", "lobby.application.status.approved": "approved", "lobby.application.status.rejected": "rejected", "lobby.application.status.unknown": "{status}", "lobby.list_loading": "loading…", "lobby.create.title": "create new game", "lobby.create.game_name_label": "game name", "lobby.create.description_label": "description", "lobby.create.turn_schedule_label": "turn schedule", "lobby.create.turn_schedule_hint": "five-field cron, e.g. 0 0 * * *", "lobby.create.enrollment_ends_at_label": "enrollment ends at", "lobby.create.advanced": "advanced", "lobby.create.min_players_label": "min players", "lobby.create.max_players_label": "max players", "lobby.create.start_gap_hours_label": "start gap (hours)", "lobby.create.start_gap_players_label": "start gap (players)", "lobby.create.target_engine_version_label": "target engine version", "lobby.create.submit": "create", "lobby.create.submitting": "creating…", "lobby.create.cancel": "cancel", "lobby.create.game_name_required": "game name must not be empty", "lobby.create.turn_schedule_required": "turn schedule must not be empty", "lobby.create.enrollment_ends_at_required": "enrollment end time must be set", "lobby.error.invalid_request": "request is invalid", "lobby.error.subject_not_found": "not found", "lobby.error.forbidden": "operation is forbidden", "lobby.error.conflict": "request conflicts with current state", "lobby.error.internal_error": "internal server error", "lobby.error.unknown": "{message}", "game.shell.unknown": "?", "game.shell.headline": "{race} @ {game}, turn {turn}", "game.shell.connection.online": "online", "game.shell.connection.reconnecting": "reconnecting…", "game.shell.connection.offline": "offline", "game.shell.menu.toggle_sidebar": "open sidebar", "game.shell.menu.close_sidebar": "close sidebar", "game.shell.menu.open_views": "open views menu", "game.shell.menu.close_views": "close views menu", "game.shell.menu.account": "account", "game.shell.menu.settings": "settings", "game.shell.menu.sessions": "sessions", "game.shell.menu.theme": "theme", "game.shell.menu.language": "language", "game.shell.menu.logout": "logout", "game.shell.coming_soon": "coming soon", "game.view.map": "map", "game.view.table": "table", "game.view.table.planets": "planets", "game.view.table.ship_classes": "ship classes", "game.view.table.ship_groups": "ship groups", "game.view.table.fleets": "fleets", "game.view.table.sciences": "sciences", "game.view.table.races": "races", "game.view.report": "turn report", "game.view.battle": "battle log", "game.view.mail": "diplomatic mail", "game.view.designer.ship_class": "ship-class designer", "game.view.designer.science": "science designer", "game.sidebar.tab.calculator": "calculator", "game.sidebar.tab.inspector": "inspector", "game.sidebar.tab.order": "order", "game.sidebar.empty.calculator": "coming soon", "game.sidebar.empty.inspector": "select an object on the map", "game.sidebar.empty.order": "order is empty", "game.sidebar.order.command_delete": "delete", "game.sidebar.order.sync.idle": "no changes yet", "game.sidebar.order.sync.in_flight": "syncing…", "game.sidebar.order.sync.synced": "synced with server", "game.sidebar.order.sync.error": "sync failed: {message}", "game.sidebar.order.sync.retry": "retry", "game.sidebar.order.status.draft": "draft", "game.sidebar.order.status.valid": "valid", "game.sidebar.order.status.invalid": "invalid", "game.sidebar.order.status.submitting": "submitting", "game.sidebar.order.status.applied": "applied", "game.sidebar.order.status.rejected": "rejected", "game.sidebar.order.label.placeholder": "{label}", "game.sidebar.order.label.planet_rename": "rename planet {planet} → {name}", "game.sidebar.order.label.planet_production": "set production on planet {planet} → {target}", "game.bottom_tabs.map": "map", "game.bottom_tabs.calc": "calc", "game.bottom_tabs.order": "order", "game.bottom_tabs.more": "more", "game.inspector.planet.kind.local": "your planet", "game.inspector.planet.kind.other": "other race planet", "game.inspector.planet.kind.uninhabited": "uninhabited planet", "game.inspector.planet.kind.unidentified": "unidentified planet", "game.inspector.planet.field.name": "name", "game.inspector.planet.field.owner": "owner", "game.inspector.planet.field.coordinates": "coordinates", "game.inspector.planet.field.size": "size", "game.inspector.planet.field.population": "population", "game.inspector.planet.field.colonists": "colonists", "game.inspector.planet.field.industry": "industry", "game.inspector.planet.field.industry_stockpile": "industry stockpile ($)", "game.inspector.planet.field.materials_stockpile": "materials stockpile (M)", "game.inspector.planet.field.natural_resources": "natural resources", "game.inspector.planet.field.production": "current production", "game.inspector.planet.field.free_industry": "free production", "game.inspector.planet.production_none": "none", "game.inspector.planet.unidentified_no_data": "no data — only the location is known", "game.inspector.sheet_close": "close", "game.inspector.planet.action.rename": "rename", "game.inspector.planet.rename.title": "rename planet", "game.inspector.planet.rename.confirm": "save", "game.inspector.planet.rename.cancel": "cancel", "game.inspector.planet.rename.invalid.empty": "name cannot be empty", "game.inspector.planet.rename.invalid.too_long": "name is too long (30 characters max)", "game.inspector.planet.rename.invalid.starts_with_special": "name cannot start with a special character", "game.inspector.planet.rename.invalid.ends_with_special": "name cannot end with a special character", "game.inspector.planet.rename.invalid.consecutive_specials": "too many special characters in a row", "game.inspector.planet.rename.invalid.whitespace": "name cannot contain spaces", "game.inspector.planet.rename.invalid.disallowed_character": "name contains disallowed characters", "game.inspector.planet.production.title": "production", "game.inspector.planet.production.option.industry": "industry", "game.inspector.planet.production.option.materials": "materials", "game.inspector.planet.production.option.research": "research", "game.inspector.planet.production.option.ship": "build ship", "game.inspector.planet.production.research.drive": "drive", "game.inspector.planet.production.research.weapons": "weapons", "game.inspector.planet.production.research.shields": "shields", "game.inspector.planet.production.research.cargo": "cargo", "game.inspector.planet.production.ship.no_classes": "no ship classes designed yet", "game.inspector.planet.cargo.title": "cargo routes", "game.inspector.planet.cargo.slot.col": "colonists", "game.inspector.planet.cargo.slot.cap": "industry", "game.inspector.planet.cargo.slot.mat": "materials", "game.inspector.planet.cargo.slot.emp": "empty ships", "game.inspector.planet.cargo.empty": "(no route)", "game.inspector.planet.cargo.add": "add", "game.inspector.planet.cargo.edit": "edit", "game.inspector.planet.cargo.remove": "remove", "game.inspector.planet.cargo.pick.prompt": "pick a destination on the map (Esc to cancel)", "game.inspector.planet.cargo.pick.cancel": "cancel pick", "game.inspector.planet.cargo.pick.no_destinations": "no reachable destinations within {reach} world units", "game.sidebar.order.label.cargo_route_set": "set {loadType} route from planet {source} → planet {destination}", "game.sidebar.order.label.cargo_route_remove": "remove {loadType} route from planet {source}", "game.sidebar.order.label.ship_class_create": "design ship class {name}", "game.sidebar.order.label.ship_class_remove": "remove ship class {name}", "game.sidebar.order.label.science_create": "define science {name}", "game.sidebar.order.label.science_remove": "remove science {name}", "game.sidebar.order.label.ship_group_break": "split group {group} → {quantity} ships into new group", "game.sidebar.order.label.ship_group_send": "send group {group} → planet {destination}", "game.sidebar.order.label.ship_group_load": "load {cargo} × {quantity} onto group {group}", "game.sidebar.order.label.ship_group_unload": "unload × {quantity} from group {group}", "game.sidebar.order.label.ship_group_upgrade": "modernize group {group} {tech} → {level}", "game.sidebar.order.label.ship_group_dismantle": "dismantle group {group}", "game.sidebar.order.label.ship_group_transfer": "transfer group {group} → {acceptor}", "game.sidebar.order.label.ship_group_join_fleet": "assign group {group} → fleet {fleet}", "game.sidebar.order.label.race_relation": "declare {relation} on {acceptor}", "game.sidebar.order.label.race_vote": "give my votes to {acceptor}", "game.table.ship_classes.title": "ship classes", "game.table.ship_classes.column.name": "name", "game.table.ship_classes.column.drive": "drive", "game.table.ship_classes.column.armament": "armament", "game.table.ship_classes.column.weapons": "weapons", "game.table.ship_classes.column.shields": "shields", "game.table.ship_classes.column.cargo": "cargo", "game.table.ship_classes.column.actions": "actions", "game.table.ship_classes.empty": "no ship classes designed yet", "game.table.ship_classes.filter.placeholder": "filter by name", "game.table.ship_classes.action.new": "+ new ship class", "game.table.ship_classes.action.delete": "delete", "game.table.ship_classes.loading": "loading ship classes…", "game.designer.ship_class.title.new": "design new ship class", "game.designer.ship_class.title.view": "ship class {name}", "game.designer.ship_class.field.name": "name", "game.designer.ship_class.field.drive": "drive", "game.designer.ship_class.field.armament": "armament", "game.designer.ship_class.field.weapons": "weapons", "game.designer.ship_class.field.shields": "shields", "game.designer.ship_class.field.cargo": "cargo", "game.designer.ship_class.action.save": "save", "game.designer.ship_class.action.cancel": "cancel", "game.designer.ship_class.action.delete": "delete", "game.designer.ship_class.action.back": "back", "game.designer.ship_class.hint.values": "each value is either 0 or ≥ 1; armament is a non-negative integer; armament and weapons are both zero or both nonzero", "game.designer.ship_class.read_only_notice": "ship classes are designed once; values cannot be edited after creation", "game.designer.ship_class.not_found": "ship class \"{name}\" does not exist", "game.designer.ship_class.invalid.empty": "name cannot be empty", "game.designer.ship_class.invalid.too_long": "name is too long (30 characters max)", "game.designer.ship_class.invalid.starts_with_special": "name cannot start with a special character", "game.designer.ship_class.invalid.ends_with_special": "name cannot end with a special character", "game.designer.ship_class.invalid.consecutive_specials": "too many special characters in a row", "game.designer.ship_class.invalid.whitespace": "name cannot contain spaces", "game.designer.ship_class.invalid.disallowed_character": "name contains disallowed characters", "game.designer.ship_class.invalid.duplicate_name": "a ship class with this name already exists", "game.designer.ship_class.invalid.drive_value": "drive must be 0 or ≥ 1", "game.designer.ship_class.invalid.armament_value": "armament must be 0 or a positive integer", "game.designer.ship_class.invalid.armament_not_integer": "armament must be an integer", "game.designer.ship_class.invalid.weapons_value": "weapons must be 0 or ≥ 1", "game.designer.ship_class.invalid.shields_value": "shields must be 0 or ≥ 1", "game.designer.ship_class.invalid.cargo_value": "cargo must be 0 or ≥ 1", "game.designer.ship_class.invalid.armament_weapons_pair": "armament and weapons must be both zero or both nonzero", "game.designer.ship_class.invalid.all_zero": "at least one value must be nonzero", "game.designer.ship_class.preview.title": "preview at your tech levels", "game.designer.ship_class.preview.mass": "mass", "game.designer.ship_class.preview.full_load_mass": "full-load mass", "game.designer.ship_class.preview.max_speed": "max speed (ly/turn)", "game.designer.ship_class.preview.range": "range at full load (ly/turn)", "game.designer.ship_class.preview.cargo_capacity": "cargo capacity per ship", "game.designer.ship_class.preview.unavailable": "—", "game.table.sciences.title": "sciences", "game.table.sciences.column.name": "name", "game.table.sciences.column.drive": "drive %", "game.table.sciences.column.weapons": "weapons %", "game.table.sciences.column.shields": "shields %", "game.table.sciences.column.cargo": "cargo %", "game.table.sciences.column.actions": "actions", "game.table.sciences.empty": "no sciences defined yet", "game.table.sciences.filter.placeholder": "filter by name", "game.table.sciences.action.new": "+ new science", "game.table.sciences.action.delete": "delete", "game.table.sciences.loading": "loading sciences…", "game.designer.science.title.new": "define new science", "game.designer.science.title.view": "science {name}", "game.designer.science.field.name": "name", "game.designer.science.field.drive": "drive %", "game.designer.science.field.weapons": "weapons %", "game.designer.science.field.shields": "shields %", "game.designer.science.field.cargo": "cargo %", "game.designer.science.field.sum": "sum: {value} % (must equal 100)", "game.designer.science.action.save": "save", "game.designer.science.action.cancel": "cancel", "game.designer.science.action.delete": "delete", "game.designer.science.action.back": "back", "game.designer.science.hint.values": "each value is a percent in [0, 100] with one decimal; the four percentages must sum to exactly 100", "game.designer.science.read_only_notice": "sciences are defined once; values cannot be edited after creation", "game.designer.science.not_found": "science \"{name}\" does not exist", "game.designer.science.invalid.empty": "name cannot be empty", "game.designer.science.invalid.too_long": "name is too long (30 characters max)", "game.designer.science.invalid.starts_with_special": "name cannot start with a special character", "game.designer.science.invalid.ends_with_special": "name cannot end with a special character", "game.designer.science.invalid.consecutive_specials": "too many special characters in a row", "game.designer.science.invalid.whitespace": "name cannot contain spaces", "game.designer.science.invalid.disallowed_character": "name contains disallowed characters", "game.designer.science.invalid.duplicate_name": "a science with this name already exists", "game.designer.science.invalid.drive_value": "drive % must be in [0, 100]", "game.designer.science.invalid.weapons_value": "weapons % must be in [0, 100]", "game.designer.science.invalid.shields_value": "shields % must be in [0, 100]", "game.designer.science.invalid.cargo_value": "cargo % must be in [0, 100]", "game.designer.science.invalid.sum_not_hundred": "the four percentages must sum to exactly 100", "game.table.races.title": "races", "game.table.races.loading": "loading races…", "game.table.races.empty": "no other races known yet", "game.table.races.filter.placeholder": "filter by name", "game.table.races.column.name": "name", "game.table.races.column.drive": "drive %", "game.table.races.column.weapons": "weapons %", "game.table.races.column.shields": "shields %", "game.table.races.column.cargo": "cargo %", "game.table.races.column.population": "population", "game.table.races.column.industry": "production", "game.table.races.column.planets": "planets", "game.table.races.column.votes": "votes received", "game.table.races.column.relation": "stance", "game.table.races.action.war": "WAR", "game.table.races.action.peace": "PEACE", "game.table.races.votes.mine": "my votes", "game.table.races.votes.target": "I vote for", "game.table.races.votes.target_placeholder": "— select a race —", "game.table.races.note.alliance_server_side": "alliances and the 2/3 victory are tallied by the server at turn cutoff; this table shows only my outgoing vote and the votes each race received in the last tally", "game.inspector.ship_group.kind.local": "your group", "game.inspector.ship_group.kind.other": "other race group", "game.inspector.ship_group.kind.incoming": "incoming group", "game.inspector.ship_group.kind.unidentified": "unidentified group", "game.inspector.ship_group.field.class": "class", "game.inspector.ship_group.field.count": "ships", "game.inspector.ship_group.field.drive": "drive", "game.inspector.ship_group.field.weapons": "weapons", "game.inspector.ship_group.field.shields": "shields", "game.inspector.ship_group.field.cargo_tech": "cargo", "game.inspector.ship_group.field.mass": "mass", "game.inspector.ship_group.field.cargo_load": "cargo aboard", "game.inspector.ship_group.field.location": "location", "game.inspector.ship_group.field.from": "from", "game.inspector.ship_group.field.to": "to", "game.inspector.ship_group.field.distance": "distance remaining", "game.inspector.ship_group.field.speed": "speed (ly/turn)", "game.inspector.ship_group.field.eta": "ETA (turns)", "game.inspector.ship_group.field.fleet": "fleet", "game.inspector.ship_group.field.state": "state", "game.inspector.ship_group.field.coordinates": "coordinates", "game.inspector.ship_group.cargo.col": "colonists", "game.inspector.ship_group.cargo.cap": "industry", "game.inspector.ship_group.cargo.mat": "materials", "game.inspector.ship_group.cargo.emp": "empty", "game.inspector.ship_group.cargo.none": "none", "game.inspector.ship_group.location.in_hyperspace": "in hyperspace", "game.inspector.ship_group.fleet.none": "—", "game.inspector.ship_group.unidentified_no_data": "no data — only the radar blip is known", "game.inspector.ship_group.action.split": "split", "game.inspector.ship_group.action.send": "send", "game.inspector.ship_group.action.load": "load", "game.inspector.ship_group.action.unload": "unload", "game.inspector.ship_group.action.modernize": "modernize", "game.inspector.ship_group.action.dismantle": "dismantle", "game.inspector.ship_group.action.transfer": "transfer", "game.inspector.ship_group.action.join_fleet": "join fleet", "game.inspector.ship_group.action.confirm": "confirm", "game.inspector.ship_group.action.cancel": "cancel", "game.inspector.ship_group.action.confirm_destroy": "confirm — colonists die", "game.inspector.ship_group.action.disabled.not_in_orbit": "ships are busy ({state}); only orbiting groups accept actions", "game.inspector.ship_group.action.disabled.no_reach": "no planets are within drive range", "game.inspector.ship_group.action.disabled.no_drive": "this ship class has no drive block", "game.inspector.ship_group.action.disabled.no_cargo_block": "this ship class has no cargo block", "game.inspector.ship_group.action.disabled.no_planet": "the orbit planet is not visible", "game.inspector.ship_group.action.disabled.foreign_planet": "this action is only available on your own or unowned planets", "game.inspector.ship_group.action.disabled.empty_cargo": "the group is empty", "game.inspector.ship_group.action.disabled.foreign_unload_col": "colonists cannot be unloaded over a foreign planet", "game.inspector.ship_group.action.disabled.no_headroom": "the group's tech is already at your race level", "game.inspector.ship_group.action.disabled.no_planet_stock": "the planet has no available stock of this cargo", "game.inspector.ship_group.action.disabled.full_load": "the group is fully loaded", "game.inspector.ship_group.action.disabled.no_other_races": "no other non-extinct races to transfer to", "game.inspector.ship_group.action.disabled.unknown_class": "the ship class is missing from the report", "game.inspector.ship_group.action.disabled.locked": "an order is already queued for this group; cancel it in the order list to issue a new one", "game.inspector.ship_group.action.locked.banner": "an order is already queued for this group: {command}. Cancel it in the order list to issue another action.", "game.inspector.ship_group.action.locked.kind.send": "send", "game.inspector.ship_group.action.locked.kind.modernize": "modernize", "game.inspector.ship_group.action.locked.kind.dismantle": "dismantle", "game.inspector.ship_group.action.locked.kind.transfer": "transfer", "game.inspector.ship_group.action.field.ships": "ships ({max} total)", "game.inspector.ship_group.action.field.cargo": "cargo type", "game.inspector.ship_group.action.field.quantity": "quantity", "game.inspector.ship_group.action.field.level": "tech level", "game.inspector.ship_group.action.field.tech": "tech", "game.inspector.ship_group.action.field.acceptor": "acceptor", "game.inspector.ship_group.action.field.fleet": "fleet name", "game.inspector.ship_group.action.field.destination": "destination planet", "game.inspector.ship_group.action.tech.all": "all blocks", "game.inspector.ship_group.action.tech.drive": "drive", "game.inspector.ship_group.action.tech.weapons": "weapons", "game.inspector.ship_group.action.tech.shields": "shields", "game.inspector.ship_group.action.tech.cargo": "cargo", "game.inspector.ship_group.action.send.pick_prompt": "click a planet on the map (Esc to cancel)", "game.inspector.ship_group.action.modernize.cost": "estimated cost: {cost}", "game.inspector.ship_group.action.modernize.cost_unavailable": "cost preview unavailable", "game.inspector.ship_group.action.dismantle.warning": "the group is over a foreign planet with colonists aboard — they will die", "game.inspector.ship_group.action.fleet.create_new": "+ new fleet", "game.inspector.ship_group.action.invalid.ship_count": "ships must be in the range 1…{max}", "game.inspector.ship_group.action.invalid.quantity": "quantity must be greater than zero", "game.inspector.ship_group.action.invalid.level": "level must be in ({current}, {max}]", "game.inspector.ship_group.action.invalid.fleet_name": "fleet name does not match the entity-name rules", "game.inspector.planet.ship_groups.title": "stationed ship groups", "game.inspector.planet.ship_groups.row.count": "{count} ships", "game.inspector.planet.ship_groups.row.mass": "mass {mass}", "game.inspector.planet.ship_groups.race.unknown": "unknown", "game.inspector.planet.ship_groups.race.foreign": "foreign", } as const; export default en;